数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL实战新手入门:关系型数据库管理系统


发布日期:2021年12月24日
 
SQL实战新手入门:关系型数据库管理系统

关系型数据库管理系统

本书是讲述SQL的它是一种关系型数据库或者关系型数据库管理系统(RDBMS)的语言自从Codd博士在世纪年代奠定关系型数据库的理论基础以来已经产生了相当多的关系型数据库实现一些新的关系型数据库实现也不断出现

很多人将DB视为所有数据库的鼻祖IBM的研究员Edgar Frank Codd博士在年的一份IBM的研究报告中发表他的论文Derivability Redundancy and Consistency of Relations Stored inLarge Data Banks给这种数据库理论定义了一个非常恰当的术语关系型关系型数据库被其他两种技术竞争一种是Honeywell Information Systems在年销售的Multics RelationalData Store另一种是密歇根大学从年起作为实验性设计的Micro DBMS(它开创了Codd博士两年之后提出的规范化理论)Micro DBMS的最后一个产品已经于年退役这两种技术演变成了年发布的Oracle V商业数据库在通往RDBMS的道路上包含了很多其他公司的产品所树立的里程碑(当然偶尔也有墓碑)这些产品包括IBM PRTV(IBM SQL/DS(QBE(Informix(Sybase(Teradata(Ingres一个给其他很多成功的系统带来灵感的开源项目例如PostgreSQL(Nonstop SQL()和MicrosoftSQL Server()等这些系统使用了原始SQL的不同方言SEQUELQUELInformixSQL等直到人们才第一次试图为SQL语言制定标准毫无疑问各个厂商关于SQL语言的战争仍在继续

当前的RDBMS市场已经被几个重量级的专有关系型数据库瓜分Oracle(%)IBM(%)和Microsoft(%)更小的专有数据库系统Teradata和Sybase每种不到%的市场份额其他数据库厂商包括开源数据库大约占有%的市场份额

对于大型企业来说选择一个数据库产品作为应用程序的基础并不是一个简单的任务这不仅仅是因为数据库系统软件需要花费好几万美元的许可证费用几十万美金的维护和技术支持费而且在于与其他软件硬件和人力资源投资相比数据库软件的投资还是一个决定整个企业架构的关键要素尽管近年来从一个RDBMS迁移到另一个RDBMS变得更加容易但考虑选择哪一种数据库依然会给CFO带来噩梦

IBM DB LUW

从带有MVS系列操作系统的大型机到z/OS以及后来的UNIX和Windows系统IBM在RDBMS领域都是一个长期的领跑者IBM数据库的当前版本是IBM DB LUW(LinuxUNIX和Windows)

IBM DB 在事务处理速度上保持了绝对领先的记录(更多信息请参见第章)它具有多个不同的版本从Advanced Server Enterprise版本到免费的DB ExpressC版本(尽管功能上有限制)免费的DB ExpressC版本可用于运行本书中的示例

直到DB版本依然遵循ANSI/ISO SQL Entry标准(请参考本章后面的内容)并支持由其他标准化组织制定的一些高级功能例如Open Geospatial Consortium(开放地理信息联盟)JDBCX/Open XA它还包含了最新SQL:标准的部分功能除了自己内置的过程化扩展语言SQL PL之外它还支持使用Oracle的PL/SQL语言Java语言甚至Microsoft的NET家族的语言来创建存储过程(更多内容请参见第章)

Oracle

Oracle数据库可以追溯到年第一次发布的Oracle V开始时用于VAX/VMS系统并于年支持UNIX系统经过多年发展对于SQL标准定义的绝大多数功能Oracle数据库都添加了相应的支持在最新发布的Oracle g版本中功能支持达到了极致它声称遵循最新SQL:标准的很多功能

在高性能事务处理的标桿上Oracle占据了第二名的位置它是企业生态系统的核心Oracle是一个安全的健壮的可伸缩的高性能的数据库系统它统治UNIX市场长达数十年除了对SQL标准的支持之外Oracle还提供了一种内置的过程化语言PL/SQL(关于过程化扩展的更多内容请参见第章)另外它还支持通用的程序设计语言例如Java

在写作本书之时Oracle的最新版本是Oracle g只有Oracle g有免费的速成版该版本在数据存储的容量和RDBMS能够利用的处理器(CPU)数量上存在一定的限制速成版完全支持本书所讨论的所有SQL功能

Microsoft SQL Server

SQL Server来源于MicrosoftAshtonTate和Sybase合作的结果开始的目标是改写已有的仅适用于UNIX的Sybase SQL Server数据库使之适用于新的IBM操作系统OS/AshtonTate随后退出了这一合作IBM OS/操作系统也逐渐被人淡忘Microsoft和Sybase为了分享成果开始小心地避免触犯彼此Microsoft致力于发展并支持Windows和OS/系统上的SQL Server而Sybase则致力于UNIX平台尽管在SQL Server的核心技术上Microsoft依然采用了相当多的Sybase技术但双方的合作关系于年正式结束Microsoft于年发布了Microsoft SQLServer 它消除了Sybase余留的痕迹为世界(Windows系统的世界)带来了一个完全崭新的RDBMS系统时至今日Microsoft占据了RDBMS大约%的市场份额而在Windows系统上它占据了至高无上的位置

在写作本书之时最新版本是Microsoft SQL Server Release Microsoft还提供了一个免费但有限制的Express版本它支持本书所介绍的全部SQL功能

Microsoft Access

Microsoft Access也被称为Microsoft Office Access它是一个桌面型关系数据库(相对来说是关系型的)Microsoft Access的设计目标是成为一个集成的解决方案结合关系型数据库引擎的要素和应用程序开发的基础结构(配套有内置的程序设计语言和程序设计模型)并作为一个报表平台与本书中讨论的其他RDBMS不同的是Microsoft Access是一个基于文件的数据库因此它在性能和可伸缩性方面都存在固有的局限例如虽然最新版本的Access理论上允许最多个并发用户但在实践中超过多个用户就会减慢Access的性能Access仅支持SQL标准的一个子集它提供了许多仅在Access环境中有效的功能

Access提供的功能之一就是从远程数据库链接表的能力该功能使Access可以作为应用程序

的前端访问任何与ODBC/OLEDB兼容的数据库

PostgreSQL

PostgreSQL是从美国加州伯克利大学的Michael Stonebraker所领导的一个项目演变而来的Michael Stonebraker是关系型数据库理论的先驱在最初的Ingres项目以及其继任者PostgreSQL中采用的那些原则也以各种方式被其他RDBMS产品采用例如SybaseInformixEnterpriseDB和Greenplum

PostgreSQL的第一个版本发布于之后第二年以版本的名义发布并保留了一个由一组专门的开发人员维护的开源项目PostgreSQL具有很多个商业版本最着名的是EnterpriseDB一个私人公司为该产品提供企业支持(以及大量专有的管理工具)在一些苛刻的企业级应用环境中很多高端客户(例如Sony和Vonage)都采用了开源的RDBMS这充分证明了EnterpriseDB的性能

在对SQL标准的支持方面PostgreSQL可以说是最接近SQL标准的另外它还提供了很多在其他数据库中所没有的功能与它的开源伙伴(例如MySQL)不同PostgreSQL从一开始就提供了参照完整性和事务支持PostgreSQL内置了对PL/pgSQL过程化扩展语言的支持另外实际上还具有适配其他任何语言来实现过程化扩展的功能

MySQL

MySQL最先是由Michael Widenius和David Axmark于年开发的并于年发布了第一个版本MySQL最初定位为一个轻量级的快速数据库用于作为数据驱动型网站的后台数据库尽管MySQL缺乏更加成熟的RDBMS产品所具有的许多功能但在提供信息服务的速度上非常快对于很多场合来说都已经足够好(为了达到真正的快速MySQL避开了参照完整性约束和事务支持更多内容请参见第章和第章)另外MySQL有着无法抗拒的价格它是免费的因此在中小规模的用户群中MySQL成为最流行的关系型数据库在数据库产品的市场上很多其他的免费产品在功能上都有所缺乏或者带有近乎商业炒作的宣传数据库产品的巨人OracleIBMMicrosoft和Sybase在那时也都没有提供各自RDBMS产品的免费速成版Sun Microsystems公司收购了MySQL随后Sun公司又被Oracle收购

目前Oracle提供了一个带有商业支持的MySQL版本和一个Community Edition版本伴随着这一收购出现了大量分支版本例如MariaDB和 Percona Server它们在通用公共许可证(General PublicLicenseGPL)下继续保持免费状态GPL是一种限制最小的开源许可证

MySQL的最新版本是MySQL 也已经指日可待它是多平台的(Linux/UNIX/Windows)并且支持SQL:的绝大多数功能其中一些功能依赖于选定的配置选项(例如存储引擎)

存储引擎选项是MySQL独一无二的特性它允许采用不同的方式处理不同的表类型每一种引擎都有独特的功能和一定的限制(例如事务支持聚集索引存储限制等)可以采用不同的存储引擎选项来创建MySQL数据库中的表默认使用的是MyISAM引擎

HSQLDB和OpenOffice BASE

超结构化查询语言数据库(Hyper Structured Query Language DatabaseHSQLDB)是一个用Java程序设计语言实现的关系型数据库管理系统它是伯克利软件发行(BSD)许可证(这个许可证相当宽松)下的一个开源数据库

HSQLDB是OpenOfficeorg BASE自带的默认RDBMS引擎OpenOfficeorg BASE是一个桌面型数据库被定位于和Microsoft Access进行市场竞争OpenOfficeorg BASE也是一个关系型数据库它健壮功能丰富且相当快速支持多种平台包括Linux各种版本的UNIX和Microsoft WindowsOpenOfficeorg BASE声称几乎完全遵循SQL:标准该标准包含了本书所讨论的绝大多数SQL子集

改写过的HSQLDB可以作为OpenOfficeorg套件组件BADE的一个嵌入的后端并从版本开始成为OpenOfficeorg套件中的一部分与Microsoft Access类似假如有适当的驱动程序的话OpenOffice BASE可以连接到多种不同的RDBMS在OpenOffice BASE产品中已经包含了大量可用的Java Database Connectivity(JDBC)和ODBC(Open Database Connectivity)驱动程序

随着Oracle收购了OpenOffice而其在Oracle的资助下作为开源项目的状态并不明确OpenOfficeorg社区决定启动一个名为LibreOffice的新项目意图在原来的BSD许可证的授权下将LibreOffice作为一个免费软件实现OpenOffice的所有功能

关系型数据库并不是数据库领域中唯一的主角一些似乎已经被关系型数据库理论打败的旧技术在更快和更便宜的硬件以及软件创新的帮助下卷土重来对更高性能和更容易创建应用程序的需求催生了对列式数据库(columnar database)和面向对象数据库使将所有数据放在一个桶中方法可行的框架特定领域扩展(例如测地数据管理或多媒体)以及各种数据访问机制的研究章将讨论这些话题

返回目录SQL实战新手入门

编辑推荐

Oracle索引技术

高性能MySQL

数据仓库与数据挖掘培训视频教程

上一篇:SQL实战新手入门:记录数据

下一篇:SQL实战新手入门:SQL简介