《数据密集型系统应用》笔记(五)

51 阅读1分钟

《数据密集型系统应用》笔记(五)

分区

大数据量的场景

[TOC]

分区与复制

image-20240617174216308.png

某个分片的是主某些分片是从;

注意数据倾斜

skew

分区方案-键的范围

例如字典序

分区方案-键的散列

如何理解? 对键值先进行hash 再分区

分片与次级索引

分片确实和二级索引是一个意思

文档ID分区

image-20240617193921054.png

  • 缺点是当业务语义时会带来乱序;比如red分在了两个分区
  • 又叫分散/聚集(scatter/gather)
  • MongoDB,Riak 【15】,Cassandra 【16】,Elasticsearch 【17】,SolrCloud 【18】和VoltDB 【19】都使用文档分区二级索引

关键词term二级索引

image-20240617194257678.png 好处

  1. 读取效率,相同业务的聚合在一个分区;

坏处:

  1. 写入较慢;

分区再平衡 rebalance

目的: 1.减少数据倾斜 2.CPU扩容,增加吞吐; 3.存储扩容,增加数据容量; 4.故障;

方案一: 反面(bad)hash取模; 难以扩容,发生变化是需要大量数据进行迁移;

方案二: 固定数量分区; 然后分配槽位,这是redis集群的方式; 扩容时只需要迁移部分数据,并更新slot映射;

方案三: 动态分区; 按键的范围进行分区的数据库(如HBase和RethinkDB)会动态创建分区。 当分区增长到超过配置的大小时(在HBase上,默认值是10GB),会被分成两个分区, 这个方案类似是一致性hash