【问题标题】:Document and Graph database choices文档和图形数据库选择
【发布时间】:2011-05-16 18:57:24
【问题描述】:

我的系统有需求:
1)好友——需要计算用户之间的距离,最多N度,找到用户之间工作相关的共同项目。无法在mysql上很好地扩展它。所以我假设的选择是图形数据库?

2) 我有用户资料字段,大约 120 个字段,其中 80% 是 1:M 字段,所以在 mysql 中这意味着大约 96 个表来存储 1:M。如果我需要提取所有用户信息,那么我需要访问所有这些表。那么这里的解决方案是文档数据库、列数据库还是键值数据库?

目前我已经看到 OrientDB 可以充当文档和图形数据库。这可以用于上述需求还是有更好的数据库选项?

谢谢。

编辑: 个人资料的要求是用户字段:IT 是职业社交网络,因此有很多投资组合,例如 1:M 的字段。那么,如果有 120 个字段,其中 96 个是 1:M,那么如何最好地存储它呢?示例是您工作过的公司。你就读的学校。你读过的杂志。你写的文章等等。每一个都是 1:M 并且有 96 个这样的字段 = 96 个 Mysql 表。我无法合并,因为其中一些具有独特的元数据。我需要搜索字段并允许快速阅读以保持良好的用户体验。

对于图形:它是关于连接人们。对于启动,我只使用一项功能,即当您查看某人时,系统会说出您与该人分开多少度。其余的“社交”功能用于发布后。无论哪种方式,在 MySQL 中,我都无法做到这一点以进行扩展。如果我有 100 个朋友,并且每个人都是 100 个朋友,那么为了了解如何最好地在这些人周围找到我的方式,我假设一个图形数据库。

平台是核心数据库的codeignitor PHP / Mysql。

【问题讨论】:

    标签: sql database nosql


    【解决方案1】:

    计算节点之间的距离听起来很像图形数据库。 OrientDB 看起来很不错,我个人玩过Neo4j,你可以看看。

    要给出明确的答案,您必须提供更多的要求。

    【讨论】:

      【解决方案2】:

      对于RDF 数据库(又名三重存储)来说,这听起来像是一个很棒的场景。如果您的数据是关于人与人之间的联系...为什么不使用 RDF 中的FOAF 词汇对其进行建模。然后,您可以使用众多三合一商店之一。如果您需要可扩展性,我推荐 4store - 一个用 C 编写的分布式 RDF 数据库。4store 会将您的数据分布在集群中,您可以使用 SPARQL 查询它

      在您的情况下绝对可以考虑。

      【讨论】:

        猜你喜欢
        • 2012-08-24
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多