DDIA阅读笔记ch6分区

1.分区和复制

复制是指把相同的数据冗余多份,是一种保障;分区是指一份数据很大大家一起保存,有一点像是连城诀里的师兄弟三人一起保存剑谱。

2.分区方法

如果是随机分区虽然存储上是容易了,但是检查的时候需要搜索所有节点,事实上是把压力给到了查询,可以使用关键字哈希分区的方法。

使用关键字哈希类似从a到z区分的多本百科全书、或者史记资治通鉴这些按照年代分类的书籍,比如第二本是900-1000年,如果我们要查961年的事情,就在这本书里去查。

关键字哈希一定程度上解决了负载均衡的问题,但是如果数据本身是倾斜的,比如我们的所有数据都是关于万历十五年的事情,那如果要查某一件具体的事情我们就只能在这本书里一点一点全部去查。

针对这种数据本身的倾斜的一种解决方法是可以在数据前面加上伪随机数来区分,仍然是好处是能分区了缺点是要查所有这些分区。

3.分区数量

分区数量和节点数量如果是一一对应的有一个缺点,即节点的增加和删除,都可能改变key的映射,导致要迁移过多的数据,这也是一致性哈希解决的问题即尽量减少改变key的映射。

可以采用固定数量的分区,这样一旦key确定了,分区确定了就不会改变映射关系,难点是分区数量的选择,好处是一个节点可以对应多个分区,在节点上下线的过程中迁移的数据少。

相关推荐
海绵宝宝转agent6 分钟前
leetCode100算法开源笔记分享
笔记·算法
91刘仁德1 小时前
Linux网络编程从入门到实战:UDP/TCP协议与socket编程全解析
linux·网络·笔记·tcp/ip·udp
@Mike@1 小时前
13-数据库学习笔记(查询执行处理模型)
数据库·笔记·学习
Go Work1 小时前
实体类字段用 @Value 赋了默认值,取出来还是 null?
经验分享·笔记
白杨尚青1 小时前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
做运维的阿瑞2 小时前
mysql数据库视图笔记:创建、修改、删除与适用场景
数据库·笔记·mysql
@Mike@3 小时前
12-数据库学习笔记(五种连接算法)
数据库·笔记·学习
韩明君3 小时前
alacrity学习笔记
笔记·学习
坤坤子吖3 小时前
Python基础语法学习:函数
开发语言·笔记·python·学习
91刘仁德3 小时前
HTTPS 加密原理与 CA 数字证书:从对称加密到完整通信流程
网络·笔记·网络协议·http·https