首页 > 其他分享 >GaussDB的行存表与列存表的选择

GaussDB的行存表与列存表的选择

时间:2024-11-25 16:48:15浏览次数:10  
标签:存储 列存表 GaussDB EMPLOYEE 数据 行存表

一、前言
行存表和列存表是数据库中两种常见的数据存储方式。随着信息技术的飞速发展,数据存储和管理以及如何高效地存储和处理大量的数据已经成为了我们的一大挑战。

为了解决这个问题,行存表与列存表应运而生,它们以其独特的优势在各个场景得到了高效的应用。GaussDB支持行、列存储,本文将简单给大家介绍一下行列存储在GassuDB数据库中的应用。

二、行列存储表的概念
1、定义
行存表(Row-Based Table)是一种以行为单位进行数据的存储方式,每个记录都有一个唯一的行标识符。
列存表(Column-Based Table)是以列为单位进行数据的存储方式,每个记录都有一个唯一的列标识符。
2、优势与劣势
1)行存表的优势在于其结构简单,易于理解和操作。由于数据按照行进行存储,因此在查询某一行数据时,可以快速定位到目标位置。此外,行存表在进行数据的插入、删除和更新操作时,效率相对较高。然而,行存表的缺点也比较明显,那就是它不适合进行复杂的数据分析和处理,因为这种存储方式无法充分利用数据的关联性,导致查询性能较差。

在这里插入图片描述

2)列存表的优势在于其强大的查询功能和高效的存储效率。由于数据按照列进行存储,因此可以很容易地对某一列的数据进行聚合、分组等操作。此外,列存表还可以通过索引等技术提高查询性能。然而,列存表的缺点在于其结构复杂,不易于理解和操作。尤其是在进行数据的插入、删除和更新操作时,需要考虑到数据的完整性和一致性问题,因此操作起来相对繁琐。

在这里插入图片描述

三、行列存储表的逻辑介绍
GaussDB支持行、列存储,默认情况下,创建的表为行存储。行存储和列存储的差异如下图示。

1、行存表与行存表在硬盘上的存储方式
在基于行存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在。

在这里插入图片描述

2、列存表与列存表在硬盘上的存储方式
在基于列式存储的数据库中,数据是按照列数据为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。

在这里插入图片描述

因此,行存表和列存表在硬盘上的存储方式也不同。对于行存表,每个记录都占用一个连续的空间块,而对于列存表,每个属性都有一个单独的空间块,所有属性值都存储在一个连续的空间块中。

四、行列存储表的使用建议和场景
一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。

1、行存表使用场景及GaussDB SQL示例
在这里插入图片描述

创建行存表,默认是创建的是行存表:

--创建行存表,默认是创建的是行存表
CREATE TABLE test_1
(
EMPLOYEE__ID CHAR(4),
EMPLOYEE_NAME VARCHAR2(10),
EMPLOYEE_SEX CHAR(2),
EMPLOYEE_AGE INT,
EMPLOYEE_SALARY MONEY
);

--查看已创建的表结构
SELECT * FROM PG_GET_TABLEDEF(‘test_1’)

在这里插入图片描述

2、列存表使用场景及GaussDB SQL示例

创建列存表,使用关键字:WITH (ORIENTATION = COLUMN)

--创建列存表,使用关键字:WITH (ORIENTATION = COLUMN)
CREATE TABLE test_2
(
EMPLOYEE__ID CHAR(4),
EMPLOYEE_NAME VARCHAR2(10),
EMPLOYEE_SEX CHAR(2),
EMPLOYEE_AGE INT,
EMPLOYEE_SALARY MONEY
)
WITH (ORIENTATION = COLUMN);

--查看已创建的表结构
SELECT * FROM PG_GET_TABLEDEF(‘test_2’)

五、小结
行存表和列存表各有优缺点,适用于不同的场景。GaussDB支持行列存储。行、列存储模型各有优劣,在实际应用中,我们需要根据具体的需求选择合适的存储方式,以实现高效的数据管理和分析。无论是行存表还是列存表,都是我们在探索数据世界道路上的重要工具,值得我们深入研究和掌握。

——结束




