我正在使用Cassandra保存单词及其频率。
表架构类似于
CREATE TABLE keywords_rate (
some_id int,
keyword Text,
frequency counter,
PRIMARY KEY (some_id, keyword)
);
问题是,我有数百万条记录,我需要获取每个some_id
的前100个关键字
但是要做到这一点,我需要获取给定some_id
的所有关键字,并在后端(python)上对其进行排序,然后获取前100条记录。对我来说这是一个非常昂贵的手术。
所以我的问题是:我可以在Cassandra内部对计数器进行排序吗?如果没有,那么解决此问题的最佳方法是什么?
谢谢。
答案 0 :(得分:3)
如果仅将Cassandra用于此用例,并且如果您尚未对其进行大量投资,那么我的最佳建议是...选择其他数据库。 :)卡桑德拉(Cassandra)不是为此设计的。
如果您需要使用Cassandra,请查看this answer,它基于eBay如何组织其数据。
但是,如果可以的话,请再次使用其他技术。在卡桑德拉(Cassandra),这将非常混乱。