《MySQL高效编程》一一1.2 数据库的种类

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:

本节书摘来自异步社区出版社《MySQL高效编程》一书中的第1章,第1.2节,作者: 王志刚 , 江友华,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 数据库的种类

MySQL高效编程
通过上述的介绍,我想读者应该对数据库有了一个大致的认识了。数据库从数据的保存方式以及构造上可以分以下几种类型。

1.2.1 阶层型/网络型数据库

首先介绍在大型机系统(使用于银行、证券等行业的大型系统)中经常使用的阶层型数据库及网络型数据库。

阶层型数据库顾名思义,就是将数据以树型结构保存的数据库。对特定的数据来说拥有多个子数据,而子数据库不可能拥有多个父数据。因为这种数据库保证对任意数据唯一的连接路径,能够以简洁的代码实现数据的读取,是这种数据库的最大优点。

但是相反,如果父子数据的关系不总是[1:n]时,就会出现无用数据大量增多的现象。再看一下图1-2中左侧的企业内组织图,就会很容易明白上述问题所在。在组织图中,不能保证一个员工只属于一个部门(也就是会出现一个员工兼任几个职位的情况)。这样同一个员工会在组织图的多个节点出现,这就是所谓的无用数据,在专业上称为数据冗余。

image

为解决这个问题,出现了网络型数据库。在网络型数据库中,不仅父数据有多个子数据,子数据也会有多个父数据,这样阶层型数据库中的冗余问题就不存在了。

但是,这样的网络型数据库也有几个缺点。用户在连接数据库并使用数据库中的数据之前,必须要了解数据库中数据的结构。也就是说,在创建应用程序时,必须严格按照数据的结构来进行代码的编写。当然,数据结构发生变化时,对应的应用程序也必须修改。

1.2.2 卡片型数据库

卡片型数据库就是将一条数据作为一枚卡片来处理的数据库。但是,卡片型数据库与其他的如网络型数据库或关系数据库不同之处在于,它不是一个反映数据的概念分类(也就是说数据并不是真的以“卡片”形式存在的),而仅仅是拥有“数据看起来像卡片”的界面,或者说以卡片的形式来呈现数据,是从数据显示形式来命名的,如图1-3所示。

例如,像Excel或Access这样的产品,数据可以以表单(Form,表单是一个包含一个或多个数据元素的区域)的形式呈现,如图1-4所示,从这个意义上讲也可以称为卡片型数据库,但是,现在以表单的形式呈现数据的功能在很多应用软件中都实现了,所以,以外观特征来分类数据库就显得不太准确了,卡片型数据库这种分类现在已很少使用了。

image

image

1.2.3 关系型数据库

现在,只要是提到数据库,一般都会指的是关系型数据库(Relational Database,RDB)。对于RDB来说,关联的一系列数据以表的形式保存,就如由Excel那样的软件创建的二元表格的形式,表内的各个数据项目被称为域(field)或列(column),一组数据被称为记录(record),如图1-5所示。在RDB中,数据库就是表以及操作数据库用的对象集合体,而表是记录/域的集合体。

image

另外,在RDB中,标识表内记录唯一性的域或域群被称为主键,与主键关联用的外部表中的参照键被称为外键。如上述定义所示,主键在所在的表中必须保持唯一性,而外键的域中必须保存与主键相符的数据。主键和外键的关系就是此类数据库被称为关系型数据库的原因所在。

下面结合一个实际的例子来进一步理解关系型数据库。如图1-6所示,首先请注意在订单表中有用户ID这样一个项目,光看那些以字母数字形式出现的用户ID是不能知道任何信息的,这里用户ID是订单表的外键,再查看以用户ID作为主键的客户信息表,你就可以查看出这些字母数据所代表的具体客户信息了。

image

同属订单信息的订单详细表也是如此,光看订单详细表中的订单ID以及产品ID那些生硬的字母是了解不到什么具体信息的,只有通过外键连接,查看产品表与订单详细表,你才可以了解到进一步的具体信息。

上述就是关系型数据库的最大特征,信息并不是放在一个表中,而是为了将冗余数据尽量减少,将数据放在不同的表,这些表通过“关系”(主键和外键)联系在一起。表之间通过不同的组合,可以在用户的面前呈现不同的形式。

表1-1列出了目前比较专业的几种关系型数据库产品。对于关系型数据库产品来讲,大家肯定知道有些是公开源码的免费产品,有些是商用的大型数据库产品,有些是以企业应用为主的产品,也有些是以个人应用为前提的产品。产品可选择的范围比较广,也可以说是关系型数据库的一个特征。
image

