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

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

分区 (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如何将请求路由到正确的分区并执行查询

  1. 一种故意将大型DB分解成小型DB的方式。和 网络分区(network partitions, netsplits) 无关,这是节点之间网络故障的一种。 ↩︎

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...