1. Probleme bei der Datenbankverwaltung während der Entwicklung:
Heutzutage wird die Entwicklung im Allgemeinen von Teams durchgeführt, daher wird es Probleme mit der Projektsynchronisierung geben. Die Codesynchronisierung kann über SVN-Tools verwaltet werden, aber wie sieht es mit der Datenbanksynchronisierung aus? Idealerweise klären Sie bei der Entwicklung eines neuen Projekts zunächst das Geschäft, entwerfen die Datenbanktabellen und übergeben die Datenbank dann zur Wartung an Fachpersonal, sodass keine Probleme mit der Datenbanksynchronisierung auftreten. Doch wie ist die Ist-Situation? Die Anforderungen ändern sich vom Anfang bis zum Ende des Projekts. Viele Unternehmen verfügen nicht über engagiertes Datenbankwartungspersonal. Es wäre in Ordnung, wenn das Team den Code jedes Mal aktualisiert Zeit. Wenn die Kommunikation nicht rechtzeitig erfolgt, haha (Sie können sich selbst eine Meinung bilden). . . Auf diese Weise wird das Problem der nicht synchronisierten Datenbank hervorgehoben.
2. Eine kurze Einführung in Flyway:
1. Konzept:
Flyway ist Unabhängiges Tool zur Datenbankversionsverwaltung zur Datenbankanwendung, -verwaltung und -verfolgung von Datenbankänderungen. Laienhaft ausgedrückt kann Flyway die SQL-Skripte verschiedener Personen verwalten, genau wie SVN die Codes verschiedener Personen verwaltet, wodurch eine Datenbanksynchronisierung erreicht wird.
2. Unterstützte Datenbanktypen:
Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (einschließlich Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL (einschließlich Amazon RDS und Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE und Phoenix.
3. Namenskonvention für SQL-Skripte:
V + Versionsnummer (die Zahlen in der Versionsnummer werden durch „.“ oder „_“ getrennt) + doppelter Unterstrich (wird zur Trennung verwendet). Versionsnummer und Beschreibung) + Dateibeschreibung + Suffixname, zum Beispiel: V2017.9.30__Update.sql.
Hinweis: Die Versionsnummern dürfen nicht identisch sein!
4. Der Standardspeicherort für Flyway zum Lesen von SQL-Skripten:
Das Verzeichnis db/migration im Quellordner des Projekts.
5. Befehle:
Es gibt insgesamt 6 Grundbefehle: migrieren, bereinigen, info, validieren, baseline, reparieren.
3. Vorteile von Flyway:
1. Unterstützt nicht nur SQL-Skripte, sondern auch Java-Code zum direkten Betrieb der Datenbank (Flyway). -core-x.x.x Automatische Überprüfung und Aktualisierung der Datenbankfunktionalität.
4. Verwendung des Flyway-Befehlszeilentools:
1. Entpacken Sie die Flyway-Commandlin-Version und entpacken Sie sie lokal Das Diagramm lautet wie folgt:
2. Platzieren Sie das SQL-Skript im Standardverzeichnis db/migration von Flyway. Wenn es an anderen Orten platziert wird, müssen Sie flyway.locations in der conf ändern /flyway.conf-Datei. 3. Ändern Sie flyway.url, flyway.user, flyway.password in der Datei conf/flyway.conf entsprechend Ihrer eigenen Situation.4. Führen Sie den Migrationsbefehl in der Befehlszeile aus.
5. Verwendung in Verbindung mit Maven-Projekten:1. Abhängigkeitskoordinaten einführen:
<!-- flyway --> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>4.2.0</version> <dependency>
2 Verzeichnis Der Pfad zum Speichern der SQL-Versionsdatei lautet dataBase/sqlite (Sie können auch den Standardpfad db/migration schreiben) und die SQL-Datei unten platzieren.
3. Fügen Sie die Flyway-Java-Klasse hinzu:package com.xxxxxx.flyway; import javax.sql.DataSource; import org.flywaydb.core.Flyway; public class MigrationSqlite { private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void migrate() { //初始化flyway类 Flyway flyway = new Flyway(); //设置加载数据库的相关配置信息 flyway.setDataSource(dataSource); //设置存放flyway metadata数据的表名,默认"schema_version",可不写 flyway.setTable("SCHMA_VERSION"); //设置flyway扫描sql升级脚本、java升级脚本的目录路径或包路径,默认"db/migration",可不写 flyway.setLocations("dataBase/sqlite"); //设置sql脚本文件的编码,默认"UTF-8",可不写 flyway.setEncoding("UTF-8"); flyway.migrate(); } }
<bean id="MigrationSqlite" class="com.xxxxxx.flyway.MigrationSqlite" init-method="migrate"> <property name="dataSource" ref="dataSource"></property> </bean>
5. Behandeln Sie Konflikte, wenn Flyway die Datenbank aktualisiert und die Codelogik die Datenbank betreibt (ich habe es noch nicht gefunden, ich habe es online gefunden, also behalte ich es für Notfälle):
Wenn Flyway ist noch da Vor dem Aktualisieren der Datenbank hat eine andere Logik der Anwendung begonnen, die Datenbank für andere Vorgänge zu verwenden, bevor der Aktualisierungsvorgang abgeschlossen wurde, was dazu führt, dass die Anwendung viele Fehler generiert oder sogar überhaupt nicht ausgeführt wird. Um dieses Problem zu lösen, können wir das Bean-Abhängigkeitsprinzip von Spring verwenden, um wichtige Datenbankoperations-Beans von der FlywayMigration-Bean abhängig zu machen, sodass keine anderen datenbankbezogenen Vorgänge ausgeführt werden können, bis FlywayMigration instanziiert wird (der Datenbankaktualisierungsvorgang ist abgeschlossen).
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="MigrationSqlite"> <property name="dataSource" ref="dataSource" /> </bean>
Auf diese Weise wird die Datenbank bei jedem Projektstart automatisch aktualisiert, sodass Sie sich keine Sorgen machen müssen, dass die Datenbank nicht synchron ist.
Empfohlenes Tutorial: „Java-Tutorial“
Das obige ist der detaillierte Inhalt vonDetaillierte Anweisungen zur Verwendung von Flyway. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!