在sql世界中,拥有一个通过模式脚本文件夹来设置某个模式的工具是很常见的。一种广泛使用的方法是拥有一个包含当前db版本号和ddl脚本的表,以便我们可以从任何版本的db启动并以控制器方式更新到任何后续版本。 Visual Studio有db项目,redgate有类似的工具。
我想知道是否还有cassandra的东西。我知道为cassandra实现一些基本的东西并不会太难,但是想知道是否有人已经完成了它。
答案 0 :(得分:7)
Pillar管理您的Cassandra数据存储的迁移。
Pillar从希望自动管理Cassandra架构成为代码。将模式作为代码进行管理可实现自动构建和部署,这是组织努力实现持续交付的基础实践。
Pillar对Cassandra来说,Rails ActiveRecord迁移或Play Evolutions对关系数据库有一个关键区别:Pillar完全独立于任何应用程序开发框架。
答案 1 :(得分:5)
您的初始问题未指定语言,但您稍后表示您喜欢C#。我没有C#答案,但我已经提取了我正在为我的项目使用的Java版本控制组件。我还创建了一个小示例项目,展示了如何集成它。这是愚蠢的。这个问题有不同的方法,所以我选择了一个很容易构建并完成我需要的方法。以下是两个GitHub项目:
https://github.com/DonBranson/cql_schema_versioning
https://github.com/DonBranson/cql_schema_versioning_example
此组件不在架构中存储版本#,但存储它运行的脚本列表。它取决于脚本名称的排序顺序来确定运行顺序。非常基本。
答案 2 :(得分:1)
Cassandra本质上是无图形的'它是一个结构化的键值存储,因此在这方面与传统的rdbms非常不同。
Cassandra现在已经发展成为可选的架构'因为它允许您描述生活在特定列族中的一般数据类型。
尝试查看Liquibase和/或Flyaway,看看扩展程序是否提供了您需要的版本控制功能。
http://bungeedata.blogspot.com/2013/12/liquibase-and-cassandra.html
答案 3 :(得分:1)
我一直在寻找可用于以下场景的架构迁移工具:
部署应用程序时自动升级到架构。 允许填充测试Cassandra数据库以进行集成测试。 经过一番搜索,我发现以下两个看起来像潜在的候选人:
https://github.com/Contrast-Security-OSS/cassandra-migration https://github.com/DonBranson/cql_schema_versioning
答案 4 :(得分:0)
我不知道今天存在的任何事情。
如果你正在使用 CQL ,你可能会想出一些东西,但是你可能会遇到有限的 CQL 能力来修改表格的问题然后进入转型阶段。
当我在SQL中使用这些类型的工具时,我总是在应用更新的DDL之后最终得到一堆SQL来更新数据集。
使用 CQL ,我必须编写在架构更改后应用的代码。
如果您正在做的只是添加或删除表,列和索引,那么它应该是可行的。