这个数据模型是否最适合 TitanDB 中的基本新闻提要?
Is this data model optimal for a basic news feed in TitanDB?
虽然我没有使用 Neo4j,而是使用 TitanDB (IBM Graph),但由于我是图形数据库的新手,所以我使用 Neo4j 文档中建议的模式为基本新闻提要建模,用于现在。
http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html
在完整阅读所有文档后,我知道这些数据库的操作方式之间存在几个关键差异。
在link描述的模型中,每个用户posts
被存储为vertexes
,通过edges
相互连接,形成一长串从每个 user
个顶点发出的状态更新。
虽然考虑到 Neo4j 的功能,这是有道理的,但我知道 TitanDB 具有 vertex-centric
索引功能,详细描述如下:
http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html
现在我正在努力确保查询给定的用户提要是最佳的,对于一个有很多用户的大图,并且有很多永久保留的帖子或状态更新。因此,我想避免必须遍历所有用户朋友的所有帖子,然后最后对它们进行排序和限制,只是为了获得用户提要的前 15 项。
因此,我不确定 Neo4j 文档中描述的模型是否真的是与 TitanDB 一起使用的最佳模型,所以我的问题如下:
- Neo4j 文档中描述的模型是否最适合 TitanDB 中的快速新闻提要检索?
- 如果是这样,我需要创建哪些索引才能以最佳方式检索用户提要?
- 如果不是,我最好将每个
post
顶点直接连接到发布它的 user
,并在 time
上使用 vertex-centric
索引 属性 每个 posted
边?
我真的很想听取一些关于在 Titan DB 中建模、索引和检索基本新闻源的一般建议。提前致谢。
基本模式似乎不是一个坏方法,尽管很难根据这个用例做出好的判断。
解决索引问题的最简单方法可能是稍微非规范化 - 将用户 ID 作为 属性 存储在 post
顶点上,并在 [user, timestamp]
上创建和索引对.
以顶点为中心的索引可能对您有帮助,但在提议的模型中没有帮助 - 您需要将 post
建模为边,将节点建模为顶点,这可能会使其他遍历变得相当尴尬。此外,IBM Graph 在其当前版本中不支持以顶点为中心的索引。
虽然我没有使用 Neo4j,而是使用 TitanDB (IBM Graph),但由于我是图形数据库的新手,所以我使用 Neo4j 文档中建议的模式为基本新闻提要建模,用于现在。
http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html
在完整阅读所有文档后,我知道这些数据库的操作方式之间存在几个关键差异。
在link描述的模型中,每个用户posts
被存储为vertexes
,通过edges
相互连接,形成一长串从每个 user
个顶点发出的状态更新。
虽然考虑到 Neo4j 的功能,这是有道理的,但我知道 TitanDB 具有 vertex-centric
索引功能,详细描述如下:
http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html
现在我正在努力确保查询给定的用户提要是最佳的,对于一个有很多用户的大图,并且有很多永久保留的帖子或状态更新。因此,我想避免必须遍历所有用户朋友的所有帖子,然后最后对它们进行排序和限制,只是为了获得用户提要的前 15 项。
因此,我不确定 Neo4j 文档中描述的模型是否真的是与 TitanDB 一起使用的最佳模型,所以我的问题如下:
- Neo4j 文档中描述的模型是否最适合 TitanDB 中的快速新闻提要检索?
- 如果是这样,我需要创建哪些索引才能以最佳方式检索用户提要?
- 如果不是,我最好将每个
post
顶点直接连接到发布它的user
,并在time
上使用vertex-centric
索引 属性 每个posted
边?
我真的很想听取一些关于在 Titan DB 中建模、索引和检索基本新闻源的一般建议。提前致谢。
基本模式似乎不是一个坏方法,尽管很难根据这个用例做出好的判断。
解决索引问题的最简单方法可能是稍微非规范化 - 将用户 ID 作为 属性 存储在 post
顶点上,并在 [user, timestamp]
上创建和索引对.
以顶点为中心的索引可能对您有帮助,但在提议的模型中没有帮助 - 您需要将 post
建模为边,将节点建模为顶点,这可能会使其他遍历变得相当尴尬。此外,IBM Graph 在其当前版本中不支持以顶点为中心的索引。