Sdílet prostřednictvím


Distribuované datové struktury

Fluid Framework poskytuje vývojářům distribuované datové struktury (DDS), které automaticky zajišťují, že každý připojený klient má přístup ke stejnému stavu. Rozhraní API poskytovaná DDS jsou navržená tak, aby byla známá programátorům, kteří dříve používali běžné datové struktury.

Poznámka:

Tento článek předpokládá, že jste obeznámeni s úvodem do distribuovaných datových struktur v fluidframework.com.

Distribuovaná datová struktura se chová jako místní datová struktura. Váš kód do něj může přidávat data, odebírat data, aktualizovat je atd. DDS ale není místním objektem. DDS může být také změněn jinými klienty, kteří zpřístupňují stejný nadřazený kontejner DDS. Vzhledem k tomu, že uživatelé můžou současně měnit stejné DDS, je potřeba zvážit, které DDS použít k modelování dat.

Poznámka:

Význam "současně"

Říká se, že dva nebo více klientů provede změnu současně, pokud každý z nich provede změnu předtím, než obdrží změny od ostatních ze serveru.

Volba správné datové struktury pro váš scénář může zlepšit výkon a strukturu kódu vaší aplikace.

Různé systémy DDS se liší podle tří charakteristik:

  • Základní datová struktura: Například pár klíč-hodnota, posloupnost nebo fronta.
  • Autonomie klienta: Optimistická DDS umožňuje každému klientovi jednostranně změnit hodnotu a nová hodnota se předává všem ostatním klientům. Ale, konsensus DDS umožňuje změnu pouze v případě, že ji ostatní klienti schválí pomocí konsensuálního procesu.
  • Zásada sloučení: Zásada, která určuje způsob, jakým jsou řešeny konfliktní změny od klientů.

Níže uvádíme datové struktury a popisujeme, kdy mohou být nejužitečnější.

Data ve formátu klíč-hodnota

Tyto DDSy slouží k ukládání dat ve formátu klíč-hodnota. Jsou optimističtí a používají politiku sloučení posledního zapisovatele. I když hodnota páru může být složitým objektem, hodnota libovolného páru nelze upravit přímo; Celá hodnota musí být nahrazena novou hodnotou obsahující požadované úpravy, celé pro celý.

  • SharedMap: základní datová struktura klíč-hodnota.

Scénáře klíč-hodnota

Datové struktury klíč-hodnota jsou nejběžnější volbou pro mnoho scénářů.

  • Data předvoleb uživatele.
  • Aktuální stav průzkumu
  • Konfigurace zobrazení

Běžné problémy a osvědčené postupy pro klíč-hodnotové datové distribuční systémy (DDS)

  • Uložení čítače ve sdílené mapě bude mít neočekávané chování. Místo toho použijte SharedCounter.
  • Ukládání polí, seznamů nebo protokolů do položky klíč-hodnota může vést k neočekávanému chování, protože uživatelé nemůžou společně upravovat části jedné položky. Zkuste uložit pole nebo data seznamu do SharedSequence nebo SharedInk.
  • Ukládání velkého množství dat v jedné položce klíč-hodnota může způsobit problémy s výkonem nebo sloučením. Každá aktualizace aktualizuje celou hodnotu, nikoli slučování dvou aktualizací. Zkuste data rozdělit mezi více klíčů.

Sekvence

Tyto DDS slouží k ukládání sekvenčních dat. Jsou optimistické. Sekvenční datové struktury jsou užitečné, když budete muset přidat nebo odebrat data v zadaném indexu v seznamu nebo poli. Na rozdíl od datových struktur klíč-hodnota mají sekvence sekvenční pořadí a mohou zpracovávat souběžné vkládání od více uživatelů.

  • SharedNumberSequence: posloupnost čísel.
  • SharedObjectSequence: posloupnost prostých objektů.

Scénáře posloupnosti

  • Seznamy
  • Časové osy

Běžné problémy a osvědčené postupy pro sekvence DDS systémů

  • Ukládat pouze neměnná data jako položku v sekvenci Jediným způsobem, jak změnit hodnotu položky, je nejprve ji odebrat ze sekvence a potom vložit novou hodnotu na pozici, kde byla stará hodnota. Protože ale ostatní klienti můžou vložit a odebrat, neexistuje žádný spolehlivý způsob, jak novou hodnotu dostat do požadované pozice.

Řetězce

SharedString DDS se používá pro nestrukturovaná textová data, která je možné společně upravovat. Je optimistická.

  • SharedString -- datová struktura pro zpracování textu pro spolupráci.

Scénáře řetězců

  • Textové editory

Viz také

Další informace o DDS a jejich používání najdete v následujících částech fluidframework.com: