图形数据库(例如Titan、OrientDB、ArangoDB、Neo4J)中的属性值允许哪些取值?

4
我对NoSQL领域还比较新。我试图理解不同图形数据库的功能和差异。我的理解是Orient和Arango使用文档作为顶点(以及边,对吧?)。我知道在Titan和Neo中,顶点和边可以有属性,这些属性是键值对。我认为限制值为原始类型很有道理(虽然我不确定是否严格如此)。我想知道你可以将什么作为值。您的值可以是原始数组吗?它可以是另一个哈希吗?等等。如果值相当自由,则我想知道Titan或Neo在数据结构方面与Orient和Arango之间的区别。
编辑:人们问我的用例-我的公司开发了一套工具链,可以从UML模型中创建工作应用程序(GUI和数据库)...在几秒钟内。我们使用这些工具来模拟许多不同的域(无论客户要求什么)并为其开发解决方案。现在,工具使用ORDBM。这有其缺点,其中一些是致命的,如果我对我们应该如何发展的想法有任何意义的话。我正在尽职调查探索替代方案。我可以接受没有完美的东西,并且我们选择的任何内容都不会成为每个客户用例的最佳选择。由于涉及自动化,我们可能不会在每个案例中完全利用特定数据库所提供的每个功能。因此,我想决定哪个数据库适合我们的工具链。(还要注意,这里提出的原始问题只是许多决定因素之一。)哦,是的,FWIW,我们使用Ruby。我们可以转移到Python或Groovy或其他一些东西,但这将远非易事。
4个回答

4

ArangoDB使用文档作为顶点和边。因此,它可以是简单的键/值对,也可以是具有子文档或文档列表的复杂文档。这取决于您的情况,适合您的是什么。也许您可以详细说明您的用例。


关于您的用例:您可以为您的域使用ArangoDB的所有文档功能。顶点是无模式的。您可以将人员与汽车混合作为顶点。还有一个RUBY驱动程序:请参见https://github.com/triAGENS/Ashikawa - fceller

2
Neo4j使用属性图,节点和关系都可以有键值对属性。Neo4j支持基本类型、字符串和这些类型的数组。如何结构化或建模数据实际上取决于您想从图中获取什么样的信息-有时属性就足够了,有时将其表示为节点更有意义。您有特定的用例吗?详情请见:http://docs.neo4j.org/chunked/stable/graphdb-neo4j-properties.html

谢谢,这回答了关于Neo4j的问题。 - Huliax

2

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接