如何将更改部署到Cassandra CQL架构

时间:2014-10-20 08:01:03

标签: deployment cassandra cql nosql

我们有一个使用Cassandra作为其数据库的应用程序。我们应该如何在实时生产环境中部署架构更改。

在开发中,我们只是将数据库吹走,并使用版本控制中保存的“database.cql”脚本重新创建它。这显然不是生产中的解决方案。

在关系世界中,我要么使用一系列升级脚本并按顺序应用它们,要么使用tool以交互方式比较登台和生产数据库,并进行适当的架构更改。

如何在Cassandra中解决同样的问题?

2 个答案:

答案 0 :(得分:2)

由于没有现有的工具,我最终写了一个。

它被称为cql-migrate,并为部署的Cassandra架构提供增量更新。

[更新]自写这篇文章以来,我找到了更多选项:一个用于for railsanother for go

答案 1 :(得分:2)

这是我开始使用的一段时间。

https://github.com/heartysoft/aedes

它支持多种环境和版本控制。由于我们是基于Windows的,它主要是PowerShell,但是没有理由不能编写bash脚本来执行等效操作。 powershell脚本本身非常简单。它需要Powershell v3 +。使用非常简单:

aedes.ps1 192.168.40.4 [-u username -p password -env dev]

将在.. \ schema文件夹中查找架构文件。架构文件应具有n_前缀。环境特定文件具有.env.cql后缀。所以,如果文件是:

1_people.dev.cql
1_people.prod.cql
2_people_some_indexes.cql
3_jobs.dev.cql
3_jobs.prod.cql
4_jobs_something_changed.cql

然后运行它为prod,然后使用.prod.cql并且没有“env”.cql的那些将按顺序应用。您还可以指定一个$ start版本,该版本可用于指定从何处开始申请(例如,如果将start指定为3,则将跳过任何包含1_和2_的内容)。

这很基本,但似乎运作得很好。我们只是在“applier machine”上下载(未安装)Cassandra(可能是你的机器,也就是不是集群的一部分),并且在PATH上有cqlsh以便于应用。是否(并且确实)有更多功能的计划,但目前工作得很好。