2

我已经为社交网络创建了一个图形模型,并且需要一些关于缩放设计的具体建议。请原谅这些问题的n00bness,但我没有找到很多明确的例子......

注意:状态更新和活动节点/关系是链接列表 - 最新条目不断放置在列表顶部。

  1. 链接列表允许生成新闻提要,但每个用户可能有数百条记录——我认为即使数据按日期降序排列,限制子句也不够用。我是否必须有一个单独的链接列表,它只包含最近的 10 个状态/活动更新)并不断替换该列表上的头部以获得更好的活动源生成,或者一个列表正确排序并完成工作(使用限制条款)

  2. 这些节点都有属性(带有内容、ID 等的 json 数据)——“全局”索引如何在这里发挥作用,以便我可以找到喜欢 Depeche 模式的用户,而无需等待终生等待结果?我知道如何将节点添加到索引中,只是想知道我是否在这里遗漏了一部分图片。

  3. 安全性-登录名和密码..我认为图形数据库可以存储它们,但我认为此时这是一个安全风险-将其保存在 postgres 等中会更好吗?

  4. 您将如何改进此模型以处理可扩展性?想象一下有 2000 万用户在这方面大打出手……

  5. 想象一下 4000 万用户——这个模型在可扩展性方面有什么问题?

在此处输入图像描述

4

1 回答 1

8

第1部分。

你可以编写 cypher 或 gremlin 查询来做你想做的事。请记住,您可以在边缘上向前和向后遍历。给定一个用户,它应该总是相对恒定的时间来拉起他们最近做的十件事。

第2部分。

If you are representing a band as an entity of a certain type, index on that attribute. Then you'll be able to pull out that node and traverse outwards to find all the users who like that band. If you don't have an independent entity, or it is somehow implicit, you'll want to enable full text search for your respective graph database.

Part 3.

Learn more about security. The only thing you would be storing would be a properly hashed string of the user's password. At that point you would be fine using any graph db and good security practices.

Part 4/5.

Once you have one user, worry about the next thousand.

When you have a thousand users, worry about the next hundred thousand.

When you have one hundred thousand, worry about the next million.

When you have a million users, you can start worrying about the questions you asked.

在您拥有至少 0.1% 的用户/量之前,尝试并询问有关如何扩大到特定规模的问题是一种精神自慰。

于 2013-03-30T13:41:29.643 回答