【问题标题】:"show version" in Cassandra and thrift protocolCassandra 和 thrift 协议中的“显示版本”
【发布时间】:2021-05-02 07:00:03
【问题描述】:

我想确保我可以不时地从 Java 服务连接到数据库(例如 ping)。这个answer 建议使用show version

我的 Java 服务正在使用 Cassandra thrift 客户端(已弃用),但我找不到如何执行此类查询的示例。

我有一个client 类型的org.apache.cassandra.thrift.Cassandra.Client。 这些是我发现的类似方法:

System.out.println("describe_schema_versions: " + nativeClient.describe_schema_versions());
System.out.println("describe_version: " + nativeClient.describe_version());
System.out.println("describe_snitch: " + nativeClient.describe_snitch());
System.out.println("describe_cluster_name: " + nativeClient.describe_cluster_name());
System.out.println("describe_keyspaces: " + nativeClient.describe_keyspaces());
System.out.println("describe_partitioner: " + nativeClient.describe_partitioner());
System.out.println("describe_token_map: " + nativeClient.describe_token_map());

如何执行查询以获取这样的 Cassandra 服务器版本?

cqlsh> show version;
[cqlsh 3.1.8 | Cassandra 1.2.19 | CQL spec 3.0.5 | Thrift protocol 19.36.2]

或者是否有首选的替代查询作为“ping”?

【问题讨论】:

标签: java cassandra thrift


【解决方案1】:

如果您只想进行健康检查,我认为运行一个简单的查询是一个不错的选择。

 SELECT now() FROM system.local

这里是关于 thrift 客户端如何运行查询的文档。
Cassandra.Client (apache-cassandra API) - Javadoc Extreme

【讨论】:

    【解决方案2】:

    值得注意的是,由于 Thrift 的整数格式,有些人在使用 system.now() 时遇到了困难。这主要是因为 system.local 是一个 cql3 表,而不是 Thrift 列族。

    为此,这会返回一个字符串,这可能更容易处理:

    aploetz@cqlsh> SELECT release_version FROM system.local;
    
     release_version 
    -----------------
              3.11.6 
    
    (1 rows)
    

    或通过 Cassandra CLI:

    [default@system] get local['local']['release_version']
    

    如果您愿意,也可以拉thrift_version(这也是一个字符串)。

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2017-03-14
      相关资源
      最近更新 更多