Moara:灵活可扩展的基于组的查询系统
1. 引言
在分布式系统中,高效的组查询至关重要。传统的“全局聚合”方法让系统中的每个节点接收每个查询,在处理特定组的查询时效率低下。Moara 系统通过一系列机制解决了这个问题,实现了灵活且可扩展的基于组的查询。
2. Moara 机制
Moara 采用了三种机制来优化查询处理:
- 修剪树机制 :尝试修剪掉不包含满足谓词 p 的节点的树分支,形成修剪树或组树。但内部节点需要知道其后代节点是否满足谓词,这在组组成快速变化时,维护组树的成本可能高于查询解析成本。
- 短路组树机制 :通过短路组树,减少不满足谓词的内部树节点,降低网络成本和响应延迟。例如,若节点 010 不满足谓词,而节点 110 满足,则可让 110 直接从根节点接收查询,将聚合 m 个节点的带宽成本从 O(m log N) 降低到 O(m)。
- 复合查询处理机制 :通过将谓词重写为更易管理的形式,并选择最小的组集来解析复合查询。例如,对于交集查询 (CPU - Util, avg, (floor = F1 and cluster = C12)),选择成本较低的组 (floor = F1) 或 (cluster = C12) 发送查询。
3. 动态维护
Moara 通过自适应修剪树的部分来降低带宽成本,同时通过最终完整性保证查询的正确性。最终完整性指在查询注入后,当满足谓词的节点集和底层 DHT 覆盖层在足够长的时间内不发生变化时,对该组的查询最终会从所有此类节点返回答案。