集群部署的海量数据特征,导致集群部署失败后重新部署的成本很高。因此,在实际部署集群前,需要对将在集群上部署应用的数据模型(schema),数据容量,数据更新率,数据生命期,数据安全策略,查询性能要求等诸多方面进行分析和优化。
1.1.1 数据模型规划
Gcluster支持复制(replicated)和分布(Distributed)两种数据部署方式,针对具体应用的schema,必须针对具体应用中的每个表,根据其数据性质及访问特征,确定每个表的数据分布方式。复制表在集群中每个节点都保存一份副本,在数据加载时需占用更多的网络带宽,同时占用更多的存储空间以保存更多的数据副本。分布表可将数据分布到gcluster中的所有节点,可以为查询提供充分的数据并行能力,提供最大的查询并发度及性能。
在星型模型中,一般将维度表设为复制表,事实表设为分布表。例如,在ssb模型中,lineorder表设为分布表,其他维度表设为复制表。
对于分布表,还需要确定数据的高可用定义,即确定gcluster中的SafeGroup中ksafe参数。根据不同的应用,可k-safe参数可设置为0,1,2三个不同的级别。K-safe=0,每个节点仅保存其对应的分布表部署分区的数据,不保存其他节点部署分区的数据副本;k-safe=1,每个节点除保存对应的分布表部署分区数据外,还要保存同SafeGroup(共两个节点)中另外一个节点对应的分布表部署分区的数据副本;k-safe=2, 每个节点除保存对应的分布表部署分区数据外,还要保存同SafeGroup(共三个节点)中另外三个节点对应的分布表部署分区的数据副本。分布表的数据高可用级别随k-safe值的增加而增大,同时,也要消耗更多的集群存储空间。
1.1.2 空间规划
在确定了应用的schema模型和高可用需求后,要根据物理节点的存储空间的大小,计算每个节点的有效存储空间,为确定集群中所需节点数量提供重要的参考数据。
节点空间的用途主要分为两部分,数据存储空间,运算存储空间。数据存储空间主要包括:
1. 复制表占用空间。
2. 分布表占用空间。
3. 分布表的副本占用的空间。等于分布表空间x K-Safe。
运算存储空间主要包括:
1. gnode运算过程中需要的临时空间。
2. 节点故障时,数据同步操作所需的存储空间。
3. 节点进行数据迁移过程中,所需的存储空间。
4. 数据加载过程中,所需的临时空间。
节点的有效存储空间指复制表占用空间+分布表占用空间,
存储空间利用率 = (复制表占用空间+分布表占用空间)/节点存储空间。
通常情况下,各部分存储空间所占的比例为数据存储空间占节点存储空间的1/2,运算存储空间占节点存储空间的1/2。对于k-safe=2的情况,节点的存储空间利用率大概为1/6;k-safe=1的情况下,存储空间的利用率大概为1/4; k-safe=0的情况下,存储空间的利用率大概为1/2。
在考虑数据压缩的情况下,存储空间的利用率按压缩后的数据进行运算,即相当于数据压缩扩大了整个集群的存储空间。
1.1.3 数据规划
数据管理策略主要指在时间方向上,随着时间推移,所发生的数据生命期相关的策略在gcluster上的实现策略。其主要内容包括:
集群扩展,扩充集群的数据存储容量。gcluster的扩充必须以SafeGroup为基本的扩充单位。
老化数据的删除,由于数据库DELETE语句并不能有效的释放空间,对于大批量的老化数据删除应采用数据分区删除或节点删除的策略。在进行节点删除时,需以SafeGroup作为基本的删除单位。因此,需要在制定数据部署策略时,加以规划。