1

假设我有一个论坛软件,我想按照它的浏览量对主题进行排序。视图将存储在计数器中。

在关系数据库方面有经验,我认为这很容易解决,但事实并非如此。我曾考虑过创建一个大行,其中的列是计数器(因此被排序),但由于单行只能存储在单个节点上,这并不可行(超过了使用 Cassandra 的要点)。

如何按 Cassandra 中的计数器列排序?

4

2 回答 2

3

你不能对大数据进行排序。这是基本假设之一。

您可以在 cassandra 上进行排序的唯一内容是 cassandra 用于存储其数据的内容 - 行键和列键。

从普通 SQL 迁移到 NoSQL,您必须放弃能够对数据进行排序/连接的概念。这只是(通常)在大数据实现中是不可能的。

于 2013-01-22T16:18:06.503 回答
1

要更新这个问题:Korya 是正确的,您不能假设所有具有 BigData 性质的 NoSQL 都无法排序(MongoDB 可以排序并且它是 NoSql)。

关于 Cassandra 本身:您可以在复合键中的分区键之后对主键的任何给定元素进行排序:

例子: Primary Key ((A),B,C,D);

A 是您的分区键。B、C、D 是复合键的一部分,现在可以按 ASC(默认)或 DESC 排序。如果你想要最晚的东西(即时间),那么你可以在你的模式中指定它: WITH CLUSTERING ORDER BY (media_type_id ASC,media_id ASC);

至于关于计数器的问题:您不能在 cassandra 内对计数器进行排序,因为计数器需要是 KEY 的一部分,并且密钥是唯一的。

正如 Martin 所指出的,eBay 的白页示例所引用的解决方案解释说,使用两个表来跟踪。

于 2015-11-12T15:20:31.070 回答