图形DB的建模

时间:2013-10-28 16:16:45

标签: database graph model

从SQL / NoSQL背景来看,我发现在图形数据库上进行最简单的练习模型是非常具有挑战性的。

虽然不同的技术有局限性和最佳实践,但我不确定我在创建模型时使用的心态是否正确,因此,我需要指导,建议和/或资源来帮助我获得更接近正确的做法。


我尝试过的初始练习是在图表数据库中表示文件共享整个目录(子文件夹和文件)。例如,我想要包含的一些属性和查询是

  • 文件夹的层次结构
  • 当前节点的聚合大小
  • 能够根据创建文件/文件夹的人员进行搜索
  • 能够搜索文件类型

这让我想到以下问题

  1. 何时/哪些属性应用于边缘。只有我打算搜索的那些?只有关系吗?

  2. 我是否希望扩展我的图形功能,例如,搜索大于X的文件?如何尝试最大化模型的未来能力/灵活性,以便这些变化不会造成巨大影响。


  3. 目前我正在探索InfiniteGraph和TitanDB。

1 个答案:

答案 0 :(得分:0)

1)我能想到的唯一一个描述文件夹层次结构边缘的属性是它是包含还是包含关系。

(如果您决定考虑所有优势,您甚至不需要这样做。在您的情况下,看起来您几乎总是在询问后代进行搜索并返回聚合尺寸)。

这比网络简单得多,或者边缘可能是不同类型的层次结构。想一个组织结构图,不仅跟踪谁管理谁,谁支持谁,指导谁,骚扰谁,无论如何。

2)我不熟悉您提到的两个数据库,但Neo4J允许对节点属性进行索引,因此在file_size上添加索引不会产生太大影响。它也是"架构,"这样您就可以动态添加属性,各种节点可能包含不同的属性。