SequoiaDB数据域及存储规划
1
背景
近年来,企业的各项业务发展迅猛,客户数目不断增加,后台服务系统压力也越来越大,系统的各项硬件资源也变得非常紧张。因此,在技术风险可控的基础上,希望引入大数据技术,利用大数据技术优化现有IT系统实现升级改造,搭建一个统一存储和管理历史、近线数据的服务平台,同时能够对外支持高并发、低延时的数据查询服务,以提高IT系统的计算能力,降低IT系统的建设成本,优化IT系统的服务体系,为各个业务部门提供更加优质的IT服务。
这类服务平台在整个IT系统架构中实质上是一个为核心业务系统减负的系统。SequoiaDB 巨杉数据库支持海量分布式数据存储,并且支持垂直分区和水平分区,利用这些特性可以将历史、近线数据存储到 SequoiaDB 中,并能够对外支持高并发、低延时的数据查询服务。本文主要讲解如何利用巨杉数据库域的特性在历史、近线数据应用场景下进行存储规划已满足业务系统对性能、存储、维护等方便的要求。
2
相关概念
多维度数据分区
SequoiaDB 支持水平和垂直方式分区。采用散列(hash)或范围(range)水平分区是将数据分布至多个节点,加大数据吞吐量, 加速数据查询和写入;采用范围(range)垂直分区是在一个节点内将数据逻辑划分为多个区间,每个区间作为独立的存储单元,减少查询时网络I/O, 进一步加速查询。
水平分区
散列水平分区,原理是将选择的分区键进行 hash 运算,根据 hash 值将数据分发至相应分区。范围水平分区则是直接匹配分区键和所对应的范围,存放到相应的分区。两种分区方式各有适用的场景,和运行的业务息息相关。一般不建议采用范围水平分区,除范围分区键(如月)能保证数据均衡(如每月的数据量级一致)。如图2-1所示。
图2-1. SequoiaDB 水平分区
垂直分区
图2-2. SequoiaDB 垂直分区
复制组和域
采用3副本,按磁盘部署数据节点,每台机器部署9个数据节点,3台机器横向组成数据组,共9个数据组。如图域1包括数据组1-3,域2包括数据组5-9,域3包括数据组1-6,因此域在逻辑上由数据组组成,并且组成的数据组可以重叠。
3
业务场景
4
数据域划分方式
5
利用数据域水平扩展集群
目前,企业的部分业务系统结构化数据年增长量较大并且数据越来越多。在业务系统投产后,随着业务量的增加集群可使用容量逐渐变小,因此在业务系统接入集群前需考虑存储容量耗尽后整个集群的水平扩展。SequoiaDB 是分布式数据库,因此可以通过集群的扩容实现集群性能的近线性增长。而通过扩容后主要解决两个问题是数据存储的容量问题和整个集群的性能问题。因为数据量的不断增长及上线后的推广使用,所以需要进行扩容来提升集群性能及增加数据存储空间。
SequoiaDB 在集群的管理上定义了数据域概念,一个数据域可以将多个数据组包含进来。一个集群可以根据不同的业务系统来划分不同的数据域,不仅实现将不同业务系统数据在物理层面的隔离存储,同时也实现了不同业务系统数据的统一调度管理,而且以后的集群扩容也可以根据域的使用需求而只针对此域进行集群扩容。
所以在进行扩容时,我们需要结合 SequoiaDB 数据域和业务系统需求进行扩容规划及实施。结构化数据在扩容时,可针对结构化数据所在数据域增加数据组再进行数据均衡切分到新扩容的机器上;或者使子表分散在单独的集合空间中,并使子表对应的集合空间所属数据组在新扩容机器的数据组上。
6
具体案例
图6-1
存储规则
根据上述业务系统的信息,可将这类系统划分为高并发海量存储业务场景。结合数据域划分方式以及未来扩容需求,该业务系统的结构化数据存储在接入时数据域划分规则如下:
1、 海量数据高并发查询业务系统使用独立的域进行存储;
2、 使用主子表按照时间切分,每个子表按照ID散列分布到域所对应的所有机器上;
3、 海量数据高并发查询业务系统子表单独使用集合空间;
4、 数据量较小或者并发查询较小的业务系统可以共用域;
5、 结构化域扩容可使用增加数据组再进行数据均衡切分到新扩容的机器上,或者使子表分散在单独的集合空间中,并使子表对应的集合空间所属数据组在新扩容机器的数据组上。
集合空间和集合设计
7
总结
相关文章