なぜ、いつLiquibaseですか?


98

スタックオーバーフローでこの質問を検索しようとしましたが、これに関する質問は見つかりませんでした。
私は新しいLiquibaseので知りたい です

  • なんでLiquibase
  • Liquibaseプロジェクトで使用する必要があるのはいつですか?

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

回答:


69

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

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

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

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

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


1
しかし、ファイルを作成して最初のスクリプトを記述し、それをコミットしてgitとしましょう。これで、時間とともにスキーマが更新され、任意の時間間隔に戻ってスキーマを元に戻すことができますか?
Shakeel Shahzad 2015

1
このアプローチでは、スキーマを再作成できますが、ダウングレード/アップグレードはできません。違いはデータの損失です。
Synesso 2015

1
しかし、他の部分、いつ使用するのが欠けているのですか?
Shakeel Shahzad 2015

1
Synessoしばらくの間使用されていて、新しく追加された列などを使用してデータが決定された後、運用データベースを自動的にダウングレードする方法はまだわかりません。必ずしも今すぐそれらをドロップすることはできません。また、これがソース管理に保持されているバージョン管理された一連のSQLスクリプトよりも優れている理由もわかりません。これには、最初にバージョンテーブルへの単純な挿入と、最後に適用された内容を追跡するための更新が含まれます。
Khorkrak

18

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

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

手始めに、それは「不必要な仕事」のような印象を与えます。


4
これは私です(あなたが言った正確な印象を私に与えます:P)その重要な決定のための+1
Ismail Sahin

正解です。最新の変更を行ったすべての変更をいつでも追跡できます。特定のポイントに戻る必要がある場合は、リキベースが役立ちます
Anoop PS

7

開発、QA、本番環境に複数のデータベースインスタンスがあり、変更履歴を自動的に追跡してインテリジェントに変更を適用するツール(現在のスキーマと最終スキーマの差分を適用)が必要な場合、リキベースやフライウェイなどのツールが非常に役立ちます。


3

Liquibaseは、データベースが後付けであるという哲学のもとで優れていると思います。この哲学は、本番環境で不良データベースの大部分を引き起こし、それらのほとんどは不良です。データベースは、ビジネスシステム全体の全体像を考慮して設計する必要があります。それぞれが独自のサイロで作業しているアプリケーション開発者によって統合されているわけではありません。後者の方法では、回避策、非正規化されたデータ、テーブル間の不適切な関係、ビジネスエリアの重複、および原因となる問題が原因で展開直後にクライアントが煩雑でメンテナンス費用がかかるシステムが発生します。データベースがビジネス関係を正確に反映するように設計されている場合、その寿命は5倍の長さであり、残念ながらほとんどの場合のように、段階的に設計されたものよりも5倍優れた目的を果たします。

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


19
仕様の変更、新機能の追加、バグの修正。「データベースはビジネス関係を正確に反映するように設計されている」と仮定しても、ビジネスとビジネス関係は時間の経過とともに変化するため、時間の経過とともにDBに変更を加える必要があることが予想されます。Liquibaseは、これらの変更を管理するのに役立ちます。それでおしまい。
Steven Byks

私の経験では、DBAや開発者のホスト全体がLiquibaseを使用することはほとんどありません。@ bob-barryが最終結果の大部分でスポットを当てていると思います。Liquibaseなどのツール(または変更履歴のための単純な古いgit)を使用するDBAは、これを使用すると便利です。
PhillipHolmes 2018年

進化的なDBプラクティスと一般的にアジャイルは、ピアレビューを奨励し、有効にします。パフォーマンスのニーズがあるDBの場合、DBAはDBの変更について引き続きアプリチームと連携します。Liquibaseなどのツールを使用すると、非正規化の引数に反して、より簡単なリファクタリングが可能になります。10年前、私は20以上のクライアントにインストールされた製品で働いており、それぞれに独自のパッチとアップグレードサイクルがありました。2年間の悪夢の後で、そのようなツールを手動で作成しようと試みた後、私たちはそれを知るやいなやリキベースに飛びつきました。また、200万レコードのテーブルがありましたが、当時としてはそれほど大きくありませんが、DBAを必要とするものがあります。
user6317694

3
いつか天国でお会いできることを楽しみにしています。確かにいいですね。
Bijan 2018

3

以下の記事を読んでリキベースが答えられる理由 http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.htmlを

それを注意深く読んだ場合、単純なmvnコマンドまたはCLIコマンドの助けを借りて、上位バージョンから下位バージョンにダウングレードする機能は非常に便利です。これらのスクリプトを手動で実行する必要があります。また、次のような変更セットはありません。


0

私のチームのDevOps担当者であるため、すべてのSQLファイルを1か所、つまりSCM(ソースコード管理)に配置したい

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.