murrdb/murr - แคชระดับต่ำกว่า 1 มิลลิวินาทีสำหรับเวิร์กโหลด ML/AI
(github.com/murrdb)- แคช NVMe/S3 บนพื้นฐาน RocksDB ที่มุ่งเป้าสำหรับเวิร์กโหลด AI inference และสามารถใช้แทน Redis ได้
- ปรับให้เหมาะกับ การอ่านและเขียนแบบ zero-copy ที่มี latency ต่ำ ในรูปแบบการประมวลผลแบบแบตช์
- ชั้น data serving ที่อยู่ระหว่าง batch data pipeline และแอป inference โดยรับ Parquet เป็นอินพุต และส่งออก Arrow-Flight
- ใช้ tiered storage โดยเก็บข้อมูลร้อนไว้ในหน่วยความจำ ข้อมูลเย็นไว้บนดิสก์ และทำ replication บน S3
- ทำงานบนที่เก็บข้อมูลแบบคอลัมน์ด้วยรูปแบบ batch input·batch output โดยไม่มี overhead ระดับแถว และสามารถส่งไฟล์ Parquet/Arrow ขนาด 1GB เข้า Ingestion API ได้โดยตรง
- ด้วย zero-copy wire protocol จึงสามารถประกอบ np.ndarray/pd.DataFrame/pt.Tensor จาก API response ได้โดยไม่ต้องแปลง
- ออกแบบแบบ stateless โดยเก็บสถานะทั้งหมดไว้ใน S3 และบูตสแตรปตัวเองจาก block storage จึงกู้คืนได้แม้มีการถอดโหนดออก
- รองรับ Python แบบ first-class พร้อมการแมปแบบ zero-copy กับอาร์เรย์ของ Numpy/Pandas/Polars/Pytorch และ sparse columns จะใช้พื้นที่ 0 ไบต์หากไม่มีข้อมูลในคอลัมน์
- กรณีที่ Murr เหมาะสม
- เมื่อข้อมูลมีขนาดใหญ่และเป็นตาราง เช่น Parquet dump ขนาดใหญ่บน S3
- เมื่อการอ่านเกิดขึ้นเป็นแบตช์ เช่น งานที่ดึง 100 คอลัมน์ข้ามเอกสาร 1000 รายการ
- ในสถานการณ์ที่ให้ความสำคัญกับต้นทุน การ offload ไปยังดิสก์/S3 จะง่ายและถูกกว่าในการดำเนินงานเมื่อเทียบกับ Redis ที่ใช้หน่วยความจำขนาดใหญ่
- จุดเด่นเมื่อเทียบกับเทคโนโลยีคู่แข่ง
- เทียบกับ Redis: มี persistence บน S3 และสามารถ offload ข้อมูลเย็นไปยัง local NVMe ได้
- เทียบกับ RocksDB แบบ embedded: ไม่ต้องสร้างระบบซิงก์ข้อมูลระหว่าง producer กับ inference node เอง และถูกออกแบบให้เป็น distributed มาตั้งแต่ต้น
- เทียบกับ DynamoDB: คิดค่าบริการเฉพาะ CPU/RAM ไม่คิดตามจำนวน query จึงมีต้นทุนต่ำกว่าราว 10 เท่า
- จาก benchmark การอ่าน packed-blob เร็วกว่า Redis ราว 3 เท่า และเร็วกว่า HSET สไตล์ Feast ราว 12 เท่า พร้อมใช้ RAM น้อยกว่า HSET ประมาณ 3 เท่า
- เนื่องจาก ไม่ใช่ฐานข้อมูลอเนกประสงค์ จึงแนะนำให้ใช้ Postgres สำหรับ OLTP, Clickhouse/BigQuery/Snowflake สำหรับ analytics และ Redis สำหรับ caching ทั่วไป
- ไลเซนส์ Apache 2.0
ยังไม่มีความคิดเห็น