Saya Salah. CRDT adalah Masa Depan.
(josephg.com)Cerita tentang Conflict-free Replicated Data Types dari pengembang Google Wave
→ CRDT: struktur data yang mendukung penyuntingan serentak dalam alat kolaborasi real-time
-
Wave berbasis OT (Operational Transform): menyimpan daftar berurutan berdasarkan waktu untuk semua perubahan. Mirip
git rebasereal-time -
Salah satu masalah OT adalah membutuhkan server/DB terpusat
→ Mungkin inilah alasan munculnya pesan "dokumen ini kelebihan beban sehingga tidak dapat diedit" saat terlalu banyak orang masuk ke dokumen Google Docs (yang juga berbasis OT)?
→ Bisa dihindari dengan membagi dokumen atau memakai retry loop pada transaksi DB (masalah serialisasi dipindahkan ke DB)
→ Tetapi tidak sempurna. Wave memang memungkinkan banyak orang mengedit secara bersamaan dan berjalan dengan baik, tetapi bug-nya banyak. Terlalu rumit
- Kebangkitan CRDT
→ Algoritme yang dipakai Wave ditemukan pada 1995. Riset terus dilakukan agar OT bekerja dengan baik, tetapi CRDT lebih menjanjikan
→ CRDT mengambil pendekatan berbeda, sehingga penyuntingan real-time dimungkinkan tanpa DB terpusat
→ Kecepatan/ukuran/fitur/kompleksitas yang dulu dianggap masalah kini semuanya membaik
-
Kecepatan: CRDT modern (Automerge / RGA atau y.js / YATA) kini memungkinkan lookup pada tingkat
log(n) -
Ukuran: encoding kolumnar Martin memungkinkan penyimpanan sekitar 1,5~2 kali ukuran dokumen
-
Fitur: secara teori, rewinding dan replaying dimungkinkan. Tentu saja, belum ada yang mengimplementasikannya
-
Kompleksitas: ukuran implementasi CRDT mungkin lebih besar daripada OT, tetapi perbedaannya tidak besar
→ Peningkatan di atas akan segera tersedia di Automerge
- Untuk penyuntingan real-time, dengan sedih harus diakui bahwa OT dan pekerjaan terkait tampaknya tidak akan dibutuhkan lagi
→ Semua fitur OT bisa dimasukkan ke CRDT, tetapi sebaliknya tidak mungkin
→ Kelebihan OT adalah cocok untuk software terpusat, tetapi algoritme terdistribusi juga bekerja baik pada pendekatan terpusat
→ CRDT berkualitas tinggi yang berjalan di WASM akan lebih cepat daripada implementasi OT di JS
- Sekarang adalah waktunya membuat CRDT yang ringan dan cepat.
→ Bagian akademisnya hampir selesai, dan kini saatnya menghadirkan implementasi yang hebat
10 komentar
Saya Hong Young-taek, yang sedang mengembangkan proyek Yorkie.
Yorkie, repositori dokumen untuk aplikasi penyuntingan kolaboratif, juga dibuat berbasis CRDT.
https://github.com/yorkie-team/yorkie
Saya yang salah. CRDT adalah masa depan.
Kalau pakai OT, undo/redo bisa didapat dengan gampang... sedangkan CRDT sepertinya tidak punya cara lain selain snapshot...
Untuk kasus seperti Automerge, library-nya sendiri memang mendukung undo/redo. Mungkin sulit bagi yang mengimplementasikannya, tapi dari sudut pandang pengguna library sih ya haha
https://www.notion.so/sihawn/CRDT-1dc1af26d60144c09eadd178e0ae6e0d
Saya sempat menerjemahkan versi lengkapnya, tapi lupa mengunggahnya ;m; Saya membacanya sekali lagi berbasis Papago dan hanya memperbaiki bagian-bagian yang terasa canggung. Kalau ada yang penasaran seperti apa nuansa keseluruhannya, silakan cek tautan di atas~
Kalau diunggah di kolom komentar.. terlalu panjang ;m; jadi saya bagikan lewat tautan Notion.
Kalau dipikir-pikir, sepertinya Notion juga mungkin sedang menggunakan CRDT!
Yang menggunakan OT adalah Google Wave/Google Docs/MS Office365
Yang menggunakan CRDT adalah Figma/Apple Notes serta Riak/Redis dan lain-lain
Saya salah. CRDT adalah masa depan.
Bagaimana teknologi multi-pengguna Figma bekerja https://id.news.hada.io/topic?id=814
Video "CRDTs: The Hard Parts" dari Martin Kleppmann, pengembang Automerge, yang ditautkan di tulisan itu memang sangat bagus penjelasannya.
Di awal, dia menjelaskan perbandingan antara OT dan CRDT dengan sangat baik. Bagian belakangnya membahas implementasi CRDT secara mendalam.
https://www.youtube.com/watch?v=x7drE24geUw
Library CRDT yang digunakan saat membuat alat kolaborasi dengan JS
Menuju sistem kolaborasi: dari algoritma OT ke sistem CRDT
https://deview.kr/2013/detail.nhn?topicSeq=66
Di antara presentasi domestik, ini tampaknya hampir satu-satunya materi yang membahas CRDT.
Hyeongeol yang memberikan presentasi ini adalah orang yang membuat RGA yang disebutkan di artikel.
Yorkie juga mengimplementasikan tipe data berbentuk daftar berdasarkan RGA.
https://github.com/yorkie-team/yorkie/issues/2