分布式与并行数据库设计:数据分片与分配策略
1. 数据分片
1.1 分割算法
分割的目标是找到仅由不同查询集访问的属性集。例如,若能确定属性 A1 和 A2 仅由查询 q1 访问,属性 A3 和 A4 由查询 q2 和 q3 访问,就可轻松确定片段。关键在于找到识别这些属性组的算法。
考虑聚类属性矩阵,若固定对角线上一点,可识别出两组属性。一组 {A1, A2, …, Ai} 位于左上角(记为 TA),另一组 {Ai+1, …, An} 位于右下角(记为 TB)。
将访问属性的查询集 Q = {q1, q2, …, qq} 划分为仅访问 TA、仅访问 TB 或两者都访问的集合,定义如下:
- (AQ(qi) = {Aj|use(qi, Aj) = 1})
- (TQ = {qi|AQ(qi) \subseteq TA})
- (BQ = {qi|AQ(qi) \subseteq BA})
- (OQ = Q - {TQ \cup BQ})
这里存在一个优化问题。若关系有 n 个属性,在聚类属性矩阵对角线上有 n - 1 个可能的分割点。最佳分割点应使仅访问一个片段的总访问次数最大化,同时使访问两个片段的总访问次数最小化。为此定义以下成本方程:
- (CQ = \sum_{qi\in Q} \sum_{\forall Sj} refj(qi)accj(qi))
- (CTQ = \sum_{qi\in TQ} \sum_{\forall Sj} refj(qi)accj(qi))
- (CBQ = \sum_{qi\in BQ} \sum_{\forall Sj} re
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



