SunlightDB 无限扩展

来源:互联网 发布:筑业市政软件 编辑:程序博客网 时间:2024/06/06 01:06
随着数据量和吞吐量的增长,运维人员能够直接通过增加本地或公有云服务器,快速增加SunlightDB系统容量。SunlightDB是一种“分布式”数据库,可部署到多个“集群”服务器上,“集群”是由多个具有同等功能的SunlightDB服务器实例组成。

SunlightDB数据存储的单位是表和行,每个表都有严格的模式和强制主键,强制主键用于自动将表拆分为多个同等大小的分区,每个分区存储在集群中的多个服务器上。关于分区算法,主要有以下几种:
(1)模哈希算法
模哈希算法定位表中的每一行需要的时间量相同,无需考虑表中的总行数,并且我们只需输入行的ID和服务器总数。但是,该算法无法处理一个不断增长的数据集。如果我们不断地向表中添加更多的行,最终我们将增加服务器总数,来增加更多的容量,但是改变服务器总数也就改变了模运算的结果。
(2)一致性哈希算法
一致性散列仅能支持精确查询,就是说,如果我们已经知道行的ID,我们只能快速找到一行。如果我们要查找ID范围内所有行的位置,例如ID在10到50之间的所有行,我们将扫描整个表格。因此,一致性散列特别适用于不需要范围扫描的键/值数据库。另外,在更改服务器数量后,我们仍然需要复制大约1 / N(服务器总数)的数据。
(3)BigTable 算法方案

基本上BigTable是经典分裂算法的应用。初始情况下,每个表只含一个Tablet,随着表数据的增长,它会被自动分割成多个Tablet。同时,Master服务器会负责控制是否需要将Tablet转交给其他负载较轻的Tablet服务器,从而保证整个集群的负载均衡。BigTable方案的优点是它支持范围扫描,并且我们向集群添加服务器不会导致数据重新平衡。

SunlightDB分区,选择BigTable方案,并不是说这个方案或者说算法更好——算法无优劣,关键看场景。


0 0