it-swarm.com.de

Gibt es eine Möglichkeit, die Datenbankänderungen zu erkennen, die durch Erweiterungen von Drittanbietern vorgenommen wurden?

Ich arbeite in einer Entwicklungs-/Staging-/Produktionsumgebung und habe einige Probleme damit, Code von einer Umgebung in eine andere zu befördern, insbesondere wenn Upgrades auf Joomla und andere Software von Drittanbietern erforderlich sind.

Gibt es eine Möglichkeit, herauszufinden, welche SQL-Anweisungen seit einem bestimmten Datum für die Datenbank ausgeführt wurden, damit ich sie in verschiedenen Umgebungen anwenden kann, ohne jede Umgebung aktualisieren zu müssen?

7
ContextSwitch

Einfache Antwort ist nein.

Die erweiterte Antwort lautet, dass mysql Abfragen protokollieren kann, es gibt jedoch Grenzen, und wenn es nur einen Unterschied zwischen den Umgebungen gibt, würde dies dazu führen, dass diese Abfragen nicht funktionieren. Die einzige Möglichkeit, dies zu tun, ist der Server selbst, da meines Wissens keine spezielle Protokollierung zu JDatabase hinzugefügt wurde (Auch wenn eine Komponente JDatabase nicht verwendet, wird das Steuerelement noch weiter gesenkt).

Mit dem oben Gesagten, das Sie in einer perfekten Welt sehen können, gibt es eine Möglichkeit. Wenn Sie jedoch von dev zu live wechseln, hatten Sie derzeit eine Live-Site, die eigenständig Abfragen ausführte, und sie ist "anders" als die aktuelle Entwicklung/Inszenierung Ausführung. Wenn sich also ein Benutzer auf der Live-Site anmeldet und Sie Joomla in dev aktualisiert haben, muss dieser Benutzer bei der Aktualisierung der Benutzertabelle manuell neu hinzugefügt werden (möglicherweise wurden auch Änderungen an der Tabellenstruktur vorgenommen). Stellen Sie sich nun nicht einen Benutzer vor, sondern 10 oder sogar 100, und der Vorgang kann nicht automatisiert werden.

Joomla hat einige nette Aktualisierungsfunktionen, die ein Versions-für-Versions-MySQL-Update für die Tabellen ermöglichen. Dies stellt sicher, dass die Tabellen die Struktur behalten, die die Abfragen benötigen. Es werden jedoch keine Einfügungen oder Aktualisierungen für die Tabellen protokolliert, wenn Sie also in einer Entwicklungsumgebung aktualisieren Die beste Möglichkeit zur Aktualisierung in der Produktion besteht darin, dieselben Schritte zu befolgen und auch in Ihrer Produktion zu aktualisieren.

In Zukunft kann Joomla möglicherweise Datenbankänderungen in seinem Kern nachverfolgen, sodass Sie eine Produktionsversion mit einer Entwicklungsversion synchronisieren können. Allerdings ist der Arbeitsaufwand zum Erstellen einer solchen Version verrückt und würde sich auf die Leistung auswirken. Im Moment glaube ich nicht, dass es Pläne dafür gibt oder geben sollte.

9
Jordan Ramstad

Datenbanken sind in der Regel ein großes Problem bei der gesamten Softwareentwicklung. Die Synchronisation der Dinge ist auch für uns ein großes Problem, insbesondere bei Inszenierungen und Produktionsstätten.

Eine Sache, die ich mir in letzter Zeit angeschaut, aber noch nicht implementiert habe, ist:

http://phinx.org/

Eine andere "schlechte Methode" besteht darin, die DB-Schemas zu exportieren (wenn Sie sich für Schemas interessieren, handelt es sich bei den Daten wahrscheinlich um ein anderes Tier) und dann die Schemas für jede Datenbank zu vergleichen. Sollte die Unterschiede zwischen ziemlich leicht offenbaren. Dann müssen Sie nur noch die Datenkonsolidierung durchführen. Daher würde ich sagen, dass Sie sich im Idealfall nur um Daten in Ihrer Produktionsumgebung kümmern und diese mit der Staging-Umgebung synchronisieren müssen. Dann können Sie nach Bedarf Sandboxen erstellen und in der Entwicklung herumspielen.

4
Chad Windnagle