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 také změnit ostatní klienti, 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ě"

Dva nebo více klientů se říká, že mají provést změnu současně , pokud každý provede změnu předtím, než obdrží změny 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.

DDS se navzájem 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 akceptují procesem konsensu.
  • Zásady sloučení: Zásada, která určuje způsob řešení konfliktních změn z klientů.

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

Data klíč-hodnota

Tyto DDS slouží k ukládání dat klíč-hodnota. Jsou optimistická a používají zásady sloučení posledního zapisovače. 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 DDS klíč-hodnota

  • 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

  • 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: