High & # 8208-Speed-Key-Zugang mit NoSQL

Schlüssel # 8208-Wertspeicher in NoSQL sind alles um Geschwindigkeit. Sie können verschiedene Techniken verwenden, um diese Geschwindigkeit zu maximieren, von Caching von Daten, mehrere Kopien von Daten zu haben, oder der am besten geeigneten Speicherstrukturen.

Caching Daten im Speicher

Da die Daten leicht zugänglich, wenn es in Random Access Memory (RAM), die Wahl einer Taste # 8208-Wertspeicher, die Daten im RAM-Caches können Ihren Zugriff auf Daten erheblich zu beschleunigen, wenn auch um den Preis höherer Serverkosten gespeichert ist.

Oft aber ist dieser Kompromiss lohnend. Sie können ganz einfach berechnen, wie viel Prozent Ihrer gespeicherten Daten häufig angefordert wird. Wenn Sie fünf Prozent wissen in der Regel alle paar Minuten angefordert wird, dann fünf Prozent der Datengröße und fügen Sie diese Nummer als Ersatz RAM-Speicher in Ihrem Datenbankserver.

Beachten Sie, dass das Betriebssystem, andere Anwendungen, und der Datenbankserver den Speicherbedarf haben, auch.

Replizieren von Daten zu Sklaven

In Schlüssel # 8208-Wert speichert, wird eine bestimmte Taste auf einem der Server im Cluster gespeichert. Dieser Vorgang wird aufgerufen Schlüsselpartitionierung. Das bedeutet, dass, wenn dieser Schlüssel ständig angefordert wird, wird dieser Knoten den Großteil der Anfragen erhalten. Dieser Knoten wird es daher sein, langsamer als die durchschnittliche Anforderung Geschwindigkeit, die möglicherweise die Qualität der Dienstleistung für die Benutzer zu beeinträchtigen.

Um diese Situation zu vermeiden, einige der wichtigsten # 8208-Wertspeicher unterstützen Hinzufügen lesen # 8208-nur Repliken, die auch als Sklaven bezeichnet. Redis, Riak und Aerospike sind gute Beispiele. Replikation ermöglicht der Schlüssel mehrmals über mehrere Server gespeichert werden, die Reaktionsgeschwindigkeit erhöht, aber auf Kosten von mehr Hardware.

Einige Schlüssel # 8208-Wertspeicher garantieren, dass die Repliken der Schlüssel immer den gleichen Wert wie der Master haben. Diese Garantie wird als voll im Einklang zu sein. Wenn ein Update auf dem Master-Server geschieht die Taste gedrückt halten, werden alle Kopien sind garantiert auf dem neuesten Stand zu sein.

Nicht alle Schlüssel # 8208-Wertspeicher garantieren diesen Status (Riak, zum Beispiel), so dass, wenn es wichtig ist, auf die Millisekunde auf dem neuesten Stand zu sein, wählen Sie dann eine Datenbank, deren Repliken sind vollständig konsistent (wie Aerospike).

Datenmodellierung in Schlüssel # 8208-Wertspeicher

Viele Schlüssel # 8208-Wertspeicher unterstützen nur grundlegende Strukturen für ihre Werttypen, mit der Aufgabe, den Anwendungsprogrammierer verlassen von der Interpretation der Daten. Einfache Datentyp-Unterstützung umfasst typischerweise Strings, Integer, JSON und binäre Werte.

Für viele Anwendungsfälle, das funktioniert gut, aber manchmal einen etwas detaillierteren Zugriff auf die Daten ist nützlich. Redis zum Beispiel unterstützt die folgenden Datenwerttypen:

  • Schnur

  • Liste

  • Set

  • Sortiert Satz

  • Hash-Karten

  • bit-Arrays

  • HyperLOG Protokolle

Sortierte Sätze können für passende Wertebereiche abgefragt werden - ähnlich wie ein Index der Werte nach Datum sortiert Abfragen, die für die Suche nach einer Teilmenge von typisierten Daten sehr nützlich ist.

Betrieb auf Daten

Redis umfasst Operationen und verringern direkt Schlüsselwerte zu erhöhen, ohne dass ein Lese # 8208-ändern # 8208-Update (RMU) Reihe von Schritten zu tun. Sie können innerhalb einer einzigen Transaktion so zu tun, um sicherzustellen, dass keine andere Anwendung den Wert während einer Aktualisierung ändert. Diese Daten # 8208 typspezifische Operationen umfassen das Hinzufügen und Listen Elemente und Sets zu entfernen, auch.

Sie können sogar Auto-Vervollständigen-Funktionalität auf ein von den Befehl Redis ZRANGEBYLEX mit Benutzeroberfläche der Anwendung zur Verfügung stellen. Dieser Befehl ruft eine Reihe von Tasten, die teilweise einen String übereinstimmt. Also, wenn Sie waren zu geben # 147-NoSQL für # 148- in der Suchleiste einer Anwendung auf Redis gebaut, würden Sie den Vorschlag zu sehen # 147-NoSQL für Dummies # 148.

Auswertung von Redis

Redis ist stolz darauf, ein sehr leichtes, aber unglaublich schnell Schlüssel # 8208-Wertspeicher. Es wurde ursprünglich entwickelt, um eine in # 8208-Speicher-Taste # 8208-Wertspeicher sein, sondern verfügt nun über Datenträger # 8208-basierte Datenspeicherung.

Sie können Redis verwenden, um Daten zu schützen, indem sie AOF Freigabemodus (nur Datei anhängen) und Anweisen Redis auf jeder Abfrage von Daten auf die Festplatte zu zwingen (als Zwangs bekannt fsync Spülung). AOF tut aufschreibt verlangsamen, natürlich, aber es bietet ein höheres Maß an Haltbarkeit für Daten. Beachten Sie aber, dass es noch möglich ist, auf eine Sekunde von Befehlen zu verlieren auf.

Auch Redis erst vor kurzem zusätzliche Unterstützung für Clustering. In der Tat, die zum Zeitpunkt des Schreibens dieses Artikels ist Redis die Cluster-Unterstützung in der Beta-Testphase. Glücklicherweise verwendet Redis eine gemeinsame # 8208-nichts-Cluster-Modell, mit Meister für bestimmte Tasten und Sklaven, die von einem client- nie direkt geschrieben werden nur der Master so tut. Shared # 8208-nichts-Clustering Bereitstellung sollte es einfacher für Redis zuverlässige Cluster implementiert, als es für Datenbanken, die für alle Repliken erlauben schreibt.

Wenn Sie einen sehr hohen # 8208-Geschwindigkeit, in # 8208-Speicher-Caching-Schicht vor einer anderen Datenbank wollen - MongoDB oder Riak werden häufig mit Redis verwendet - dann Redis als Option zu bewerten. Als Unterstützung für die Haltbarkeit Clustering und Daten entwickelt, vielleicht können Redis andere zurück Datenbanken # 8208-Ende überholen.

Menü