首页 > 解决方案 > 对 Cassandra 数据结构进行实时建模和从所有人中搜索?

问题描述

我的项目同时提供实时数据和过去的数据。它像提要一样工作,因此它通过套接字显示实时数据,并通过 REST api 显示过去的数据(如果向下滚动)。为了有效地获取实时数据,我将日期设置为分区键,将时间设置为集群键。对于实时服务,我觉得这个数据结构建模很好。但我还必须获得有限数量的最近数据(如分页),如果需要,它们应该能够显示整个数据。为了通过 REST api 调用提供最近的 0~20 / 20~40 / 40~60 等数据,我的数据服务服务器必须记住它之前显示的内容以连续加载接下来的 20 个数据,作为书签。如果是 SQL,我会使用 ID 或 page&offset 的东西,但我不能用 Cassandra 做到这一点。所以我尝试了:

SELECT * FROM examples WHERE date<='DATEMARK' AND create_at < 'TIMEMARK' AND entities CONTAINS 'something' limit 20 ALLOW FILTERING;

但是由于日期是分区键,我不能使用比较操作>,<。过去的数据可以在很远的地方创建。

我可以使用 Cassandra 满足我的实时+过去的要求吗?我想知道我是否必须创建另一个数据库来访问过去的数据。

标签: databasecassandranosqlreal-time

解决方案


是的,你可以,但你必须改变你的思维方式,像 NoSQL 模式一样思考,在这种情况下,你可以以重复的方式保存你的数据,并将你的数据保存在另一个表中,并使用另一个满足你需求的分区键和集群列。


推荐阅读