Dağıtılmış veri yapıları

Akıcı Çerçeve, geliştiricilere bağlı her istemcinin aynı duruma erişmesini otomatik olarak sağlayan dağıtılmış veri yapıları (DDSes) sağlar. DDS'ler tarafından sağlanan API'ler, daha önce ortak veri yapılarını kullanan programcıları tanıyacak şekilde tasarlanmıştır.

Dekont

Bu makalede, fluidframework.com dağıtılmış veri yapılarına giriş hakkında bilgi sahibi olduğunuz varsayılır.

Dağıtılmış veri yapısı, yerel veri yapısı gibi davranır. Kodunuz buna veri ekleyebilir, verileri kaldırabilir, güncelleştirebilir vb. Ancak, DDS yerel bir nesne değildir. DDS, DDS'nin aynı üst kapsayıcısını kullanıma sunan diğer istemciler tarafından da değiştirilebilir. Kullanıcılar aynı DDS'yi aynı anda değiştirebildiğinden, verilerinizi modellemek için hangi DDS'nin kullanılacağını göz önünde bulundurmanız gerekir.

Dekont

'Aynı anda' anlamına gelir

İki veya daha fazla istemcinin, her birinin diğer kullanıcıların değişikliklerini sunucudan almadan önce değişiklik yapması durumunda aynı anda değişiklik yaptığı söylenir.

Senaryonuz için doğru veri yapısının seçilmesi uygulamanızın performansını ve kod yapısını geliştirebilir.

DDS'ler birbirinden üç özelliğe göre farklılık gösterir:

  • Temel veri yapısı: Örneğin, anahtar-değer çifti, sıra veya kuyruk.
  • İstemci otonomisi: İyimser bir DDS, herhangi bir istemcinin bir değeri tek taraflı olarak değiştirmesine olanak tanır ve yeni değer diğer tüm istemcilere geçirilir. Ancak konsensüs DDS yalnızca diğer istemciler tarafından bir konsensüs süreciyle kabul edilirse bir değişikliğe izin verir.
  • Birleştirme ilkesi: İstemcilerden gelen çakışan değişikliklerin nasıl çözümleneceğini belirleyen ilke.

Aşağıda veri yapılarını listeledik ve en yararlı olabilecekleri zamanları anlattık.

Anahtar-değer verileri

Bu DDS'ler anahtar-değer verilerini depolamak için kullanılır. İyimserdirler ve son yazıcı-wins birleştirme ilkesini kullanırlar. Bir çiftin değeri karmaşık bir nesne olsa da, belirli bir çiftin değeri doğrudan düzenlenemez; değerin tamamı, istenen düzenlemeleri içeren yeni bir değerle değiştirilmelidir( tamamı için).

  • SharedMap: temel anahtar-değer veri yapısı.

Anahtar-değer senaryoları

Anahtar-değer veri yapıları birçok senaryo için en yaygın seçenektir.

  • Kullanıcı tercih verileri.
  • Anketin geçerli durumu.
  • Görünümün yapılandırması.

Anahtar-değer DDS'leri için yaygın sorunlar ve en iyi yöntemler

  • Bir sayacın SharedMap'te depolanması beklenmeyen bir davranışa neden olur. Bunun yerine SharedCounter kullanın.
  • Dizileri, listeleri veya günlükleri bir anahtar-değer girdisinde depolamak beklenmeyen davranışlara yol açabilir çünkü kullanıcılar bir girişin bölümlerini işbirliğiyle değiştiremez. Dizi veya liste verilerini SharedSequence veya SharedInk içinde depolamayı deneyin.
  • Çok fazla veriyi tek bir anahtar-değer girdisinde depolamak performans veya birleştirme sorunlarına neden olabilir. Her güncelleştirme, iki güncelleştirmeyi birleştirmek yerine değerin tamamını güncelleştirir. Verileri birden çok anahtara bölmeyi deneyin.

Sıralar

Bu DDS'ler sıralı verileri depolamak için kullanılır. İyimserler. Sıralı veri yapıları, bir liste veya dizide belirtilen dizine veri eklemeniz veya kaldırmanız gerektiğinde kullanışlıdır. Anahtar-değer veri yapılarından farklı olarak, sıralar sıralı bir düzene sahiptir ve birden çok kullanıcının eşzamanlı eklemelerini işleyebilir.

  • SharedNumberSequence: bir sayı dizisi.
  • SharedObjectSequence: düz nesne dizisi.

Sıralı senaryolar

  • Listeler
  • Zaman çizelgeleri

Sıralı DDS'ler için yaygın sorunlar ve en iyi yöntemler

  • Yalnızca sabit verileri bir dizide bir öğe olarak depolayın. Bir öğenin değerini değiştirmenin tek yolu, önce öğeyi diziden kaldırmak ve sonra eski değerin bulunduğu konuma yeni bir değer eklemektir. Ancak diğer istemciler ekleyip kaldırabildiğinden, yeni değeri istenen konuma getirmenin güvenilir bir yolu yoktur.

Dizeler

SharedString DDS, işbirliğiyle düzenlenebilen yapılandırılmamış metin verileri için kullanılır. İyimser.

  • SharedString -- işbirliğine dayalı metinleri işlemeye yönelik bir veri yapısı.

Dize senaryoları

  • Metin düzenleyicileri

Ayrıca bkz.

DDS'ler ve bunların nasıl kullanılacağı hakkında daha fazla bilgi edinmek için aşağıdaki fluidframework.com bölümlerine bakın: