Frage

Ich habe einen guten Grund MongoDB zu verwenden, um einen Teil meiner App. Aber die Leute beschreiben es in der Regel nicht eine gute Passform für „transaktionale“ Anwendungen wie eine Bank, wo Transaktionen exakt / konsistent etc.

sein

Ist es sinnvoll die Modelle bis in Rails zu spalten und haben einige von ihnen verwenden MySql und andere Mongo? Oder wird dies in der Regel mehr Probleme verursachen, als es wert ist?

Ich baue keine Bank App oder alles andere als dachte es meinen Benutzer Sinn für die Tabelle oder Transaktionen Tabelle (Aufzeichnungsleistung) machen könnte, dass ein Teil in MySql zu tun.

War es hilfreich?

Lösung

Das ist, was wir tun, mit CouchDB und PostgreSQL.

Alle unsere Benutzer und Gruppen möglichen Dinge sind in der PostgreSQL-Datenbank.
Alles andere (in unserem Fall, einige Datensätze mit statistischen Daten) sind in der couchdb Datenbank.

In unserem Fall erlaubt es uns pro Client eine couchdb Datenbank zu haben (die App verbindet sich mit einem oder einer anderen in Abhängigkeit des Benutzers Host).
Und nur eine PostgreSQL-Datenbank darin alle Nutzer haben.

Also ja, ich denke, es ist eine gute Idee, eine SQL und NoSQL-Datenbank in der gleichen Anwendung haben.

Andere Tipps

Es gibt keinen Grund, warum Sie nicht Ihre Benutzer-Tabelle in MongoDB halten können. Ob Sie sich entscheiden, in MongoDB ein Transaktionen Tabelle zu halten, ist eine andere Frage. Wenn Sie Multi-Objekt-Transaktionen benötigen, dann müssen Sie eine relationale Datenbank, unterstützt Transaktionen verwenden. Wenn Sie diese Art von Transaktion nicht benötigen, dann MongoDB mit dafür kann immer noch eine gute Idee sein.

Beachten Sie, dass, wenn Sie MongoDB verwenden, empfehlen wir, für Failover mit Replikation läuft.

Die allgemeine Sache im Auge zu behalten ist, dass, wenn Sie eine relationale Datenbank verwenden wegen der Konsistenz gewährleistet, müssen Sie noch sicherstellen, dass Ihre Hardware konfiguriert ist, die Vorteile dieser Funktionen zu nutzen. Sehen Sie sich den warnenden Hinweis hier:

http://dev.mysql.com/doc/ refman / 4.1 / de / innodb-Configuration.html

Wenn Sie sich nicht, diese Vorsichtsmaßnahmen zu ergreifen, dann gibt es kein großer Unterschied zwischen MongoDB die Haltbarkeit und die einer relationalen Datenbank.

Denken Sie auch an Haltbarkeit: http://blog.mongodb.org/ post / 381927266 / what-about-Haltbarkeit , zum Beispiel, wenn Sie verlieren Energie (Strom).

Ich würde vorsichtig sein, einen geteilten Ansatz, obwohl ich es nicht ausschließen würde.

Wenn Sie MySQL + InnoDB müssen und es klingt wie Sie tun, würde ich nur MongoDB einführen für vorzugsweise mehr isoliert Teile, die etwas Bedeutendes gewinnen von den Vorteilen haben, dass MongoDB bringt, und haben minimale Beziehungen zu den Kern MySQL-Tabellen.

Ich bin ringe derzeit mit dem gleichen Problem, eine Rails-Anwendung mit 20ish Tabellen auf MySQL. MongoDB Mit Hilfe würde einige Datenbank-Design Leiden (verschachtelte Unterobjekte und Wendefeldspalten besonders) lösen, aber es ist schwer, den zusätzlichen Aufwand von rechtfertigen:

  • 2 verschiedene Abfragemethoden
  • Peinlich benutzerdefinierter Code entlang der Nähte von MySQL / Mongo Objekten, die miteinander in Beziehung stehen.
  • Eine zweite Datenbankplattform zur Unterstützung in der Produktion.

Ich bin in dem Prozess der Roll-out MongoDB für unsere Logging-Tabelle, und ich werde es von dort nehmen.

Ich würde sagen, Sie Ihre eigene Frage beantwortet haben.

  

Ich habe einen guten Grund mongodb zu verwenden   für einen Teil meiner app.

Angenommen, Sie auch einen guten Grund für die Aufbewahrung andere Teile in MySQL haben, würde ich sagen, dass die Antwort ja ist. Ihre Frage impliziert (zumindest für mich), dass Sie eine gute haben und gut recherchierte das Verständnis der verschiedenen Optionen und ihre Stärken und Schwächen haben und daher eine vernünftige Schlussfolgerung in dieser Aufspaltung Ihre Modelle erreicht ist machbar.

Unter der Annahme, die beiden Hälften nicht in irgendeiner Weise verbunden sind (Beziehungen zwischen den beiden klingt wie ein Rezept für Schmerz später), würde ich, dass Sie gehen für sie vorschlagen, und jedes Werkzeug verwenden, für das, was es ist am besten.

Es ist möglich, einige der Bedenken Michael wirft mit diesem Ansatz zu begegnen. da Sie sich mit Rails konzentrieren, können Sie Active für Ihren MySQL-basierte Modelle verwenden und MongoMapper für MongoDB basierend Modelle. Auf diese Weise müssen Sie nicht mit zwei völlig unterschiedlichen Abfragemethoden behandeln, da MongoMapper einen sehr ActiveRecordish Ansatz bietet. Natürlich können Sie einfach als Mongo spezifische Abfragen fallen nach unten in und wenn Sie benötigen.

Die Sorge über die Beziehungen Cross-DB gültig ist meiner Meinung nach, und wenn dies etwas ist, dass Sie eine Menge würden am Ende haben wird, würde ich auf jeden Fall empfehlen, die Situation untersuchen, um sicherzustellen, das ist etwas, du bist glücklich zu leben . Ich stelle mir vor Ihnen in diesem speziellen Fall für später eine Menge Schmerz Einsparung bis werden könnten.

Insgesamt würde ich vorschlagen, dass, solange Ihre beiden Hälften relativ voneinander getrennt sind, eine Split-Persönlichkeit Persistenz-Schicht gut für Sie arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top