Database design 我的项目的NoSQL(cassandra)数据模型

Database design 我的项目的NoSQL(cassandra)数据模型,database-design,nosql,cassandra,column-family,Database Design,Nosql,Cassandra,Column Family,我需要你对我的项目数据模型设计的意见。我的项目是实时推荐系统。有一些推荐算法的集合。意思是这样的: 收藏1{ 算法1,算法5,算法6 } 收藏2{ 算法5,算法6,算法7,算法8 } 等等 我需要在收集的每个算法(每2分钟)中存储数据,如成功率、选择概率、分数等。所以我选择了Cassandra作为我的数据存储,因为它可以很好地处理时间序列。我需要将数据存储起来,以便稍后在一些图表中显示。你认为我的数据模型解决方案行吗?我是这样做的: CREATE TABLE algorithm_by_colle

我需要你对我的项目数据模型设计的意见。我的项目是实时推荐系统。有一些推荐算法的集合。意思是这样的:

收藏1{ 算法1,算法5,算法6 }

收藏2{ 算法5,算法6,算法7,算法8 }

等等

我需要在收集的每个算法(每2分钟)中存储数据,如成功率、选择概率、分数等。所以我选择了Cassandra作为我的数据存储,因为它可以很好地处理时间序列。我需要将数据存储起来,以便稍后在一些图表中显示。你认为我的数据模型解决方案行吗?我是这样做的:

CREATE TABLE algorithm_by_collection_and_date (
   algorithm_id text,
   collection_id text,
   date text,
   event_time timestamp,
   score double,
   probability double,
   PRIMARY KEY ((algorithm_id,collection_id,date),event_time)
);
因此,它的设计类似于行分区,通过向行键添加数据来限制集合中每个算法的列数(按日期)


你觉得这个怎么样?谢谢,Jan

我想要这个结构-它可以让你的结构正常化,让它成为一个更干净的设计。我已经完成了这项工作,请为列添加正确的数据类型以及引用完整性约束

CREATE TABLE algorithm
(
    algorithmId uuid PRIMARY KEY,
    algorithmName text
)

CREATE TABLE collection
(
    collectionID uuid PRIMARY KEY,
    collectionName text
)

CREATE TABLE algo_collection
(
    algoCollectionID uuid PRIMARY KEY
    collectionID
    algorithmID
)

CREATE TABLE recommendation
(
    algoCollectionID 
    date    
    event_time,
    score,
    probability

)