卡桑德拉的多对多

时间:2014-09-15 04:58:54

标签: cassandra database nosql

我需要在Cassandra中为与其他用户共享项目的用户建模。

在关系数据库中,我使用交叉引用表对其进行建模,如下所示:

USER_SHARE

  • from_user:外键
  • to_user:外键
  • item_id:int
  • item_type:varchar

我需要查询才能找到:

1)给定用户,他们共享了哪些项目,以及与谁共享 2)给定用户,给定项目与给定用户共享 3)给定用户,他们与他们共享了哪些项目,以及由谁共享 4)给定一个项目,它是否与用户X共享

2 个答案:

答案 0 :(得分:2)

在Cassandra中,你使用非规范化来做到这一点。 您应该创建items_by_users和users_by_items - 实际上,您必须为数据建模以回答所有查询。可能在插入数据时需要一个已记录的批处理,以保证所有表中写入的原子性

答案 1 :(得分:0)

你可以在Cassandra做同样的事情。但是,如果使用SQL,则无法强制执行完整性约束。