Hybrid-DB-System: NoSQL-Daten, SQL-Code für Beziehungen. Best-Practice?

Ich Baue eine app, deren DB-system wird entscheidend sein, und muss skalierbar sein, da alle seine Wert in den Daten.

Mache ich ein live-voting-system.

Ich bin wohl mit SQL und MongoDB, so ist es fast kein Faktor, der die Entscheidung (obwohl ich eher zu wie MongoDB Struktur und JS mehr, diese Zeiten 🙂 )

Aber von allem, was ich gelesen habe im web, ich fühle mich immer noch unwohl mit meiner Entscheidung.

Was ich will zu tun ist, um vereint die Vorteile von beiden:

  • Mit noSQL-Dokumente für Objekte (Benutzer, Artikel, Kommentare etc.)
  • Mit SQL-Tabellen für Beziehungen (Tabelle, User-Artikel, User-Kommentare, etc.)
  • Duplizieren der Abstimmungsergebnisse in einer noSQL-Dokument, wenn es einer Abstimmung oder in einem regelmäßigen Intervall (to gain speed auch auf Abstimmungsergebnisse anzeigen)

Große Vorteile, die ich sehe sind:

  1. Beim Abfragen einer Dokument (zB. ein Benutzer auf die Anzeige seines Profils), ich habe alle NoSQL-Vorteile (Geschwindigkeit, die alle in einem Ort, der schema-Flexibilität etc.)
  2. Wenn dabei die stats (zB. Anzahl der Stimmen), ich habe alle SQL-Vorteile
  3. Parallelisierbarkeit: kann ich Holen die Abstimmung in SQL und der Dokumente, die im asynchronen Modus
  4. Schnell Lesen, schreiben slowish (und es spielt keine Rolle, in meinem Fall)
  5. Beziehung Integrität ist stets erhalten

Meine Fragen sind :

  • Ist es eine gute Praxis, dies zu tun ? Das web scheint ziemlich schüchtern es
  • Bin ich optimieren Erdnüsse, auch bei hohen DB laden ? (Vergleich-Dokument abrufen, um die vollständige SQL und Abfragen wie select * from table where primary_key = XXX)
  • Gute Frage. Ich habe das Spiel mit der gleichen Idee für eine kleine Weile mit verschiedenen NoSQL-Technologien. Vielleicht später beantworten, sobald ich ein wenig Zeit, um wirklich zu schreiben, eine Antwort.
  • Wenn verstehe ich das richtig, das Sie verwenden möchten MongoDB wie eine Art cache ? Von dem, was du beschrieben hast, ich glaube nicht, dass es eine schlechte Idee, Sie müssen nur sicherstellen, dass MongoDB ist im Einklang mit Ihrem RDBMS bei den application-layer (Erhöhung der code-Komplexität für die Geschwindigkeit grundsätzlich)
Schreibe einen Kommentar