GaussDB(for PostgreSQL) 存储引擎:ASTORE 与 USTORE 详细对比

news2025/4/9 20:27:35

GaussDB(for PostgreSQL) 存储引擎:ASTORE 与 USTORE 详细对比


1. 背景说明

GaussDB(for PostgreSQL) 是华为基于 PostgreSQL 开发的企业级分布式数据库,其存储引擎分为 ASTOREUSTORE 两种类型,分别针对不同场景优化。


2. 核心对比

(1) ASTORE(行式存储引擎)
  • 全称:Append-Optimized Store(追加优化存储)。
  • 数据模型行式存储(Row-based)。
  • 核心特性
    • 面向OLTP优化:适合高并发、短事务、频繁增删改操作。
    • 支持ACID事务:行级锁、MVCC(多版本并发控制)。
    • 存储结构:数据以行(Row)为单位存储,适合单记录快速读写。
    • 压缩率:中等(支持基本压缩,但弱于列式存储)。
  • 适用场景
    • 高并发事务处理(如订单系统、用户登录)。
    • 需要强一致性和实时性场景。
  • 示例表创建
    CREATE TABLE orders (
        order_id INT PRIMARY KEY,
        user_id INT,
        amount DECIMAL(10,2),
        order_time TIMESTAMP
    ) WITH (storage_type='ASTORE');
    
(2) USTORE(统一存储引擎)
  • 全称:Unified Store(统一存储引擎)。
  • 数据模型列式存储(Columnar Storage)。
  • 核心特性
    • 面向OLAP优化:适合大数据分析、聚合查询(如GROUP BY, SUM)。
    • 高压缩率:列式存储天然压缩率高(如数值列、字符串列)。
    • 并行查询加速:列式存储支持高效列扫描和向量化计算。
    • 混合负载支持:通过行列混存(Hybrid Storage)实现HTAP场景。
    • 分布式扩展:支持跨节点并行处理。
  • 适用场景
    • 复杂分析查询(如销售趋势分析、BI报表)。
    • 海量数据存储与批量处理。
  • 示例表创建
    CREATE TABLE sales_data (
        product_id INT,
        region VARCHAR(50),
        sales DECIMAL(10,2),
        sale_date DATE
    ) WITH (storage_type='USTORE');
    

3. 核心差异对比表

维度ASTORE(行式)USTORE(列式)
数据模型行式存储(按行存储)列式存储(按列存储)
适用场景OLTP(事务处理)OLAP(分析处理)或HTAP混合负载
事务支持支持ACID事务,行级锁支持ACID(通过全局事务机制)
压缩率中等高(列式压缩算法优化)
查询优化单记录查询、短事务聚合查询、范围扫描、批量数据处理
写入性能高(适合频繁增删改)中等(批量写入更优)
读取性能单记录读取快列式扫描和聚合计算快
典型容量中小规模数据海量数据(TB/PB级)
扩展性水平扩展(分布式节点)水平扩展,支持MPP架构
典型使用案例电商订单系统、用户登录数据仓库、BI分析、实时报表

4. 关键技术细节

(1) ASTORE(行式存储)
  • 存储结构
    • 数据按行存储,每行数据包含所有字段。
    • 支持索引优化(如B-tree索引),适合单行快速定位。
  • 事务机制
    • 通过MVCC实现多版本并发控制。
    • 写操作通过行级锁保证事务隔离性。
  • 性能特点
    • 优点:单记录操作(INSERT/UPDATE/DELETE)性能高。
    • 缺点:聚合查询(GROUP BY)需扫描全表,性能较差。
(2) USTORE(列式存储)
  • 存储结构
    • 数据按列存储,同一列的数据连续存放。
    • 支持列式压缩(如字典编码、RLE编码)。
  • 查询优化
    • 向量化执行:列数据连续存储,适合CPU向量化计算。
    • 分区裁剪:按列过滤数据,减少I/O。
  • 事务机制
    • 支持分布式事务(通过全局事务ID)。
    • 读操作通过快照隔离(Read Committed)。
  • 性能特点
    • 优点:聚合查询性能高,存储空间小。
    • 缺点:单记录更新/插入性能较低。

