4

I'm pretty new to the NoSQL scene. I'm trying to understand the capabilities and differences between different graph databases. My understanding is that Orient and Arango use documents as vertices (and edges too, right?). I know that in Titan and Neo that vertices and edges may have properties and that these properties are key:value pairs. It makes sense to me that you might limit the values to primitives (though I don't know that this is strictly the case). I'm wondering just what you can have as a value. Can your value be an array of primitives? Can it be another hash? etc. If the values are rather unrestricted then I wonder how Titan or Neo really differ from Orient and Arango with respect to the ways in which you can structure your data.

edit: People are asking about my use case -- My company has developed a toolchain that creates a working applications (GUI and database) from UML models...in seconds. We use these tools to model a number of different domains (whatever a customer comes to use with) and develop solutions for them. Right now the tooling uses an ORDBM. This has its drawbacks, some of which are showstoppers if my thoughts on how we should evolve mean anything. I'm trying to do my due diligence in exploring alternatives. I can accept that nothing is perfect and that whatever we choose won't be the optimal choice for every customer's use case. Because of the automation involved we may not necessarily take advantage of every feature a particular db offers either on a case by case basis. So, I suppose I'm trying to decide which db would be a good fit for our tooling. (Note also that the original question posed here is just one of many deciding factors.) Oh yea, FWIW, we do Ruby. We could shift to maybe Python or Groovy or something else but it would be far from trivial to do so.

4

4 回答 4

4

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

于 2013-06-14T13:15:36.230 回答
2

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

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

你如何构建或建模你的数据实际上取决于你想从图中得到什么样的信息——有时一个属性就足够了,有时将它表示为一个节点是有意义的。你有一个特定的用例吗?

于 2013-06-14T07:46:25.750 回答
2

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

于 2013-06-17T12:05:12.843 回答
0

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

于 2015-11-29T14:52:36.660 回答