Deployment 如何将更改部署到Cassandra CQL模式

Deployment 如何将更改部署到Cassandra CQL模式,deployment,cassandra,cql,nosql,Deployment,Cassandra,Cql,Nosql,我们有一个应用程序,它的数据库使用Cassandra。我们应该如何在实时生产环境中部署架构更改 在开发过程中,我们只是将数据库吹走,并使用版本控制中的“database.cql”脚本重新创建它。这显然不是生产中的解决方案 在关系世界中,我要么使用一系列升级脚本并按顺序应用它们,要么使用一个脚本以交互方式比较暂存数据库和生产数据库,并进行适当的模式更改 我如何在Cassandra中解决同样的问题?由于没有现成的工具,我最终编写了一个 它被调用,并为已部署的Cassandra模式提供增量更新 [更新

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

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

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


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

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

它被调用,并为已部署的Cassandra模式提供增量更新


[更新]写这篇文章之后,我又找到了两个选项:一个用于和,这是一个我已经开始使用了一段时间的选项

它支持多种环境和版本控制。因为我们是基于Windows的,所以它主要是powershell,但是没有理由不编写bash脚本来实现相同的功能。powershell脚本本身非常简单。它需要Powershell v3+。使用非常简单:

aedes.ps1 192.168.40.4 [-u username -p password -env dev]
将在..\schema文件夹中查找架构文件。架构文件应具有n_uu前缀。特定于环境的文件具有.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下载(未安装)到“applier机器”(可能是您的机器,即不是集群的一部分)上,并将cqlsh放在路径上,以便于应用。确实(和确实)有更多功能的计划,但目前运行良好。

您提到的也可以作为本机CLI使用,因此您不必使用go.Ashic,这证明非常有用。谢谢