Frage

Auf einen neuen Job begann ich, wir haben beide eine Java-Anwendung, die die meisten des schweren Hebens im Kerngeschäft Logik behandelt, und wir auch eine Rails-Anwendung haben, dass natürlich das Web-Interface zu diesem Server abwickelt. Beide Zugriff auf die gleiche Datenbank.

Bis jetzt sind die meisten der Fokus auf die Java-Anwendung war und als solche gibt es keine Migrationen im Projekt Rails. Die SQL die gemeinsam genutzte Datenbank aktualisieren wird in einer Datei wie changes.sql verwaltet werden.

Wie Sie sich vorstellen können, das macht es etwas schwierig zu entwickeln.

Mein erster Gedanke war es, die Codebases für das Java-Projekt und die Rails-Anwendung zu kombinieren, denn es gibt eine Abhängigkeit besteht, und dass die SQL-Datei in der Quelle zu verwalten. Aber ich dachte, dass ich hier fragen würde, um zu sehen, ob jemand dieses Problem mit einem gewissen Erfolg in Angriff genommen hatte.

War es hilfreich?

Lösung

Ein Ansatz ist es, die Schienen Migrations-Tools zu verwenden, die DDL-Dateien für die Datenbank erzeugen und verwenden Hibernate die Java-Objekte zu aktualisieren, die auf bestimmte Datenbankentitäten beziehen. Sie nicht wirklich sagen, wie Sie Datenbankänderungen auf der Java-Seite verwalten, oder ob Sie einen ORM verwenden, aber man kann sicherlich die beide mit einer wenig Arbeit synchronisieren.

Sie können auch in die andere Richtung gehen um und lassen Sie die Java-Definitionen Steueränderungen auf der Rails Seite.

Ich denke, der Schlüssel, dies erfolgreich zu tun, einen der beiden Plattformen als „primäre Datenbank-Modellierer“ auszuwählen und zu entwickeln, den Prozess, dieses Modell auf die anderen Plattform zu migrieren. Der Versuch, zu ermöglichen, Änderungen von beiden nur Kopfschmerzen verursachen.

Andere Tipps

Wir haben eine ähnliche Struktur Projekt: gemeinsam genutzte Datenbank mit Java und Rails-Anwendungen als Clients. Ich befürwortete und bekam Buy-in für den Umgang mit Datenbankänderungen der Schienen Migration Mechanismus zu verwenden. Es dauert ein wenig Schienen Fürsprache und einige Bereitschaft zu helfen, aber das Java-Team wird auch ihre eigenen Migrationen zu schreiben.

Wir haben einige Fälle, in denen wir Stored Procedures und Datenbank spezifische Spaltentypen verwenden, so änderten wir die Schienen environment.rb SQL verwenden für die Testdatenbank zu erstellen.

  # Use SQL instead of Active Record's schema dumper when creating the test database.
  # This is necessary if your schema can't be completely dumped by the schema dumper,
  # like if you have constraints or database-specific column types
  config.active_record.schema_format = :sql

Auf der Plusseite die SQL mit Migrationen Verwaltung macht Schienen Prüfung und Einrichtung sauber für Sie. Der Nachteil ist, dass einige der Migrationsdateien sind, dass einfach nicht recht (zum Beispiel können Sie die Migration DSL verwenden gespeicherte Prozeduren zu erzeugen, so dass Sie diese% ausführen haben {blah} in Ihrem Migrationen).

Denken Sie daran, Kommunikationsleitungen offen beteen die Teams zu halten. Ich mag die Tatsache, dass. „Cap Produktion deploy: Migrationen“ macht die Produktionsdatenbank tot einfache Aktualisierung

Danke Steve

Auf der Java-Seite, die sie verwenden Hibernate, aber mit einem manuellen SQL-Aktualisierungsprozess.

Ich bin damit einverstanden, dass es die eine oder andere sein sollte. Je mehr ich darüber nachdenke, das Hinzufügen noch eine andere Anwendung / module / Code-Basis zu verwalten nur die Datenbank ist definitiv die falsche Idee.

Danke

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