CCIndex:分布式有序表上的多维范围查询补充聚类索引
1. 引言
大规模分布式数据库,如 Google 的 BigTable 和 Yahoo 的 PNUTS,可被建模为分布式有序表(Distributed Ordered Table,DOT)。DOT 会对数据区域进行分区,并支持基于键的范围查询。在 DOT 上进行多维范围查询是基本需求,但现有方案在考虑高性能、低空间开销和高可靠性这三个关键问题时,都无法很好地工作。
以查找附近餐厅为例,查询条件可能是“纬度 > 48.5 且纬度 < 48.6,经度 > 112.5 且经度 < 112.8,类型 = 餐厅”。又如在照片分享应用中查找本周最热门的照片,查询条件可能是“时间戳 > 1267660008 且排名 > 1000”。仅依靠 DOT 的基于键的范围查询,多维范围查询就是对键进行表扫描,并使用非键列上的谓词过滤结果。对于非键列上选择性较低的查询,这种方法效率非常低,在大规模数据集(如 TB 或 PB 级别)中,延迟是不可接受的。
为了解决这些问题,本文引入了 CCIndex(Complemental Clustering Index)方案。CCIndex 创建了几个补充聚类索引表(Complemental Clustering Index Tables,CCIT),每个表对应一个搜索列,并包含完整的行数据,这使得对该列的范围查询可以转换为范围扫描。CCIndex 利用区域到服务器的映射信息来估计每个查询的结果大小,同时禁用底层数据复制机制以避免过多的存储开销,并为每个搜索列创建一个复制的补充检查桌(Complemental Check Table,CCT),以支持增量数据恢复。
超级会员免费看
订阅专栏 解锁全文
28

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