5. 如何选择引擎?

选择ASTORE的场景
  • 需要强一致性(如银行交易、订单系统)。
  • 高频的单记录操作(SELECT * WHERE id=1)。
  • 事务要求严格(ACID)。
选择USTORE的场景
  • 需要处理海量数据(如日志分析、用户行为分析)。
  • 复杂查询(GROUP BY, SUM, AVG)为主。
  • 存储空间敏感(列式压缩节省存储成本)。
混合负载(HTAP)
  • 方案:通过 ASTORE+USTORE组合 实现:
    • ASTORE存储事务数据。
    • USTORE存储分析数据(通过订阅ASTORE数据同步)。
  • 示例
    -- 创建ASTORE表(OLTP)
    CREATE TABLE real_time_data (/* ... */) WITH (storage_type='ASTORE');
    
    -- 创建USTORE表(OLAP)
    CREATE TABLE analytics_data (/* ... */) WITH (storage_type='USTORE');
    
    -- 通过订阅同步数据
    CREATE SUBSCRIPTION analytics_sub FROM TABLE real_time_data TO TABLE analytics_data;
    

6. 总结

需求选择ASTORE选择USTORE
事务处理优先级
分析查询优先级
存储空间敏感
单记录操作性能
聚合查询性能

通过合理选择存储引擎,GaussDB(for PostgreSQL) 可灵活适配OLTP、OLAP及HTAP场景,平衡性能与成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2327461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英语口语 -- 常用 1368 词汇

英语口语 -- 常用 1368 词汇 介绍常用单词List1 (96 个)时间类气候类自然类植物类动物类昆虫类其他生物地点类 List2 (95 个)机构类声音类食品类餐饮类蔬菜类水果类食材类饮料类营养类疾病类房屋类家具类服装类首饰类化妆品类 Lis…

SpringBoot+Vue 中 WebSocket 的使用

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它使得客户端和服务器之间可以进行实时数据传输,打破了传统 HTTP 协议请求 - 响应模式的限制。 下面我会展示在 SpringBoot Vue 中,使用WebSocket进行前后端通信。 后端 1、引入 j…

关于依赖注入框架VContainer DIIOC 的学习记录

文章目录 前言一、VContainer核心概念1.DI(Dependency Injection(依赖注入))2.scope(域,作用域) 二、练习例子1.Hello,World!步骤一,编写一个底类。HelloWorldService步骤二,编写使用低类的类。GamePresenter步骤三&am…

Qt常用控件第一部分

1.控件概述 Widget 是 Qt 中的核⼼概念. 英⽂原义是 "⼩部件", 我们此处也把它翻译为 "控件" . 控件是构成⼀个图形化界⾯的基本要素. 像上述⽰例中的, 按钮, 列表视图, 树形视图, 单⾏输⼊框, 多⾏输⼊框, 滚动条, 下拉框等, 都可以称为 "控件"…

docker存储卷及dockers容器源码部署httpd

1. COW机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本依然存在,只是已经被读写层中该文件…

JMeter接口自动化发包与示例

前言 JMeter接口自动化发包与示例 近期需要完成对于接口的测试,于是了解并简单做了个测试示例,看了看这款江湖上声名远播的强大的软件-Jmeter靠不靠谱。 官网:Apache JMeter - Apache JMeter™ 1简介 Apache-Jmeter是一个使用java语言编写且开源&…

INFINI Console 极限控制台密码忘记了,如何重置?

在使用 INFINI Console(极限控制台)时,可能会遇到忘记密码的情况,这对于管理员来说是一个常见但棘手的问题。 本文将详细介绍如何处理 INFINI Console 密码忘记的情况,并提供两种可能的解决方案,帮助您快速…

汇编学习之《jcc指令》

