4

我正在做一个项目,我们每天导入 50k - 100k 个数据点,位于时间 (YYYYMMDDHHmm) 和空间 (lon, lat),然后我们根据用户设置的查询参数动态地渲染到地图上。我们确实使用低于给定缩放级别的预计算集群。

在这种情况下,鉴于我们正在为存储层选择数据库引擎这一事实,我目前正在评估 Cassandra 和 BigTable 的变体。

具体来说,我试图了解在 Cassandra 中使用复合分区键与在 BigTable 中使用交错索引键之间的区别,例如 GeoMesa 使用的那个。

据我了解,这两种方法都可以利用 COTS 硬件,并且可以进行调整以减少热点并最大化空间填充。

为了区分两者,我应该遵循哪些合乎逻辑的步骤?尽管我计划在不久的将来测试这两种方法,但我希望听到一种更合理和更有教育意义的方法。

4

1 回答 1

-1

GeoMesa 实际上支持 Accumulo 和 Cassandra 等 BigTable 克隆。在撰写本文时,Cassandra 支持目前处于早期阶段。自述文件有索引方案的描述。

两种实现都使用 Z2 或 Z3(取决于索引是空间还是时空)交错索引。BigTable 克隆索引将全分辨率 Z3 放入主键中。查询只是对排序键的范围扫描。Cassandra 要求明确枚举分区键(除非您正在执行全表扫描)。正因为如此,GeoMesa 的 Cassandra 索引使用复合键在分区键和范围键之间传播信息。分区键是一个粗略的时空键,它将世界存储到 NxN 个单元中。然后,范围键是全分辨率 Z3 交错索引。查询被分解为重叠桶(分区键)和每个桶内的 Z3 范围(范围键)的枚举。为了满足查询,必须枚举分区键可能会导致大量网络混乱。设置存储桶分辨率是减少这种喋喋不休的关键。

于 2016-04-27T21:08:56.233 回答