Freigeben über


Verteilte Datenstrukturen

Das Fluid Framework bietet Entwicklern verteilte Datenstrukturen (DDSes), die automatisch sicherstellen, dass jeder verbundene Client Zugriff auf denselben Zustand hat. Die von DDSes bereitgestellten APIs sind für Programmierer gedacht, die zuvor allgemeine Datenstrukturen verwendet haben.

Hinweis

In diesem Artikel wird davon ausgegangen, dass Sie mit der Einführung verteilter Datenstrukturen auf fluidframework.com vertraut sind.

Eine verteilte Datenstruktur verhält sich wie eine lokale Datenstruktur. Ihr Code kann ihr Daten hinzufügen, Daten entfernen, aktualisieren usw. Ein DDS ist jedoch kein lokales Objekt. Ein DDS kann auch von anderen Clients geändert werden, die denselben übergeordneten Container des DDS verfügbar machen. Da Benutzer die gleiche DDS gleichzeitig ändern können, müssen Sie überlegen, welche DDS für die Modellierung Ihrer Daten verwendet werden sollen.

Hinweis

Bedeutung von "gleichzeitig"

Es wird gesagt, dass zwei oder mehr Clients gleichzeitig eine Änderung vornehmen, wenn sie jeweils eine Änderung vornehmen, bevor sie die Änderungen der anderen Benutzer vom Server erhalten haben.

Wenn Sie die richtige Datenstruktur für Ihr Szenario auswählen, können Sie die Leistung und Die Codestruktur Ihrer Anwendung verbessern.

DDSes unterscheiden sich je nach drei Merkmalen:

  • Grundlegende Datenstruktur: z. B. Schlüsselwertpaar, Sequenz oder Warteschlange.
  • Clientautonomie: Ein optimistischer DDS ermöglicht es jedem Kunden, einen Wert einseitig zu ändern und der neue Wert wird an alle anderen Clients weitergeleitet. Ein Konsens-DDS lässt jedoch nur eine Änderung zu, wenn sie von anderen Kunden durch einen Konsensprozess akzeptiert wird.
  • Zusammenführungsrichtlinie: Die Richtlinie, die bestimmt, wie widersprüchliche Änderungen von Clients aufgelöst werden.

Nachfolgend haben wir die Datenstrukturen aufgezählt und beschrieben, wann sie am nützlichsten sind.

Schlüsselwertdaten

Diese DDSes werden zum Speichern von Schlüsselwertdaten verwendet. Sie sind optimistisch und verwenden eine Mergerichtlinie, bei der die letzte schreibende Seite gewinnt. Obwohl der Wert eines Paares ein komplexes Objekt sein kann, kann der Wert eines bestimmten Paares nicht direkt bearbeitet werden; der gesamte Wert muss vollständig durch einen neuen Wert ersetzt werden, der die gewünschten Bearbeitungen enthält.

  • SharedMap: eine grundlegende Schlüsselwertdatenstruktur.

Schlüsselwertszenarien

Schlüsselwertdatenstrukturen sind die häufigste Wahl für viele Szenarien.

  • Benutzereinstellungsdaten.
  • Aktueller Status einer Umfrage.
  • Die Konfiguration einer Ansicht.

Häufige Probleme und bewährte Methoden für Schlüsselwert-DDSes

  • Das Speichern eines Zählers in einer SharedMap hat unerwartetes Verhalten. Verwenden Sie stattdessen "SharedCounter".
  • Das Speichern von Arrays, Listen oder Protokollen in einem Schlüsselwerteintrag kann zu unerwartetem Verhalten führen, da Benutzer Teile eines Eintrags nicht gemeinsam ändern können. Versuchen Sie, die Array- oder Listendaten in einer SharedSequence oder SharedInk zu speichern.
  • Das Speichern vieler Daten in einem Schlüsselwerteintrag kann zu Leistungs- oder Zusammenführungsproblemen führen. Jedes Update aktualisiert den gesamten Wert, anstatt zwei Updates zusammenzuführen. Versuchen Sie, die Daten über mehrere Schlüssel aufzuteilen.

Sequenzen

Diese DDSes werden zum Speichern sequenzieller Daten verwendet. Sie sind optimistisch. Sequenzdatenstrukturen sind nützlich, wenn Sie Daten zu einem angegebenen Index in einer Liste oder einem Array hinzufügen oder entfernen müssen. Im Gegensatz zu den Schlüsselwertdatenstrukturen weisen Sequenzen eine sequenzielle Reihenfolge auf und können gleichzeitige Einfügungen von mehreren Benutzern verarbeiten.

  • SharedNumberSequence: eine Sequenz von Zahlen.
  • SharedObjectSequence: eine Abfolge von einfachen Objekten.

Sequenzszenarien

  • Listet
  • Zeitpläne

Häufige Probleme und bewährte Methoden für Sequenz-DDSes

  • Speichern Sie nur unveränderliche Daten als Element in einer Sequenz. Die einzige Möglichkeit zum Ändern des Werts eines Elements besteht darin, ihn zuerst aus der Sequenz zu entfernen und dann einen neuen Wert an der Position einzufügen, an der sich der alte Wert befand. Da andere Clients jedoch einfügen und entfernen können, gibt es keine zuverlässige Möglichkeit, den neuen Wert an die gewünschte Position zu bringen.

Streichinstrumente

Der SharedString-DDS wird für unstrukturierte Textdaten verwendet, die gemeinsam bearbeitet werden können. Es ist optimistisch.

  • SharedString -- eine Datenstruktur für die Verarbeitung von kollaborativem Text.

Zeichenfolgenszenarien

  • Text-Editoren

Siehe auch

Weitere Informationen zu DDSes und deren Verwendung finden Sie in den folgenden Abschnitten von fluidframework.com: