Schlüssel verwalten in NoSQL

Key-Wert speichert 'schnelle Lesefähigkeiten ergeben sich aus der Nutzung von gut definierten Tasten. Diese Tasten sind in der Regel gehasht, die gibt ein Schlüssel-Wert-Speicher hat eine sehr vorhersehbare Art und Weise zu bestimmen, welche Partition (und damit Server) Daten befinden sich auf. Ein besonderer Server verwaltet eine oder mehrere Partitionen.

Menu

Ein guter Schlüssel können Sie die einzelnen Datensatz eindeutig zu identifizieren, die eine Abfrage antwortet, ohne innerhalb dieser Aufzeichnung bei beliebigen Werten suchen zu müssen. Eine schlechte Schlüssel wird verlangen, dass der Anwendungscode Ihr Datensatz interpretiert, um zu bestimmen, ob es sich in der Tat mit der Abfrage übereinstimmen.

Wenn Sie nicht Ihre Schlüssel gut entwerfen, können Sie mit einem Server mit einem unverhältnismäßig schwerere Last als die anderen am Ende, zu schlechter Leistung führt. Mit der aktuellen Systemzeit als Schlüssel zum Beispiel schiebt alle neuen Daten auf den letzten Knoten im Cluster, die zu einem Alptraum-Szenario der Anpassung führt.

Abtrennung

Partition Design ist wichtig, weil einige Schlüssel-Wert-Speicher, wie zum Beispiel Oracle NoSQL, nicht die Anzahl der Partitionen nicht so modifiziert werden, sobald ein Cluster erstellt wird. Ihre Verteilung auf verschiedene Server, obwohl kann geändert werden. So beginnen Sie mit einer großen Anzahl von Partitionen, die Sie in Zukunft ausbreiten kann.

Ein Beispiel für eine Unterteilung ist Voldemorts konsistente Hashing-Ansatz, wie dargestellt. Hier sehen Sie die gleichen Partitionen auf drei Server verteilt zunächst und dann über vier Server später. Die Anzahl der Partitionen bleibt die gleiche, aber ihre Zuordnung unterscheidet sich auf verschiedene Server. Das gleiche gilt für ihre Replikate.

bild0.jpg

Der Zugriff auf Daten auf Partitionen

Key-Wertspeicher sind hoch ohne Single Point of Failure verteilt. Das bedeutet, es gibt keine Notwendigkeit für einen Master-Knoten zu koordinieren innerhalb eines Clusters Spur von Servern zu halten. Das Clustermanagement wird automatisch von einem Chat-Protokoll zwischen den Knoten in dem Server ausgeführt.

Sie können einen Trick in der Client-Treiber verwenden, um die maximale Leistung aus Abrufen und Speichern von Schlüsseln und Werten drücken - der Client-Treiber verfolgt, welche Server halten die Reihe von Tasten. Also immer der Client-Treiber weiß, welcher Server zu reden.

Die meisten Datenbanken, NoSQL enthalten ist, eine Anfrage weitergeben an alle Mitglieder eines Clusters. Das Cluster entweder akzeptiert die Schreib intern oder übergibt sie einem unter der Haube auf den richtigen Knoten. Dieser Aufbau bedeutet eine zusätzliche Netzwerk-Reise zwischen den Knoten möglich, was zu Latenz hinzufügen können.

Um Entdeckung Latenz, die meisten Schlüssel-Wert speichert "Client-Treiber zu vermeiden, halten Sie eine Metadaten Liste der aktuellen Knoten in einem Cluster und welcher Partition Schlüsselbereiche jedes Nicken verwaltet. Auf diese Weise kann der Client-Treiber den richtigen Server zu kontaktieren, die Operationen schneller macht.

Wenn ein neuer Knoten zu einem Cluster hinzugefügt wird und die Metadaten nicht mehr aktuell ist, informiert der Cluster den Client-Treiber, die dann lädt die neueste Cluster-Metadaten, bevor die Anforderung an den richtigen Knoten erneut zu senden. Auf diese Weise maximalen Durchsatz wird mit einem Minimum an Overhead während der Entwicklung beibehalten. Ein weiterer positiver Nebeneffekt ist, dass es für einen Load-Balancer keine Notwendigkeit Abfragen weitergeben an den nächsten verfügbaren oder am wenigsten beschäftigt, Server - nur einen Server (oder Replica Server lesen) jemals erhält eine Client-Anfrage, so gibt es keine Notwendigkeit für den Lastausgleich .

Menü