数据分区设计(0)-前言

举报
JavaEdge 发表于 2022/08/31 23:44:08 2022/08/31
【摘要】 对大数据集或非常高吞吐量,仅复制还不够,还需将数据拆分,成为分区(partitions),也称分片(sharding)[^i]。[^i]: 一种故意将大型DB分解成小型DB的方式。和 网络分区(network partitions, netsplits) 无关,这是节点之间网络故障的一种。分区 (partition),对应MongoDB、ES中的shard,HBase 的Region,Big...

对大数据集或非常高吞吐量,仅复制还不够,还需将数据拆分,成为分区(partitions),也称分片(sharding)[^i]。

[^i]: 一种故意将大型DB分解成小型DB的方式。和 网络分区(network partitions, netsplits) 无关,这是节点之间网络故障的一种。

分区 (partition),对应MongoDB、ES中的shard,HBase 的Region,Bigtable的tablet,Cassandra的vnode,Couchbase的vBucket。但分区 (partitioning)更普遍。

0.1 定义

每条数据(或每条记录,每行或每个文档)属于且仅属于某特定分区。每个分区都能视为一个完整小型数据库,虽然数据库可能存在跨分区操作。

0.2 目的

提高可扩展性。不同分区可放在一个无共享集群的不同节点。这样的一个大数据集可分散在更多磁盘,查询负载也随之分布到更多处理器。

单分区查询时,每个节点对自己所在分区查询可独立执行查询操作,添加更多节点就能提高查询吞吐量。大型复杂查询尽管比较困难,但也能做到跨节点并行处理。

分区DB在1980s由Teradata、NonStop SQL等产品率先推出,最近因NoSQL和基于Hadoop的数仓重新被关注。有些系统是为事务处理而设计,有些则用于分析:这种差异会影响系统运作方式,但是分区基本原理都适用于这两种工作方式。

  • 本文先介绍分割大型数据集的方法,并观察索引如何与分区配合
  • 然后讨论rebalancing,若想添加、删除集群中的节点,则须rebalancing
  • 最后,概述DB如何将请求路由到正确的分区并执行查询
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。