Struktur data yang terdistribusi

Fluid Framework memberi pengembang struktur data terdistribusi (DDS) yang secara otomatis memastikan bahwa setiap klien yang tersambung memiliki akses ke status yang sama. API yang disediakan oleh DDS dirancang agar dikenal oleh programmer yang sebelumnya telah menggunakan struktur data umum.

Catatan

Artikel ini mengasumsikan bahwa Anda telah memahami materi Memperkenalkan struktur data terdistribusi di fluidframework.com.

Struktur data terdistribusi berperilaku seperti struktur data lokal. Kode Anda dapat menambahkan data ke dalamnya, menghapus data, memperbaruinya, dll. Namun, DDS bukanlah objek lokal. DDS juga dapat diubah oleh klien lain yang mengekspos kontainer induk DDS yang sama. Karena pengguna dapat secara bersamaan mengubah DDS yang sama, Anda perlu mempertimbangkan DDS mana yang akan digunakan untuk memodelkan data Anda.

Catatan

Makna 'secara bersamaan'

Dua klien atau lebih dikatakan membuat perubahan secara bersamaan jika mereka membuat perubahan sebelum menerima perubahan orang lain dari server.

Memilih struktur data yang benar untuk skenario Anda dapat meningkatkan performa dan struktur kode aplikasi Anda.

Setiap DDS memiliki keunikan tersendiri, dengan tiga karakteristik:

  • Struktur data dasar: Misalnya, pasangan kunci-nilai, urutan, atau antrean.
  • Otonomi klien: DDS yang optimis memungkinkan klien mana pun untuk secara sepihak mengubah nilai dan nilai baru tersebut diteruskan ke semua klien lain. Tetapi DDS konsensus hanya memungkinkan perubahan jika perubahan tersebut diterima oleh klien lain dengan proses konsensus.
  • Kebijakan gabungan: Kebijakan yang menentukan bagaimana perubahan yang bertentangan dari klien diselesaikan.

Kami mengumpulkan struktur data dan menjelaskan waktu penggunaan optimalnya di bawah ini.

Data kunci-nilai

DDS ini digunakan untuk menyimpan data kunci-nilai. DDS ini optimis dan menggunakan kebijakan penggabungan penulis-terakhir-menang. Meskipun nilai dari pasangan dapat berupa objek yang kompleks, nilai dari setiap pasangan yang diberikan tidak dapat diedit secara langsung; seluruh nilai harus diganti dengan nilai baru yang berisi suntingan yang diinginkan, utuh untuk keseluruhan.

  • SharedMap: struktur data kunci-nilai dasar.

Skenario kunci-nilai

Struktur data kunci-nilai adalah pilihan paling umum untuk banyak skenario.

  • Data preferensi pengguna.
  • Status survei saat ini.
  • Konfigurasi tampilan.

Masalah umum dan praktik terbaik untuk DDS kunci-nilai

  • Menyimpan penghitung di SharedMap akan menghasilkan perilaku yang tidak terduga. Sebagai gantinya, gunakan SharedCounter.
  • Menyimpan array, daftar, atau log dalam entri kunci-nilai dapat menyebabkan perilaku tak terduga karena pengguna tidak dapat secara kolaboratif memodifikasi bagian dari satu entri. Coba simpan data array atau daftar dalam SharedSequence atau SharedInk.
  • Menyimpan banyak data dalam satu entri kunci-nilai dapat menyebabkan masalah performa atau penggabungan. Setiap pembaruan akan memperbarui seluruh nilai dan tidak menggabungkan dua pembaruan. Coba pisahkan data ke beberapa kunci.

Urutan

DDS ini digunakan untuk menyimpan data yang berurutan. DDS ini optimis. Struktur data berurutan berguna ketika Anda harus menambahkan atau menghapus data pada indeks tertentu dalam daftar atau array. Berbeda dengan struktur data kunci-nilai, urutan memiliki tatanan tersambung dan dapat menangani sisipan simultan dari beberapa pengguna.

  • SharedNumberSequence: urutan angka.
  • SharedObjectSequence: urutan objek biasa.

Skenario urutan

  • Daftar
  • Garis waktu

Masalah umum dan praktik terbaik untuk DDS urutan

  • Hanya simpan data yang tidak berubah sebagai item dalam urutan. Satu-satunya cara untuk mengubah nilai item adalah dengan terlebih dahulu menghapusnya dari urutan lalu memasukkan nilai baru pada posisi nilai lama. Tetapi karena klien lain dapat menyisipkan dan menghapus, tidak ada cara yang dapat diandalkan untuk mendapatkan nilai baru ke posisi yang diinginkan.

String

SharedString DDS digunakan untuk data teks tidak terstruktur yang dapat diedit secara kolaboratif. DDS ini optimis.

  • SharedString -- struktur data untuk menangani teks kolaboratif.

Skenario untai (karakter)

  • Editor teks

Baca juga

Untuk mempelajari selengkapnya tentang DDS dan cara penggunaannya, lihat bagian berikut di fluidframework.com: