[GaussDB] 对GaussDB数据库和数据管理的简单介绍

124 阅读14分钟

一、前言 数据库与数据管理有着密切的关系,两者共同构成了一个完整的、可扩展的数据库管理系统。 数据库是用于存储数据的系统,为数据提供了安全、可靠、可扩展和可管理的存储环境。

随着信息技术的飞速发展,数据已经成为企业的核心资产之一。在这个数据驱动的时代,数据管理成为了企业追求卓越的关键因素之一。GaussDB数据库作为一款具有高性能、高可用性和高可靠的关系型数据库管理系统,为数据管理提供了强大的支持。

二、数据质量规则体系(衡量标准) 数据管理最直接的目标是提高数据质量,最终目标是数据价值。主要驱动力是使组织能够从数据资产中获取价值。

随着数据类型、数据来源的不断丰富以及数据量的飞速增长,企业面临数据质量问题的概率显著增加。数据质量是一个复杂问题,往往是多种因素综合作用的结果,解决数据质量问题要从机制、制度、流程、工具、管理等多个方面着手发力。

数据质量涉及的范围也很广,贯穿业务的整个生命周期,从“数据产生->数据接入->数据存储->数据处理->数据输出->数据展示”,每个阶段都需要质量管理。

在数据库系统建设的各个阶段都应该根据标准进行数据质量检测和规范化,及时进行管理,减少事后的治理工作。

  1. 为什么要进行数据管理 举个下面的例子,很多刚入门的数据人,拿到数据后会立刻开始对数据进行各种统计、分析等,企图能立即发现数据背后隐藏的数据价值。然而忙活了一阵发现,并不能立刻提炼出太多有价值的信息。比如和数据打交道,可能会出现以下的场景:

场景一:统计近 7 天用户的购买情况,结果从数据库中统计完发现,很多数据存在了重复记录,甚至有些数据统计单位不统一。

场景二:查看报表,发现某一天的成交量暴跌,经过排查发现,是当天的数据缺失。

场景三:一线坐席人员进行电销业务,拨打客户电话,看到了客户的敏感信息,被客户投诉。

场景四:比如未进行数据备份,当数据被误操作、业务系统宕机时造成的数据丢失等。

造成这些情况的一个重要因素就是忽视了对数据的管理,没有制定合理的衡量标准,没有对数据进行审计和安全等管理。导致没有发现数据已出现的问题。所以,进行科学、客观的数据质量规则体系是非常必要且十分重要的。

2、数据质量规则体系

完整性:指数据在创建、传递过程中无缺失和遗漏,包括实体完整、属性完整、记录完整和字段值完整四个方面。完整性是数据质量最基础的一项,例如员工工号不可为空。 唯一性:指同一数据智能有位移的标识符。体现在一个数据集中,一个实体只出现一次,并且每个唯一实体有一个键值且该键值只指向该实体。例如员工有且仅有一个有效工号。 有效性:指数据的值、格式和展现形式符合数据定义和业务定义的要求。例如员工的国籍必须是国家基础数据中定义的允许值。 一致性:指遵循同一的数据标准记录和传递数据和信息,主要体现在数据记录是否规范、数据是否符合逻辑。例如同一工号对应的不同系统中的员工姓名需一致。 准确性:指真实、准确地记录原始数据,无虚假数据集信息。数据要准确反映其所建模的“真是世界”实体。例如员工的身份信息必须与身份证件上的信息一致。 及时性:指及时记录和传递相关数据,满足业务对信息获取的时间要求。数据交付要及时,抽取要及时,展现要及时。数据交付时间过长可能导致分析结论失去参考意义。 三、GaussDB数据库中如何实现数据管理 在GaussDB数据库中,可从如下几方面进行数据管理(包含但不限于)。

1、数据质量设计 从语法、语义、语用三个方面去定义和衡量数据质量,在数据产生、数据加工以及数据使用的全过程中均需要符合其制定的标准和规范。如下图示:

2、数据保护技术 GaussDB通过多种数据保护手段和特性,保障存储在GaussDB中的数据安全可靠。

传输加密(HTTPS):支持HTTP和HTTPS两种传输协议,为保证数据传输的安全性,推荐您使用更加安全的HTTPS协议。 敏感操作保护:控制台支持敏感操作保护,开启后执行删实例等敏感操作时,系统会进行身份验证,进一步保证GaussDB配置和数据的安全性。 SSL数据加密:可以使用SSL来加密数据库GaussDB和客户端的连接。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。 3、数据存储 GaussDB支持行列数据存储模型方式。进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能。表设计对数据存储也有影响:好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。

表的存储模型选择是表定义的第一步。客户业务属性是表的存储模型的决定性因素,依据下面表格选择适合当前业务的存储模型。

4、数据加密模型 全密态数据库使用多级加密模型,不同加密场景中密钥的功能如下:

数据:密态数据库对SQL语句中属于加密列的数据进行加密,对数据库服务端返回的属于加密列的查询结果进行解密。 列密钥:数据由列密钥进行加密,而列密钥由主密钥加密。列密钥密文存储在数据库服务端。 主密钥:由外部密钥管理生成并存储,数据库驱动会自动访问外部密钥管理,以实现对列密钥进行加解密。 5、数据备份 GaussDB支持多种数据备份和恢复方式,如全量备份、增量备份和差量备份等。这些备份和恢复方式可以保证数据的一致性和可靠性,避免数据丢失和损坏。

备份策略:

全量备份:第一次的全量备份后,无论数据是否变化,第二次备份和第三次备份都会将所有的数据全部进行备份。 增量备份:第一次的全量备份之后,第二次备份只会备份数据变化的数据,第三次备份只会备份第二次备份后数据变化的数据。 差量备份:第一次的全量备份之后,第二次备份只会备份数据变化的数据,第三次备份会备份第一次全量备份后数据变化的数据。 GaussDB会在数据库实例的备份时段中创建数据库实例的自动备份。系统根据您指定的备份保留期保存数据库实例的自动备份。扩容实例CN或者分片后,系统会进行一次自动备份。 用户还可以创建手动备份对数据库进行备份,手动备份是由用户启动的数据库实例的全量备份,会一直保存,直到用户手动删除。

四、小结 GaussDB数据库凭借其高性能、高可用性和高可靠的特点,为数据管理提供了强大的支持。企业应充分利用GaussDB数据库对数据管理的更多功能和优势,加强数据管理实践,不断提升数据质量、数据安全,为企业的发展创造更大的价值。

另外,对于数据管理而言,数据库是一种其必不可少且功能强大的数据管理工具。数据管理工作除了依赖数据库外,更多的要结合企业的管理机制、制度、流程、第三方工具等。例如,建立数据管理体系、制定数据管理标准、加强数据使用者的培训、定期进行数据质量管理检查等。

——结束

详情查看:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html

一、前言 GaussDB是一款高性能、高可用的分布式数据库,广泛应用于各类行业和场景。在GaussDB中,锁是实现并发控制的关键机制之一,用于协调多个事务之间的数据访问,确保数据的一致性和完整性。本文将围绕GaussDB数据库的LOCK TABLE 做一简单介绍。

二、GaussDB数据库的锁 GaussDB提供了多种锁模式用于控制对表中数据的并发访问。这些模式可以用在MVCC(多版本并发控制)无法给出期望行为的场合。同样,大多数GaussDB命令自动施加恰当的锁,以保证被引用的表在命令的执行过程中不会以一种不兼容的方式被删除或者修改。比如,在存在其他并发操作的时候,ALTER TABLE是不能在同一个表上执行的。

1、GaussDB中的LOCK TABLE LOCK TABLE获取表级锁。

如果需要保持数据库数据的一致性,可以使用LOCK TABLE来阻止其他用户修改表。例如,一个应用需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以对表进行锁定,这样将防止数据不被并发修改。LOCK TABLE只在一个事务块的内部有用,在事务结束时就会被释放。

1)语法格式

LOCK [ TABLE ] name  IN {ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE} MODE

2)参数说明

1)name:要锁定的表的名称。

2)锁的模式:

ACCESS SHARE:只读取表而不修改。所有对表进行读取而不修改的SQL语句都会自动请求这种锁。 ROW SHARE:允许对表进行并发读取,禁止对表进行其他操作。SELECT FOR UPDATE和SELECT FOR SHARE命令会自动在目标表上请求ROW SHARE锁(且所有被引用但不是FOR SHARE/FOR UPDATE的其他表上,还会自动加上ACCESS SHARE锁)。对于分区表,SELECT FOR SHARE操作还会在DN上获取partition对象的ROW EXCLUSIVE锁进行并发控制。 ROW EXCLUSIVE:与ROW SHARE锁相同,ROW EXCLUSIVE允许并发读取表,但是禁止修改表中数据。UPDATE,DELETE,INSERT命令会自动在目标表上请求这个锁(且所有被引用的其他表上还会自动加上的ACCESS SHARE锁)。通常情况下,所有会修改表数据的命令都会请求表的ROW EXCLUSIVE锁。 SHARE UPDATE EXCLUSIVE:保护一个表的模式不被并发修改,以及禁止在目标表上执行垃圾回收命令(VACUUM)。VACUUM(不带FULL选项)、ANALYZE、CREATE INDEX CONCURRENTLY命令会自动请求这样的锁。 SHARE:允许并发的查询,但是禁止对表进行修改。CREATE INDEX(不带CONCURRENTLY)语句会自动请求这种锁。 EXCLUSIVE:允许对目标表进行并发查询,但是禁止任何其他操作。这个模式只允许并发加ACCESS SHARE锁,也就是说,只有对表的读动作可以和持有这个锁模式的事务并发执行。任何SQL语句都不会在用户表上自动请求这个锁模式。然而在某些操作的时候,会在某些系统表上请求它。 SHARE ROW EXCLUSIVE:禁止对表进行任何的并发修改,而且是独占锁,因此一个会话中只能获取一次。任何SQL语句都不会自动请求这个锁模式。 ACCESS EXCLUSIVE:保证其所有者(事务)是可以访问该表的唯一事务。ALTER TABLE,DROP TABLE,TRUNCATE,REINDEX,CLUSTER,VACUUM FULL命令会自动请求这种锁。在LOCK TABLE命令没有明确声明需要的锁模式时,它是缺省锁模式。 2、示例一:ACCESS EXCLUSIVE 模式

