数据访问接口体系及数据对
数据访问接口体系及数据对象模型探讨(beat 1.0)
[email protected]
[email protected]
个人文集:
http://www.csdn.net/develop/author/netauthor/redstar81/
文章索引:
预:概念
序言:回首历史
一、 数据访问接口体系探讨
1. open client/open server
2. odbc(open database connectivity : 开放数据库连接)
3. ole db(object link and embedding database)
4. jdbc(java database connectivity : java数据库连接)
二、数据对象模型探讨(待续)
附录:美国著名数据库产品记事(参考)
研究数据库理论是为了设计更好的数据库系统。弄清数据访问接口体系及数据对象模型的发展、特征、相互之间的区别有助于开发更好的数据应用系统。
预:概念
数据库: 满足一个或多个组织、多个用户的信息要求的集成数据存储库.(定义了一组数据库要素:集成、共享、存储、信息)
数据库管理系统(dbms): 目标为处理所有用户对数据库存取要求的软件系统(它有两个主要的部分:数据库控制子系统和数据库存储子系统)
数据库系统: 以数据库应用为基础的软硬件系统的总和.(主要包含数据库、dbms、<非dbms软件>::、<集成数据库管理软件>::)
<非dbms软件>:: = 与dbms协同工作但是不属于dbms的功能部件.主要包含:操作系统、程序设计语言及相应的编译系统、数据通信系统、各种应用程序(与数据库管理系 统交互以服务于用户).
<集成数据管理软件>:: = 辅助和配合dbms工作的功能部件,一般不独立使用,总是与dbms集成, 在dbms的基础上开发的.譬如自动报表生成程序、数据库应用开发 程序、 数据库测试程序、数据库辅助设 计程序、数据转换设施等等.
分布式数据库系统: 数据库被划分成逻辑关联而物理地分散于不同场地的数据子集,并提供了充分操作这些子集 的数据存取能力的数据库系统.
序言:回首历史
80年代初, vulcan(dbaseii的前身)成为第一个在微机上实现的数据库系统而且广为流行.随后的著名的xbase家族(dbase系列、foxbase系列、低版本foxpro等) 、paradox、clipper从某种意义上说属于低级的数据库系统(从语义上讲,此处用数据库系统来表达是合适的.然而从性能、系统的设计来讲用数据库管理系统来描述更合适.那时的数据库管理系统更像是为管理大量信息而研发的"应用级"程序).而oracle、db2等此时尚没有微机版本.这时的系统远不及现代数据库系统的复杂.当然这是由系统的目标或者说是用户需求决定的.用户对数据库的操作基于xbase及其它一些非标准的各数据库系统自己的数据操纵语言(最初虽然它们亦拥有函数库等程序设计语言的特征但它们更像操作命令.直到这些系统提供了编译或伪编译能力<注1::>才真正可看作一种语言).
注1::= 从下面的记事表来看,关于编译的问题在各数据库系统中有不同的表现,关键在于它们基于的数据库交互语言:是否为sql.另一方面在于数据库系统的定位.个人认为:xbase、paradox、clipper等系列产品一定程度上实现了分布式但一直都未实现c/s结构而更多的局限于本地数据库的使用与oracle、sybase sql server、sybase system、db2、informix等数据库系统的定位是不同的.它们秉承了先前的设计理念,还有更重要的一点是:c/s结构的出现自然导致了较现代(当然目前的商业应用开发模式应说是多层分布式)的数据系统开发模式(以当时客户端开发工具powerbuilder、visual basic、dephil及辅助设计软件产品的出现为见证)同时dbms的功能明细而以前的数据库系统的外围软件产品可以在客户端工作甚至集成于客户端开发工具之中.以前的终端-服务器(host系统)数据库系统结束.可以"篡夺"数据服务器系统诸多能力的客户端出现.这当中数据系统应用程序的出现应是关键,它使数据的使用、表现、甚至是数据库的管理等起了巨大的变化.而xbase、paradox等系统自从实现不同程度的编译能力更看出它们集本地数据库管理、设计和数据系统应用程序开发等于一身,它们作为dbms体现的功能并不同实现c/s体系结构的dbms.还是那句话秉承了先前的设计理念.
虽然我们探讨的数据访问接口体系应该是针对c/s结构和更先进的数据库系统体系结构,然而我先前已经提到这篇文章的最终目标是帮助程序设计者设计更好的数据应用系统.这样我们有必要关注一下早先的数据库管理系统与其它的语言(汇编,c,cobol,pascal,fortran等)交互的情况.前前后后(92年以前,详见下面<<美国著名数据库产品记事>>),各著名数据库系统产品根据自己的结构体系和定位都实现了sql(当中的实现情况自然各有不同.xbase家族、parodox等增加了sql交互界面且实现了xbase语言和sql的混合使用.而oracle、sybase、informix等系统把sql根据各自系统的需要扩展形成了自己的数据操纵语言)和编译或伪编译或预编译能力或调用库.上面所述的两种能力的实现对数据库系统和应用程序的交互起了很大的影响.但那时的交互不同于现在程序设计者意识中应用程序与数据库系统的关系.总体来说那时数据库系统与应用程序交互可能有几种情况:一,数据库管理系统提供访问应用程序的途径以增强数据库管理系统的功能. 二,应用程序利用格式转化后的数据库文件.当然也可以通过其它的方法访问未经转化的数据库文件. 三,数据操纵语言嵌入其它的程序设计语言(称为宿主语言).其实早在1969年实现的ibm-ims数据库系统(数据操纵语言为dl/i)中已经具有这种功能.自然系统需要提供预编译接口. 四,在应用程序中使用数据库系统提供的调用库(如oracle的oci library,值得一提的是oci library在最新的接口体系中还使用着).再从现在数据系统程序设计者的角度看,在你的程序中可以利用的无非是数据库文件.在利用数据库文件的两条途径中,一条是不需要你掌握数据库文件格式结构的.自然,上面列出的四种情况是从不同的数据库系统归纳出来的.
对于数据库系统本身特别对于数据系统程序的设计还对于很多方面,c/s结构提出的意义是影响重大的.因为它使以后的"世界"不同了.
总体来说,c/s结构出现之前,数据应用相关的几乎全部任务由驻有数据库管理系统的主机完成,早期的数据表现基本也是在主机上完成.而且数据库系统与外界的交互很有限.虽然,分布式、host系统及其它的一些技术对上述情况有所改变.
早期,c/s结构的核心思想是任务分解,体现客户端请求和服务器应答的计算模式.它具有多种模式:sc/ss、mc/ss、sc/ms、l c/s,而基本的结构又可构成复杂的结构.
下面图示c/s的基本结构.自然c/s结构中,客户端与服务器交互,必须起桥梁作用的中间件(数据访问接口).而它正是我们的主题-数据访问接口(数据对象模型的概念此时尚未出现).这里有关中间件和数据服务器体系结构的知识我们不作扩展探讨.我们把重点放在为c/s结构数据库系统服务的(专用)数据库中间件上.
从图中你可以看到两种:microsoft的odbc、ibm的drda.其实著名的还有sybase的open client/open server 数据库专用中间件.随着时间的推移到目前为止常用的还有sun的
jdbc、microsoft的ole-db.下面我们就几种数据访问接口体系及相应体系下的数据对象模型(当然有的体系在特定时期尚无对象模型)作探讨.
待续:
一、 数据访问接口体系探讨
1. open client/open server
2. odbc(open database connectivity : 开放数据库连接)
3. ole db(object link and embedding database)
4. jdbc(java database connectivity : java数据库连接)
二、数据对象模型探讨(待续)
附录:美国著名数据库产品记事(参考)