我正在尝试Cassandra和寻找方法来模拟我们的数据在其中。我已经描述了我们的数据存储需求以及如何在cassandra中建模的想法。请让我知道这是否有意义,并建议更改。
在web上做了很多搜索,但是没有弄清楚如何对多值列需求进行建模和索引,这是一个非常常见的需求。
任何帮助都将不胜感激。
我们每个记录的当前数据:
{
‘id’ : <some uuid>,
‘title’ : text,
‘description’ text,
‘images’ : [{id : id1, ‘caption’: cap1}, {id : id2, ‘caption’: cap2}, ... ],
‘videos’ : [‘video id1’, video id2’, …],
‘keywords’ [‘keyword1’, ‘keyword2’,...]
updated_at: <timestamp>
}
我们需要的查询
按id查找
按images.id查找
按关键字查找
更新的所有记录
我们目前的模式
专栏系列:文章id:uuid标题:varchar描述:varchar图像:视频:关键词:更新时间:更新日期:[例如:“2013-05-06:02”]
列族:图像文章索引
{
‘id’ : <image id>,
‘article1 uuid’ : null,
‘article2 uuid’ : null,
...
}
列族:关键字文章索引
{
‘id’ : <keyword>,
‘article1 uuid’ : null,
‘article2 uuid’ : null,
...
}
示例查询:
按id查找=>直接向前
按images.id查找=>
ids = select * from ‘Image-Article Index’ where id=<image id>
select * from Article where id in (ids)
按关键字查找=>
ids = select * from ‘Keyword-Article Index’ where id=<image id>
select * from Article where id in (ids)
所有记录在哪里 updated_at > <some timestamp>
cassandra不支持范围查询,除非其中一个索引列上有一个相等条件。
从给定的时间戳中提取日期和小时;
for each date:hour in start to current time
ids = select * from Article where update_date=date:hour and timestamp > <some timestamp>
select * from Article where id in (ids)
暂无答案!
目前还没有任何答案,快来回答吧!