我正在使用 Rails 开发一个基于 Web 的应用程序。我正在讨论使用图形数据库(例如 InfoGrid)还是文档数据库(例如 MongoDB)。
我的应用程序将需要存储小数据集(如 URL)和非常大的数据集(如虚拟机)。此数据将绑定到单个用户。
我有兴趣了解人们使用 Graph 或 Document 数据库的经验,以及他们为什么会使用其中任何一个选项。
谢谢
我正在使用 Rails 开发一个基于 Web 的应用程序。我正在讨论使用图形数据库(例如 InfoGrid)还是文档数据库(例如 MongoDB)。
我的应用程序将需要存储小数据集(如 URL)和非常大的数据集(如虚拟机)。此数据将绑定到单个用户。
我有兴趣了解人们使用 Graph 或 Document 数据库的经验,以及他们为什么会使用其中任何一个选项。
谢谢
我对这两个世界都没有足够的经验来正确和完整地回答您的问题,但是我使用文档数据库已有一段时间了,这里有一些个人提示。
文档数据库基于键、值和静态视图的概念,非常适合查找一组具有特定值的文档。
他们没有概念化文档之间的关系。
因此,如果您的软件必须提供高级“查询”,其中选择标准作用于几种“文档类型”,或者如果您只需要使用多个元素执行选择,则 [key,value] 概念不合适。
还有许多其他不适合文档数据库的情况:在“分页”表中呈现大型数据集,可在多个列上排序是性能低且磁盘空间使用量巨大的情况之一。
因此,在许多情况下,您必须执行“服务器端”处理才能拾取碎片,并且使用 rails 或任何其他基于 ruby 的框架,您可能会遇到性能问题。
图数据库基于tripplestore的概念,这意味着它们也概念化了实体之间的关系。
可以使用关系(和实体角色)遍历该图,并且在跨关系结构化数据执行搜索时可能更方便。
由于我没有使用图形数据库的经验,因此我不知道是否可以使用多个条件轻松查询/遍历图形数据库,但是如果建议的读者有这样的信息,我将非常感谢此类查询/遍历的任何示例。
我目前正在阅读 InfoGrid 并试图弄清楚这些数据库是否可以方便地对大量数据执行复杂的请求,包括关系......
据我所知,InfoGrah 应该被视为一个“数据联合器”,能够搜索/挖掘来自多个源(存储)的数据,也可以是 NoSQL 数据库,例如 Mongo。
这意味着您可以使用 mongo 存储进行更新,使用 InfoGraph 进行数据搜索,并且在nosql 数据库中进行复杂搜索时可能会节省大量 CPU 和磁盘。
当然,如果您的应用程序只是在数据库中存储大量巨大的二进制文件,而您只需要执行简单的键查询并检索结果,这似乎有点“矫枉过正”。在那种情况下,像 mongo 或 couch 这样的 nosql 数据库可能会很方便。
希望有些帮助 ;)
当通过边连接相关文档时,你会得到浅图还是深图?我认为在选择 graphdbs 和 documentdbs 时,这个问题的答案很重要。请参阅Jim Webber的 NOSQL World 中的 Square Pegs 和 Round Holes,了解这些方面的想法。