为什么要分区?
数据的复制是冗余的过程,冗余会增加可用性,并且可以有效均衡读取负载。而数据的分区是一个整体转换为局部的过程,这种拆解就像你拥有大量图书,但你的书架放不下,所以需要再加几个书架存储是一个道理。将整体拆分,局部存储在多个较小空间内。这种思想映射到计算机上也是一样的,当数据量过大,单个存储节点不足与存储这些数据(更大容量的磁盘没有或者太贵)时,人们想要继续存储就需要将数据集拆解并规整。这就是数据分区的意义,它是用来提高数据系统的可扩展性而引入的技术方法。
(想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)
如何分区?
分区的关键在于采用一种统一的规则,这种规则可以计算出将数据放在哪个节点,并且在读取时也能计算出去哪个节点读取数据。
要做到这几点目前有三种分区方式:
-
按key的范围进行分区 当要存储数据时,我们取数据中的某一个字段作为分区key,按这个字段的范围进行分区例如自增的id值,0-10000存储在A节点上,10001-20000存储在B节点上,那么基于这样的规则我们可以高效的存取分区中的数据,并且自然的支持按区间查找(key的存储是有序的),只要区间的范围仅在一个分区时,那么区间查找就只会访问一个分区,除非查找范围跨越多个分区。但是问题在于当数据的