【问题标题】:Should every table in Cassandra have a partition key?Cassandra 中的每个表都应该有一个分区键吗?
【发布时间】:2019-04-09 13:59:02
【问题描述】:

我正在尝试创建一个 Cassandra 表,我在其中根据时间戳存储商店的日志。我还想创建一个查询,该查询以相对于时间戳的降序返回数据。如果我将时间戳作为主键,它将自动成为分区键,因为我没有任何其他列作为复合主键。

在 Cassandra 中,我们不能对分区键执行 ORDER BY。有什么方法可以让我的时间戳作为主键而不是分区键(没有分区键的 Cassandra DB)。

提前致谢。

根据需要创建表:

CREATE TABLE myCass.logs(timestamp timestamp, logs text, PRIMARY KEY (timestamp));

【问题讨论】:

    标签: cassandra nosql cql datastax-enterprise


    【解决方案1】:

    由于您有时间戳,因此您知道年、月、日。您可以将它们用作分区键并将时间戳作为集群列。通过这种方式,您还可以满足对分区键的需求,您将拥有数据的主键,您可以按时间戳排序,并且您可以将数据均匀地分布在整个集群中。

    这种拆分数据的方式称为分桶。这里有一些关于这个主题的好读物 - Cassandra Time Series Data Modeling For Massive Scale

    【讨论】:

    • timestamp 列采用 13 位 Unix 时间戳值,我想按原样使用它。我还将在其他查询中使用相同的时间戳值(13 位)。有什么方法可以创建没有任何主键或分区键的表..???
    猜你喜欢
    • 2010-10-24
    • 2011-11-12
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2012-08-01
    • 2020-05-25
    • 2017-03-15
    相关资源
    最近更新 更多