`

面向对象数据库和NoSQL

阅读更多

先来说说对象数据库。定义参见维基:http://zh.wikipedia.org/zh/%E5%AF%B9%E8%B1%A1%E6%95%B0%E6%8D%AE%E5%BA%93

一个数据库的持久性整体规划通常都是不成套的。各种ORM(对象关系映射)工具都能更容易地进行对象和数据结构之间的转换,但没有一个是完美的。这就是通常所说的“ORM Impedance Mismatch(阻抗不匹配)”。于是吗,关系型数据库对于程序员的设计始终有相当大的限制,有的人擅长从领域模型去设计程序,有的人喜好从数据存储层面去设计代码。在对象数据库中,可以显式避免了一些传统关系数据库的使用方式,比如连表查询等,对于一些对象系统复杂,对象之间关系层次众多的场合,对象数据库有其独到的优势。

关系型数据库有比我们想的更多的局限性。存储和表示一些相当普通的数据结构也是非常困难的。试想一条公交线路——简单,有序的一组站点。关系型数据库以无序的方式存放表,只有创建一个特殊的索引,才能提取有序的数据。对象数据库就没有这个问题,它有有序的数组,不需要索引——这种索引是因为关系数据结构的局限性而要求创建的人工索引。

从设计的角度来看,很多程序员不得不通过一定的设计,尽量避免过多的级联对象一次从关系数据库中查出,以减少这种低性能的操作;而对于天然的对象,为了把它们放置到数据库中,程序员不得不把它们拆卸得乱七八糟,然后通过一个个关联表把它们再从逻辑上关联起来,这些都是。使用对象数据库,程序员可以更接近天然的认知,减少思维在上层代码到底层数据之间的转换。

 

再来说说NoSQL。NoSQL有人解释为Not Only SQL,它是在Web2.0的环境下产生的。入门材料可以参看Robbin的文章:http://robbin.javaeye.com/blog/524977

另外,首先在这里找资料:http://nosql-database.org/

关系数据库在应对互联网海量数据时,对于高并发、快读写和易扩展等方面渐渐显得力不从心(例如:Facebook's 50 TB for inbox search, and eBay's 2 PB overall data);而另一方面,关系数据库本身具备的一致性、读写实时性等优势,反而不能施展了(比如我发表了一条评论,某人到了十分钟后才看到,也没有什么不妥)。

对于严谨的银行、医疗等行业,关系数据库还无可替代,但到了宽容和自由的互联网应用,NoSQL就准备好驰骋天下了。“关系型数据库给你强加了太多东西。它们要你强行修改对象数据,以满足RDBMS (relational database management system,关系型数据库管理系统)的需要,”在NoSQL拥护者们看来,基于NoSQL的替代方案“只是给你所需要的”。

据Facebook的工程师Avinash Lakshma介绍,Cassandra仅用0.12毫秒就可以写入50GB的数据,比MySQL快了超过2500倍。NoSQL和对象数据库一样,都能找到适合自己发挥的领域,至少现在看来没有谁能在某一天取代关系数据库。不过从数据库的应用来看,关系数据库已经不再处于垄断地位,也许过两三年,等云计算愈演愈烈的时候,那情况又有谁知道呢?

 

分享到:
评论

相关推荐

    面向对象数据库的介绍和开发及使用案例

    面向对象数据库(Object-Oriented Database, OODB)是一种专门用于存储和管理面向对象程序设计中的对象的数据管理系统。相比于传统的关系型数据库,OODB更加强调数据的封装性和完整性,能够更好地支持复杂的对象模型...

    面向对象与数据库

    本文将深入探讨这两个主题,并结合提供的文件《面向对象分析与设计(第3版).pdf》和《数据库原理(完整).pdf》来阐述相关知识点。 首先,让我们来看看面向对象(Object-Oriented,OO)编程。这是一种编程范式,它基于...

    关系数据库还是NoSQL数据库.doc

    5. 对象存储:如db4o、Versant,以面向对象的方式来存取数据,简化编程模型,但可能牺牲一些性能。 6. XML数据库:如Berkeley DB XML、BaseX,专门为XML数据提供高效存储和查询,支持XML内部查询语法。 选择NoSQL...

    很好的数据库概述的课件

    数据库的概念自20世纪60年代开始形成,从早期的层次型和网状型数据库,到关系型数据库的崛起,再到现代的面向对象数据库和NoSQL数据库,其发展历程反映了信息技术的进步和需求的变化。 关系型数据库: 在第三版的...

    武汉大学数据库课件: 数据库技术新进展, 讲述最新的数据库技术。数据仓库 分布式数据库 主动数据库 面向对象数据库等。

    1. 面向对象数据库:引入对象-关系模型,支持复杂数据类型,允许嵌套结构和继承关系,提高了数据表示的灵活性。 2. 分布式数据库:分布式数据库系统可以将数据分布在多个节点上,提供容错能力和扩展性,适应大规模...

    适用于云计算的数据库开发和使用案例

    在这个过程中,数据库经历了从层次模型、网络模型到关系模型的发展,并进一步向着更适应现代计算环境的方向迈进,如面向对象数据库和NoSQL等。 1. **层次模型**:这是最早的数据库模型之一,它以树形结构来组织数据...

    access数据库

    随着面向对象数据库和NoSQL等非关系型数据库的出现,数据管理的方式持续变革,以适应大数据、云计算和分布式系统的需要。 Access数据库具备基本属性,如数据表、查询、宏、模块和报告等基本结构,这些元素共同构成...

    第19章 非关系型数据库—NoSQL.docx

    2. 面向文档的数据库:MongoDB 和 CouchDB 属于这种类型 3. 面向列的数据库:Cassandra、Hbase 属于这种类型 键值存储的保存方式有以下三种: 1. 临时性:“数据有可能丢失”,Memcached 属于这种类型 2. 永久性:...

    NoSQL数据库总结.pdf

    NoSQL数据库的特点是没有固定的模式(schema),可以存储复杂的数据类型,支持动态查询,支持完全索引,包含内部对象支持查询,支持复制和故障恢复。 MongoDB是NoSQL数据库的一种,旨在为WEB应用提供可扩展的高...

    使用面向对象数据库实现SNS社区的云服务

    相比之下,面向对象数据库如Versant提供了更加灵活和高效的解决方案。下面我们将深入分析这些挑战,并介绍Versant对象数据库如何克服这些难题。 1. **分布式处理的挑战** - **跨节点数据引用**:在传统的关系型...

    NoSQL数据库MongoDB基础学习

    MongoDB 是一个开源的、面向文档的数据库,属于 NoSQL 数据库中的一种。 2. 数据逻辑结构:MongoDB 的数据逻辑结构是面向集合的,易存储对象类型及 JSON 形式的数据。 3. 存储结构:MongoDB 的存储结构是基于分布式...

    使用VERSANT分布式面向对象云数据库的大型多人在线游戏性能

    VERSANT是一款专为高性能、高可用性和大数据量设计的分布式面向对象数据库管理系统。它采用了非关系型数据库(NoSQL)的技术特点,特别适合处理结构复杂、规模庞大的数据集。对于大型多人在线游戏而言,VERSANT提供...

    数据库技术应用与发展 论文

    面向对象数据库技术以类和继承为基础,反映现实世界的实体和关系。它强调抽象、封装和信息隐蔽,提供了更高级别的复杂性控制。面向对象数据库的特点包括永久性存储、高效的存储管理、并发控制、故障恢复以及非过程化...

    数据库实习

    《面向对象的数据库技术.pdf》和《面向对象数据库技术及其在空间信息系统中的应用.pdf》这两份资料聚焦于面向对象数据库,这是数据库技术的一个分支,它允许直接存储和管理对象和类,简化了复杂数据结构的处理。...

    基于文档模型的Nosql数据库逻辑建模

    5. **Object数据库**:直接存储面向对象编程语言中的对象,如OrientDB。 #### 三、文档模型建模过程 本文将以MongoDB为例,探讨如何基于文档模型进行NoSQL数据库的逻辑建模。 ##### 3.1 MongoDB文档模型 MongoDB...

    高性能NoSQL数据库外存.zip

    1.什么是外存Exist 外存本质上是一个内存级别的nosql。 它提出了“面向变量”的数据访问思想,让用户只见变量,不见接口,省去了繁琐的接口调用。以此实现了逻辑与数据分离的效果,一份单... 标签:外存 NoSQL数据库

    NoSQL数据库分析(英文).pdf

    然而,越来越多的开发者和用户开始转向非关系型(NoSQL)数据库,这包括自1960年代末就存在的层次型、图形和面向对象的数据库。同时,新的NoSQL数据库类型正在不断开发,并逐渐获得市场认可。 NoSQL数据库之间的...

    高级数据库技术课程笔记

    面向对象数据库提供了更接近现实世界和自然思考方式的数据管理能力,能够设计出高内聚、低耦合的系统,使得系统更加灵活且易于扩展。 数据文件的组织与存储是数据库技术中非常核心的组成部分。关系数据库通常采用二...

    SterlingNoSQL:Sterling NoSQL面向对象的数据库

    Sterling NoSQL面向对象的数据库 这是Sterling的项目,而面向对象的数据库Jeremy Likness的创建目的是为了在2000年初满足Silverlight和Windows Phone应用程序中对可查询的持久性存储的不断增长的需求。 该项目是从...

Global site tag (gtag.js) - Google Analytics