Ich versuche, Key-Value-Stores wie CouchDB und Cassandra einzuwickeln. Ich verstehe, warum sie nützlich sind, aber soweit sie ein RDBMS wie MySql ersetzen, verstehe ich es nicht.
Nehmen wir an, das ist mein Inhalt, den ich speichern muss:
%Vor%Dann muss ich alle Autos finden, die blau sind.
Wie fragt der Schlüsselwertspeicher die Schlüssel ab, indem er den Wert verwendet? Ich habe gelesen, wo diese Map-Reduction verwendet werden kann, aber wenn ich auf die Quelle einiger Projekte schaue, kann ich kein Beispiel finden.
Lass es mich wissen, wenn ich die richtige Frage stelle.
Wenn Sie Schlüsselwertspeicher verwenden, erstellen Sie im Wesentlichen eine Datenbank aus denselben Komponenten, die eine relationale Datenbank intern besitzt. Der Grund dafür ist, mehr Kontrolle und Flexibilität über Skalierung und Leistung zu haben, oder nur für die Geradlinigkeit.
In diesem Fall müssen Sie das Äquivalent der Tabellenzeilen und des Indexes als zwei separate Dinge speichern. Wenn Sie also eine Farbe indizieren möchten, müssen Sie
speichern %Vor%im Äquivalent einer Indextabelle.
Natürlich bieten einige Schlüsselwertspeicher Mechanismen zur Indexierung und Suche für Sie, so dass es keine allgemeine Regel gibt, die für alle passt.
Sie möchten einen separaten Schlüssel / Wert-Speicher pflegen, der im Wesentlichen ein Index ist. Es hätte "blau" als Schlüssel und dann eine Liste aller IDs aus dem "Haupt" -Autoshop, die blau sind.
Ja, das ist die Indexfunktionalität eines normalen rdbms.
Dies ist ein guter Artikel darüber, wie das FriendFeed-Team dieses Problem angegangen ist und sich auf diese Lösung festgelegt hat, zusammen mit ihren Begründungen (ich weiß, ein bisschen seltsam, da sie ein RDBMS als Schlüssel- / Wertspeicher verwendeten, aber die Diskussionspunkte sind Sound-Theorie):
Ссылка