详情参考: https://support.huaweicloud.com/gaussdb/index.html

标签:存储,列存表,GaussDB,EMPLOYEE,数据,行存表
From: https://www.cnblogs.com/xxxmut/p/18567924

相关文章

  • GaussDB数据库SQL系列-层次递归查询
    一、前言层次递归查询是一种常见的SQL查询方式,特别是在一些层次化的数据存储结构中经常用到。本文主要以GaussDB数据库为实验平台,为大家讲解其使用方法。二、GuassDB数据库层次递归查询概念层次化结构可以理解为树状数据结构,由节点构成。举个简单的例子,如下图所示,由子节点向上......
  • GaussDB数据库SQL系列-数据去重
    一、前言数据去重在数据库中是比较常见的操作。复杂的业务场景、多业务线的数据来源等等,都会带来重复数据的存储。本文以GaussDB数据库为实验平台,将为大家详细讲解如何去重。二、数据去重应用场景数据库管理(含备份):在数据库中进行数据去重可以避免数据重复存储、备份,提高数据库......
  • GaussDB数据库的元数据及其管理简介
    一、前言GaussDB是一种分布式的关系型数据库,元数据(表、列、视图、索引、存储过程等对象)是其重要的一部分。元数据是指描述数据的数据,包括数据的定义、结构、属性、关系等信息。本文以GaussDB物理数据库为主,结合元数据的概念简单介绍一下相关内容。二、元数据简介1、元数据定义......
  • GaussDB之SQL Audit,面向应用开发的SQL审核工具
    ​前言我们先从一个SQL语句说起(以某传统单机数据库为例)。也许这就是我们业务代码中潜藏的一个SQL语句,对于一个普通开发者来说,这个语句编写工整,逻辑清晰,没有什么问题,可以直接推到代码仓中交付上线。但是一个有经验的开发者或数据库管理员可能会发现这个SQL存在诸多的优化点:两张......
  • GaussDB数据库SQL系列-SQL与ETL浅谈
    一、前言在SQL语言中,ETL(抽取、转换和加载)是一种用于将数据从源系统抽取到目标系统的过程。ETL过程通常包括三个阶段:抽取(Extract)、转换(Transform)和加载(Load)。但这些其实都脱离不了数据库系统,本节从GaussDB数据库生态出发,给大家简单讲一下SQL与ETL的过程与关系。二、SQL与ETL的......
  • GaussDB数据库SQL系列-UNION & UNION ALL
    一、前言SQL(结构化查询语言)是一种用于管理关系型数据库的标准语言。它允许用户通过使用SQL语言来操作数据库中的数据。而在SQL中,UNION是一个非常强大的功能,它可以将多个SELECT语句的结果合并成一个结果集。本文将以GaussDB数据库为例,介绍一下UNION操作符的使用。二、GaussDBUN......
  • GaussDB数据库SQL系列-表连接(JOIN)
    一、前言SQL是用于数据分析和数据处理的最重要的编程语言之一,表连接(JOIN)是数据库中SQL的一种常见操作,在实际应用中,我们需要根据业务需求从两个或多个相关的表中获取信息。二、GaussDBJOINGaussDB是华为推出的企业级分布式关系型数据库。GaussDBJOIN子句是基于两个或者多个表......
  • GaussDB数据库基础函数介绍-上
    ​目录一、函数在数据库中的作用二、GaussDB常用基础函数介绍与示例1、数字操作函数2、时间和日期处理函数3、类型转换函数4、数组函数5、范围函数6、窗口函数7、聚集函数8、安全函数9、系统信息函数10、动态脱敏函数.Tip:由于篇幅缘故,“5.范围函数、6.窗口函数、7.......
  • JDBC连接GaussDB云数据库操作示例
    ​目录一、实验环境二、登录华为云创建测试库表1、登录GaussDB云数据库2、建库、建表,用于测试3、新增普通角色(用户)用于登录及访问测试(可选)4、获取对应的公网IP三、创建java工程1、创建java工程2、添加jar包3、编辑Java代码四、执行并查看测试结果一、实验环境1、本......
  • GaussDB云数据库SQL应用系列-视图管理
    ​一、前言GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。二、准备条件参考......