JCC(Jump on Condition Code)指的是条件跳转指令,c中的就是if-else, while, for 等分支循环条件判断的逻辑。它包括很多指令集,各自都不太一样,接下来我尽量将每一个指令的c 源码和汇编代码结合起来看,加深…

从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.3.3低代码开发:快速构建行业应用(电商推荐与金融风控案例)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第四部分:工程实践与部署4.3.3 低代码开发:快速构建行业应用(电商推荐与金融风控案例)1. 低代码与AI结合的核心价值2. 电商推荐系统案例2.1 技术架构与实现2.2 性能…

基于vue框架的智能服务旅游管理系统54kd3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,景点信息,门票预订,酒店客房,客房预订,旅游意向,推荐景点,景点分类 开题报告内容 基于Vue框架的智能服务旅游管理系统开题报告 一、研究背景与意义 1.1 行业现状与挑战 传统系统局限性:当前旅游管理系统普遍存在信息…

用Python实现TCP代理

依旧是Python黑帽子这本书 先附上代码,我在原书代码上加了注释,更好理解 import sys import socket import threading#生成可打印字符映射 HEX_FILTER.join([(len(repr(chr(i)))3) and chr(i) or . for i in range(256)])#接收bytes或string类型的输入…

MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则

目录 一、索引概述 1.1 基本介绍 1.2 基本演示 1.3 特点及优势 二、索引结构 2.1 概述 2.2 二叉树 2.3 B-Tree 2.4 BTree 2.5 Hash 2.5.1 结构 2.5.2 特点 2.5.3 存储引擎支持 三、索引的分类 3.1 索引分类 3.2 聚集索引和二级索引 3.2.1 聚集索引和二级…

【CSS3】04-标准流 + 浮动 + flex布局

本文介绍浮动与flex布局。 目录 1. 标准流 2. 浮动 2.1 基本使用 特点 脱标 2.2 清除浮动 2.2.1 额外标签法 2.2.2 单伪元素法 2.2.3 双伪元素法(推荐) 2.2.4 overflow(最简单) 3. flex布局 3.1 组成 3.2 主轴与侧轴对齐方式 3.2.1 主轴 3.2.2 侧轴 3.3 修改主…

论坛系统的测试

项目背景 论坛系统采用前后端分离的方式来实现,同时使用数据库 来处理相关的数据,同时将其部署到服务器上。前端主要有7个页面组成:登录页,列表页,论坛详情页,编辑页,个人信息页,我…

宠物店小程序怎么做?助力实体店实现营销突破

宠物店小程序怎么做?助力实体店实现营销突破 ——一个宠物店老板的“真香”实战分享 ​一、行业现状:线下宠物店的“流量焦虑”​ 作为开了3年宠物店的“铲屎官供应商”,这两年明显感觉生意难做了:某宝9.9包邮的狗粮、某团“满…

《Mycat核心技术》第21章:高可用负载均衡集群的实现(HAProxy + Keepalived + Mycat)

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

深度学习Note.5(机器学习.6)

1.Runner类 一个任务应用机器学习方法流程: 数据集构建 模型构建 损失函数定义 优化器 模型训练 模型评价 模型预测 所以根据以上,我们把机器学习模型基本要素封装成一个Runner类(加上模型保存、模型加载等功能。) Runne…

从零开始设计Transformer模型(1/2)——剥离RNN,保留Attention

声明: 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】,结合自身的理解所作,旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源:【Shusenwang】的视频课程【RNN模型及NLP应用…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的缓存技术:使用 Redis 提升性能

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…

华为配置篇-BGP实验

BGP 一、简述二、常用命令总结三、实验 一、简述 IBGP 水平分割&#xff1a;从一个 IBGP 对等体学到的路由&#xff0c;不会再通告给其他的 IBGP 对等体。在一个 AS 内部&#xff0c;路由器之间通过 IBGP 交换路由信息。如果没有水平分割机制&#xff0c;当多个路由器之间形成…