web-dev-qa-db-ja.com

Liquibaseを使用する理由と時期

スタックオーバーフローでこの質問を検索しようとしましたが、これに関する質問が見つかりませんでした。私はliquibaseの初心者で、なぜliquibaseなのか知りたいですか?そして、プロジェクトでliquibaseを使用する必要があるのはいつですか?

これはすべてのデータベースの変更を1か所に保持することですが、いくつかのリポジトリシステムで単純なsqlファイルを作成し、時間とともに更新し続けることで同様のことができます。

83
Shakeel Shahzad

自己管理スキーマ作成ファイルとLiquibase(または他の スキーマ移行 ツール)の主な違いは、後者がスキーマ変更ログを提供することです。これは、経時的なスキーマの変更の記録です。データベース設計者は、スキーマでchangesを指定し、必要に応じてスキーマをプログラムでアップグレードまたはダウングレードできます。

次のような他の利点があります。

  • データベースベンダーの独立(これは疑わしいですが、彼らは試みます)
  • 自動ドキュメント
  • データベーススキーマの差分

1つの代替ツールは flyway です。

データを失わずにスキーマの更新を自動的に管理する必要がある場合、またはスキーマの更新を自動的に管理する必要がある場合は、スキーマ移行ツールの使用を選択します。つまり、顧客サイトや安定したテスト環境などの長期にわたる環境にシステムを展開した後、スキーマが変更されることを期待しています。

60
Synesso

スキーマの変更に関して、開発者の間でliquibaseが規律を作成するのを見てきました。他の開発者の変更を上書きして実行することはできません。代わりに、独自の変更セットを作成し、実行する変更のシーケンスの最後に追加します。これはまた、いつ、誰がそれをもたらしたのかを明確にします。

スキーマ保守に対する非常に「バージョン管理された」アプローチ。

まず第一に、それは「不必要な作業」の印象を与えます。

14
iCrus

Dev、qa、productionに複数のデータベースインスタンスがあり、変更履歴を自動的に追跡し、変更をインテリジェントに適用する(現在のスキーマと最終スキーマの差分を適用する)ツールが必要な場合、liquibaseやflywayなどのツールは非常に便利です。

5
Ted Xu

以下の記事を読むとなぜliquibaseに答えられると思います http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html

注意深く読むと、単純なmvnまたはCLIコマンドの助けを借りて、より高いバージョンからより低いバージョンにダウングレードする機能は、SQLファイルをGITにコミットするアプローチを経ても得られない非常に便利ですそれらのスクリプトを手動で実行する必要があります。また、次のような変更セットも持っていません。

3

Liquibaseは、データベースが後付けであるという哲学を持っている場合に素晴らしいと思います。この哲学は、本番環境で不良データベースの大半を引き起こしました-そして、それらのほとんどは不良です。データベースは、それぞれが独自のサイロで作業しているアプリケーション開発者によって分割されるのではなく、ビジネスシステム全体の完全なビューを使用して設計する必要があります。後者の方法では、回避策、非正規化されたデータ、テーブル間の不十分な関係、ビジネスエリアの複製、および全体的な面倒でメンテナンス費用が高いシステムが発生します。データベースがビジネス関係を正確に反映するように設計されている場合、その寿命は、残念ながらほとんどの場合のように断片的な方法で設計されたものよりも5倍長く、その目的に5倍優れています。

Liquibaseはそれ自体は問題ではありませんが、アプリケーション開発者がデータベースを設計する実践を可能にします。それは問題。

0
Bob Barry

私のチームのDevOpsパーソンであるため、すべてのSQLファイルを1つの場所、つまりSCM(ソースコード管理)

また、CI/CDフェーズ中に、DBスキーマが一緒に作成されると、多くの時間とリソースを節約できます。別の人がそのクライアントのデータベースを管理する必要はありません。

Flyway、Liquibase、EFなどのORMは、これを達成するのに役立ちます。

0
Sloka Roy