【GaussDB分布式特性】

news2024/11/25 12:30:28

GaussDB分布式特性

    • 实验环境
    • 一、分布式架构
    • 二、分片和分区

实验环境

  1. 华为云GaussDB云数据库,规则如下:
    在这里插入图片描述
  2. 集群拓扑结构,如下:
    在这里插入图片描述

一、分布式架构

  1. 逻辑架构
    在这里插入图片描述

  2. 常用部署方式
    在这里插入图片描述
    部署说明:
    1.双AZ采用带第三方仲裁方式部署,即独立Server9网络域
    2.4C4D4副本,一共需要9台物理机(4+4+1)
    3.DN主备交叉部署,主统一在AZ1
    4.主机故障优先在同AZ切换
    5.核心组件两个AZ对称,支持跨AZ双活;

二、分片和分区

  1. 分片:

    • REPLICATION:表的每一行存在所有数据节点(DN)中,即每个数据节点都有完整的表数据。
    • HASH:对指定的列进行Hash,通过映射,把数据分布到指定DN。
    • RANGE:对指定列按照范围进行映射,把数据分布到对应DN。
    • LIST :对指定列按照具体值进行映射,把数据分布到对应DN。
  2. 分区:
    如RANGE:类似二级分区,单机上的分区功能

  3. 两者关系:
    在这里插入图片描述

  4. 数据分片示例

    • 查询节点名称
      SELECT * FROM pgxc_node where node_type='D';
      
      结果如下:
      postgres=> SELECT * FROM pgxc_node where node_type='D';
           node_name     | node_type | node_port |   node_host   | node_port1 |  node_host1   | hostis_primary | nodeis_primary | nodeis_preferred |   node_id   | sctp_port | control_port | sctp_port1 | control_port1 | nodeis_central | nodeis_active
      -------------------+-----------+-----------+---------------+------------+---------------+----------------+----------------+------------------+-------------+-----------+--------------+------------+---------------+----------------+---------------
       dn_6001_6002_6003 | D         |     40000 | 192.168.0.230 |      40000 | 192.168.0.230 | t              | f              | f                | -1072999043 |     40002 |        40003 |          0 |             0 | f              | t
       dn_6004_6005_6006 | D         |     40000 | 192.168.0.193 |      40000 | 192.168.0.193 | t              | f              | f                |  -564789568 |     40002 |        40003 |          0 |             0 | f              | t
       dn_6007_6008_6009 | D         |     40000 | 192.168.0.122 |      40000 | 192.168.0.122 | t              | f              | f                |  1532339558 |     40002 |        40003 |          0 |             0 | f              | t
      (3 rows)
      
    • 创建组
      create node group group_dn1_dn2 with(dn_6007_6008_6009,dn_6004_6005_6006);
      
    • 建表到指定组
      create table test(id int not null) distribute by hash(id) to group group_dn1_dn2;
      
      在这里插入图片描述
      create table test1(id int not null) 
      DISTRIBUTE BY RANGE(id)(
      slice s1 values less than(10) datanode dn_6004_6005_6006,
      slice s2 values less than(20) datanode dn_6007_6008_6009,
      slice s3 values less than(30) datanode dn_6001_6002_6003,
      slice s4 values less than(40) datanode dn_6001_6002_6003
      );
      
      在这里插入图片描述
    • test表准备数据
      insert into test values(1),(2),(3),(4);
      
    • test表的数据分布查询
      execute direct on(dn_6001_6002_6003) 'select * from test';
      execute direct on(dn_6004_6005_6006) 'select * from test';
      execute direct on(dn_6007_6008_6009) 'select * from test';
      
      在这里插入图片描述
      注意:这里的test表在创建时指定了所属node group,所以该表只在在两个节点上存在。
    1. test表的数据分布情况

      select b.node_name,a.count from(select xc_node_id,count(*) from test group by xc_node_id) a,pgxc_node b where a.xc_node_id=b.node_id;
      

      在这里插入图片描述

    2. test1表进行测试

      insert into test1 values(1),(10),(20),(30),(35),(39);
      execute direct on(dn_6001_6002_6003) 'select * from test1';
      execute direct on(dn_6004_6005_6006) 'select * from test1';
      execute direct on(dn_6007_6008_6009) 'select * from test1';
      

      在这里插入图片描述
      test1是按照range分片,得出重要结论分片的范围是左闭右开的区间即"[ )"
      test1表的数据分布情况:

      select b.node_name,a.count from(select xc_node_id,count(*) from test1 group by xc_node_id) a,pgxc_node b where a.xc_node_id=b.node_id;
      

      在这里插入图片描述

  5. 数据分区示例

    • 创建分片分区表

      create table test_part(id int not null,age int) 
      DISTRIBUTE BY RANGE(id)(
      slice s1 values less than(10) datanode dn_6001_6002_6003,
      slice s2 values less than(20) datanode dn_6004_6005_6006,
      slice s3 values less than(30) datanode dn_6007_6008_6009,
      slice s4 values less than(40) datanode dn_6007_6008_6009
      )
      PARTITION BY RANGE(age)(
      PARTITION p1 values less than(10),
      PARTITION p2 values less than(20),
      PARTITION p3 values less than(30),
      PARTITION p4 values less than(40)
      );
      

      查看表结构:
      在这里插入图片描述
      插入测试数据:

      insert into test_part values(1,5),(2,9),(10,10),(19,19),(20,20),(30,30);
      

      数据分布查询:

      execute direct on(dn_6001_6002_6003) 'select * from test_part';
      execute direct on(dn_6004_6005_6006) 'select * from test_part';
      execute direct on(dn_6007_6008_6009) 'select * from test_part';
      

      在这里插入图片描述

      test_part表的数据分布情况:

      select b.node_name,a.count from(select xc_node_id,count(*) from test_part group by xc_node_id) a,pgxc_node b where a.xc_node_id=b.node_id;
      

      在这里插入图片描述

