【问题标题】:Comparing version numbers in cassandra比较 cassandra 中的版本号
【发布时间】:2022-10-24 19:30:12
【问题描述】:

我有一个 C* 表,其中包含不同的配置值,这些值仅与应用程序的某些版本相关 - [min_version, max_version) 之间的版本。

config_name     | min_version | max_version 
defaultConfig1  | 1.0.0       | 1.2.3 
defaultConfig2  | 10.0.1      | 11.1.2 
defaultConfig3  | 4.1.2       | 5.0.0
defaultConfig4  | 5.3.4       | 6.1.2

版本 1.1.1 将落入 [1.0.0, 1.2.3) 区间,因此我们应该返回 defaultConfig1。

Cassandra 是否支持编写从具有特定间隔 [min_version, max_version) 的版本参数的表中选择条目的查询? (我们应该比较版本号,而不是字符串)

我知道这可以在 Java 中通过将版本号转换为版本对象并比较版本对象来实现。我想知道是否可以在 Cassandra 中直接实现同样的事情?

【问题讨论】:

    标签: java cassandra versioning cassandra-3.0


    【解决方案1】:

    CQL 语法主要支持相等运算符,对某些数据类型的范围查询的支持非常有限。

    可以对您的数据进行建模以支持您的查询。例如,将min_version 分成 3 列:

    • major_version
    • minor_version
    • patch_version

    因此您可以使用如下谓词执行范围查询:

    ... WHERE major_version = ? AND minor_version < ?
    

    但是,通过使用 Elasticsearch 或 Apache Lucene/Solr 等软件为您的数据编制索引,可以更好地为您的用例之类的复杂查询提供服务,这样您就可以在 Cassandra 中对数据执行复杂的搜索。干杯!

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2023-03-20
      • 2021-09-18
      • 2016-07-23
      相关资源
      最近更新 更多