是什么基于图的数据库之间的差( http://neo4j.org/ )和面向对象的数据库( http://www.db4o.com/ )?

有帮助吗?

解决方案

我不同回答这样的:对象和图形数据库在两个不同级别的抽象操作

这是对象数据库的主要数据元素的对象,方式,我们知道他们从面向对象的编程语言。

一个图形数据库的主要数据元素的节点和边。

这是对象数据库不具有自动参照完整性等的曲线图数据库中的两个事物之间的(双向)边缘的概念不具有指针可以是NULL的概念。 (当然,可以想见的杂种。)

在架构方面,对象数据库的模式是不管组类是在应用程序中。图形数据库的模式(无论是隐含的,通过什么样的字符串标签的意思约定,或明确,通过声明为榜样,因为我们做它在 InfoGrid 例如)是独立于应用的。这使得它更简单,例如,编写使用图形数据库而不是一个对象数据库针对相同数据的多个应用程序,因为架构是应用无关。在另一方面,使用你图形数据库不能简单地采取任意物体并持续它。

不同的工具不同的工作,我觉得。

其他提示

是的,API似乎是主要的区别,但不是真正的皮毛一体。概念上的一组物体会形成一个图,你可以认为,以统一的方式对待这个图形API的。相反,你可以在理论上矿的模式的通用图形结构,并将它们映射到通过一些API暴露的对象。但是,实际的产品一般都会对数据的实际存储后果的API设计,如何可以查询,所以这将是远离琐碎的,比方说,创建一个包装,使它看起来像别的东西。此外,面向对象的数据库必须提供一些诚信保证和打字的结构,图形数据库通常不会做的。事实上,严重OO数据库是从“自由形式”远:)

看看[HyperGraphDB] [1] - 它既是一个完整的面向对象的数据库(如db4o的)和非常先进的图形数据库无论在代表性和查询能力方面。它能够存储广义超图(其中,边缘可以指向一个以上的节点,并且还向其他边缘也一样),它具有嵌入作为一个曲线图中的完全可扩展的类型系统等

不同于其他图形数据库,在HyperGraphDB每个对象成为一个节点或在图中的边,以无至最小API侵入和你有代表你的对象作为一个图或一个方式,是处理它们的选择垂直于图结构(作为节点或边的“有效载荷”的值)。你可以做复杂的遍历,自定义索引和查询。

对于为什么HyperGraphDB实际上是一个ODMS,请参阅博客文章是HyperGraphDB一个面向对象的数据库?在Kobrix的网站。

如从另一个角度descibes,一个graphdb将保持从应用程序的类和对象分离数据。一个graphdb也有更多的内置功能来处理图形,显然 - 样最短路径或深度遍历

另一个重要的区别是,在像的Neo4j可以遍历基于关系(边缘)的类型和方向的图形,而无需加载完整节点(包括节点属性/特性)一个graphdb。还有使用的Neo4j作为对象DB的后端,仍然能够使用所有的东西造影的选择,请参阅:的 jo4neo 这项目有不同的方法,也可以算作对Neo4j的顶部的对象DB:的Neo4j .RB 。一个新的选项是使用弹簧数据图时,其给出通过注释graphdb支持。

同样的问题被要求评价来本博文

从他们的网站的一个快速浏览:

的主要区别是这些API是结构化的方式,而不是那种自由形式的数据库,你可以使用它们来建立。

db4o的使用对象映射 - 你创建Java / C#类,并将其使用反射来坚持它在数据库中

Neo4j的具有显式操作API。

Neo4j的好像,我的愚见,更漂亮与互动。

您也可以考虑一个key-value存储 - 你可以做完全一样的自由形式的数据库,其中的一个

在低级别的差异不是那么大。这两种管理为无需昂贵的加入直接链接关系。而且都有一个方法来遍历与查询语言的关系,而图形数据库有运营商以第N级递归地走了。

但最大的区别是在域:在图形数据库都是基于这2种类型:顶点和边缘,即使平时也可以定义自己的类型,一种顶点或边的亚型

在ODBMS你没有顶点和边的概念,除非你写你自己的。

通过图形数据库,你有,它是基于数学图论的机会轻微外表。面向对象的数据库,你这是在所有基于什么确定性(当然也最没有数学理论可言)。

scroll top