2015-11-05 142 views
4

我正在研究一个项目,我们每天导入50k-100k个数据点,位于时间上(YYYYMMDDHHmm)和空间上lon,lat),然后根据我们用户设置的查询参数动态呈现到地图上。我们确实使用低于给定缩放级别的预先计算的群集。时空系列的复合分区键(Cassandra)与交错索引(Accumulo,BigTable)

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

具体而言,我试图理解在卡桑德拉与在BigTable的交织索引关键字,如一个GeoMesa使用利用复合分区键之间的差。

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

我应该遵循什么逻辑步骤来区分两者?尽管我计划在不久的将来对两种方法进行测试,但我希望听到更合理,更有教养的方法。

回答

-1

GeoMesa实际上支持像Accumulo和卡桑德拉都BigTable的克隆。 Cassandra在撰写本文时的支持目前处于早期阶段。 README有索引方案的描述。

两种实现都利用Z2或Z3(取决于索引是否仅是空间或时空)交错索引。 BigTable克隆索引将全分辨率Z3放入主键中。查询只是对已排序的键进行范围扫描。 Cassandra要求明确列举分区键(除非您正在进行全表扫描)。由于这张脸,GeoMesa的Cassandra索引使用组合键在分区键和范围键之间传播信息。分区密钥是一个粗糙的时空密钥,将世界分为NxN个单元。然后,范围键是全分辨率Z3交错索引。查询分解为重叠桶(分区键)和每个桶内的Z3范围(范围键)的枚举。不得不枚举分区键可能会导致大量的网络琐事以满足查询。设置存储分辨率是减少这种烦人的关键。