--创建测试表
DROP TABLE IF EXISTS omm2.company;
CREATE TABLE omm2.company(
   id int4 PRIMARY key NOT NULL
  ,name varchar(10) NOT NULL
  ,age int4 NOT NULL
  ,address varchar(20) NOT NULL
  ,salary float4 NOT NULL
);

--初始化数据
INSERT INTO omm2.company VALUES (1, 'Paul', 32, 'California', 20000);
INSERT INTO omm2.company VALUES (2, 'Allen', 25, 'Texas', 15000);
INSERT INTO omm2.company VALUES (3, 'Teddy', 23, 'Norway', 20000);
INSERT INTO omm2.company VALUES (4, 'ZhangSan', 30, 'BeiJing', 30000);


--启动一个事务
START TRANSACTION;
LOCK TABLE omm2.company IN ACCESS EXCLUSIVE MODE;
DELETE FROM omm2.company WHERE name ='Allen';
COMMIT;

解析:

“START TRANSACTION;”:启动一个新的事务。在数据库中,事务是一组一起执行的SQL语句,要么全部成功,要么全部失败。这确保了数据的一致性。 “LOCK TABLE omm2.company IN ACCESS EXCLUSIVE MODE;”:对omm2.company表进行了排他性锁定。在此模式下,其他会话不能对表进行读写操作,直到这个事务结束。这样可以防止在删除操作过程中其他事务对表产生干扰。 “DELETE FROM omm2.company WHERE name ='Allen'; ”:从omm2.company表中删除了所有名为'Allen'的记录。 “COMMIT;”:这行代码提交了前面的事务。在事务中执行的任何更改(在本例中是删除操作)在提交后才会永久保存在数据库中。 总的来说,这段代码删除了名为'Allen'的所有记录,并确保这个操作在提交之前不会被其他事务干扰。

3、示例二:SHARE ROW EXCLUSIVE 模式

--复用示例一的测试表
CREATE TABLE omm2.company1 AS TABLE omm2.company;

--启动一个事务
START TRANSACTION;
LOCK TABLE omm2.company1 IN SHARE ROW EXCLUSIVE MODE;
DELETE FROM omm2.company1 WHERE name ='Allen';
COMMIT;

解析:

“CREATE TABLE omm2.company1 AS TABLE omm2.company;”:创建了一个新的表omm2.company1,其结构复制自已有的表omm2.company。这种操作通常用于创建表的副本,或者为某个操作创建一个临时的、与原表结构相同的新表。 “START TRANSACTION; ”:启动一个新的事务。在数据库中,事务是一组一起执行的SQL语句,要么全部成功,要么全部失败,这可以确保数据的一致性。 “LOCK TABLE omm2.company1 IN SHARE ROW EXCLUSIVE MODE; ”:对表omm2.company1进行了排他性锁定。在这种模式下,其他会话不能对表进行读写操作,直到这个事务结束,这样可以防止在删除操作过程中其他事务对表产生干扰。 “DELETE FROM omm2.company1 WHERE name ='Allen';”:从表omm1.company1中删除了所有名为'Allen'的记录。 “COMMIT;”:提交前面的事务。在事务中执行的任何更改(在本例中是删除操作)在提交后才会永久保存在数据库中。 三、小结 GaussDB数据库的锁机制是其重要的组成部分,用于支持并发控制和事务隔离。GaussDB实现了不同级别的事务隔离和并发控制,满足了不同场景下的需求。当然了,使用GaussDB数据库时也需要注意一些问题,如锁的管理和数据库的规划等。合理的锁管理和数据库规划能够提高系统的性能和可用性,反之则可能导致数据一致性问题或者系统故障。

——结束

详情查看:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html