オリジナル住所:梁桂趙さんのブログ
ブログのアドレス:http://blog.720ui.com
国民の関心番号へようこそ:「サーバー側の思考を。」認知の限界を破り、洗練されたとともに、一緒に育つ同じ周波数のグループ。
今日興味深いトピックを議論する:私たちは、プロジェクトのGitのバージョンコントロールすることによって達成することができ、Jenkinsの継続的な統合、データベース・レベルのために、我々はまだ手作りの実行SQLスクリプトに依存している、マルチ環境(開発環境では、私たちに、テスト環境、開発前の環境、本番環境)の最新のSQLスクリプトの正確さを確保するためにどのように?
我々はすべて知っているように、手動操作が間違って行くことは非常に簡単で、私たちは、プログラムは、管理と移行を自動化できるようにする必要があります。今日、私はオープンソースのデータベース移行ツールフライウェイをお勧めします。
MySQLをサポートするだけでなく、フライウェイ、それはまた、非常に多くの他のデータベースをサポートすることができます。
実際には、春ブーツはフライウェイの完全な統合を持っています。この点で、我々は非常に簡単にそれを使用することができます。まず、我々は、Mavenの依存関係を紹介します。(mysqlのコネクタ-Javaに依存する、我々はまた、春・ブート・スターター-JDBCに投影する必要があることに注意してください)
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
加えて、我々は中application.ymlに関連するオプションを設定します。春のブートデフォルトのクラスパス:移行ディレクトリの下// DB /スキャン移行。ここで、著者spring.flyway.locationsはデシベル/ SQLに調整します。
spring:
flyway:
enabled: true
baseline-on-migrate: true
locations: [classpath:db/sql]
システムが起動すると、自動的にflyway_schema_historyファイルを作成します。(もちろん、手動で独自に作成することができます)。このテーブルには、記録されたチェックサム値は、バージョンおよびSQLスクリプトは、移行スクリプトが含まれ、各移動の記録を保持している、フライウェイのメタデータテーブルです。新しいSQLスクリプトがスキャンされると、フライウェイは、SQLスクリプトのバージョン番号を解決し、かつ、更新のSQLスクリプトのバージョンが、それは、指定されたDB上のSQLファイルを実行する場合は、メタデータテーブルのコントラストが、そうでない場合はSQLをスキップファイル。
CREATE TABLE `flyway_schema_history` (
`installed_rank` int(11) NOT NULL,
`version` varchar(50) DEFAULT NULL,
`description` varchar(200) NOT NULL,
`type` varchar(20) NOT NULL,
`script` varchar(1000) NOT NULL,
`checksum` int(11) DEFAULT NULL,
`installed_by` varchar(100) NOT NULL,
`installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`execution_time` int(11) NOT NULL,
`success` tinyint(1) NOT NULL,
PRIMARY KEY (`installed_rank`),
KEY `flyway_schema_history_s_idx` (`success`)
)
V1.1__INIT_DB.sql:その後、我々は手動でDB / SQLで開始したSQLスクリプトを作成します。
DROP TABLE IF EXISTS `tag`;
CREATE TABLE `tag` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`gmtCreate` date DEFAULT NULL,
`gmtModified` date DEFAULT NULL,
`title` varchar(32) DEFAULT NULL,
`parentId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
プログラムが再び開始した後に続いて、それがデータベースにポスト自動化します。
ここでは、知識を補完する必要性は:バージョンの比較は、フライウェイを支配します。その原則、代わりに0の不在を取るために残しました。1.1バージョン1.1.1、1.1.1と1.1.01と一貫性のより高い、たとえば1.0、1.1よりも高いです。また、彼らは秩序とリリース順序に従って実行されます。
また、フライウェイもDML(挿入、更新、削除)というようにサポートし、DDLをサポートしていないだけ。したがって、我々はその後、検証するV1.2__INSERT_TAG_DATA.sqlファイルを作成することができます。
INSERT tag(title, parentId) values('java', 0);
INSERT tag(title, parentId) values('spring', 0);
最後に、我々は、移行の一般的なタイプをサポートするために、次のフライウェイで議論する必要があります。
- バージョン管理の移行:データベースのアップグレード・スクリプト
- 反復の移行:再実行してチェックサムが変更スクリプトが再実行されますとき。
- 接頭辞:接頭識別子、Vのデフォルト値は、バージョン管理を表し、Rは、再現性を表します
- バージョン:バージョンの識別番号は、デジタルまたは_下線間の1つ以上のデジタル利用可能な点セパレータで構成される。
- セパレータ:別バージョンの識別及び記述情報は、デフォルトでは2つのアンダースコアである__
- 説明:下線またはテキスト、記述情報との間の空間によって分離することができます
- サフィックス:その後の同定、デフォルト.SQL
私たちは、メタデータ(flyway_schema_history)を介してデータベースの移行バージョンの保守・管理の自動化を支援するために、フライウェイを要約します。
最後に書かれました
[サーバー]思考:私たちはフロントラインの戦闘インターネットアーキテクチャとプロジェクト経験を探索するコアサーバ技術と話します。探求し、交流の自分のサークルを見つけるために単独R&D人材のすべてをしてみましょう。ここでは、認知の限界を打破するために、問題を解決するために最短経路に接続され、認知接続トップ技術ダニエル、思考の接続優れた方法、接続するすべての罰金の方法をアップグレードすることができます。
すべての「サーバー側の思考」でよりエキサイティングな記事、!
ブログ記事複数のプラットフォームからこの記事OpenWriteリリース!