需要Liquibase替代mongodb和/或cassandra数据库

时间:2016-12-27 06:10:25

标签: mongodb version-control cassandra database nosql

我们最近遇到了一个问题。我们希望对我们的mongodb和Cassandra数据库架构更改以及更新/插入查询进行版本控制(类似于代码库的git)版本控制。 Liquibase只为mysql处理它。对于nosql mongodb和cassandra,我们需要替代Liquibase。

4 个答案:

答案 0 :(得分:6)

Mongo有一些工具,例如:

  1. Mongeez:

    • https://github.com/mongeez/mongeez
    • 优点
      • 将脚本保存在.js文件中。
      • 用于整理它们的XML文件
      • 如果您使用Java,Mongeez可以与Spring集成,因此您可以在启动应用程序时运行脚本
    • 缺点:
      • 死项目
      • 使用自3.0版以来在MongoDB中弃用的db.eval()
  2. Mongobee:

    • https://github.com/mongobee/mongobee
    • 的优点:
      • Java中的所有代码
      • 与Spring轻松集成
      • 好教程如何使用
    • 缺点:
      • 所有脚本都必须用Java完成,无法用JS编写

答案 1 :(得分:1)

我不认为你会看到Mongo这样的工具。原因是Mongo没有真正的架构实施,因此您需要进行查询和转换。换句话说,您需要编写自己的脚本来执行此操作。这是我强烈建议在数据结构中放置数据结构版本号并在其上放置二级索引的一个原因。

对于Cassandra来说,问题是不同的,改变数据结构也可能有点痛苦。同样,这样的工具可以添加或删除列,但它不能解决地图或列表类型等问题。我怀疑这些问题对于一般工具是否已被充分理解,但肯定会看一下https://github.com/comeara/pillar

对于Mongo,解决方案看起来更像是一个将旧结构拉出来的脚本,并使用新信息再次保存它们。对于Cassandra来说,支柱可能对其中的一部分有帮助,但对于某些类型,您可能需要做更多。请记住,Cassandra中的集合类型并非真正由架构强制执行。

答案 2 :(得分:1)

我已经编写了一个非常简单的应用程序,用于在cassandra中对方案更新进行基本支持。 请参阅:enter link description here

基本用途是: java -jar cassandra-scheme.jar --cassandra.keyspace = myspace --scheme.dir = / mydir

答案 3 :(得分:1)

Flyway有一个分支,似乎支持mongoDB:https://github.com/risksense/flyway/tree/release-4.0.3-mongodb

Haven尚未对其进行测试,但看起来很有希望。