如何在cassandra中自动复制数据
我对卡桑德拉很陌生,目前正处于我学习卡桑德拉的项目的早期阶段 既然卡桑德拉说要去规范化数据并复制它。因此,我有一个以下场景: 我为用户准备了表,如何在cassandra中自动复制数据,cassandra,data-modeling,nosql,Cassandra,Data Modeling,Nosql,我对卡桑德拉很陌生,目前正处于我学习卡桑德拉的项目的早期阶段 既然卡桑德拉说要去规范化数据并复制它。因此,我有一个以下场景: 我为用户准备了表,user\u master。用户有 主题[键入文本] 爱好[类型列表] uid[type int] 大约40多个属性 现在,一个用户想要搜索另一个用户。此搜索应查找与用户提供的主题和爱好匹配的所有用户。因此,我计划创建一个不同的表user\u discovery,该表仅对每个用户具有以下属性 主题[键入文本] 爱好[类型列表] uid[type i
user\u master
。用户有
- 主题[键入文本]
- 爱好[类型列表]
- uid[type int]
- 大约40多个属性
主题
和爱好
匹配的所有用户。因此,我计划创建一个不同的表user\u discovery
,该表仅对每个用户具有以下属性
- 主题[键入文本]
- 爱好[类型列表]
- uid[type int]
user\u master
中的每次插入/更新在两个表上写入内容?当user\u master
中有任何插入/更新时,是否可以自动更新user\u discovery
user\u discovery
中的列数会非常少)。如对此有任何评论,我们将不胜感激。谢谢使用单独的查询表的想法是让表的键包含您要查找的内容 您没有说第二个表的键是什么样子的,但是您的措辞“每个用户的以下属性”看起来像是您计划将用户(Id?)作为键。这确实没有性能优势 如果您想按用户的爱好查找用户,请创建一个表,将该爱好作为键,并将用户id(或用于查找用户的任何内容)作为列。每个爱好写一行,列出所有有这个爱好的用户。将用户写入与其爱好匹配的每一行 对主题执行相同的操作(即,单独的表、主题作为键、用户ID作为列) 然后,如果您想找到一个拥有特定爱好列表的用户,请对每个爱好进行一次查询,创建用户的交集 要使用此类查找表,您必须在每次更新用户时更新所有表
免责声明:我在管理几十万用户的相对复杂的环境中成功地使用了这种方法。然而,这是两年前的卡桑德拉1.5系统。我还没有真正研究Cassandra 2.0的新功能,因此我不知道今天是否可以使用更优雅的方法。谢谢Thomas,这是一些非常好的解释。如果你能为我分享一些好的阅读资料,我将不胜感激。