购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 数据库管理系统基础

数据库管理系统(DBMS)作为一种运行与管理数据库的软件系统,它与计算机操作系统一样,都属于核心基础系统软件。目前,IT领域国内外已有400多种数据库管理系统的DBMS软件,既包括商业DBMS软件,也包括开源DBMS软件,这些DBMS软件在信息系统中得到广泛应用。学习者首先需要了解DBMS软件基本功能、DBMS基本工作原理、DBMS软件分类,以及主流DBMS软件特点,在此基础上学习理解DBMS技术实现原理,才能掌握数据库系统开发技术。

1.4.1 数据库管理系统软件基本功能

DBMS是实现数据库运行与管理的系统软件,它不但提供了数据库执行引擎,还提供了不少数据库管理工具。作为数据库服务器的系统软件,DBMS软件均具有数据库定义、数据操作访问、数据库运行控制、数据库组织与存储、数据库运维、数据库通信、数据库安全等大类功能,其基本功能结构如图1-10所示。

DBMS软件在数据库应用系统中承担数据库操作访问与管理控制工作,它具有如下基本功能。

1)数据库定义:DBMS软件为DBA用户提供数据库及其对象(表、索引、视图、约束、主键、外键等)的创建与管理功能。DBA用户可以在DBMS服务器中执行数据定义语言语句,从而完成各种数据库对象的创建、修改、删除等功能,也可通过DBMS管理工具管理数据库对象。

图1-10 DBMS软件的基本功能结构

2)数据操作访问:应用程序通过提交数据操作语句到DBMS服务器,DBMS服务器执行该语句,实现数据库中数据的插入、删除、更新、查询等操作处理。

3)数据库运行控制:DBMS软件为DBA用户提供数据库实例的运行控制管理功能,主要包括数据库实例的运行启停控制、多用户环境下数据库事务并发控制、数据库事务管理、数据库访问操作完整性检查、数据库系统运行日志管理等功能。使用这些DBMS管理功能,可以实现数据库系统运行管控,确保数据库系统的正常运行。

4)数据库组织与存储:DBMS软件为DBA用户提供在数据库中进行数据组织与存储管理的功能,主要包括数据库文件存储、数据分区组织、数据索引组织、数据存取管理、缓冲区管理、存取路径管理等功能。数据组织与存储管理功能的目标就是实现合理的存储空间利用率和数据存取效率。

5)数据库运维:DBMS软件为DBA用户提供数据库运行维护管理功能,主要包括数据载入、数据转换、数据导出、数据库重构、数据库性能监控、数据库性能优化等管理功能。DBA用户使用这些管理功能可保障数据库系统稳定可靠运行。

6)数据库通信:DBMS软件为应用程序提供数据库通信管理功能,主要包括客户端程序与数据库服务器连接、不同数据库节点之间数据复制与数据同步等管理功能。应用程序使用这些管理功能实现在远程数据库服务器中进行存取访问,以及保障分布式数据库节点之间的数据一致性。

7)数据库安全:数据库中的数据是最重要的信息资产,确保数据库的数据安全至关重要。DBMS软件为数据库安全保护提供了用户身份认证、存取权限控制、数据加密存储、数据库备份与恢复等管理功能。

1.4.2 数据库管理系统软件分类

DBMS软件是计算机软件领域中发展较快的一类系统基础软件。自从20世纪60年代数据库管理系统软件诞生以来,业界先后推出了很多DBMS软件。DBMS软件仍在多个维度上不断发展,如从关系数据库DBMS到对象-关系数据库DBMS,从支持单一数据模型的DBMS到支持多种数据模型的DBMS,从集中式DBMS到分布式DBMS,从桌面级DBMS到企业级DBMS,从通用DBMS到专业领域DBMS,从商业DBMS到开源DBMS。

(1)不同开发技术的DBMS

DBMS软件按照不同开发技术,可分为关系DBMS(Relational DBMS,RDBMS)、面向对象数据库DBMS(Object Oriented DBMS, OODBMS)、对象-关系DBMS(Object Oriented Relational DBMS, OORDBMS)等。

(2)不同数据模型的DBMS

除使用最多的关系数据库外,还有大量NoSQL数据库,它们采用不同的数据模型来实现数据库。NoSQL数据库主要涉及面向对象(Object Oriented)数据模型DBMS、键值存储(Key-value Stores)数据模型DBMS、列存储(Column Stores)数据模型DBMS、文档存储(Document Stores)数据模型DBMS、事件存储(Event Stores)数据模型DBMS、内容存储(Content Stores)数据模型DBMS、图(Graph)数据模型DBMS、时间序列(Time Series)数据模型DBMS、资源描述框架存储(RDF Stores)数据模型DBMS、搜索引擎(Search Engines)数据模型DBMS、多值(Multivalue)数据模型DBMS、本地XML(Native XML)数据模型DBMS、导航(Navigational)数据模型DBMS等。

