【云驻共创】华为云数据库之数据库基础知识
前言
数据库是数据库系统的核心,数据库存储数据的方式决定了数据库开发的工作方式和方法,以及数据库涉及的方式方法,比如关系型数据库和非关系型数据库在工作中,直接影响到数据库结构的涉及,以至于影响到业务的实现。
一、数据库的种类
因为需求的多样性,数据的不同状态,数据库的种类很多,当然分类的方式也有很多,分类方法不同就会有不同的数据库,下面从两个角度对数据库进行分类。
从数据库的组织方式可以分为:网状数据库,关系数据库,关系数据库等。
从数据库管理的角度可以分为:集中式数据库,分布式数据库和云数据库等。
下面分别介绍
1、集中式数据库
在数据库发展早期,数据库系统都是集中式的,一般以主机-终端系统体系结构实现,操作系统,数据库管理系统与数据库紧密耦合,组成单一的数据库系统,当我们进行数据库设计,数据库创建,以及数据库应用系统开发时,用户使用的是单一的数据库模式
优点
- 由于所有数据仅存储在单个位置,因此更易于访问和协调数据。
- 集中式数据库的数据冗余非常小,因为所有数据都存储在单个位置。
- 与所有其他可用数据库相比,它更便宜。
缺点
在集中式数据库的情况下,数据流量更多。
- 如果集中式系统发生任何类型的系统故障,那么整个数据将被破坏。
2、分布式数据库
随着网络技术的进步,特别是移动互联网的兴起,数据量爆炸式增长,数据存储和管理的规模越来越庞大,致使采用单机数据库的方式处理数据越来越难以满足用户需求,分布式数据库应用而生了。
数据库系统由“紧密耦合”变成“松散耦合”的组合方式。分布式数据库系统将数据库资源存放在不同的站点,这些站点不共享物理部件,运行在每个站点的数据库系统拥有实质上的相互独立性。
在同构分布式数据库系统中,所有站点都是用相同的数据库管理系统软件,他们彼此了解,共同合作处理用户请求。
在异构分布式数据库系统中,不同的站点可以使用不同的模式和不同的数据库管理系统软件,站点之间可能彼此并不了解,在合作处理事务的过程中,他们可以仅提供有点的功能,模式的差异经常是查询处理中的主要问题,而软件的差异成为处理事务的一个障碍。
分布式数据库存储通常有如下存储方式:
(1)复制:是将数据D复制几个相同的副本,并把每个副本存在着不同的站点上,复制的替代方式是指存储数据D的一个备份。
(2)分片:是把数据D划分为若干片,并把每个片存储在不同的站点上。分片进行数据存储有两个不同的方案,水平分片和垂直分片。水平分片通过将数据的每个元组分给一个或多个分片来划分关系,垂直分片通过对数据属性进行分离来划分关系。
(3)分片和复制可以组合使用,对于一个关系,可以划分几个片,并且每个片可以有几个副本。
分布式数据库也存在一些问题
例如:
众多节点之间通信会花费大量时间;
数据的安全性和保密性在众多节点之间会受到威胁;
在集中式系统中能够有效存取数据的技术,在分布式系统的复杂的存取结构中可能不再适用;
分布式的数据划分、负载均衡、分布式事务处理和分布式执行技术都需要新的突破。
3、云数据库
云计算的迅猛发展使得数据库部署和虚拟化在“云端”成为可能。云数据库即是部署和虚拟在云计算环境下,通过计算机网络提供数据管理服务的数据库。
因为云数据库可以共享基础架构,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置。数据库作为基础软件之一,经过几十年的发展,市场格局极为固定。但随着云计算技术不断走向成熟,以及云计算所带来的使用模式与理念不断深入人心,云数据库近年来迅速崛起,给整个数据库市场带来了巨大的颠覆。
云数据库是部署在“云端”的数据库系统,将传统的数据库系统配置在“云上”。客户可以与云计算供应商达成协议来获得具有特定功能和特定数据存储的特定数量的机器,机器数量和存储数量都可以根据需要来增加和缩减。除了提供计算服务,很多供应商还可以提供其它的服务。不同于传统数据库,云数据库通过计算存储分离、存储在线扩容、计算弹性伸缩来提升数据库的可用性和可靠性。
优势
云计算供应商通常运用规模较大的计算机集群,使其能够容易地按需分配资源,为众多供应商同时提供云服务。它可以达到从数百万到数亿存储和检索数据的能力,同时为成干上万乃至亿万用户提供更为复杂的数据服务,具有极强的可用性和可扩展性。基于云的数据库,同时具备同构和异构系统的特点。在这种情况下,即便计算机客户之间的位置距离很远,也可以通过因特网访问实现所需的数据处理。
在云上直接部署传统数据库的主要优点包括易于实现、无需更改和与现有软件完全兼容等。
缺点
对于传统数据库,数据库大小受到本地存储大小的限制。使用云存储可以增加数据库的容量,但是存储成本、网络负载和数据库更新成本仍然很高,并且与副本数量成正比。传统数据库系统与数据库大小相关的操作(如备份)会限制数据库大小,但云数据库则因为容量过大会造成数据库备份的时间过长。
解决方案
为了解决上述种种矛盾和限制,云数据库系统将数据库系统分为计算层和存储层,让每一层都承担部分数据库功能。计算节点只将日志记录发给存储层,存储层知道如何用日志记录来更新和生成页面。
GaussDB(for MySQL)
GaussDB(for MySQL)就是部署在“华为云”上的一款数据库管理系统软件。它通过计算机网络进行数据库操纵,以及数据库事务管理和支持数据库应用系统开发,吸收了将数据库的计算与存储分离的设计理念,实现了更高的可用性,更低的存储成本和更好的性能。
二、存储引擎
数据库存储引擎是数据库底层软件组件。其功能作用就是最大程度地为了保障数据库的操作安全和性能优化。数据库的存储引擎决定了表在计算机中的存储方式,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
数据库操作是对数据库中的数据所进行的一系列操作,包括读取数据、写数据、更新或修改数据、删除数据等。数据库存储引擎保证了这些数据处理的顺利进行,同时也提供了各种特定的技术支撑。
目前许多数据库管理系统都支持多种不同的存储引擎。
GaussDB(for MySQL)支持(InnoDB、MyISAM、MEMORY、Archive、MERGE、
EXAMPLE、CSV、BLACKHOLE、FEDERATE)9种存储引擎。
一方面,保证存储的数据具有原子性、一致性、隔离性和持久性;另一方面,能够提高并发读写速度,提高数据库管理系统的性能。
下面介绍常用的4种存储引擎。
2.1、InnoDB存储引擎
InnoDB给表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全,支持外键引用完整性约束;支持提交、回滚和紧急恢复功能来保护数据,还支持行级锁定。它将数据存储在集群索引中,从而减少了基于主键的查询的I/O。
2.2、MyISAM
MyISAM存储引擎管理非事务性表,提供高速存储和检索,支持全文搜索。支持3种不同的存储格式;包括静态型、动态型和压缩型;其中静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。
2.3、MEMORY存储引擎
MEMORY是一类特殊的存储引擎,提供内存中的表,可以比在磁盘上存储数据更快地实现访问。它用于快速查找引用和其他相同的数据,使用存储在内存中的内容来创建表,且数据全部放在内存中。每个基于MEMORY存储引擎的
表实际对应一个磁盘文件。该文件的文件名与表名相同,该文件中只存储表的
结构;MEMORY默认使用哈希索引,速度比使用B型树索引快,当然如果你
想用B型树索引,可以在创建索引时指定。
2.4、Archive存储引擎
Archive 存储引擎只支持INSERT和SELECT操作;用于存储大量数据,不支持索引,使用zlib算法可将数据行压缩后存储;Archive存储引擎非常适合存
储归档数据,比如日志信息。但是它本身并不是事务安全的存储引擎,它的
设计目标是提供高速的插入和压缩功能。
三、数据库创建与维护
创建数据库是数据库操作的首要任务,通常是一次性完成,然后就是数据库的维护工作,而数据库维护的操作则是经常性的工作。在数据库管理系统中,只有系统管理员能够创建数据库。对于数据库创建和维护的操作而言,前期的数据库设计工作一定要确认无误,要设计好数据库的模式,即设计好数据库中所有表
的结构,以及表间的关联。
以下我们以“新华大学学生信息管理系统”数据库设计结果为例,介绍在GaussDB(forMySQL)中创建数据库的一般方法。
1、创建数据库
创建数据库的过程,主要是定义数据库的名称、大小、所有者和存储数据库的文件。创建数据库的方法很多,不同数据库管理系统软件操作有差异,GaussDB(for MySQL)常用的方法有使用SQL语句创建数据库和使用“创建数据库视图”工具来完成。
1.使用SQL语句创建数据库
CREATE DATABASE [IF NOT EXISTS] <database_name>
[[DEFAULT] CHARACTER SET <character_set_name>]
[[DEFAULT] COLLATE <collate_name>]
(1)IF NOT EXISTS:在创建数据库前判断,该数据库尚不存在时才执行操作。
(2)[DEFAULT]CHARACTER SET:指定数据库的字符集。
(3)[DEFAULT]COLLATE:指定字符集的默认校对规则;
(4)<database_name>:创建数据库名称;
(5)<character_set_name>:字符集种类;
(6)<collate_name>:字符集的校对规则。
举个例子:
使用SQL语句创建数据库(xinhua_gaussdb)。
(1)输入如下命令:
CREATE DATABASE IF NOT EXISTS xinhua_gaussdb;
(2)在“新建数据库”窗口中,输入创建数据库的名称(xinhua_gaussdb),单击“确定”按钮,完成xinhua_gaussdb数据库的创建。
2.使用前端工具创建数据库(xinhua_gaussdb)。
(1)在“云数据库GaussDB-数据管理服务-控制台”窗口中,单击“新建数据库”按钮,进入“新建数据库”窗口,如图所示。
(2)在GaussDB(for MySQL)管理控制平台中,执行SQL命令,完成xinhua_gaussdb空数据库的创建。
2、维护数据库
数据库一旦创建完成,在使用数据库的同时,需要维护数据库的正常运行。通过以下的数据库操作,我们可以了解数据库的相关信息,也可以更改数据库的一些属性。
2.1.打开数据库
在GaussDB(for MySQL)中,使用数据库之前,需要先打开要操作的数据库。在命令行打开数据库命令:
USE database name;
看例子:打开数据库(xinhua_gaussdb)。
(1)输入如下命令:USE xinhua_gaussdb;
(2)在GaussDB(for MySQL)管理控制平台中,执行SQL命令,完成打开xinhua_gaussdb数据库的操作。
2.2.查看数据库信息
在命令行查看数据库列表:SHOW DATABASES[LIKE'database_name'];
(1)LIKE从句是可选项,用于匹配指定的数据库名称:
(2)LIKE从句可以部分匹配,也可以完全匹配。
举个例子:查看数据库列表。
(1)输入如下命令:
SHOW DATABASES LIKE 'xinhua%';
(2)在GaussDB(for MySQL)管理控制平台中,执行SQL命令,如图所示,给出了xinhua开头的数据库列表。
2.3.修改数据库
在数据库使用过程中,有时用户会对原有的数据库设置感到不能满足需求,需要对数据库进行修改;有时也会因原先创建数据库时考虑不周而需要对数据库进行修改。在 GaussDB(for MySQL)中,可以使用ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。
修改数据库SQL语句:
ALTER DATABASE database_name {
[DEFAULT]CHARACTER SET character_set_name|
[ DEFAULT ] COLLATE collate_name}
几点说明:
(1)ALTER DATABASE用于更改数据库的全局
(2)需要获得数据库ALTER权限;
(3)数据库名称可以忽略,此时对应默认数据库;
(4)CHARACTER SET子句用于更改默认的数据库字符集。
举个例子:修改数据库信息。
(1)输入如下命令:
ALTER DATABASE xinhua_gaussdb CHARACTER SET UTF8MB4;
(2)在GaussDB(for MySQL)管理控制平台中,执行SQL命令,完成对
xinhua_gaussdb数据库的参数设置。
2.4.删除数据库
数据库若有损坏,或数据库不再使用,或数据库不能运行,这就需要对这些数据库进行删除操作。
删除数据库SQL语句:
DROP DATABASE [IF EXISTS ] database_name
功能:删除数据库。
举个例子:删除数据库(xinhua_gaussdba)。
(1)输入如下命令:
DROP DATABASE xinhua_gaussdba;
(2)在GaussDB(for MySQL)管理控制平台中,
执行SQL命令,完成删除xinhua_gaussdba数据库。
四、总结
这一篇文章正如文章标题一样,介绍了一些数据库的基础知识。从最早的集中式数据库,到分布式数据库,再到现在的云数据库,讲了常见的四种数据库存储引擎。最后重点讲了一下华为云数据库GaussDB(for MySQL)的使用,比如创建,修改,删除等操作,基本上和Mysql的操作习惯是一样的,我相信可以轻松学会。
本文整理自华为云社区【内容共创】活动第15期。
https://bbs.huaweicloud.com/blogs/345822
任务22:
华为云数据库之数据库基础知识
- 点赞
- 收藏
- 关注作者
评论(0)