Rozproszone struktury danych

Elastyczna struktura udostępnia deweloperom rozproszone struktury danych (DDSes), które automatycznie zapewniają, że każdy połączony klient ma dostęp do tego samego stanu. Interfejsy API udostępniane przez usługi DDSes zostały zaprojektowane tak, aby były znane programistom, którzy wcześniej używali typowych struktur danych.

Uwaga

W tym artykule założono, że znasz wprowadzenie rozproszonych struktur danych w fluidframework.com.

Rozproszona struktura danych zachowuje się jak lokalna struktura danych. Kod może dodawać do niego dane, usuwać dane, aktualizować je itp. Jednak usługa DDS nie jest obiektem lokalnym. Usługa DDS może również zostać zmieniona przez innych klientów, którzy uwidaczniają ten sam nadrzędny kontener DDS. Ponieważ użytkownicy mogą jednocześnie zmieniać te same usługi DDS, należy rozważyć użycie usługi DDS do modelowania danych.

Uwaga

Znaczenie "jednocześnie"

Mówi się, że co najmniej dwóch klientów wprowadza zmianę jednocześnie, jeśli każda z nich wprowadza zmianę przed otrzymaniem zmian innych klientów z serwera.

Wybranie prawidłowej struktury danych dla danego scenariusza może poprawić wydajność i strukturę kodu aplikacji.

Dyski DDS różnią się od siebie o trzy cechy:

  • Podstawowa struktura danych: na przykład para klucz-wartość, sekwencja lub kolejka.
  • Autonomia klienta: optymistyczna usługa DDS umożliwia każdemu klientowi jednostronne zmianę wartości, a nowa wartość jest przekazywana do wszystkich innych klientów. Jednak konsensus DDS umożliwia zmianę tylko wtedy, gdy jest akceptowana przez innych klientów przez proces konsensusu.
  • Zasady scalania: zasady określające sposób rozwiązywania konfliktów zmian z klientów.

Poniżej wyliczyliśmy struktury danych i opisano, kiedy mogą one być najbardziej przydatne.

Dane typu klucz-wartość

Te dyski DDS są używane do przechowywania danych klucz-wartość. Są optymistyczne i używają zasad scalania last-writer-wins. Chociaż wartość pary może być obiektem złożonym, wartość dowolnej pary nie może być edytowana bezpośrednio; cała wartość musi zostać zastąpiona nową wartością zawierającą żądane edycje, całościowe.

  • SharedMap: podstawowa struktura danych klucz-wartość.

Scenariusze par klucz-wartość

Struktury danych klucz-wartość są najczęstszym wyborem w wielu scenariuszach.

  • Dane preferencji użytkownika.
  • Bieżący stan ankiety.
  • Konfiguracja widoku.

Typowe problemy i najlepsze rozwiązania dotyczące kluczy DDSes

  • Przechowywanie licznika w mapie udostępnionej będzie miało nieoczekiwane zachowanie. Zamiast tego użyj elementu SharedCounter.
  • Przechowywanie tablic, list lub dzienników we wpisie klucz-wartość może prowadzić do nieoczekiwanego zachowania, ponieważ użytkownicy nie mogą wspólnie modyfikować części jednego wpisu. Spróbuj przechowywać dane tablicy lub listy w obiekcie SharedSequence lub SharedInk.
  • Przechowywanie dużej ilości danych w jednym wpisie klucz-wartość może spowodować problemy z wydajnością lub scalaniem. Każda aktualizacja zaktualizuje całą wartość zamiast scalać dwie aktualizacje. Spróbuj podzielić dane na wiele kluczy.

Sekwencje

Te dyski DDS są używane do przechowywania danych sekwencyjnych. Są optymistycznie nastawieni. Struktury danych sekwencji są przydatne, gdy trzeba będzie dodawać lub usuwać dane w określonym indeksie na liście lub tablicy. W przeciwieństwie do struktur danych klucz-wartość sekwencyjne sekwencyjne i mogą obsługiwać równoczesne wstawianie od wielu użytkowników.

  • SharedNumberSequence: sekwencja liczb.
  • SharedObjectSequence: sekwencja zwykłych obiektów.

Scenariusze sekwencji

  • Listy
  • Harmonogram

Typowe problemy i najlepsze rozwiązania dotyczące sekwencji DDSes

  • Przechowuj tylko niezmienne dane jako element w sekwencji. Jedynym sposobem zmiany wartości elementu jest najpierw usunięcie go z sekwencji, a następnie wstawienie nowej wartości w miejscu, w którym znajdowała się stara wartość. Jednak ze względu na to, że inni klienci mogą wstawić i usunąć, nie ma niezawodnego sposobu pobierania nowej wartości do żądanej pozycji.

Ciągi

Usługa DDS SharedString jest używana w przypadku danych tekstowych bez struktury, które można edytować wspólnie. Jest optymistą.

  • SharedString — struktura danych do obsługi tekstu wspólnego.

Scenariusze ciągów

  • Edytory tekstu

Zobacz też

Aby dowiedzieć się więcej na temat DDSes i sposobu ich używania, zobacz następujące sekcje fluidframework.com: