我正在开展一个项目,我们每天导入50k - 100k数据点,暂时(YYYYMMDDHHmm)和空间(lon,lat),我们然后根据查询参数设置动态渲染到地图上由我们的用户。我们确实使用低于给定缩放级别的预先计算的群集。
在这种情况下,鉴于我们正在为我们的存储层选择数据库引擎,我目前正在评估Cassandra和BigTable的变体。
具体来说,我试图理解在Cassandra中使用复合分区键与BigTable中的交错索引键之间的区别,例如GeoMesa使用的那个。
据我了解,这两种方法都可以利用COTS硬件,并且可以进行调整以减少热点并最大限度地填充空间。
为了区分这两者,我应遵循哪些合乎逻辑的步骤?即使我计划在不久的将来测试这两种方法,我也希望听到更合理和更有教育意义的方法。
答案 0 :(得分:-1)
GeoMesa实际上支持像Accumulo和Cassandra这样的BigTable克隆。在撰写本文时,Cassandra的支持目前处于早期阶段。 README描述了索引方案。
两种实现都使用Z2或Z3(取决于索引是空间还是时空)交织索引。 BigTable克隆索引将完整分辨率Z3放入主键。查询只是排序键上的范围扫描。 Cassandra要求明确枚举分区键(除非您正在进行全表扫描)。由于这个面,GeoMesa的Cassandra索引使用复合键在分区键和范围键之间传播信息。分区键是粗略的时空密钥,它将世界分成NxN个单元。然后,范围键是全分辨率Z3交错索引。查询被分解为重叠桶(分区键)的枚举和每个桶内的Z3范围(范围键)。必须枚举分区键可能会导致很多网络干扰,以满足查询。设置存储桶分辨率是减少这种干扰的关键。