在开发 Web 应用程序时,您啥时候会使用 Graph 数据库和 Document 数据库?

Posted

技术标签:

【中文标题】在开发 Web 应用程序时,您啥时候会使用 Graph 数据库和 Document 数据库?【英文标题】:When developing web applications when would you use a Graph database versus a Document database?在开发 Web 应用程序时,您什么时候会使用 Graph 数据库和 Document 数据库? 【发布时间】:2011-04-10 23:47:16 【问题描述】:

我正在使用 Rails 开发一个基于 Web 的应用程序。我正在争论是使用图形数据库(例如 InfoGrid)还是文档数据库(例如 MongoDB)。

我的应用程序既需要存储少量数据(例如 URL),也需要存储大量数据(例如虚拟机)。此数据将与单个用户相关联。

我有兴趣了解人们使用 Graph 或 Document 数据库的经验,以及他们为什么会使用其中任何一个选项。

谢谢

【问题讨论】:

【参考方案1】:

我觉得这两个世界的经验不足以正确和完整地回答您的问题,但是我使用文档数据库已有一段时间了,这里有一些个人提示。

文档数据库基于键、值和静态视图的概念,非常适合查找具有特定值的一组文档。

他们没有概念化文档之间的关系。

因此,如果您的软件必须提供高级“查询”,其中选择标准作用于多种“文档类型”,或者您只需要使用多个元素执行选择,则 [key,value] 概念不合适。

还有许多其他不适合使用文档数据库的情况:在“分页”表中呈现大型数据集,可在多个列上排序是性能低且磁盘空间使用量巨大。

因此,在许多情况下,您必须执行“服务器端”处理才能拾取碎片,而使用 rails 或任何其他基于 ruby​​ 的框架,您可能会遇到性能问题。

图数据库基于tripplestore的概念,这意味着它们也概念化了实体之间的关系。

可以使用关系(和实体角色)遍历该图,并且在跨关系结构化数据执行搜索时可能更方便。

由于我没有使用图形数据库的经验,我不知道是否可以使用多个条件轻松查询/遍历图形数据库,但是如果有建议的读者有这样的信息,我会非常感谢任何此类查询的示例/遍历。

我目前正在阅读有关 InfoGrid 的信息,并试图弄清楚这样的数据库是否可以方便地对大量数据执行复杂的请求,包括关系......

据我所知,InfoGrah 应该被视为“数据联合者”,能够搜索/挖掘来自多个来源(商店)的数据,也可以是 NoSQL 数据库,例如 Mongo。

Wich 意味着您可以使用 mongo 存储进行更新,使用 InfoGraph 进行数据搜索,也许在内部进行复杂搜索时可以节省大量 CPU 和磁盘一个 nosql 数据库。

当然,如果您的应用只是在数据库中存储大量巨大的二进制文件,而您只需要执行简单的键查询并检索结果,这似乎有点“矫枉过正”。在那种情况下,像 mongo 或 couch 这样的 nosql 数据库可能会很方便。

希望这能有所帮助;)

【讨论】:

图数据库:我们有多少共同的朋友?我们有多少不是“乔”的共同朋友的朋友?谁是住在奥斯汀的前 10 个朋友,按年龄排序的?这些类型的查询使用文档数据库不容易完成,使用关系数据库非常缓慢和麻烦。【参考方案2】:

当通过边连接相关文档时,你会得到浅图还是深图?我认为在选择 graphdbs 和 documentdbs 时,这个问题的答案很重要。请参阅 Jim Webber 的 Square Pegs and Round Holes in the NOSQL World,了解这些方面的想法。

【讨论】:

以上是关于在开发 Web 应用程序时,您啥时候会使用 Graph 数据库和 Document 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

您啥时候会使用 In-Proc WCF 组件?

当您啥都不返回时,从 collectionView(_:viewForSupplementaryElementOfKind:at:) 返回啥?

解决gradle导入时Web Facets/Artifacts错误

Web安全检查

移动Web单页应用开发实践——页面结构化

什么时候不使用 Google Web Toolkit?