Zuvor habe ich an einem Produkt gearbeitet, das sich auf Data Warehouses bezog und auf Wunsch beim Kunden installiert werden konnte. Folglich wusste die Software, wie man die "Installation" durchführt (hauptsächlich die Erstellung des erforderlichen Datenbankschemas und die Eingabe statischer Daten wie Währungs-/Ländercodes usw.).
Da wir diese Informationen im Code selbst hatten und weil wir über steckbare SQL-Adapter verfügten, war es trivial, diesen Code mit einer In-Memory-Datenbank (wir verwendeten HSQL) zu verwenden. Folglich führten wir die meisten unserer eigentlichen Entwicklungsarbeiten und Leistungstests mit "echten" lokalen Servern (Oracle oder SQL Server) durch, aber alle Unit-Tests und anderen automatisierten Aufgaben mit prozessspezifischen In-Memory-DBs.
Wir hatten in dieser Hinsicht das Glück, dass wir bei einer Änderung der zentralisierten statischen Daten diese in den Upgrade-Teil der Installationsanweisungen aufnehmen mussten, so dass sie standardmäßig im SCM-Repository gespeichert, von den Entwicklern ausgecheckt und als Teil ihres normalen Arbeitsablaufs installiert wurde. Wenn ich darüber nachdenke, ist dies sehr ähnlich zu der von Ihnen vorgeschlagenen Idee eines DB-Changelogs, nur etwas formalisierter und mit einer domänenspezifischen Abstraktionsschicht drum herum.
Dieses System hat sehr gut funktioniert, denn jeder in wenigen Minuten eine voll funktionsfähige DB mit aktuellen statischen Daten aufbauen konnte, ohne jemandem auf die Füße zu treten. Ich kann nicht sagen, ob es sich lohnt, wenn Sie die Installations-/Aktualisierungsfunktionalität nicht benötigen, aber ich würde es auf jeden Fall in Betracht ziehen, weil es die Datenbankabhängigkeit völlig schmerzlos macht.
1 Stimmen
Die einzige Möglichkeit, die ich je gesehen habe, ist, dass 50+ Programmierer beliebige Änderungen an der Datenbank vornehmen und dann den DB-Administrator (also mich) anmeckern, wenn etwas nicht mehr funktioniert. Ich kann nicht sagen, dass ich diesen Ansatz empfehle.
0 Stimmen
Das macht durchaus Sinn :) Für ein Team von vier Personen funktioniert das meistens gut. Wenn unser Team wächst (was sehr wahrscheinlich ist), würde ich gerne eine elegantere Lösung haben.