MySQL Datenbankstruktur angleichen - Daten behalten

ITrun90

Mitglied
Hi,

ich beschreibe kurz die IST-Situation.

Ich habe zwei Datenbanken zu einem Projekt. Einmal eine Testdatenbank und einmal eine Livedatenbank. Zu erst wird auf der Testdatenbank entwickelt. Sofern alles fertig ist, und mit Testdaten getestet wurde, kann die Struktur auf das Livesystem übernommen werden.

Dies soll auch öfter wiederholt werden. Die Daten, die auf dem Livesystem liegen sollen dabei natürlich nur soweit gelöscht/geändert werden, wie es auf Grund der neuen Struktur sinnvoll ist (neue Spalten mit NULL-Werten füllen, gelöschte Spalten einfach löschen, ist die Spalte, die gelöscht/hinzugefügt werden soll ein FK, soll dementsprechend ein Eintrag hinzugefügt/entfernt werden).

Das Ganze soll mit Java erfolgen (ich habe dafür schon ein JavaFX-Projekt angelegt).

Habt ihr da einen Tipp für mich, ob es ggfs. eine Bibliothek gibt (DBUnit vielleicht)?

Im Grunde möchte ich eine einseitige Synchronisation der Datenbankstruktur, die zugleich die Daten soeweit möglich auf dem Livesystem erhält.
 

DieKeksmaffia

Mitglied
Mein Vorschlag: JPA (java persistence api)
Ist nicht so einfach zu verstehen wie man es nutzt, aber wenn man es erst einmal verstanden hat, ist es doch recht leicht. Ich würde zum lernen diverse Internetseiten nutzen und selbst herumexperimentieren. Außerdem kann ich dir empfehlen netbeans zu nutzten, aber nur weil netbeans dir einiges hilfreiches, was du sonst selber schreiben müsstest, generieren kann.
 

Thallius

Top Contributor
Ich verstehe die Problematik nicht so ganz. Das man Spalten oder gar ganze Tabellen löscht kommt eigentlich niemals vor. Das macht auch keinen Sinn. Wenn ich eine Spalte hinzufüge, dann mache ich das per Code. Also einfach ein query ob es die Spalte schon gibt und wenn nicht, dann wird sie angelegt. Damit habe ich auf dem Live Server nach dem ersten Start gleich immer das gleiche DB Schema wie auf dem Test Server

Gruß

Claus
 

DieKeksmaffia

Mitglied
Und das mit dem ändern der Spalten:
Wie willst du dir das vorstellen einfach so per Code eine Spalte zu löschen und hinzuzufügen?
Denn eigentlich speichert man einen Datensatz in einer OOP (Java) in einem Objekt mit entsprechenden Attributen ab. Dies nennt man dann Entity. Wenn du jetzt in deiner GUI eine Splate zur Datenbank hinzufügst oder eine löschst musst du dementsprechend auch die Attribute der Entityklasse anpassen.......
 

Dukel

Top Contributor
Wenn entsprechend oft Änderungen an der Datenstruktur getätigt werden ist evtl. der Ansatz falsch.
Evtl. wäre eine NoSQL Datenbank ohne festes Schema sinnvoller.
 

stg

Top Contributor
Mein Vorschlag: JPA (java persistence api)

JPA ist für Objekt-Relationales Mapping. Ist zwar schön, aber die Antwort geht an der Frage vorbei. Natürlich kannst du dir mit JPA dein Datenbank Schema neu erzeugen lassen, aber das löst nicht das Problem der Datenmigration und hier ist JPA der falsche Ansatz.

Wenn entsprechend oft Änderungen an der Datenstruktur getätigt werden ist evtl. der Ansatz falsch.
Evtl. wäre eine NoSQL Datenbank ohne festes Schema sinnvoller.

Würde ich nicht sagen. Nach meiner Erfahrung ist es das normalste der Welt, dass Anforderungen an eine Software sich ständig ändern. Speziell bei individueller Software ... und das ist wohl auchgenau das, womit die meisten von uns ihr Geld verdienen. Einsatz einer NoSQL Datenbank kann hier sinnvoll sein, in den meisten Fällen löst es aber nicht das zugrunde liegende "Problem".