由此,我们可以看出GaussDB中表是按照分片进行存储,且可在分片下进行分区存储。

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

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

相关文章

利用低代码平台实现协同办公,助力企业提升效益

概要:本文介绍了协同办公的作用,以及利用低代码平台实现协同办公的优势。同时也分享了天翎为华晨汽车打造的低代码协同工具,帮助企业提高管理效率,改善运营模式,提升产品质量及生产精益化。展示了咨询库、原料质量录入…

无锁队列ringbuff实现以及性能

文章目录 一、使用场景二、对比有锁优势三、无锁队列实现方式四、循环队列实现1)数据结构设计3)代码实现4)性能测试5)总结 一、使用场景 无锁队列主要适用于高并发场景或者对性能要求较高的场景,主要使用场景有如下几…

pytorch的permute(dims) 函数的功能详解

有三块 二维矩阵 如下 把二维矩阵堆叠起来,就是三维 矩阵 这样的矩阵 从x方向看(0维) 有三块 记为3,每块从y方向看(1维)的行是3,从z方向看(2维)列也是3,故三…

计算机中丢失mfc140.dll怎么解决?mfc140.dll是什么文件?

在计算机运行软件或者游戏的时候,提示mfc140.dll丢失,无法正常启动运行。 mfc140.dll是Windows操作系统中用于支持C编程语言的一个动态链接库,它包含了C运行时库的一些基本功能。用于支持Microsoft Visual Studio的MFC(Microsoft …

论文解读:FastSAM | Fast Segment Anything | 基于yolov8-seg实现 比SAM快50倍

发表时间:2023.06.21 论文地址:http://export.arxiv.org/pdf/2306.12156 项目地址:https://github.com/CASIA-IVA-Lab/FastSAM 最近提出的任意分割模型(SAM)在许多计算机视觉任务中产生了重大影响。它正在成为许多高级…

NIO总结

简要介绍 NIO(Non-blocking IO)是Java 1.4版本开始引入的一个新的IO API,旨在代替传统IO,它引入了缓冲区和通道的概念,通过选择器实现多路复用。 传统IO会区分字节流InputStream和OutputStream以及字符流Reader和Wri…

GD32 时钟和晶振修改

芯片型号:gd32f470zi 库版本:GD32F4xx_Firmware_Library_V3.0.4 当需要修改外部晶振和主频时需要修改到以下几个地方 1.gd32f4xx.h //此宏定义为我们实际使用的外部晶振频率,此处改为实际使用的25M #define HXTAL_VALUE ((uint32_t)2…

单片机学习 13-I2C_EEPROM

I2C-EEPROM 实验 ​ 这一章我们来学习如何使用 51 单片机的 IO 口模拟 I2C 时序,并实现与AT24C02(EEPROM)之间的双向通信。开发板板载了 1 个 EEPROM 模块,可实现IIC 通信。本章要实现的功能是:系统运行时&#xff0c…

如何排查 Electron V8 引发的内存 OOM 问题

经过长达大半年时间的崩溃治理后,基于 Electron 框架开发的新版 PC 淘宝直播推流客户端的稳定性终于赶超基于QT 框架开发的旧版本了。剩下的崩溃问题中有 40% 是跟内存 OOM 有关,其中 V8FatalErrorCallback js heap OOM 问题整整困扰了我一个多月。历经千…

Pytorch--模型微调finetune--迁移学习 (待继续学习)

https://www.bilibili.com/video/BV1Z84y1T7Zh/?spm_id_from333.788&vd_source3fd64243313f29b58861eb492f248b34 主要方法 torchvision 微调timm 微调半精度训练 背景(问题来源) 解决方案 大模型无法避免过拟合,

嵌入式综合性开源项目分享

不定期有小伙伴问: 哪里有好的嵌入式项目? 怎么才能提高编程水平? 有实战项目可以分享一下吗? 目录 第一:嵌入式综合Awesome Embedded 第二:多功能按键MultiButton 第三:软件定时器模块M…

计算机网络学习笔记-应用层

目录 概述 客户-服务器方式(C/S) 对等方式(P2P) 域名系统DNS 域名 四种类型 根域名服务器 顶级域名服务器 权限域名服务器 本地名服务器 域名解析过程 万维网WWW 超媒体与超链接 工作方式 URL(统一资源…

Spring Boot 中的 WebSocketMessageBrokerConfigurer

Spring Boot 中的 WebSocketMessageBrokerConfigurer 在现代 Web 应用程序中,WebSocket 已成为一种流行的通信协议,它允许客户端和服务器之间实时双向通信。在 Spring Boot 中,我们可以使用 WebSocketMessageBrokerConfigurer 接口来配置 We…

vivo 自研鲁班分布式 ID 服务实践

作者:vivo IT 平台团队- An Peng 本文介绍了什么是分布式ID,分布式ID的业务场景以及9种分布式ID的实现方式,同时基于vivo内部IT的业务场景,介绍了自研鲁班分布式ID服务的实践。 一、方案背景 1.1 分布式ID应用的场景 随着系统的…

【Servlet】HttpServletRequest、HttpServletResponse

目录 🎁1 HttpServletRequest 💥1.1 通过 query string 来进行传递 🐷1.2 通过 body (form) 来进行传递 🛸1.3 通过 body(json) 来进行传递 🍘2. HttpServletResponse 👶2.1 为响应设置状态码 200 …

JVM 常量池

一、常量池使用 的数据结构 常量池底层使用HashTable key 是字符串和长度生成的hashValue,然后再hash生成index, 改index就是key;Value是一个HashTableEntry; 1、key hashValue hash string(name, len) index hash to…

LeetCode 打卡day48--打家劫舍I, II, III

一个人的朝圣 — LeetCode打卡第48天 知识总结 Leetcode 198. 打家劫舍题目说明代码说明 Leetcode 213. 打家劫舍 II题目说明代码说明 Leetcode 337. 打家劫舍 III题目说明代码说明 知识总结 今天全是打家劫舍系列的题目, 还挺有意思的 Leetcode 198. 打家劫舍 题目链接 题目…

SpringBoot配置

1.配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.propertiesapplication.yml 配置文件的作用:修改SpringBoot的自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML 是一个标记语言;不是…

一步一步学OAK之三:实现RGB相机场景切换

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 遍历所有场景模式和特效模式Setup 5: 创建pipelineSetup 6: 创建节点Setup 7: 连接设备并启动管道Setup 8: 创建与DepthAI设备通信的输入队列和输出队列Setup 9: 定义putText函数Setup 10: 主循环获取视…

SpringBoot3【① 快速入门 示例+基本框架】

SpringBoot3-特性介绍和快速入门 1、简介 1. 前置知识 Java17Spring、SpringMVC、MyBatisMaven、IDEA 2. 环境要求 环境&工具版本(or later)SpringBoot3.0.5IDEA2021.2.1Java17Maven3.5Tomcat10.0Servlet5.0GraalVMCommunity 22.3Native Build …