【问题标题】:What values are allowable for properties in graph databases (i.e. Titan, OrientDB, ArangoDB, Neo4J)?图数据库(即 Titan、OrientDB、ArangoDB、Neo4J)中的属性允许使用哪些值?
【发布时间】:2013-06-14 07:07:11
【问题描述】:

我对@9​​87654321@ 场景还很陌生。我试图了解不同图形数据库之间的功能和差异。我的理解是 Orient 和 Arango 使用文档作为顶点(还有边,对吧?)。我知道在 Titan 和 Neo 中,顶点和边可能具有属性,并且这些属性是键:值对。对我来说,您可能会将值限制为基元(虽然我不知道严格来说是这种情况)。我想知道您可以拥有什么价值。你的值可以是一组原语吗?它可以是另一个哈希吗?等等。如果这些值不受限制,那么我想知道 Titan 或 Neo 在构建数据的方式方面与 Orient 和 Arango 有何真正不同。

编辑:人们在询问我的用例——我的公司开发了一个工具链,可以在几秒钟内从 UML 模型创建一个工作应用程序(GUI 和数据库)。我们使用这些工具对许多不同的领域(无论客户使用什么)进行建模,并为它们开发解决方案。现在,该工具使用 ORDBM。这有它的缺点,如果我对我们应该如何进化的想法有意义的话,其中一些是显眼的。我正在尽我所能探索替代方案。我可以接受没有什么是完美的,无论我们选择什么都不会是每个客户用例的最佳选择。由于涉及自动化,我们可能不一定要根据具体情况利用特定数据库提供的每个功能。所以,我想我正在尝试确定哪个数据库适合我们的工具。 (还要注意,这里提出的原始问题只是众多决定因素之一。)哦,是的,FWIW,我们做 Ruby。我们可以改用 Python 或 Groovy 或其他东西,但这绝非易事。

【问题讨论】:

    标签: neo4j orientdb titan arangodb


    【解决方案1】:

    ArangoDB 使用文档作为顶点和边。因此,它可以像键/值对一样简单,也可以像带有子文档或文档列表的文档一样复杂。这真的取决于你的情况,什么适合你。也许您可以更详细地解释您的用例。

    【讨论】:

    • 关于您的用例:您可以为您的域使用 ArangoDB 的所有文档功能。顶点是无模式的。您可以将 Person 与 Cars 混合用于顶点。还有一个 RUBY 驱动:见github.com/triAGENS/Ashikawa
    【解决方案2】:

    Neo4j 使用属性图,顶点(节点)和边(关系)都可以具有键值对的属性。 Neo4j 支持这些原语、字符串和数组。

    http://docs.neo4j.org/chunked/stable/graphdb-neo4j-properties.html

    您如何构建或建模您的数据实际上取决于您想要从图表中获得什么样的信息 - 有时一个属性就足够了,有时将其表示为一个节点是有意义的。您有具体的用例吗?

    【讨论】:

    • 谢谢,这回答了关于 Neo4j 的问题。
    【解决方案3】:

    OrientDB 支持任何原语、字符串、数组甚至集合、映射和嵌入文档。因此,您几乎可以将任何类型的数据存储到属性中。

    【讨论】:

      【解决方案4】:

      Titan 实际上要求顶点和边具有使它们看起来更像表的模式。它们每个都可以具有具有典型值类型的属性——数字、字符串等。没有明确支持“文档”样式的嵌套值,尽管新版本的 Titan 属性可以具有属性,这要归功于对边缘的创造性滥用。如果在顶点或边中存储大型复杂文档很重要,您还可以存储 Java 可序列化文档。

      【讨论】:

        猜你喜欢
        • 2013-11-15
        • 1970-01-01
        • 2016-01-02
        • 2010-10-29
        • 1970-01-01
        • 2014-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多