Ich verstehe die Problematik nicht so ganz. Das man Spalten oder gar ganze Tabellen löscht kommt eigentlich niemals vor. Das macht auch keinen Sinn. Wenn ich eine Spalte hinzufüge, dann mache ich das per Code. Also einfach ein query ob es die Spalte schon gibt und wenn nicht, dann wird sie angelegt. Damit habe ich auf dem Live Server nach dem ersten Start gleich immer das gleiche DB Schema wie auf dem Test Server

Bei kleinen Änderungen mag das ausreichen, aber wenn sich die Struktur doch entscheidend verändert, und auch Daten "migriert" werden müssen, dann reicht das nicht mehr aus.


Zurück zur Frage:
Lies dir mal folgende Beiträge durch:
http://stackoverflow.com/questions/...control-system-for-database-structure-changes
https://blog.codinghorror.com/get-your-database-under-version-control/
 

Thallius

Top Contributor
Bei kleinen Änderungen mag das ausreichen, aber wenn sich die Struktur doch entscheidend verändert, und auch Daten "migriert" werden müssen, dann reicht das nicht mehr aus.

Also bei einem bereits Live arbeitenden System würde ich eine derart große Änderung an einer Entität einfach nicht vornehmen. In dem Fall würde ich eine neue Entität erstellen und eine Migratinsmethode schreiben.

Gruß

