这个工具的功能
cql-track是一个用于Apache Cassandra的schema迁移CLI和Python库。
你写个版本的.cql文件(V001__create_users.cql,V002__add_orders.cql),cql-track就会按照顺序应用它们 - 跟踪运行的、失败的和待处理的项。
关键功能:
分布式锁定通过LWT——即使在同一个集群中,大多数CI工作者或部署节点使用同一过程,在CI/CD管道中只会运行一个迁移过程。
schema一致性轮训——在每个DDL语句之后等待所有节点收敛,然后再运行下一个语句。
部分失败恢复——如果语句3/5出现故障,那么它会精确地记录程序停止的位置,方便你修复并重新试验而不需要重新应用已经应用的项。
CQL静态检查器——静态分析,发现危险模式(不带有IF EXISTS的DROP语句、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从一开始设计就是满足这些条件。
评论 (0)