我们有一个使用Cassandra作为数据库的应用程序。我们应该如何在实时生产环境中部署架构更改。
在开发中,我们只是吹散数据库,并使用版本控制中保留的“database.cql”脚本来重新创建数据库。这显然不是生产中的解决方案。
在关系世界中,我要么使用一系列升级脚本并按顺序应用它们,要么使用tool交互式比较登台数据库和生产数据库并进行适当的架构更改。
我该如何解决Cassandra中的相同问题?
最佳答案
这是我已经开始使用并使用了一段时间的产品。
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_的任何内容)。
这是很基本的,但似乎工作得很好。我们只是在“应用程序机器”(可能是您的机器,即不属于集群的一部分)上下载(未安装)Cassandra,并在PATH上安装了cqlsh以便于应用。是否(并确实)有计划提供更多功能,但是暂时可以很好地工作。
关于deployment - 如何将更改部署到Cassandra CQL模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26460932/