天天看点

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

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

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

0.1 定义

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

0.2 目的

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

  • 本文先介绍分割大型数据集的方法,并观察索引如何与分区配合
  • 然后讨论rebalancing,若想添加、删除集群中的节点,则须rebalancing
  • 最后,概述DB如何将请求路由到正确的分区并执行查询
  1. 一种故意将大型DB分解成小型DB的方式。和网络分区(network partitions, netsplits) 无关,这是节点之间网络故障的一种。 ​​↩︎​​