数据分区设计(0)-前言
【摘要】 对大数据集或非常高吞吐量,仅复制还不够,还需将数据拆分,成为分区(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)