Entwicklung/Datenbankversionierung: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
neu
(Following verschob Seite Regeln nach Regeln und Richtlinien)
 
(neu)
Zeile 1: Zeile 1:
#WEITERLEITUNG [[Regeln und Richtlinien]]
Änderungen am Datenbankinhalt werden von den Entwicklern an drei Stellen eingepflegt:
 
* statische Daten in htdocs/doc/sql/static-data/data.sql
* stored procs & trigger in htdocs/doc/sql/stored-proc/maintain.php
* Änderungen an Tabellenstrukturen und Indizes in bin/dbsv-update.php.
 
Das Script ''bin/dbupdate.php'' spielt alle diese Dinge in eine OC-Installation – z.B. ein [[Entwicklung/Entwicklersystem|Entwicklersystem]] – ein, bringt die Datenbank also auf den aktuellen Stand.
 
== Versionierung der Datenbankstruktur ==
 
dbsv-update.php beinhaltet eine Versionierung der Datenbankstruktur.
 
In der Tabelle 'sysconfig' einer OC-Installation gibt es (ab [https://github.com/OpencachingDeutschland/oc-server3/blob/master/htdocs/doc/sql/db-changes.txt#L64 Datenbankstand April 2013] bzw. Codestand a654761 vom 22. April) den Eintrag 'db_version' mit dem aktuellen Versionsstand der Datenbank, fortlaufend durchnumeriert ab 100. Für jede neue Version gibt es eine "Mutationsfunktion" in dbsv-update.php, die die Datenbank auf den neuen Versionsstand bringt.
 
Wenn du eine Änderung an einer Datenbanktabelle vornehmen (oder eine neue einfügen) möchtest, vergewissere dich zuerst sorgfältig, welche Folgen dies hat. Neue Informationen zu Caches und Logs müssen an vielen Stellen berücksichtigt werden, inklusive [[XML-Schnittstelle]], [[OKAPI]], evtl. auch [[Ocprop]] etc. Evtl. müssen Änderungen auch in vorhandene Trigger eingebaut werden oder benötigen neue Trigger, um Kosistenz zu gewährleisten. Evtl. müssen Indizes geändert oder neu definiert werden, um die nötige Performance sicherzustellen.
 
Wenn du sicher bist, die Datenbank ändern zu wollen, ändere sie NICHT direkt, schreibe eine neue Mutationsfunktion in dbsv-update.php, die die Änderung vornimmt. Vorhandene Funktionen können als Vorlage dienen. Teste deine Funktion anschließend mit "php dbsv-update.php" auf der Kommandozeile. Wenn es nicht wie beabsichtigt funktionierte, mache die Änderung rückgängig und setze sysconfig.db_version eins zurück, bevor du es wieder versuchst.
 
Wenn mehrere Entwickler gleichzeitig neue Mutationen definieren, ist es Aufgabe des Code-Maintainers, diese in passender Reihenfolge und Numerierung zusammenzuführen.
 
[[Kategorie:Entwicklung]]
2.505

Bearbeitungen

Navigationsmenü