(3)不同专业领域的DBMS

与通用领域一样,在专业领域中也有不少DBMS软件,如地理空间DBMS、多媒体DBMS、移动计算DBMS、并行计算DBMS、嵌入式DBMS等。

(4)不同处理规模的DBMS

DBMS软件按照数据库处理能力与存储规模不同,可分为终端级DBMS、桌面级DBMS、部门级DBMS、企业级DBMS。

(5)不同部署方式的DBMS

DBMS软件按照数据库不同部署方式,可分为单机DBMS、集中式DBMS、分布式DBMS、云服务DBMS。

(6)不同许可类型的DBMS

DBMS软件按照不同许可类型,可分为商业DBMS、有限开源DBMS、完全开源DBMS。

1.4.3 开源数据库管理系统软件

在数据库领域,开源DBMS软件越来越受到广大用户的欢迎。从2024年2月DB-Engines机构发布的各类DBMS流行程度统计排名来看,排名前10位的DBMS软件有Oracle Database、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB、Redis、ElasticSearch、IBM DB2、Snowflake、SQLite,其中开源DBMS占7成。在417种各类DBMS中,开源DBMS占226种,商业DBMS占191种。所有开源DBMS流行程度评分为50.3%,而所有商业DBMS流行程度评分为49.7%。这说明开源DBMS的受欢迎程度已经全面超越了商业DBMS。了解与掌握开源DBMS软件是十分必要的。

1.开源DBMS软件

开源DBMS软件是一类可免费使用或付少量费用即可获得许可的DBMS软件,其源码开放、可修改、可升级、可重新发布,但需遵从一定的开源许可限制。

2.开源DBMS为什么受到不少用户偏爱

DBMS软件是数据库应用系统最重要的组成部分,商业DBMS软件的购置成本和技术服务成本都是一笔不小的开销。开源DBMS软件作为一种可免费使用的DBMS软件,它们在计算机信息系统应用中,可以帮用户节省大量费用。目前,开源DBMS软件大都具有典型DBMS软件功能,可满足一般的数据库应用需求。对用户来说,使用开源DBMS是一种不错的选择。此外,数据库软件厂商基于开源DBMS推出自己的数据库软件产品,远比完全自主研发数据库软件产品容易很多。因此,开源DBMS软件受到用户和软件厂商的广泛欢迎。

3.开源DBMS的许可协议类型

DBMS软件的开源许可协议主要有两类:一类是以GPL、MPL、LGPL协议为代表的Copyleft License,另一类是以BSD、MIT、Apache、木兰开源协议为代表的Permissive License。Copyleft License要求用户严格遵循开源许可协议约束,不允许用户将修改后的DBMS代码闭源,其中GPL更是做了进一步的要求,不允许修改后的软件在发布时更改开源协议内容。Permissive License则允许用户修改开源代码后闭源,因此,这类开源DBMS较受软件公司青睐。

近年来,由于云数据库托管服务的扩张,越来越多的数据库用户开始流向了云服务商,使得开源社区活跃度下降,开源软件开发者获利空间被进一步挤压,这给开源生态带来了较大挑战。对此,不少开源DBMS提供商(如MongoDB、CockroachDB、Redis Labs、Elastic、Confluent和TimescaleDB等)都采取了相应的措施,如对其研发的DBMS软件提出了更严格的许可协议,采用软件代码开源、技术服务收费模式。一些开源DBMS提供商提供社区版和企业版的DBMS软件。社区版DBMS软件仅提供基本功能,可以免费使用,而企业版DBMS软件提供完整功能,其中高级功能模块需要购买许可。

4.开源DBMS与商业DBMS比较

开源DBMS与商业DBMS的区别体现在以下几个方面:①开源DBMS软件的源码是公开的,用户可以免费使用,或付少量许可费用便可使用开源DBMS软件;商业DBMS软件的源码不对用户公开,并且用户只有购买许可才能使用该软件。②开源DBMS提供商仅为用户提供有限的技术支持服务;商业DBMS提供商则为用户提供全面的技术支持服务。③开源DBMS软件由用户自己进行软件安装与升级处理;商业DBMS软件由提供商负责软件安装与升级处理。④开源DBMS软件通常仅提供基本功能服务;商业DBMS软件则提供更丰富的功能服务。

因此,开源DBMS与商业DBMS在数据库应用中各有优劣。开源DBMS没有昂贵的软件许可费用和技术服务费用,但在易用性、稳定性、配套能力、服务能力、版本更新方面存在一定的局限,此外还有部署、迁移等额外成本。商业DBMS通常需要用户付出昂贵的软件许可费用和技术服务费用,但它在易用性、稳定性、配套能力、服务能力、版本更新方面具有明显优势。因此,在数据库应用系统开发中,究竟选择开源DBMS软件,还是选择商业DBMS,取决于应用系统的特性要求和用户需求。

5.主流开源DBMS软件

