1 điểm bởi GN⁺ 2023-09-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Giải thích nền tảng lý thuyết và cách triển khai kỹ thuật của CRDT văn bản có tên cola cho chỉnh sửa cộng tác thời gian thực, được viết bằng Rust
  • CRDT là cấu trúc dữ liệu có thể được sao chép và chỉnh sửa đồng thời ở nhiều điểm, đồng thời vẫn đảm bảo hội tụ mà không cần sự điều phối của một cơ quan trung tâm
  • Nội dung bài viết được chia thành việc biểu diễn trạng thái của tài liệu và các chỉnh sửa biến đổi trạng thái đó, cách triển khai framework một cách hiệu quả trong mã nguồn, và so sánh benchmark giữa cola với các thư viện CRDT khác dựa trên Rust
  • Tác giả giới thiệu khái niệm Anchors trong văn bản, được dùng để chỉ định cả chèn và xóa theo cách cho phép xử lý tính đồng thời
  • Bài viết thảo luận cách xử lý các phép chèn xung đột bằng Lamport timestamps, thông qua việc sắp xếp giảm dần theo Lamport timestamp
  • Tác giả giới thiệu khái niệm tombstones để xử lý xóa. Các ký tự đã bị tombstone sẽ được đánh dấu là đã xóa nhưng vẫn được giữ lại trong tài liệu
  • Bài viết cũng bàn về cách cải thiện hiệu năng hệ thống bằng cách sử dụng G-trees (grow-only trees). G-trees có thể được duyệt theo cả hai hướng, nên các thao tác chỉnh sửa lặp lại tại cùng một vị trí con trỏ rất nhanh
  • Tác giả kết thúc bài viết bằng phần benchmark so sánh cola với ba CRDT khác cũng được triển khai bằng Rust là diamond-types, automerge và yrs. Cola vượt trội hơn cả ba ở cả hướng upstream lẫn downstream
  • Tác giả chỉ ra rằng dù cola hiện là triển khai CRDT văn bản nhanh nhất được biết đến, vẫn còn những việc cần làm để sẵn sàng cho môi trường production, chẳng hạn như hỗ trợ undo/redo và các tính năng khác

1 bình luận

 
GN⁺ 2023-09-04
Ý kiến trên Hacker News
  • Một bình luận cho rằng G-tree về cơ bản là một B-tree được bổ sung con trỏ cha, và ngay cả khi lưu nó trong một mảng thì cấu trúc đó cũng không thay đổi về bản chất
  • Có lo ngại rằng Cola có thể không hỗ trợ các phạm vi định dạng rich text như in đậm, in nghiêng; người viết bình luận đề xuất Peritext là công nghệ hiện đại nhất cho thuật toán CRDT rich text
  • Có câu hỏi về việc so sánh hiệu năng hoặc tính năng giữa Cola và các công nghệ tương tự như Automerge hoặc Y.js/Yrs
  • Một giải pháp cho vấn đề quyền sở hữu nút trong mảng động đã được thảo luận, theo đó mọi nút được lưu trong mảng động và chỉ số được dùng để tham chiếu tới các nút khác
  • Có đề xuất dùng crate tên là slotmap để hỗ trợ xóa mà không phải lo chỉ số bị dịch chuyển hoặc trỏ sang các giá trị khác
  • Một số người dùng bày tỏ sự quan tâm đến việc thử Cola trong các dự án mà những công cụ khác như Etherpad và Word đã thất bại
  • Có ý kiến chỉ trích về tính công bằng của benchmark được sử dụng, vì nó không tính toán và lưu trữ các thao tác hoặc văn bản thực tế
  • Cũng có đề cập rằng Cola này không nên bị nhầm lẫn với tác phẩm cùng tên của Ian Piumarta
  • Cũng có câu hỏi về việc dùng text CRDT để cho phép chỉnh sửa cộng tác các biểu mẫu trong trình duyệt
  • Có đề xuất nên định nghĩa từ viết tắt "CRDT" trong tài liệu, vì đây không phải là một thuật ngữ quá phổ biến và có thể khiến độc giả bối rối
  • Cũng có câu hỏi về khả năng dùng Cola cùng tiptap/prosemirror hoặc các trình soạn thảo văn bản khác để bổ sung tính năng chỉnh sửa cộng tác dựa trên CRDT