gaussdb200 数据库设计

设计规范选择

​ 在实际生产过程中,尤其是在模型设计的过程中经常会涉及到范式化问题,我们分为范式化和逆范式化两种。

模型数据冗余性能
范式化数据没有冗余,更新容易。当表的数量比较多,查询设计需要很多关联模型(join)时,会导致查询性能低下。
逆范式化数据冗余将带来很好的读取性能 (因为不需要join很多表,而且通常反范式模型很少做更新操作)。需要维护冗余数据,从目前NoSQL的发展可以看到,对磁盘空间的消耗是可以接受的。

​ 范式化跟逆范式化所要求的正好相反,在逆范式的设计模式中允许适当的数据的冗余,用这个冗余去换取操作数据时间的缩短,用空间来换取时间,把数据冗余在多个表中,当查询时,可以减少或者是避免表之间的关联,从而提高sql执行效率,在GaussDB 200数据库中,数据均匀分布在每个节点上,数据处理(扫描、关联、分组等)负载被分摊到每个节点,利用了集群的优势,从而极大提升了业务查询性能。

行、列存储选择

​ 各自适用场景

  • 行存储
    1. 点查询,返回数据较少,基于索引的查询
    2. 增删改较多的场景
  • 列存储
    1. 统计分析类查询,group、join较多的场景
    2. 即席查询场景,查询条件列不确定,使用行存无法确定索引

数据分布方式

file

数据分布方式如上图分为复制表与分布表两种。

  • 复制表(replication)

    ​ 将表中的所有数据复制到每一dn节点上,适用于一些常用且较小的表

  • 分布表(hash散列)

    ​ 将表中指定字段(col2)进行hash运算后,生成对应的hash值,根据DN实例与哈希值的映射关系获得该元组的目标存储位置,适用于数据量较大的表(如图中T2) ,在实际生产过程中,合理选择分布键尤为重要

分布存储和并发查询是MPP架构数据库的主要优势所在。将一个大数据量表中的数据, 按合适分布策略分散存储在多个DN实例内,可极大提升数据库性能。

GaussDB 200支持如下表所示的数据分布策略:

策略描述适用场景
散列(Hash)将表中的数据通过hash方式散列到集群中的所有DN实例上。数据量较大的表。
复制(Replication)将表中的数据复制到所有DN实例 上,每个DN实例都拥有全量数据。数据量较小的表(10W行记录以下),根据集群数量酌情处理。

分布列选择策略:

  1. 尽量选择distinct值比较多的列,保证数据均匀分布,分布均匀是为了避免木桶效应,各个主机对等执行。

  2. 尽量选择Join列或group 列做分布列,尽量选择Join列或group列是为了避免数据节点之间数据流动, 提高性能。

file

当不指定表分布策略的时候,默认为分布表。

海汼部落原创文章,原文链接:http://www.hainiubl.com/topics/75659

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值