การประกาศเปิดตัว HorizonDB ของ Radar เมื่อเร็วๆ นี้ ซึ่งเป็นฐานข้อมูลเชิงพื้นที่แบบกำหนดเองที่สร้างด้วย Rust และ RocksDB ได้จุดประกายการถกเถียงอย่างเข้มข้นในหมู่นักพัฒนาเกี่ยวกับความเป็นไปได้ในการทดแทนโซลูชันที่มีชื่อเสียงอย่าง Elasticsearch และ MongoDB บริษัทอ้างว่าระบบใหม่ของพวกเขาสามารถจัดการคำสั่งได้ 1,000 คำสั่งต่อวินาทีต่อคอร์ พร้อมรักษาเวลาตอบสนองที่ต่ำกว่ามิลลิวินาทีสำหรับการค้นหาพิกัดแบบย้อนกลับ
ข้อเรียกร้องด้านประสิทธิภาพของ HorizonDB :
- 1,000 QPS ต่อคอร์
- เวลาแฝงเฉลี่ยของ Forward geocoding: 50ms
- เวลาแฝงเฉลี่ยของ Reverse geocoding: <1ms
- การขยายตัวแบบเชิงเส้นบนฮาร์ดแวร์ทั่วไป
- ประมวลผลการเรียก API มากกว่า 1 พันล้านครั้งต่อวัน
![]() |
---|
HorizonDB ของ Radar อ้างว่ามีเมตริกประสิทธิภาพสูงในการสืบค้น geospatial |
ชุมชนตั้งคำถามเกี่ยวกับความน่าเชื่อถือของการอ้างสิทธิ์
ชุมชนนักพัฒนาได้แสดงความกังวลอย่างมากเกี่ยวกับการขาดรายละเอียดทางเทคนิคในการประกาศของ Radar หลายคนตั้งคำถามเกี่ยวกับแง่มุมพื้นฐานของสถาปัตยกรรมระบบที่ไม่ได้กล่าวถึงในโพสต์ต้นฉบับ ข้อมูลสำคัญที่ขาดหายไป ได้แก่ วิธีการกระจายข้อมูลไปยังเซิร์ฟเวอร์หลายเครื่อง สิ่งที่เกิดขึ้นเมื่อฮาร์ดแวร์เสียหาย และระบบรับประกันได้อย่างไรว่าจะไม่สูญเสียข้อมูลระหว่างที่ระบบล่ม
ความกังวลเหล่านี้เน้นย้ำถึงความสงสัยในวงกว้างเกี่ยวกับโซลูชันฐานข้อมูลแบบกำหนดเอง แม้ว่า Radar จะโฆษณาตัวเลขประสิทธิภาพที่น่าประทับใจ แต่นักพัฒนาที่มีประสบการณ์รู้ว่าการทดสอบที่แท้จริงจะมาถึงเมื่อระบบต้องเผชิญกับความล้มเหลวที่ไม่คาดคิดหรือต้องขยายขนาดเกินกว่าการออกแบบเดิม
โซลูชันทางเลือกได้รับความสนใจ
การถกเถียงได้นำความสนใจไปยังทางเลือกโอเพนซอร์สที่มีอยู่ซึ่งอาจให้ประโยชน์ที่คล้ายกันโดยไม่มีความซับซ้อนของการสร้างใหม่ตั้งแต่เริ่มต้น Typesense และ DuckDB ได้กลายเป็นข้อเสนอแนะที่ได้รับความนิยม โดยนักพัฒนาชื่นชมประสิทธิภาพของพวกเขาสำหรับคำสั่งเชิงพื้นที่และสถานะที่พร้อมใช้งานจริง
ทั้งคู่เป็นโอเพนซอร์สอย่างสมบูรณ์รวมถึงการตั้งค่าแบบคลัสเตอร์/แชร์ด
DuckDB โดยเฉพาะได้รับการยอมรับในความสามารถของปลั๊กอินเชิงพื้นที่ โดยเฉพาะสำหรับแอปพลิเคชันที่ข้อมูลไม่เปลี่ยนแปลงบ่อย อย่างไรก็ตาม นักพัฒนาบางคนได้สังเกตเห็นความท้าทายในการรวมระบบเมื่อพยายามรวมเทคโนโลยีฐานข้อมูลหลายตัวในโครงการเดียว
ทางเลือก Open Source ที่ถูกกล่าวถึง:
- Typesense: เครื่องมือค้นหาข้อความแบบเต็มรูปแบบที่มีความสามารถด้านภูมิศาสตร์
- DuckDB: ฐานข้อมูลสำหรับการวิเคราะห์ที่มี spatial plugin
- Photon: เครื่องมือค้นหา OpenStreetMap ที่ใช้ Elasticsearch
- Quickwit: ทางเลือกแทน Elasticsearch สำหรับการจัดการ log
ความแตกแยกในประสบการณ์ Elasticsearch
บางทีแง่มุมที่น่าสนใจที่สุดของการถกเถียงในชุมชนคือความแตกแยกอย่างชัดเจนในประสบการณ์ Elasticsearch ในขณะที่ Radar อ้างถึงความซับซ้อนในการดำเนินงานเป็นเหตุผลหลักในการออกจาก Elasticsearch นักพัฒนาหลายคนแบ่งปันประสบการณ์ที่ตรงกันข้ามในการรันคลัสเตอร์ Elasticsearch ที่เสถียรด้วยค่าใช้จ่ายในการบำรุงรักษาที่น้อยมาก
นักพัฒนาคนหนึ่งรายงานการจัดการ 12 โหนดที่มี 200 ล้านเอกสารต่อโหนด โดยไม่ต้องการการบำรุงรักษาเชิงรุกเกือบเลยนอกจากการตรวจสอบพื้นฐาน สิ่งนี้ชี้ให้เห็นว่าชื่อเสียงของ Elasticsearch ในเรื่องความซับซ้อนอาจเป็นเรื่องของแนวทางการใช้งานมากกว่าข้อจำกัดของระบบโดยธรรมชาติ
การเปรียบเทียบ Technology Stack:
Previous Stack | HorizonDB Stack |
---|---|
Elasticsearch (forward geocoding) | Rust + RocksDB |
MongoDB (reverse geocoding) | Tantivy (search) |
Multiple microservices | S2 (spatial indexing) |
- | FSTs (string compression) |
- | LightGBM + FastText (ML) |
การแลกเปลี่ยนระหว่างนวัตกรรมกับความเสถียร
การสนทนาในวงกว้างสัมผัสถึงความตึงเครียดพื้นฐานในการเลือกเทคโนโลยี ในขณะที่โซลูชันแบบกำหนดเองสามารถให้ประสิทธิภาพที่น่าประทับใจและเหมาะสมอย่างสมบูรณ์แบบสำหรับกรณีการใช้งานเฉพาะ พวกเขายังนำความเสี่ยงเกี่ยวกับการบำรุงรักษาระยะยาว ความรู้ของทีม และความน่าเชื่อถือของระบบ
การฟื้นคืนชีพของการพัฒนาฐานข้อมูลแบบกำหนดเองแสดงถึงทั้งโอกาสและความท้าทายสำหรับอุตสาหกรรม บริษัทต่างๆ มีความเต็มใจมากขึ้นที่จะลงทุนในโซลูชันเฉพาะทางเมื่อเครื่องมือที่มีอยู่ไม่ตอบสนองความต้องการที่แน่นอนของพวกเขา แต่แนวทางนี้ต้องการทรัพยากรทางวิศวกรรมและความเชี่ยวชาญอย่างมากที่หลายองค์กรขาด
การถกเถียงเกี่ยวกับ HorizonDB ในที่สุดสะท้อนคำถามที่ใหญ่กว่าเกี่ยวกับเมื่อไหร่ที่ควรสร้างเทียบกับซื้อ และประสิทธิภาพที่เพิ่มขึ้นจากโซลูชันแบบกำหนดเองสมควรกับความซับซ้อนและความเสี่ยงเพิ่มเติมที่พวกเขานำมาหรือไม่
อ้างอิง: How we replaced Elasticsearch and MongoDB with Rust and RocksDB
![]() |
---|
ทำความเข้าใจ inverted index และผลกระทบในเทคโนโลยีฐานข้อมูล |