白帆
摘 要 数据库的扩展是分布式存储的关键技术,本文对sharding技术的适用环境进行了研究,介绍了一种基于存储分片技术对于数据库系统扩展能力的提升方法。
关键词 分布式 存储 分片 扩展
中图分类号:TP311.13 文献标识码:A
0引言
如何提升数据库的扩展能力一直是数据库技术的核心问题,随着互联网高速发展,商业数据库软件对数据库的自动扩展能力显示出不适应的情况,暴露出一些不足之处,本文结合sharding碎片技术,对该技术适合的应用领域进行分析研究,提出了一种存储分片扩展的新方案,改进分布式数据库存储管理,提升扩展能力。
1 分片技术介绍
1.1 sharding 的定义
shard即“碎片”,sharding也称作数据切分或分区。是指通过某种条件,把同一个数据库中的数据分散到多个数据库或多台机器上,以减小单台机器压力。
1.2 常见的sharding切分算法
hash切分
hash放置是以每条数据的一个域或者多个域(一般都选择主键或者unique键)作为划分键K,假设总共的节点数量为N (1-N), 那么数据被分配到的节点编号为:
n = hash(k) mod N
hash划分实现非常简单,只要所采用的哈希函数能把值算的足够均匀,那么数据将会很均匀的被切分到各个节点,而且几乎不需要元数据就可以进行查询的路由。但是,hash切分也存在很明显的两个缺点:
(1)实用性较差,由于划分键的值被hash化,生成一个与输入分布无关、输出均匀的值,所以每个节点内数据之间并没有什么逻辑相关性,关联数据集中性差,这样不能高效的支持一些具有范围性或分类性的服务,比如区域性服务、以时间范围为约束的服务等。……