Cassandra 关于图形数据库设计的几点思考

Cassandra 关于图形数据库设计的几点思考,cassandra,graph-databases,titan,Cassandra,Graph Databases,Titan,我是graph数据库的新手,所以想了解一些设计简单社交事物的想法: 用户将具有以下属性: userId、name、sex、dob、about、place、country等一些其他字段 帖子将具有以下属性: posted,text,date,postedBy,like,follow 现在假设有用户U1、U2、U3、U4 帖子:P1、P2、P3、P4 现在我的问题是我应该在graph db中保存多少信息。比方说 对于vertex U1,我是否应仅在图形数据库中保留用户的所有信息(用户名、姓名、性别

我是graph数据库的新手,所以想了解一些设计简单社交事物的想法:

用户将具有以下属性:

userId、name、sex、dob、about、place、country等一些其他字段

帖子将具有以下属性:

posted,text,date,postedBy,like,follow

现在假设有用户
U1、U2、U3、U4
帖子:
P1、P2、P3、P4

现在我的问题是我应该在graph db中保存多少信息。比方说

  • 对于
    vertex U1
    ,我是否应仅在图形数据库中保留用户的所有信息(用户名、姓名、性别、出生日期……)

  • 对于
    vertex P1
    ,我是否应将所有信息(posted、text、date、postedBy、like、follow)仅保留在图形数据库中

只有部分信息,例如

  • 对于用户顶点,只有
    用户ID和名称以及rest信息应该在Nosql或关系数据库中

  • 对于post顶点,仅“postId和text”和rest信息应在Nosql或关系数据库中

我只是想知道Graph DB世界中这种场景的常见做法

我正在使用Cassandra并考虑使用Titan Graph数据库


下一个问题,通知所有参与讨论的用户有关任何新评论,哪一个是更好的选择,比如…

Titan,实际上任何图形数据库都能很好地存储您引用的所有信息。在大多数情况下,就数据类型而言,您希望避免将大量二进制数据放入图形中,如文件/图像。这些东西最好存储在其他地方,比如AmazonS3,并以某种方式在图中作为指针引用


至于“通知”,我不确定我是否理解你的问题。你如何选择“通知”用户“新的东西”并不是图表或卡桑德拉的功能。如果你真的是说,我该如何向用户推荐最新的帖子,那么图形数据库就可以了,Titan可能是最好的选择,因为它支持。基本上,你可以创建一个索引,按日期降序将你的优势从一个用户排序到另一个帖子,然后可以轻松获取前10篇最新帖子。

“通知”的意思与此相同。只要有人愿意,…发表评论,所有参与讨论的用户都会得到通知。接下来你要说的是,与其将一半的用户信息存储在Titan db中,另一半存储在其他db中(cassandra或其他数据库)
,不如将所有信息存储在Titan中,不管其数据有多大,除了blob或二进制数据
??对吧?好吧,那么我猜对了你所说的“通知”是什么意思,我的答案基本上是正确的。而且,是的,将您的所有数据存储在Titan中(至少在您的问题中描述过的范围内)。告诉我一件事,我是否应该将graph db视为nosql db,并具有存储数据的加分点,同时执行所有graph函数?如果是的话,那么我认为我应该使用Titan来存储我的数据(二进制除外),因为它是一种社会数据(喜欢、跟随、回复……)“社会数据”本质上是一种图形,所以存储它是有意义的。如果这是您要存储的数据的主要性质,那么图形应该与该用例很匹配。我认为,当图形可能是您所需要的全部时,您通过添加更多数据库来不必要地过度复杂化您的设计。在我看来,用例的任何方面都不会使它听起来像是无法将所有内容都存储在图表中。除二进制数据外,所有数据都保留在图形中。