设计图数据库的一些想法

时间:2014-02-06 11:25:27

标签: cassandra graph-databases titan

我是图形数据库的新手,所以想要设计一个简单的社交内容:

用户将拥有以下属性:

userId, name, sex, dob, about, place, country,........some other fields

帖子将具有以下属性:

postId, text, date, postedBy, like, follow

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

现在我的问题是我应该在图表数据库中保留多少信息。让我们说

    对于vertex U1
  • 我应该仅在图表数据库中保留用户的所有信息(用户ID,姓名,性别,dob .....)。

  • 对于vertex P1
  • 我应该只在图表数据库中保留所有信息(postId,text,date,postedBy,like,follow)。

OR

仅部分信息,例如

  • 仅用于用户顶点userId and name,其余信息应位于Nosql或Relation db

  • 仅适用于邮政顶点' postId和text`及其余信息应位于Nosql或Relation db

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

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

Next question, which one is better choice to notify all users involved in the discussion about any new comment,likes...

1 个答案:

答案 0 :(得分:3)

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

就“通知”而言,我不确定我理解你的问题。您如何选择“通知”用户“新事物”并不是图表或cassandra的功能。如果你真的只是意味着,我如何向用户推荐最新的帖子,那么图表数据库就可以了,而Titan可能是最好的选择,因为它支持vertex centric indices。您基本上可以创建一个索引,按照降序日期顺序将您的边缘从用户排序到帖子,然后可以轻松获取前10个最新帖子。