Frage

Einige der Leute in meinem Projekt scheinen zu denken, dass eine gemeinsame Entwicklung Datenbank mit allen ihm verbindet das Beste ist. Ich denke, dass es nicht ist und jeder Entwickler seine eigene Datenbank mit (mit regelmäßigem aktualisierten Daten-Dumps) ist die beste. Hab ich recht oder nicht? Haben Sie Probleme in jeder dieser Ansätze begegnet?

War es hilfreich?

Lösung

Speicherplatz und CPU sollten billig genug sein, die jeder Entwickler kann ihre eigene Instanz der Datenbank , mit einem automatisierten Build unter Versionskontrolle laufen. Dies ist notwendig, damit Entwickler fett sein, in Hacking auf der Datenbank, losgelöst von irgendwelchen anderen Entwicklern gleichzeitig Hacking.

Der Nachteil Wesen, natürlich, dass alle Änderungen, die sie ihren privaten Instanz machen, sind nutzlos für alle anderen es sei denn, kann es automatisch während des Erstellungsprozesses angewendet werden. Also muss es eine feste Politik sein, dass Anwendungscode nicht auf einem Datenbank-Status abhängen kann, wenn dieser Zustand von Versionskontrolle, stückgeprüft Änderungen an den DDL .

Für eine hervorragende Anleitung auf der Theorie und Praxis der Datenbankdefinition als ein weiterer Teil des Projekts Code behandeln und Änderungen und Refactorings koordinierende finden Sie unter Refactoring Datenbanken:. Evolutionary Datenbank-Design von Scott W. Ambler und Pramod Sadalage

Andere Tipps

Ich mag für die Entwicklung meiner eigenen Kopie der Datenbank mit, weil es gibt Ihnen die Flexibilität, um schnell die Dinge zu ändern, ohne sich Gedanken, wie es andere auswirken.

Wenn jedoch alle Entwickler auf ihrer eigenen Kopie der Datenbank Hacking sind weg, wird es immer schwieriger, alle zusammenarbeiten, um am Ende zu fusionieren.

ich glaube, Sie das Beste aus beiden Welten zu bekommen, indem wir die Entwickler während des Tages zu Tag Entwicklung auf einer lokalen Kopie arbeiten, aber jeder Entwickler sollte wahrscheinlich ihre Arbeit in eine gemeinsame Kopie auf einem ziemlich regelmäßig zusammenführen. Schreiben viele Unit-Tests hilft auch.

Wir teilen eine einzelne Datenbank unter all unsere Entwickler (20-ungerade), aber wir haben es so strukturiert, dass jeder seine eigenen Tabellen hat.

Sie müssen nicht Notwendigkeit eine separate Datenbank pro Entwickler, wenn Sie die Anwendung richtig strukturieren. Es sollte die Datenbank oder Tabellen-Präfix konfigurierbar sein, verwendet es sowieso, so dass Sie leicht zwischen Instanzen (Einheit Test, Systemtest, Abnahmeprüfung, Produktion, Disaster Recovery und so weiter) bewegen können.

Der Vorteil einer einzigen Datenbank zu verwenden ist, dass die Kosten für die Wartung abgeschrieben wird. Sie haben noch Ihre DBAs versuchen viele Datenbanken zu behandeln (oder, wenn Sie ein kleines-DB-Shop sind, können Sie nicht jeden Entwickler haben versucht, ihre eigene Datenbank zu erhalten, wenn sie bei der Entwicklung besser genutzt sind).

ein Single Point of Failure zu haben ist nicht eine gute Sache, nicht wahr?

Ich ziehe es eine einzige, gemeinsame Datenbank. Aber es ist sehr abhängig von der Situation und die Anwendungen entwickelt werden.

Was für mich funktioniert möglicherweise nicht für Sie arbeiten. Gehen Sie mit Ihrem Darm.

Wenn Sie mit Hibernate oder eine Hibernate-basierte Plattform arbeiten, können Sie konfigurieren Sie Ihre Datenbank erstellt werden, wenn Sie Ihren Server starten (create-Drop-Option). Dies ist sehr nützlich, wenn Sie neue Attribute zu Ihren Klassen hinzufügen. Wenn dies der Fall ist jeder Entwickler muss seine eigene Kopie der DB hat.

Wenn Sie nicht die DB-Struktur verändern mich überhaupt, dann können Sie eine einzige gemeinsame DB verwenden. In diesem zweiten Fall ist kein Muss. Ich ziehe meine eigene DB zu haben, wo ich tun kann, was ich will. Auf der anderen Seite nicht vergessen, dass einige Abfragen viel Zeit in Anspruch nehmen, und dies wird Ihr ganzes Team beeinflussen, wenn Sie einen DB gemeinsam nutzen.

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