这个工具的功能

cql-track是一个用于Apache Cassandra的schema迁移CLI和Python库。

你写个版本的.cql文件(V001__create_users.cqlV002__add_orders.cql),cql-track就会按照顺序应用它们 - 跟踪运行的、失败的和待处理的项。

关键功能:

分布式锁定通过LWT——即使在同一个集群中,大多数CI工作者或部署节点使用同一过程,在CI/CD管道中只会运行一个迁移过程。
schema一致性轮训——在每个DDL语句之后等待所有节点收敛,然后再运行下一个语句。
部分失败恢复——如果语句3/5出现故障,那么它会精确地记录程序停止的位置,方便你修复并重新试验而不需要重新应用已经应用的项。
CQL静态检查器——静态分析,发现危险模式(不带有IF EXISTSDROP语句、pk修改语句、类型修改语句、truncate语句)在集群接入之前。
多环境配置文件——在一个YAML配置文件中配置dev、staging和prod环境。
CI/CD管道检查器——在管道中检查有无未应用的迁移,cqltrack pending || exit 1如果存在未应用的迁移,就会让管道失败。
程序化API——在FastAPI(寿命模式)或Django(AppConfig.ready())中使用它作为一个库。

    python
    from cqltrack import CqlTrack
    with CqlTrack("cqltrack.yml") as t:
    t.migrate()

*兼容Cassandra 3.x / 4.x / 5.x、DataStax Enterprise和Astra DB。

安装

通过PIP安装cql-track:pip install cql-track

GitHub:https://github.com/ereshzealous/cql-track
PyPI:https://pypi.org/project/cql-track/
全文档:https://github.com/ereshzealous/cql-track/blob/main/USAGE.md

目标受众

生产环境中使用Apache Cassandra的后端工程师和平台/DevOps团队,他们需要在CI/CD管道中可靠、自动的schema迁移。这个工具是生产级别的,可以兼容多节点、多地区部署中的故障模式和并发边界情况。

比较

功能 cql-track Liquibase Flyway
Cassandra天然设计
LWT分布式锁定
schema一致性轮训
部分失败恢复
内置CQL静态检查器
Python/pip安装 JVM JVM
环境之间的schema差异比较

核心问题

Cassandra的DDL语句是异步的,没有事务,同一集群中并发部署可能会冲突。设计于SQL的工具都不能解决这些问题。cql-track从一开始设计就是满足这些条件。