我是图形数据库的新手,所以想要设计一个简单的社交内容:
用户将拥有以下属性:
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...
答案 0 :(得分:3)
Titan和几乎任何图形数据库都能很好地存储您引用的所有信息。在大多数情况下,就数据类型而言,您希望避免放入图表的主要内容是大量二进制数据,如文件/图像。这些东西最好存储在其他地方,比如Amazon S3,并且在图形中以某种方式作为指针引用。
就“通知”而言,我不确定我理解你的问题。您如何选择“通知”用户“新事物”并不是图表或cassandra的功能。如果你真的只是意味着,我如何向用户推荐最新的帖子,那么图表数据库就可以了,而Titan可能是最好的选择,因为它支持vertex centric indices。您基本上可以创建一个索引,按照降序日期顺序将您的边缘从用户排序到帖子,然后可以轻松获取前10个最新帖子。