Frage

Was ändert dich mit einer Datenbank (MySQL in diesem Fall) nicht Hibernate (Daten, Schema, ...) überleben?

Ich stelle diese wegen ohne Ausfallzeiten mit Hibernate.

Ändern Datenbank, Split App-Server in zwei Cluster, umschichten, die Anwendung auf einem der Cluster und Switch-Anwendung.

Danke Stephan

War es hilfreich?

Lösung

Ich werde diese Frage beantwortet aus eigener Erfahrung und aus keinem besonderen Einblick in Hibernate. So nehmen Sie diese mit einem Körnchen Salz. Auch ein bisschen eine vage Frage scheint es, Kommentare hinzufügen, wo sachgemäßer. :)

Zu allererst Ändern / Hinzufügen / Entfernen von Material auf das Schema, das nicht in den Ruhezustand abgebildet werden nie Probleme verursachen. Alle wintern wirklich tut, ist Abfragen zu generieren, da es eine Menge Sachen übersetzt Ihre App auf SQL wird einfach so lange fortgesetzt, arbeiten wie diese Abfragen weiterarbeiten. Dies bedeutet, Spalten zu einer Tabelle hinzufügen oder Hinzufügen von Tabellen ist kein Problem, das Entfernen Spalten, die Sie nicht zugeordnet haben, ist kein Problem, etc etc.

Was ist problematische Änderungen an Sachen, die abgebildet wird. Angenommen, Sie eine Nummer ändern (10,0) zu einer Zahl (11,0), dies wird in der Regel arbeiten. Wenn Sie eine CHAR (1) Feld mit einem Bit-Feld oder etwas ähnliches zu tun Sachen beginnen wie das Ändern, müssen Sie bestimmte Änderungen in Ihren Hibernate-Mappings, die eine vorhandene Bereitstellung fehl machen. Dies ist der gesunde Menschenverstand. Wenn Sie müssen, um Änderungen wie diese machen, die ALTEN TABLE auf einem regulären DB-Server ausgeführt wird wahrscheinlich die Tabelle sperren trotzdem, so dass der App neu zu starten, ist nicht Ihr größtes Problem.

mit großen Schemaänderungen Umgang unter Hochverfügbarkeit ist nicht etwas, Hibernate gemeint ist, mit direkt zu beschäftigen. Hibernate geht von einer traditionellen relationalen Datenbank, in der Schemaänderungen sind oft sehr teuer.

Die drei anderen Probleme, die Sie erwähnen:

  • Ändern Datenquellen: wahrscheinlich erfordert eine App Neustart
  • Splitting App-Server: Wenn Sie meinen, was ich denke du meinst, können Sie einfach auf verschiedenen App-Server bereitstellen. Wenn Umschaltungen Anforderung sind, verwenden Sie etwas zwischen Ihrem Web-App und dem Kunden, sie zu handhaben, das heißt einen IP-Level-Load-Balancer oder ähnliches.
  • Ändern von Daten: die normalen Probleme mit Transaktionsdatenbanken und mehrere Autoren gelten. Hibernate könnte sich mit einem inkonsistenten Ansicht der Datenbank beenden. Es könnte Änderungen von anderen Benutzern überschreibt und in einigen Fällen könnte dies einige Ausnahmen erzeugen, aber man sollte möglich sein, zu antizipieren und auf Situationen wie diese AFAICT zu handeln.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top