【GaussDB(DWS)】数据分布式存储-三种类型的表

这篇具有很好参考价值的文章主要介绍了【GaussDB(DWS)】数据分布式存储-三种类型的表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@toc

一、环境说明

  1. 华为数据仓库服务DWS,集群版本8.1.3.320
  2. 集群拓扑结构:
    【GaussDB(DWS)】数据分布式存储-三种类型的表,GaussDB DWS,GaussDB-DWS

二、数据分布式方式

DWS采用水平分表的方式,将业务数据表的元组打散存储到各个节点内。这样带来的好处在于,查询中通过查询条件过滤不必要的数据,快速定位到数据存储位置,可极大提升数据库性能。
水平分表方式将一个数据表内的数据,按合适分布策略分散存储在多个节点内,DWS支持如表1所示的数据分布策略。用户可在CREATE TABLE时增加DISTRIBUTE BY参数,来对指定的表应用数据分布功能。

分布式策略如下
【GaussDB(DWS)】数据分布式存储-三种类型的表,GaussDB DWS,GaussDB-DWS

三、实验验证

  1. 以下操作是在gsql上,使用系统用户dbadmin登录,登录语句如下:
    gsql -d postgres -p 8000 -h xxx.249.99.67 -U dbadmin -W xxxxx@1234 -r
    
    注意:在dws数仓下,如使用dbadmin登录,默认的schema是与用户同名的schema,即dbadmin,这点与openGauss和华为GaussDB 云数据库是有区别的,后两者如不指定的情况下使用的是public。
  2. 创建Replication复制表
    • 创建复制表
      create table t10(id int not null primary key,name varchar(50)) distribute by replication;
      
      提示如下:

      NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “t10_pkey” for table “t10”
      CREATE TABLE
      postgres=>

    • 查看表结构

      postgres=> \d+ t10;
      Table “dbadmin.t10”
      Column | Type | Modifiers | Storage | Stats target | Description
      --------±----------------------±----------±---------±-------------±------------
      id | integer | not null | plain | |
      name | character varying(50) | | extended | |
      Indexes:
      “t10_pkey” PRIMARY KEY, btree (id) TABLESPACE pg_default
      Has OIDs: no
      Distribute By: REPLICATION
      Location Nodes: ALL DATANODES
      Options: orientation=row, compression=no

    • 添加数据,添加6条元组
      insert into t10 values(1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6');
      
    • 查看集群数据节点
      SELECT node_name,node_type,node_host FROM pgxc_node where node_type='D';
      
      结果如下:
        node_name   | node_type |   node_host
      --------------+-----------+---------------
       dn_6001_6002 | D         | 172.16.80.96
       dn_6003_6004 | D         | 172.16.89.109
       dn_6005_6006 | D         | 172.16.90.239
      (3 rows)
      
    • 查看数据分布情况
      execute direct on(dn_6001_6002) 'select * from t10';
      execute direct on(dn_6003_6004) 'select * from t10';
      execute direct on(dn_6005_6006) 'select * from t10';
      
      结果如下:每个DN节点上都各自拥有6条数据,即全量数据
      postgres=> execute direct on(dn_6001_6002) 'select * from t10';
       id | name
      ----+-------
        1 | test1
        2 | test2
        3 | test3
        4 | test4
        5 | test5
        6 | test6
      (6 rows)
      
      
      postgres=> execute direct on(dn_6003_6004) 'select * from t10';
       id | name
      ----+-------
        1 | test1
        2 | test2
        3 | test3
        4 | test4
        5 | test5
        6 | test6
      (6 rows)
      
      
      postgres=> execute direct on(dn_6005_6006) 'select * from t10';
       id | name
      ----+-------
        1 | test1
        2 | test2
        3 | test3
        4 | test4
        5 | test5
        6 | test6
      (6 rows)
      
  3. 创建Hash表
    • 创建Hash表
      create table t11(id int not null,name varchar(50)) distribute by hash(id);
      
    • 查看表结构
      postgres=> \d+ t11
                              Table "dbadmin.t11"
       Column |         Type          | Modifiers | Storage  | Stats target | Description
      --------+-----------------------+-----------+----------+--------------+-------------
       id     | integer               | not null  | plain    |              |
       name   | character varying(50) |           | extended |              |
      Has OIDs: no
      Distribute By: HASH(id)
      Location Nodes: ALL DATANODES
      Options: orientation=row, compression=no
      
    • 添加测试数据
      insert into t11 values(1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6');
      
    • 查看数据分布情况
      postgres=> execute direct on(dn_6001_6002) 'select * from t11';
       id | name
      ----+-------
        3 | test3
      (1 row)
      
      
      postgres=> execute direct on(dn_6003_6004) 'select * from t11';
       id | name
      ----+-------
        1 | test1
        2 | test2
        4 | test4
        5 | test5
      (4 rows)
      
      
      postgres=> execute direct on(dn_6005_6006) 'select * from t11';
       id | name
      ----+-------
        6 | test6
      (1 row)
      
      注意:这里看起来是没有均衡分布的,因其采用的是一致性hash算法,即hash(文件或服务器ip) % 232,是对232取模,具体算法请参考:一致性hash算法
      一般Hash表针对的是大数据量的情况下,一般是至少1000000条数据。
  4. 创建Roundrobin 轮询表
    • 创建表,这种创建Roundrobin表的方式是一种隐式创建法。
      create table t12(id int not null,name varchar(50));
      
      会打印提示信息:
      NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default.
      HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
      
    • 查看表结构
      postgres=> \d+ t12
                                      Table "dbadmin.t12"
       Column |         Type          | Modifiers | Storage  | Stats target | Description
      --------+-----------------------+-----------+----------+--------------+-------------
       id     | integer               | not null  | plain    |              |
       name   | character varying(50) |           | extended |              |
      Has OIDs: no
      Distribute By: ROUND ROBIN
      Location Nodes: ALL DATANODES
      Options: orientation=row, compression=no
      
    • 添加数据
      insert into t12 values(1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6');
      
    • 查看数据分布情况
      postgres=> execute direct on(dn_6001_6002) 'select * from t12';
       id | name
      ----+-------
        3 | test3
        6 | test6
      (2 rows)
      
      
      postgres=> execute direct on(dn_6003_6004) 'select * from t12';
       id | name
      ----+-------
        1 | test1
        4 | test4
      (2 rows)
      
      
      postgres=> execute direct on(dn_6005_6006) 'select * from t12';
       id | name
      ----+-------
        2 | test2
        5 | test5
      (2 rows)
      
    • 补充:显示创建roundrobin表,如下所示:
      create table t13(id int not null,name varchar(50)) with(orientation=row) distribute by roundrobin;
      
      查看表结构:
      postgres=> \d+ t13
                                      Table "dbadmin.t13"
       Column |         Type          | Modifiers | Storage  | Stats target | Description
      --------+-----------------------+-----------+----------+--------------+-------------
       id     | integer               | not null  | plain    |              |
       name   | character varying(50) |           | extended |              |
      Has OIDs: no
      Distribute By: ROUND ROBIN
      Location Nodes: ALL DATANODES
      Options: orientation=row, compression=no
      

三种类型表测试完毕,感受是纸上得来终觉浅,绝知此事要躬行。实践出真知,理论需要实践来证明,学习,道阻且长。继续加油吧!!文章来源地址https://www.toymoban.com/news/detail-542037.html

到了这里,关于【GaussDB(DWS)】数据分布式存储-三种类型的表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 大数据--分布式存储 Hadoop

    大数据--分布式存储 Hadoop

    Hadoop指Apache这款开源框架,它的核心组件有: HDFS(分布式文件系统):解决海量数据存储 MAPREDUCE(分布式运算编程框架):解决海量数据计算 YARN(作业调度和集群资源管理的框架):解决资源任务调度 目前主流的hadoop框架已经迭代更新到hadoop3.x的版本了,本篇的介绍也是

    2024年01月17日
    浏览(7)
  • 分布式系统架构设计之分布式数据存储的安全隐私和性能优化

    分布式系统架构设计之分布式数据存储的安全隐私和性能优化

    在前面分布式系统部分,有对安全性做过介绍,如前面所述,在分布式系统中,确保系统的安全性和隐私是至关重要的。安全性关注系统的防护措施,而隐私是关注用户的个人信息保护。 身份认证:确保用户和系统组件的身份是合法的,通过通过密码、令牌或证书实现 授权

    2024年02月02日
    浏览(31)
  • 【分布式存储】数据存储和检索~倒排索引&pageRank

    【分布式存储】数据存储和检索~倒排索引&pageRank

    通过前两篇的文章介绍,B+树主要针对的是读多写少的场景,而LSM针对的是写多读少的场景,其实在日常开发中,我们会将数据存储到搜索引擎中,然后进行数据的搜索,这种场景其实针对的是快速根据查询。对于MySQL这种B+树结构来说,其实没有办法保证快速查询。要

    2024年02月12日
    浏览(8)
  • Navicat 技术指引 | 适用于 GaussDB 分布式的用户/权限功能

    Navicat 技术指引 | 适用于 GaussDB 分布式的用户/权限功能

     Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等)。这使得Nav

    2024年02月05日
    浏览(8)
  • Navicat 技术指引 | 适用于 GaussDB 分布式的查询功能

    Navicat 技术指引 | 适用于 GaussDB 分布式的查询功能

     Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等)。这使得Nav

    2024年02月05日
    浏览(8)
  • 分布式文件存储与数据缓存 FastDFS

    分布式文件存储与数据缓存 FastDFS

    单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源。如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分。例如: resourcesstaticfile 、 resourcesstaticimg 等。 优点 :便利,

    2024年02月16日
    浏览(10)
  • 初识 Redis - 分布式,内存数据存储,缓存

    初识 Redis - 分布式,内存数据存储,缓存

    目录 1. 什么是 Redis 1.1 Redis 内存数据存储 1.2 Redis 用作数据库 1.3 Redis 用作缓存 (cache) 1.4 用作消息中间件 The open source , in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. 开源的 内存数据存储 ,被数百万开发人员用作 数据库、缓存、流引擎

    2024年02月15日
    浏览(31)
  • Flink与GoogleCloudBigtable:将数据存储在分布式列存储中

    作者:禅与计算机程序设计艺术 随着互联网和移动互联网的普及,海量的数据需要实时地被处理分析,而传统的关系型数据库已经无法满足需求。为了能够快速高效地对海量数据进行查询分析、数据采集、数据预处理等操作,分布式数据库应运而生。其中一种分布式数据库

    2024年02月12日
    浏览(18)
  • tim实践系列——分布式数据存储与动态数据库扩容

    tim实践系列——分布式数据存储与动态数据库扩容

    前言: tim是去中心化分布式即时通讯引擎。不依赖于任何中心服务器,采用去中心化分布式架构,解决传统中心化通讯方式的问题,去中心化分布式架构的通讯引擎的各个节点之间相互连接,形成一个庞大的分布式网络。可以轻松地扩展服务规模,支持更多的用户和业务需求

    2024年02月02日
    浏览(8)
  • 数据流处理中的分布式存储:保护数据隐私和安全

    作者:禅与计算机程序设计艺术 随着数据量的爆炸式增长,如何高效地处理和存储数据成为了当前热门的研究方向。数据流处理作为一种处理数据的方法,能够在实时性、流式性和可扩展性等方面提供优势。在数据流处理中,分布式存储是保障数据隐私和安全的重要手段。本

    2024年02月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包