Verwalten von Daten in NoSQL

Sobald Sie die Schlüssel in geeigneter Weise zu verwalten, sind Sie bereit zu entwerfen, wie die Daten mit NoSQL zu speichern und sicherzustellen, dass es sicher ist und immer zugänglich für die Arbeit Sie tun müssen.

Datentypen in Schlüssel-Wert-Shops

Key-Wertspeicher wirken typischerweise als "Eimer" für binäre Daten. Einige Datenbanken tun liefern starke interne Datentypisierung und sogar Schema-Unterstützung. Andere bieten einfach bequem Helferfunktionen in ihre Client-Treiber zu einem Schlüssel-Wert-Speicher gemeinsame Anwendungsdatenstrukturen Serialisierung. Beispiele dafür sind Karten, Listen und sortiert Sets.

Oracle NoSQL kann in zwei Modi betrieben werden:

  • Einfache binäre Speicher

  • Stark strukturierte Avro Schemaunterstützung

Ein Avro-Schema ist in einer relationalen Datenbank-Schema verwandt - eine sehr strengen Satz von Formatregeln auf javascript Object Notation (JSON) Daten in der Datenbank gespeichert Durchsetzung, wie hier dargestellt:

{Username: "afowler", Sitzungs-ID: 13452673, seit: 1408318745, Thema: "Bluesky"} 

Sie definieren einen Avro-Schema ein JSON-Dokument verwenden. Dies ist ein Beispiel des Avro Schema für die zuvor gespeicherten Daten gezeigt:

{ "Type": "record", "Namensraum": "com.example", "name": "Usersession", "Felder": [{ "name": "username", "Typ": [ "string", "null"]}, { "name": "Sitzungs", "Typ": "int"}, { "name": "da", "Typ": "long"}, { "name": "Thema" , "Typ": [ "string", "null"]}]} 

Ein Avro-Schema bietet eine sehr starke Typisierung in der Datenbank für wenn Schema ist wichtig. Im obigen Beispiel sehen Sie String-Daten, eine numerische Session-ID, ein Datum (Millisekunden seit Beginn der UNIX Zeitepoche, als eine lange ganze Zahl) und eine Personalisierung Einstellung für das Thema auf der Website zu nutzen.

Beachten Sie auch, dass die Art der Benutzernamen und ein Thema hat zwei Optionen - String und null, das ist, wie Sie Oracle NoSQL anweisen, dass NULL-Werte zulässig sind. "Bluesky": Sie könnten eine zusätzliche Konfigurationsparameter von "default" Thema als String und zur Verfügung gestellt haben gelassen.

Andere NoSQL-Datenbanken bieten Sekundärindizes auf jede beliebige Eigenschaft von einem Wert, der JSON Inhalt hat. Riak, bietet beispielsweise Sekundärindizes auf Basis von Dokument Partitionierung - Grundsätzlich ist eine bekannte Eigenschaft innerhalb eines JSON-Dokument ist mit einer Art indiziert. Dies ermöglicht Bereichsabfragen (kleiner oder größer als) neben einfachen gleich und nicht gleich Vergleiche. Riak kommt ohne ein strenges Schema Bereichsabfragen zur Verfügung zu stellen - nur einfache Indexdefinition. Wenn die Daten gibt, wird es in den Index aufgenommen.

Replizieren von Daten

Speichern mehrerer Kopien der gleichen Daten in anderen Servern, oder sogar Server-Racks, hilft die Verfügbarkeit der Daten zu gewährleisten, wenn ein Server ausfällt. Serverausfall geschieht in erster Linie im gleichen Cluster.

Sie können Repliken zwei Möglichkeiten bedienen:

  • Master-Slave-: Alle Lese- und Schreibvorgänge an den Master passieren. Slaves übernehmen und erhalten Anfragen nur dann, wenn der Master ausfällt.

Master-Slave-Replikation wird in der Regel auf ACID-kompatible Schlüssel-Wert-Speicher. Um eine maximale Konsistenz zu ermöglichen, ist der primäre Speicher geschrieben und alle Replikate aktualisiert werden, bevor die Transaktion abgeschlossen ist. Dieser Mechanismus wird als ein Zwei-Phasen-Commit und schafft zusätzliche Netzwerk- und Verarbeitungszeit auf die Repliken.

  • Master-Master: Liest und schreibt auf allen Knoten Verwaltung eine Schlüssel passieren. Es gibt kein Konzept einer "primären" Partition Eigentümer.

Master-Master-Repliken sind in der Regel schließlich im Einklang mit dem Cluster einen automatischen Betrieb der Durchführung der neueste Wert für einen Schlüssel zu ermitteln und zu entfernen ältere, abgestandene Werte.

In den meisten Schlüsselwert speichert, geschieht dies langsam - bei Lesezeit. Riak ist die Ausnahme hier, weil es eine Anti-Entropie-Service Überprüfung auf Konsistenz während des normalen Betriebs hat.

Versionierung Daten

Um die automatische Konfliktlösung zu ermöglichen, müssen Sie einen Mechanismus, um die neueste Version von Daten anzuzeigen. Schließlich konsistente Schlüsselwert speichert Konfliktlösung auf unterschiedliche Weise erreichen.

Riak verwendet einen Vektor-Uhr-Mechanismus vorhersagen, welche Kopie ist die jüngste. Andere Schlüssel-Wert-Shops einfach Zeitstempel staleness anzuzeigen. Wenn Konflikte nicht automatisch gelöst werden, werden beide Kopien von Daten an den Client gesendet. Widersprüchliche Daten, die an den Client gesendet in der folgenden Situation auftreten:

  1. Client 1 schreibt Replik A "Adam: {mag: Käse} '.

  2. Replica A kopiert Daten Replik B.

  3. Client 1-Updates Daten auf Replikat A "Adam: {mag: Käse, hasst: Sonnenlicht} '.

    An diesem Punkt hat Replik A nicht genug Zeit, um die neuesten Daten zu Replik B. zu kopieren

  4. Client 2 Updates Daten auf Replikat B "Adam: {mag: Hunde, hasst: Kängurus} '.

    An diesem Punkt Replik A und B sind Replik in Konflikt und die Datenbank-Cluster, die Unterschiede nicht automatisch auflösen kann.

Ein alternativer Mechanismus ist Zeitstempel zu verwenden und vertrauen ihnen die neuesten Daten anzuzeigen. In einer solchen Situation ist es der gesunde Menschenverstand für die Anwendung, die die Zeitstempel der letzte Wert gelesen zu überprüfen, bevor Sie den Wert zu aktualisieren.

Sie sind die Überprüfung für die überprüfen und einstellen Mechanismus, was im Grunde bedeutet, 'Wenn die neueste Version ist immer noch die Version 2, speichern Sie dann meine Version 3'. Dieser Mechanismus wird manchmal als lesen Spiel-Update (RMU) oder lesen Match write (RMW). Dieser Mechanismus ist der Standardmechanismus verwendet von Oracle NoSQL, Redis, Riak, und Voldemort.

Menü