3 Stimmen

Wie mischt man SQL DB vs. Key-Value-Speicher (z.B. Redis)

Ich überprüfe meinen Code und stelle fest, dass ich sehr viel Zeit damit verbringe

  1. Entnahme von Zeilen aus einer Datenbank,
  2. Formatierung als XML,
  3. AJAX GET zum Browser, und dann
  4. Konvertierung zurück in ein gehashtes Javascript-Objekt als mein lokaler Datenspeicher.

Bei Aktualisierungen muss ich den Vorgang umkehren (außer dass ich POST statt XML verwende).

Nachdem ich gerade angefangen habe, Redis zu betrachten, denke ich, dass ich eine enorme Menge an Zeit sparen kann, indem ich die Objekte in einem Key-Value-Speicher auf dem Server speichere und nur JSON verwende, um direkt zum JS-Client zu übertragen. Aber mein schwacher Geist kann nicht vorhersehen, was ich aufgeben, indem Sie eine SQL-DB (d.h. ich habe Angst, die GROUP BY/HAVING-Abfragen aufzugeben)

Für meine Daten habe ich:

  • many-many-Beziehungen, d.h. obj-tags, obj-groups, etc.
  • Abfrage von Objekten nach einer Kombination von solchen, d.h. WHERE tag IN ('a', 'b','c') AND group in ('x','y')
  • self joins, d.h. ALLE Tags für jedes Objekt WHERE tag='a' (sql group_concat())
  • viele Outer-Joins, d.h. OUTER JOIN rating ON o.id = rating.obj_id
  • und Feeds, die eine Stärke von REDIS zu sein scheinen

Wie mischt man erfolgreich Key-Value- und SQL-DBs?

Ist es zum Beispiel praktisch, eine große Liste von obj.Ids aus einem REDIS-Satz mit SQL-Daten zu verbinden, indem man eine SQL RANGE-Abfrage verwendet (d.h. WHERE obj.id IN (1,4,6,7,8,34,876,9879,567,345, ...), oder umgekehrt?

Ideen/Vorschläge willkommen.

4voto

Jacob Punkte 4164

Vielleicht möchten Sie einen Blick werfen auf MongoDB . Es arbeitet mit JSON-ähnlichen Objekten und verfügt über SQL-ähnliche Indizierung und Abfragen. Redis eignet sich besser für die Speicherung von Datenstrukturen wie Listen und Mengen, wenn Sie eine einfache Suche statt einer komplexen Abfrage wünschen.

2voto

p.marino Punkte 6166

Da das eigentliche Problem nun klarer definiert ist (d.h. Sie verbringen viel Zeit mit dem Schreiben von sich wiederholendem Konvertierungscode, um von einer Ebene/Repräsentation zur nächsten zu gelangen), könnten Sie vielleicht in Erwägung ziehen, etwas zu schreiben (oder zu googeln), das dies automatisiert, vielleicht?

Google liefert viele Ergebnisse für "Tabelle in XML konvertieren" (und umgekehrt), würde das helfen? Wäre etwas, das direkt von der Tabelle zu Schlüssel/Wert-Paaren geht, besser? Haben Sie versucht, dieses Problem auf eine allgemeine Weise anzugehen?

0voto

p.marino Punkte 6166

Wenn Sie sagen: "Ich verbringe einen enormen Zeitaufwand", meinen Sie damit eine Menge Entwicklungszeit oder meinen Sie damit die Rechenzeit?

Ich persönlich würde mich davor hüten, ein RDBMS mit einer Nicht-RDBMS-Lösung zu mischen, da dies wahrscheinlich zu Problemen führen wird, wenn die beiden unterschiedlichen Paradigmen aufeinandertreffen.

0 Stimmen

Entschuldigung, ich meinte Entwicklungszeit. Ich nehme an, meine Frage lässt sich auf "Kann man sie mischen?" reduzieren oder muss man "all in" gehen? Eine Stimme für "all in", aber hat es schon jemand versucht?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X