数据库技术研究和管理的对象是数据。数据库技术通过对数据进行统一的组织和管理,按照指定的结构建立相应的数据库,利用相关理论和方法实现对数据库中数据的处理、分析和理解。 数据库系统 (Database System,DBS)是指采用数据库技术有组织地、动态地存储大量关联数据,由方便多用户(或应用程序)访问的计算机软硬件资源组成的系统。如图3.1所示,数据库系统由数据库(DB)、数据库管理系统(DBMS)、计算机系统(包括应用程序、OS等)和相关人员(包括DBA、应用程序开发人员以及最终用户等)组成。
图3.1 数据库系统的组成
数据库 (Database,DB)是长期存储在计算机中按照一定结构组织在一起的、可共享的、相互关联的数据集合,是数据库系统的基础。
数据库系统的软件包括操作系统(Operating System,OS)、数据库管理系统(Database Management System,DBMS)和各种应用程序等。其中, DBMS 是数据库系统的核心,它由一系列帮助用户创建和管理数据库的应用程序组成。DBMS位于用户/应用程序和操作系统之间,用于建立、使用和维护数据库,并对数据库进行统一的管理和控制,以保证数据的安全性和完整性。DBMS提供了良好的界面接口,供用户访问数据库中的数据,方便地定义和操纵数据,以及进行多用户下的并发控制和数据库恢复。通过DBMS,多个应用程序和用户可用不同的方法同时或在不同时刻建立、修改和查询数据库。
1.DBMS的功能
DBMS是由众多程序模块组成的大型软件系统,由软件厂家提供。不同的DBMS产品虽然软硬件基础有所差异,大型系统功能较强而小型系统功能较弱,但基本具备以下功能:
(1)数据定义
DBMS提供了数据定义语言(Data Definition Language,DDL)。用它书写的数据库的逻辑结构、完整性约束和物理存储结构被保存在内部的数据字典(Data Dictionary,DD)中,作为数据库各种数据操作(如查找、修改、插入和删除等)和数据库维护管理的依据。
(2)数据操纵
DBMS提供了数据操纵语言(Data Manipulation Language,DML),用户可使用DML实现对数据的查询、修改、插入和删除。
(3)数据库运行管理
在数据库运行时DBMS对所有操作实施管理和监控,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复等。一方面,DBMS要保证用户事务的正常运行;另一方面,DBMS要保证数据库的安全性和数据的完整性。这些功能由DBMS提供的数据控制语言(Data Control Language,DCL)来实现。
(4)数据组织、存储与管理
DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法来提高存取效率。
(5)数据库的建立与维护
DBMS提供了数据库初始数据的输入、转换程序,以及为DBA提供日常维护的软件工具(包括工作日志、数据库备份、数据库重组以及性能监控等工具)。
(6)通信
DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。网络环境下的数据库系统,DBMS还应该包括与网络中其他软件系统的通信功能以及数据库之间的互操作功能。
2.DBMS的层次结构
根据处理对象的不同,DBMS的层次结构由高级到低级可分为应用层、语言翻译处理层、数据存取层和数据存储层(见图3.2)。
图3.2 DBMS的层次结构
(1)应用层
应用层是DBMS与终端用户和应用程序的界面层,处理的对象包括各种各样的数据库应用,如一些应用程序、终端用户通过应用接口发来的事务请求等。
(2)语言翻译处理层
语言翻译处理层处理的对象是数据库语言。该层对数据库语言的各类语句进行语法分析、视图转换、授权检查、完整性检查、查询优化等。通过调用下一层的基本模块,生成可执行代码,并运行代码,完成上一层的事务请求。
(3)数据存取层
数据存取层处理的对象是单个记录。它将上一层基于集合的操作转换为基于单记录的操作。这些操作包括扫描、排序,记录的查找、插入、修改、封锁等,并完成数据记录的存取、存取路径的维护、并发控制、事务管理等工作。
(4)数据存储层
数据存储层处理的对象是数据页和系统缓冲区,使用OS提供的基本存取方法执行数据物理文件的读写操作。
3.常见的DBMS及其特点
DBMS实际上是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。目前市场上应用最广泛的是RDBMS(关系数据库管理系统),商业化的代表产品有IBM DB2、Oracle、Microsoft SQL Server、Microsoft Access、Sybase、MySQL等,它们的特点和适用范围如下:
IBM DB2、Oracle一直是大型数据库应用领域的主流产品,价格较为昂贵,主要应用在银行、保险、电信等大型企业中,被称为企业级数据库。它们的优点是性能高、故障率低、扩展能力强。这些数据库一般安装在大型机或UNIX机器上。
Microsoft SQL Server、Microsoft Access都是微软公司推出的产品,一般只能安装在Windows操作系统上。其中,Microsoft SQL Server使用Transact-SQL语言完成数据操作。为打开市场,微软公司一直计划增强SQL Server对非Windows操作系统的支持。该产品具有开发、维护简单,价格低廉的优点,一般应用于对性能与故障率要求不高的组织、中小型企业中。Microsoft Access是集成在Microsoft Office里的在Windows环境下非常流行的桌面型DBMS。使用Microsoft Access无须编写任何代码,通过直观的可视化操作就可以完成大部分数据管理任务。它具有界面友好、易学易用、开发简单、接口灵活等优点。
Sybase首先提出Client/Server(简称C/S)数据库体系结构的思想,可在UNIX或Windows NT平台上C/S环境下运行。它介于大型与小型产品之间,可作为一个中间的可选方案。
MySQL数据库是Oracle公司的产品,采用双授权政策,分为社区版和商业版。它由于拥有体积小、速度快、总体拥有成本低、开放源码等优点而被互联网上许多中小型网站所采用。
上述产品都源自国外。我国自主研发的关系数据库基本发源于20世纪90年代,具有代表性的厂商有达梦、人大金仓、神州通用、南大通用等,这些数据库多应用于央企、政府部门、军事等领域。受限于产品技术创新、稳定性、性能等方面的不足,这些产品在商业市场上并没有产生很大的影响力。2020年,华为将其数据库产品openGauss正式开源。这是一款高性能、高安全、高可靠的企业级RDBMS,具有多核高性能、全链路安全、智能运维等企业级特性。
随着互联网Web 2.0的兴起,传统关系数据库在应对超大规模和高并发的社交网络数据处理时显得力不从心。在新的应用需求推动下,NoSQL诞生了。NoSQL指的是非关系型的分布式数据库,它在高并发的大规模访问方面有效率优势。NoSQL的主要代表性产品有MongoDB、BigTable、Cassandra等。
MongoDB是一款用C++语言编写的基于分布式文件存储的数据库,旨在为Web应用提供可扩展的高性能数据存储解决方案。它是介于关系数据库与非关系数据库之间的产品。它最大的特点是支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。目前The New York Times、趋势科技等公司已经应用了MongoDB。
BigTable是一款基于Google文件系统的数据存储系统,用于存储大规模结构化数据,具有高压缩、高性能、高可扩展性等特点,适用于云计算。它被广泛应用于Google的应用程序,如MapReduce、Google地图、YouTube视频等。
Cassandra是一款类似于BigTable的混合型非关系数据库。它最初由Facebook开发,后转变成了一个开源的项目。它是一个网络社交云计算方面的理想数据库。Facebook、Twitter、思科等公司都应用了Cassandra。
计算机系统包括数据库赖以存在的硬件设备,为DBMS提供支持的操作系统,以及一些能够方便用户使用数据库、提高系统开发效率的应用程序。
数据库管理员(Database Administrator,DBA)由一个或一组专业人士来担任,负责为数据库的用户授权,协调和监督用户对数据库和DBMS的使用,维护系统的安全性和确保系统的正常运作。DBA的具体工作职责包括:
1)数据库的设计与创建,包括数据库、表等结构创建,以及存储结构的定义和访问策略的制定。
2)数据库的日常运行监控,包括对数据库会话、日志、文件碎片、用户访问等的监控,随时发现数据库服务的运行异常和资源消耗情况,评估数据库服务运行状况,从而及时发现数据库的隐患。
3)数据库的用户管理,包括访问权限分配与密码修改等。DBA可为不同用户分配不一样的访问权限,以保护数据库不被未经授权地访问或破坏。
4)数据库的备份管理,包括制定和调整备份策略、监控备份、定期删除备份等,并在灾难出现时对数据库信息进行恢复。
5)故障处理,包括及时处理数据库服务出现的任何异常(如设备故障、网络故障、程序错误等),尽可能地避免问题的扩大化甚至中止服务。
DBA是DBS中最重要的角色。DBA不仅能够接触数据库中的核心数据,而且掌握着数据库其他用户数据访问权限的分配权。因此,DBA不仅需要具备广博的知识和深厚的技术能力,还应该具有良好的职业道德素养和高度的信息安全意识。DBA除了要认真完成责任范围之内的数据库维护之外,还要承担保护数据库数据的责任,否则,有可能引起非常严重的后果。
数据工作人员接触数据时应遵守职业道德和法律法规,尽职尽责地维护数据安全,坚决避免不必要的信息泄露和传播。无论是个人还是单位,都有保护数据安全的责任与义务,特别是持有、掌握大量公民个人信息的单位,更应该严格依法采取保护措施,有效保障公民个人信息安全。利用职务之便,非法获取、出售公民个人信息的,既要承担相应民事赔偿责任,也要承担相应的刑事责任。
2021年9月1日,《中华人民共和国数据安全法》正式施行。
终端用户是数据库的主要使用者,他们会对数据库提出查询和更新等操作要求。