为了使学习者了解主流的开源DBMS软件,下面介绍两种主流开源DBMS软件。

(1)MySQL

MySQL是最流行的开源关系DBMS之一。它最早由瑞典MySQL AB公司开发研制,后被Sun公司收购,目前是Oracle公司旗下的开源软件。MySQL数据库软件具有体积小、速度快、可靠性好、适应性强、软件免费使用、源代码开放等特点。MySQL在互联网应用的数据库管理中得到广泛使用,同时也被许多业务处理要求不高的中小规模信息系统采用。

MySQL是一个支持多用户、多线程的关系型DBMS。该DBMS软件采用标准SQL语言对数据库进行操作。同时,MySQL采用客户/服务器架构实现,它由一个服务器守护程序mysqld和若干不同的服务程序组成。通过使用复制、集群技术方案,MySQL还可支持较大规模的数据库管理。

MySQL的主要技术特点如下:

1)使用C和C++代码编写,支持多种编译器处理程序,保证了源代码的可移植性。

2)支持FreeBSD、Linux、macOS、Solaris、Windows等多种操作系统。

3)为多种编程语言提供了API。其中包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和TCL等。

4)支持多线程运行,充分利用多核CPU资源。

5)提供优化SQL查询算法,可有效地提高查询速度。

6)为应用程序提供ODBC和JDBC等数据库标准接口连接途径。

7)为用户提供多种数据库管理与优化工具。

8)支持中等规模的数据库管理能力,可以处理拥有上千万条记录的大型数据表。

9)支持GPL协议,用户可以利用源码来开发自己的MySQL系统。

(2)PostgreSQL

PostgreSQL是一种技术领先的开源对象-关系DBMS,它不但具有关系数据库的功能特性,而且支持面向对象数据管理。PostgreSQL是在加利福尼亚大学伯克利分校计算机系研制的Postgres数据库软件基础上开源演化而来的,得到了开源组织的不断升级完善,并按照宽松的木兰许可发行软件。PostgreSQL作为一个功能强大、技术领先的对象-关系DBMS,提供了很多企业级DBMS具有的高级功能特性,拥有良好的性能和很好的可扩展性。它是开源类型的企业级DBMS软件,支持许多大型信息系统的数据库应用。

PostgreSQL的主要技术特点如下:

1)对SQL标准高度兼容,除支持SQL常规标准数据类型外,还支持数组、几何、枚举、组合、XML、JSON、UUID、对象标识、网络地址、大对象等复杂数据类型,并允许用户自定义数据类型。

2)支持时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询、可更新视图、多版本并行控制(MVCC)、数据完整性检查等高级特性。

3)采用经典的客户/服务器架构。支持进程运行,具有较高系统运行稳定性。

4)支持用较多高级编程语言实现数据库应用开发,如C/C++、Java、.Net、Perl、Python、Ruby、TCL等,其中Java、Perl、Python、Ruby、TCL、C/C++和自带的PL/pgSQL还支持数据库函数、存储过程、触发器编程。

5)支持广泛使用的操作系统平台,如FreeBSD、HP-UX、Linux、NetBSD、OpenBSD、macOS X、Solaris、UNIX、Windows等。

6)支持大规模数据存储、大用户量并发访问,具有企业级DBMS的高伸缩性、高稳定性。

7)具有继承机制,可以创建对象数据库表,并从“父表”继承其特征。

(3)MySQL与PostgreSQL对比

MySQL和PostgreSQL都是业界最受欢迎的开源DBMS,它们各有优势与局限。哪个DBMS软件更好?哪个DBMS软件更适合具体应用系统?这取决于用户对它们的全面了解。下面从多个方面对MySQL和PostgreSQL进行比较,见表1-1。

表1-1 MySQL与PostgreSQL比较

(续)

从以上技术特性对比来看,PostgreSQL适合系统稳定性要求较高、复杂事务处理、数据访问负载较大的企业级应用,如金融、电信、ERP、CRM等。此外,PostgreSQL具有JSON、JSONB、hstore等数据格式,适合非结构化数据管理和一些大数据分析应用。MySQL则适合简单事务处理、数据可靠性要求较低的互联网应用场景,如中小型Web信息系统、社交类系统等。不过,用户对于MySQL和PostgreSQL的选择,通常取决于应用的数据处理需求和用户对DBMS的熟练程度。

课堂讨论:本节重点与难点知识问题

1)按数据模型分类,主要有哪些类型的DBMS?

2)桌面级DBMS与企业级DBMS有哪些区别?

3)集中式DBMS与分布式DBMS有何区别?

4)关系DBMS与对象-关系DBMS有何异同?

5)PostgreSQL与MySQL比较,具有哪些优势?

6)目前有哪些国产DBMS软件?如何发展国产DBMS软件? dQySggeBUXiLgMi0UB1zvsL/CGuOlSa/R9yeAXkywau2VyApkwzQT0/d2NWPMzL8

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开