- คำอธิบายเกี่ยวกับพื้นฐานเชิงทฤษฎีและการนำไปใช้ทางเทคนิคของ text CRDT (Conflict-free Replicated Data Type) สำหรับการแก้ไขแบบร่วมมือกันแบบเรียลไทม์ชื่อ
cola ที่เขียนด้วย Rust
- CRDT คือโครงสร้างข้อมูลที่สามารถทำซ้ำและแก้ไขพร้อมกันได้จากหลายไซต์ โดยรับประกันการลู่เข้าสู่สถานะเดียวกันได้แม้ไม่มีการประสานงานจากศูนย์กลาง
- เนื้อหาในบทความแบ่งออกเป็นการแสดงสถานะของเอกสารและการแก้ไขที่เปลี่ยนแปลงสถานะนั้น วิธีทำให้เฟรมเวิร์กในโค้ดมีประสิทธิภาพ และการเปรียบเทียบเบนช์มาร์กระหว่าง cola กับไลบรารี CRDT บน Rust อื่น ๆ
- ผู้เขียนแนะนำแนวคิดที่เรียกว่า
Anchors ในข้อความ ซึ่งใช้ระบุได้ทั้งการแทรกและการลบในลักษณะที่รองรับการทำงานพร้อมกัน
- บทความกล่าวถึงวิธีจัดการการแทรกที่ขัดแย้งกันโดยใช้
Lamport timestamps และจัดเรียงตาม Lamport timestamp แบบลำดับจากมากไปน้อย
- ผู้เขียนแนะนำแนวคิด
tombstones เพื่อจัดการการลบ โดยอักขระที่ถูก tombstone จะถูกทำเครื่องหมายว่าถูกลบ แต่ยังคงอยู่ในเอกสาร
- บทความกล่าวถึงวิธีปรับปรุงประสิทธิภาพของระบบผ่านการใช้
G-trees (grow-only trees) ซึ่งสามารถเดินสำรวจได้ทั้งสองทิศทาง ทำให้การแก้ไขซ้ำ ๆ ที่ตำแหน่งเคอร์เซอร์เดียวกันทำได้รวดเร็วมาก
- ผู้เขียนปิดท้ายด้วยการเปรียบเทียบเบนช์มาร์กระหว่าง cola กับ CRDT ที่พัฒนาด้วย Rust อีกสามตัว ได้แก่ diamond-types, automerge และ yrs โดย cola ทำได้ดีกว่าทั้งสามตัวทั้งในทิศทาง upstream และ downstream
- ผู้เขียนชี้ว่า cola เป็นการนำ text CRDT ไปใช้ที่เร็วที่สุดเท่าที่ทราบในปัจจุบัน แต่ยังมีงานที่ต้องทำก่อนพร้อมใช้งานจริง เช่น การรองรับ undo/redo และฟีเจอร์อื่น ๆ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
slotmapเพื่อรองรับการลบโดยไม่ต้องกังวลว่าอินเด็กซ์จะย้ายตำแหน่งหรือไปชี้ค่าอื่น