我尝试根据 Cassandra 查询语言 (CQL) 识别引擎(Cassandra、Scylla、AstraDB、CosmosDB、Yugabyte 等)。我专注于表system.local和system.peers,请参阅示例:
SELECT release_version FROM system.local;
和
SELECT release_version FROM system.peers;
但我没有得到有关系统/引擎的相关信息。你解决了这个问题吗?
我尝试根据 Cassandra 查询语言 (CQL) 识别引擎(Cassandra、Scylla、AstraDB、CosmosDB、Yugabyte 等)。我专注于表system.local和system.peers,请参阅示例:
SELECT release_version FROM system.local;
和
SELECT release_version FROM system.peers;
但我没有得到有关系统/引擎的相关信息。你解决了这个问题吗?
据我所知,Cassandra 的所有版本(或发行版)都没有报告其“引擎”的类型。
在 Apache Cassandra 中,
release_version
只是发布版本,例如:DataStax 的 Astra DB报告发布版本如下:
在不知道您的用例的情况下,我无法想到报告分布/分叉的情况是有意义的,因为这是您连接到数据库时已经提前知道的事情。
例如,您需要安全包和应用程序令牌才能连接到 Astra DB。其他版本的 Cassandra 不需要此功能。同样,您已经从联系点知道您正在连接到 ScyllaDB Cloud 实例。
我能想到的有限情况是,您无法预先知道要连接到哪种 Cassandra 分支或发行版。干杯!
好问题,我很惊讶没有更有条理,或者至少有记录的方法来做到这一点。
关于 ScyllaDB,不幸的是,如果你
select release_version from system.local
在 ScyllaDB 中这样做,结果将毫无用处:你将得到“3.0.8” - 这是一些旧的 Cassandra 版本,Cassandra 驱动程序曾经期望它允许正确使用某些功能 - 请参阅https://github.com/scylladb/scylladb/issues/8740中的讨论。该讨论还提到了如何获取 ScyllaDB 版本:您还可以通过注意 Scylla 系统表来识别 ScyllaDB 与其他 CQL 引擎的区别;例如,
仅在 ScyllaDB 上将返回非空结果。
FWIW,您还可以从 CQLSH 内部运行
show version;
,它将提供所有版本信息(在 CQLSH 连接时也可以看到):