1.2.4 面向对象型数据库

虽然关系型数据库普及率这么高,但它们也存在着一些问题。目前在构建应用程序时普遍采用Java、C++、C#等面向对象语言,这里我们首先应该意识到表形式的数据是与对象不同的。面向对象语言与RDB结合时,首先要面对就是这个数据构造问题。应用程序开发人员首先要从RDB中取出表形式的数据,然后将其转换为对象形式的数据,通常称为匹配(mapping)。这个匹配的过程看似单纯,但是造成开发过程繁琐、生产效率低下的原因之一。这个RDB与对象间的鸿沟(gap)被称为阻抗(impedance mismatch),图1-7所示说明了什么是阻抗。

image

作为解决阻抗的方法,尽管有如O/R(Object/Relational Mapping,就是使对象与表之间的变换自动化的技术)匹配这样的技术,随着类似“如果本来就没有匹配这个过程,就没有变换”这样的想法出现,面向对象型数据库(OODB,Object Oriented DataBase)技术应运而生。

面向对象型数据库,顾名思义在数据库中直接以对象的形式保存数据。对面向对象型数据库来说,因为从数据库中取得的数据就是能直接在应用程序中使用的对象,所以编写代码将变得简单。另外,彻底省略了数据变换这个步骤,所以也改善了处理速度。

OODB中代表性的产品有Cache(http://www.intersystems.com/cache)与ObjectStore(http://web.progress.com/en/objectstore/)。

1.2.5 XML型数据库

现在,在Internet上进行数据交换时,经常使用XML(eXtensible Markup Language)。在发布最新博客等信息时使用的RSS(RDF Site Summary),就是一种以XML为基础的技术。另外,在微软公司的Office 2007中已经支持以XML形式保存文件了。可以说现在使用XML格式的文档已经很常见了。

以XML的形式保存数据的数据库,就被称为XML型数据库(下面称之为NXDB,Native XML DataBase,直译为自然的XML数据库)。NXDB有个基本优点就是不用区分数据交换形式与数据保存形式了,当然它并不只有这些优点。

在关系型数据库中,保存具体数据前,首先必须对保存数据用的表进行严格的设计(后面的章节将会详细介绍具体的设计方法)。总之,数据项目以及数据类型必须事先决定下来,而且当数据结构改变时,首先要修改表的设计。

但是,对于NXDB来说,不用进行这样的表设计。什么样的数据都能保存进去,这就是使用NXDB好处。没有严密的用于放置数据的类似抽屉样的东西。当结构发生改变时,修改起来很方便,只是在既有的数据中添加“新枝”,即添上新项目就行了,如图1-8所示。
image

NXDB中代表性的产品有NeoCoreXMS(http://www.cybertech-cebu.com/product/neocore/)、CyberLuxeon(http://www.cybertech-cebu.com/product/luxeon/)、EsTerra XML Storage Server(http://www.mediafusion.co.jp/ )。

另外,目前在SQL Server、Oracle、DB2等主要的关系型数据库产品中也纷纷追加了对XML的支持。数据大部分以表的形式保存,如果其中一部分数据想以XML的形式保存时,采用这些支持XML的数据库产品,就能更方便地将数据导入XML文件了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
|
1天前
|
关系型数据库 MySQL 数据库
DZ社区 mysql日志清理 Discuz! X3.5数据库可以做定期常规清理的表
很多站长在网站日常维护中忽略了比较重要的一个环节,就是对于数据库的清理工作,造成数据库使用量增加必须多的原因一般有2个:后台站点功能开启了家园,此功能现在很少有论坛会用到,但是灌水机会灌入大量垃圾信息致使站长长时间未能发觉;再有就是程序默认的一些通知类表单会存放大量的、对于网站日常运行并无意义的通知信息。
13 2
|
2天前
|
SQL 关系型数据库 MySQL
数据库:MYSQL参数max_allowed_packet 介绍
数据库:MYSQL参数max_allowed_packet 介绍
11 2
|
1天前
|
SQL 存储 关系型数据库
【MySQL】数据库基础知识
【MySQL】数据库基础知识
7 0
|
2天前
|
关系型数据库 MySQL 数据库
docker mysql表名和数据库名不区分大小写
docker mysql表名和数据库名不区分大小写
10 0
|
2天前
|
存储 关系型数据库 MySQL
四种数据库对比MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
四种数据库对比 MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
|
2天前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
24天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
26天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
194 11
|
21天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
60 13
MySQL的安装&数据库的简单操作

热门文章

最新文章