Claus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Datenbankstruktur im JTree darstellen Datenbankprogrammierung 19
F Derby/JavaDB Datenbankstruktur grafisch darstellen... (Strukturdiagramm?) Datenbankprogrammierung 7
S PostgreSQL Datenbankstruktur exportieren und importieren Datenbankprogrammierung 2
B Wie persistiert man eine Tree-ähnliche Datenbankstruktur? Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
R Datenbankstruktur für eine renn simulation Datenbankprogrammierung 3
J Suche geeignete Datenbankstruktur Datenbankprogrammierung 3
S Datenbankstruktur überprüfen Datenbankprogrammierung 2
D Alte Daten ins neue Modell quetschen Datenbankprogrammierung 6
R Mongodb Daten werden immer überschrieben Datenbankprogrammierung 7
R Mongodb Daten in einem bestimmten Document speichern Datenbankprogrammierung 1
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
B Daten HSQL-DB Datenbankprogrammierung 2
V H2 ManyToMany wie speichere ich die Daten? Datenbankprogrammierung 10
thobren Projekt SQlite! Wie kann ich auf auf SQlite Daten zugreifen? Datenbankprogrammierung 4
OnDemand Daten verschlüsseln Datenbankprogrammierung 42
L Oracle Daten in Häppchen selektieren Datenbankprogrammierung 5
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Z Ausgabe nur bestimmter Daten Datenbankprogrammierung 6
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Kirby.exe Vorschläge zur Verschlüsselung von Daten in der DB Datenbankprogrammierung 2
T Java Spiel Daten speichern Datenbankprogrammierung 1
LimDul H2 Embedded DB und Gigabytes an Daten Datenbankprogrammierung 0
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
R Wie mit zu viele Daten umgehen? Datenbankprogrammierung 2
F MySQL Wie speichere ich Daten zeitlich abhängig? Datenbankprogrammierung 4
T Oracle Normalisierung und Daten splitten Datenbankprogrammierung 1
JG12111989 DB-Daten werden falsch dargestellt Datenbankprogrammierung 7
K H2 Daten in die H2 console DB eintragen Datenbankprogrammierung 2
L SQLite Ändern der Daten in einem UNIQUE Feld Datenbankprogrammierung 1
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
L Oracle Daten von einem Server zum andere kopieren Datenbankprogrammierung 24
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
L MySQL Vergleichen von Array-Inhalt, Ausgabe gleicher Daten Datenbankprogrammierung 3
W Daten in Java intern abfragen Datenbankprogrammierung 1
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
P LDAP: Daten eintragen funktioniert nicht Datenbankprogrammierung 7
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
O mit Multi-Thread Daten aus Datenbank lesen und schreiben Datenbankprogrammierung 22
F Daten verdichten Datenbankprogrammierung 0
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
B Daten aus DB in Word Dokument Datenbankprogrammierung 2
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
D Daten posten auf RestApi (Mongodb/NoSQL) Datenbankprogrammierung 0
I Fehler bei Ausgabe der Daten aus der DB Datenbankprogrammierung 3
OnDemand MySQL Daten aktualisieren Datenbankprogrammierung 6
D Daten von einem Server in eigenem Java-Programm benutzen Datenbankprogrammierung 6
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
S Daten aus Form in Datenbank nur einmal eintragen Datenbankprogrammierung 2
6 JBDC Daten verschlüsseln? Datenbankprogrammierung 2
F MySQL Daten ändern über Java Datenbankprogrammierung 3
G SQLite Daten aus SQLite DB in andere SQLite DB importieren Datenbankprogrammierung 4
H Grosse Menge an Daten in eine Datenbank Datenbankprogrammierung 32
M Daten nachträglich hinzufügen Datenbankprogrammierung 6
2 MySQL Daten aus einer Array auslesen und MySQL Statment erstellen. Datenbankprogrammierung 5
E Daten einer SQL-Datenbank aus Combobox in labels schreiben Datenbankprogrammierung 6
N HSQLDB Daten Auslesen Datenbankprogrammierung 3
O Viele Verbindungen-Exception bei insert Daten zur MySQL-Datenbank Datenbankprogrammierung 2
P MySql daten in leeren jtable übertragen Datenbankprogrammierung 5
SexyPenny90 SQL Daten sortieren und top 5 ausgeben Datenbankprogrammierung 7
L Hibernat will Daten nicht einfügen??? Datenbankprogrammierung 2
B MySQL DB Daten aktualisieren Datenbankprogrammierung 9
D MySQL Daten werden aus Datenbank gelesen, obwohl sie dort gar nicht angekommen sind Datenbankprogrammierung 8
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
L SQLite Daten werden nicht in die Tabelle eingefügt Datenbankprogrammierung 7
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
C ResultSet enthält nicht alle Daten Datenbankprogrammierung 4
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
J Daten synchronisieren in Multi-Client-Anwendungen (Hibernate) Datenbankprogrammierung 6
S JPA: DB Schema ändern und Daten nicht verlieren - wie? Datenbankprogrammierung 5
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
F Daten in die DB hinzufügen Datenbankprogrammierung 7
H Klasse welche Mysql Daten zurück gibt Datenbankprogrammierung 18
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
H Daten in/aus Datenbank schreiben Datenbankprogrammierung 2
M DropDownBoxen mit MySQL Daten füllen Datenbankprogrammierung 3
E MySQL Daten in die Datenbank eingeben via Java Programm Datenbankprogrammierung 3
F ORA 17410 Keine weiteren Daten aus Socket zu lesen Datenbankprogrammierung 2
B Daten aus Datenbank holen Datenbankprogrammierung 6
T Problem beim schreiben von daten Datenbankprogrammierung 4
N Daten aus Datenbank abfragen und anzeigen in der Praxis?? Datenbankprogrammierung 2
G MySQL Bekomme keine Daten. Datenbankprogrammierung 7
L CLOB-Daten werden beim Einfügen in die Datenbank geändert? Datenbankprogrammierung 5
G Daten aggregieren Datenbankprogrammierung 11
Gossi Oracle 2 Daten (Datum) vergleichen Datenbankprogrammierung 6
W MySQL Daten aus bestimmter Spalte lesen Datenbankprogrammierung 2
E MySQL Befüllen einer MySQL DB mit großen Daten Datenbankprogrammierung 6
J Doppelte Daten in Spalte, nur die erste abrufen wie? Datenbankprogrammierung 15
P Daten aus MySql Datenbank lesen??? Datenbankprogrammierung 6
J Daten vergleichen Datenbankprogrammierung 10
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
X Daten einer DatenbankTabelle in JTable darstellen Datenbankprogrammierung 13
T Designfrage: DB-Daten direkt oder verzögert speichern Datenbankprogrammierung 2
Dragonfire Daten aus jsp Datei in datenbank speichern Datenbankprogrammierung 15

Ähnliche Java Themen

Neue Themen


Oben