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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

本节书摘来自异步社区出版社《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文件了。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
46 0
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
273 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
182 25

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等