Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cassandra中自动复制数据_Cassandra_Data Modeling_Nosql - Fatal编程技术网

如何在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,这是一些非常好的解释。如果你能为我分享一些好的阅读资料,我将不胜感激。