2009-04-28 8 views
3

Ich habe eine Rails-App, die zwei der gleichen Modelle wie eine andere Rails-App verwendet, die ich habe. Was ist der beste Weg, um Daten zwischen zwei Modellen zu synchronisieren?Tabellen ohne Verwendung von SQL Replication über Rails-Apps synchronisiert halten?

MySQL-Replikation wird wahrscheinlich nicht möglich sein aufgrund von Hosting-Einschränkungen und da Zeug, repliziert die replizierten Daten ist abhängig =>: zerstören Bedeutung mysql Replikation wird dazu führen, Zeug auf replizierten Daten, die gelöscht wird, zu bleiben.

Kurz gesagt, was ist die beste Methode, um Replikation zwischen zwei Rails-Apps auf Modellbasis auf Anwendungsebene durchzuführen? Muss ich meine eigene Replikation mit REST hacken, oder gibt es einen besseren Weg?

Ich sollte hinzufügen, dass Daten selten, höchstens ein paar Mal am Tag ändert, und die Menge wird immer weniger als 50k Zeilen sein.

Bearbeiten: Als Antwort auf Toby Kommentar unten, die Daten gehen alle in eine Richtung.

+1

Werden beide Anwendungen aktualisiert? Wie in, müssen Sie Daten auf beide Arten synchronisieren, oder können Sie von einem Master drücken? –

+0

Es ist ein harter, ich hoffe du bekommst eine Antwort, das interessiert mich auch. – marcgg

Antwort

0

Also, es stellt sich heraus, es gibt zwei Plugins, die dies tun:

Acts as Replica und Acts as Syncable

Fungiert als Replica bessere Dokumentation zu haben scheint.

Betrachtet man die Komplexität davon, denke ich für meine eigenen Bedürfnisse, dass ich meine eigene rollen werde, während nicht perfekt für meinen eigenen Anwendungsfall viel einfacher sein wird.

Alle Daten in meinen replizierten Tabellen werden einfach aus einer XML-Datei entnommen. Der XML-Code kann nicht vollständig an den Server gesendet werden, auf den aus Datenschutzgründen repliziert werden soll (ich verwende nur eine Teilmenge in beiden Apps, aber die zusätzlichen Daten sind vertraulich). Daher werde ich nur eine REST-Schnittstelle mit den Daten I verfügbar machen brauche und repliziere das.

0

Dies ist keine spezifische Antwort, sondern eine Art Warteschlangenmechanismus. App A nimmt eine Änderung vor und schreibt sowohl in eine Warteschlange als auch in die Datenbank. Die "Warteschlange" könnte eine Tabelle in der Datenbank sein, die besagt "App A hat Model M mit ID I geändert". Beide Apps könnten dann einen Prozess haben, der diese Tabelle abfragt und die Änderungen anwendet.

Wo Sie in Schwierigkeiten geraten werden, wenn beide Seiten das gleiche Objekt ändern.