web-dev-qa-db-ja.com

mongodbおよび/またはcassandraデータベースのLiquibase代替が必要

最近問題に直面しています。 mongodbとCassandra dbスキーマの変更と更新/挿入クエリの両方に対して、パッチ管理(コードベースのgitと同様)としてバージョン管理を行います。Liquibaseはmysqlに対してのみそれを処理します。別の方法が必要ですnosql mongodbおよびcassandraのLiquibaseの。

14
ravi ranjan

Mongo用のツールがいくつかあります。例:

  1. モンジーズ:

    • https://github.com/mongeez/mongeez
    • 利点
      • スクリプトを.jsファイルに保存します。
      • それらを整理するためのXMLファイル
      • javaを使用する場合、MongeezはSpringと統合できるため、アプリケーションの起動時にスクリプトを実行できます
    • 欠点:
      • 死んだプロジェクト
      • バージョン3.0以降、MongoDBで廃止されたdb.eval()を使用します
  2. モンゴビー:

    • https://github.com/mongobee/mongobee
    • 利点:
      • javaのすべてのコード
      • springと簡単に統合
      • それを使用する良いチュートリアル
    • 欠点:
      • すべてのスクリプトはJavaで実行する必要があり、JSでそれらを書き込むことはできません
6
dKucharczyk

MongoDBをサポートしているように見えるFlywayから分岐されたブランチがあります: https://github.com/risksense/flyway/tree/release-4.0.3-mongodb

まだテストしていませんが、有望なようです。

1
Mr.Radar

私は、cassandraのスキーム更新の基本的なサポートのための非常にシンプルなアプリケーションを作成しました。参照してください: ここにリンクの説明を入力

基本的な使用法は次のとおりです:Java -jar cassandra-scheme.jar --cassandra.keyspace = myspace --scheme.dir =/mydir

1
chaimt

Mongoにそのようなツールが表示されることはないと思います。その理由は、Mongoには実際のスキーマ適用がないため、クエリを実行して変換する必要があるからです。つまり、これを行うには独自のスクリプトを記述する必要があります。これは、データ構造のバージョン番号をデータ構造に入れ、それにセカンダリインデックスを付けることを強くお勧めする1つの理由です。

Cassandraの場合、問題は異なり、そこでデータ構造を変更すると、少し苦痛になる可能性もあります。繰り返しになりますが、このようなツールは列を追加または削除できますが、マップやリストタイプなどに対処することはできません。問題が一般的なツールで十分に理解されているとは思えませんが、確かに https://github.com/comeara/pillar を確認してください。

Mongoの場合、このソリューションは、古い構造を引き出して、新しい情報と共に再度保存するスクリプトのように見えます。 Cassandraの場合、pillarはそれの一部に役立つ可能性がありますが、一部のタイプでは、さらに実行する必要がある場合があります。 Cassandraのコレクション型は、実際にはスキーマによって構造的に強制されているわけではないことに注意してください。

1
Chris Travers