2010-09-11 141 views

回答

5

一个面向对象的数据库,如db4o,将被认为是NoSQL提供的替代方案之一,这意味着不仅仅是SQL。这是一组关系数据库的替代品:Voldemort,Hadoop,MongoDB,CouchDB,BigTable,Neo4J,db4o等。

+3

我将Neo4J描述为图形数据库,而不是面向对象的数据库。另外,我不同意你的看法,即NoSQL是关于关系数据库的替代品。像Rel或Tutorial D这样的东西,它们都是关系型的,都在NoSQL的范围内。另外:图形数据库如果不存在关系,它会存储什么? – 2010-09-11 17:31:46

+3

+1指出NoSQL的意思是“不仅是SQL”,而不是“没有SQL” – davehauser 2010-09-11 17:48:28

+0

你是对的,Jorg。我的错。我正在考虑db4o。我会纠正它。 – duffymo 2010-09-11 17:51:51

2

NoSQL是一种运动,OODB是一种技术。换句话说:NoSQL是一群人,OODB是一段代码。

1

“NoSQL”没有严格的定义,所以差异主要是语义。通常,面向对象的数据库被认为是NoSQL数据库的一个子集(一种)。但是,一般来说,OO DB仍然具有类似ACID的锁定以保持一致性,而NoSQL通常会具有某种“最终一致”或部分锁定语义。 NoSQL的模式可能是基于对象的,也可能是基于键值的(或其他),这使得它成为一个更通用的术语。

9

NoSQL DB通常是非规范化的(保存对象数据的副本代替对象),其中OODB是具有对象关系的规范化数据库。在OODB中,数据存储在一个地方的对象中,并与其他对象相关联(关系)。

由于上述的非归一化和归一化的差异,两者都有各自的优缺点。像Mongo这样的NoSQL数据库读取速度快,但写入/更新数据时效率较低。由于NoSQL数据库的规格化非常规化,因此很难保持数据的完整性,因为像Wakanda这样的OODB易于管理并具有数据完整性。您删除一个对象并自动删除其所有关系。

我试了很多想找出一些好的JavaScript面向对象的数据库,但截至目前找不到任何比www.wakanda.org。如果您知道,请分享详情。

+0

对不起,很晚才更新。我发现Wakanda(OODB)和OrientDB以及ArangoDB的一些不错的选择。两者都适用于OLTP应用程序,因为我们可以以规范化的方式管理数据库。 – 2015-04-20 09:52:12