`
庄表伟
  • 浏览: 1155683 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

敲响OO时代的丧钟——OO能从关系型数据库借鉴些什么?

阅读更多
今天这篇是关于OO VS. RDB的,OO作为一种编程范型,主要是集中于处理“操作”,而RDBMS作为一种数据管理工具,主要是集中于“数据”。但是,在一个需要数据库的系统中,必然的情况是:操作的对象自然是各种各样的数据,而数据的管理,自然要通过操作。因此,OO与RDB,从最初浅的角度来理解,虽然分别位于“业务逻辑层”与“数据层”,但是相互之间却又有着非常紧密的联系。在OO与RDB之间存在着的紧张关系,其根源在于:“OO世界中的数据是被封装的孤立数据;RDB世界中的操作是针对行集的。
 
因此,一个对象实例内部的数据,应该保存到数据库中的哪些表、哪些行、哪些列,是一个非常复杂的问题。反过来说,当我们要在内存中恢复一个对象实例时,要从多少表、多少行、多少列中采集数据,并正确转化为对象实例的内部数据,也是相当的复杂。O/R Mapping,需要考虑的问题还不止于此,在RDB中自然存在的“关系”这一概念,在OO当中,却没有明确的对应概念。在OO的世界里,对象之间存在各种各样的关系,却非常难以进行规范化的描述。再加上:“添加、修改、删除、查询”等等情况的O/R映射,以及与“关系”相关的“级联操作”——“级联添加、级联修改、级联删除、级联查询”,一个好的O/R Mapping工具,要做出来真是千难万难。
 
很多人都意识到了这一点!是的,问题的确存在。但是,为什么呢?该怎么办呢?几乎没有人会反思OO的不是,而是想当然的认为:“关系数据库技术太老了,跟不上OO技术的进步,因此,我们需要OODB这样的能够直接支持OO的数据库。”
 
“以其昏昏,使人昭昭”的事情,从来没有发生过。依着我前面的分析,在OO这样的基础薄弱的理论上,怎么可能搞出有实用价值的数据库呢?
 
在看到了徐昊的《关于面向对象设计与数据模型的精彩论述》之后,我相信自己找到了知音。他说:“OO在数据模型设计上不具有思维简洁性。”并且提出了一个重要的词汇:“边语义”!这使我相信,和我有类似想法的同志,是存在的。后来又现场听到了曹晓钢同志的《ORM时代的数据访问技术》的演讲,并且在他的笔记本里看到了他做的一些代码,居然与我的很多想法不谋而合!再加上后来与徐昊的几次MSN交流,终于使我敢于开始写这样一篇“OO丧钟”的文章,因为,我相信自己并不是孤独的反对者。
 
OO可以从关系型数据库那里借鉴些什么呢?
 
1、关系:也就是徐昊所说的边语义。在OO中,对象与对象之间是否存在关系,在对象之外是不知道的。当一个对象被封装起来以后,他内部是否使用、关联、组合了其他的对象,是不可知的。因此,我们看到的通常的OO图,只能说是Object被剖开了以后的对象图。事实上,关系是被隐藏起来的。而在RDB中,关系非常明确的被定义与标识出来,一目了然。这将带来巨大的描述效果。相比起UML Class图,E-R要容易理解得多。
 
2、Primary Key:这是RDB特有的概念,在OO中没有对应概念。因此,我们要判断两个对象是否相等,就相当困难。如果每个对象都有一个“一次设置,终身不变的Primary Key”,那么对象之间的比较语义,就能够被清楚的区分为:IS和LIKE。IS就是Primary Key相同的两个对象,他们应该完全一致,甚至在内存中,也只应该保存一份。LIKE,就是成员数据相同的两个对象,他们不是一个东西,仅仅是而已。
 
3、SQL:这也是RDB特有的语言,而在OO的世界里,查找一个对象的工作,从来没有被规范过。
 
目前就先想到这些,可能还需要再补充。
 
(未完待续)
分享到:
评论

相关推荐

    后关系型数据库管理系统

    后关系型数据库的主要特征是将多维处理技术和面向对象技术集成在一起,从而能够提供事务处理应用开发所需的高性能和灵活性,同时支持应用和数据的复杂性,并...从目前来看,后关系型数据库不太可能取代关系型数据库。

    山东大学 软件学院 非关系型数据库ppt.zip

    非关系型数据库(NoSQL)是一种不同于传统的关系型数据库的数据存储模型。在信息化时代,随着大数据、云计算和互联网应用的快速发展,NoSQL数据库因其高可扩展性、高性能、灵活的数据模型等特点,逐渐受到广泛的关注...

    计算机课程(数据库)-关系型数据库 vs. 非关系型数据库

    非关系型数据库的优势在于能轻松处理大规模数据,模式灵活,读写速度通常更快。但非关系型数据库往往不支持完整的ACID事务,工具和技术相对较少,数据一致性可能有限。 3. 适用场景 关系型数据库常用于需要高度一致...

    关系型数据库和非关系型数据库.pdf

    【关系型数据库】 关系型数据库是基于关系模型的数据存储方式,它的核心是二维表格,每个数据表由列和行组成,列代表属性,行代表记录。埃德加·科德在1970年提出的这一概念,经过40多年的发展,已经形成了包括...

    11.2.1 什么是非关系型数据库?.md

    11.2.1 什么是非关系型数据库?

    关系型数据库与NoSQL数据库_张华强.pdf

    关系型数据库从诞生到现在经过几十年的发展,已经变的比较成熟,目前市场上主流的数据库都为关系型数据库。 关系型数据库的优势: * 容易理解:关系模型中的二维表结构非常贴近逻辑世界,相对于网状、层次等其他...

    大数据与云原生(解决方案专场)——RadonDB:新一代分布式关系型数据库 共25页.pdf

    ### 大数据与云原生解决方案:RadonDB——新一代分布式关系型数据库 #### 引言 随着云计算和大数据技术的飞速发展,企业对于数据处理的需求也日益增长。传统的关系型数据库在处理大规模数据时逐渐显露出局限性,...

    关系型数据库+Mysql+查询用户连续登陆天数+数据统计

    关系型数据库+Mysql+查询用户连续登陆天数+数据统计 关系型数据库+Mysql+查询用户连续登陆天数+数据统计 关系型数据库+Mysql+查询用户连续登陆天数+数据统计 关系型数据库+Mysql+查询用户连续登陆天数+数据统计 关系...

    第1章-关系型数据库简介

    第1章-关系型数据库简介

    关系型数据库的(优化)工作原理

    首先,我们要理解关系型数据库的基础——SQL(结构化查询语言)。SQL是用于操作关系数据库的标准语言,包括数据查询、数据更新、数据插入和数据删除等操作。在Oracle和MySql中,SQL语句的执行涉及到解析、优化和执行...

    关系型数据库和非关系型数据库对比介绍

    关系型数据库和非关系型数据库对比介绍

    练就MySQL高手——创建自己的第一个数据库.pdf

    MySQL是世界上最流行的关系型数据库管理系统之一,尤其适合于中小型企业和个人网站的数据存储。在“练就MySQL高手——创建自己的第一个数据库”中,我们将探讨如何开始使用MySQL,包括连接到服务器,创建、删除...

    C# .NET MVC ——Easyui+PetaPoco+sqlserver数据库——理财后台管理系统

    SQL Server是Microsoft公司推出的关系型数据库管理系统,广泛应用于企业级应用。其稳定性和高性能使得它成为存储理财后台管理系统的理想选择。通过PetaPoco,我们可以轻松地与SQL Server进行交互,执行复杂的查询和...

    基于PHP+MYSQL特色资源数据库研究与实现——以新余学院胡述兆文库数据库建设为例.pdf

    MYSQL作为一款成熟的关系型数据库管理系统,不仅提供强大的数据存储能力,还支持复杂的数据操作和查询。结合B/S模式的架构设计,用户可通过浏览器轻松访问数据库,满足了现代图书馆服务对便捷性的需求。 在数据库的...

    java数据库课程设计——图书馆管理系统源码,数据库备份,文档

    此系统可能采用了关系型数据库,如MySQL或Oracle,来存储图书信息、用户信息以及借阅记录等数据。数据库设计是关键,需要合理规划表结构,确保数据的一致性和完整性。例如,可能有图书表(包含书名、作者、出版社等...

    关系型云数据库应用白皮书

    其中关系型数据库是发展历程最长、应用最广泛的一类数据库管理软件,金融、电信等关键行业的核心业务系统均由关系型数据库支撑。 当前信息系统云化的步伐不断加快,关系型数据库技术也适应云计算的发展,逐步适配...

    mysql数据库详解.pdf

    数据库基于存储介质的不同进行了分类:关系型数据库(SQL)和非关系型数据库 (NoSQL:Not Only SQL)。 3、不同的数据库阵营中的产品有哪些? 大型:Oracle、DB2 中型:SQL-SERVER、MySQl 小型:access等 关系型...

    ASP.NET源码——南充人NET3.5 LINQ操作数据库实例.zip

    LINQ是.NET Framework 3.5引入的一项创新技术,它允许开发者使用一致的、类型安全的查询语法来操作各种数据源,包括关系数据库、XML文档、集合等。在ASP.NET中,LINQ与ADO.NET结合,极大地简化了数据库访问,提高了...

Global site tag (gtag.js) - Google Analytics