cassandra中的数据建模

9rygscc1  于 2021-06-15  发布在  Cassandra
关注(0)|答案(0)|浏览(237)

我正在尝试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)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题