Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时空序列的复合分区键(Cassandra)与交错索引(Accumulo、BigTable)_Cassandra_Time Series_Geospatial_Bigtable_Geomesa - Fatal编程技术网

时空序列的复合分区键(Cassandra)与交错索引(Accumulo、BigTable)

时空序列的复合分区键(Cassandra)与交错索引(Accumulo、BigTable),cassandra,time-series,geospatial,bigtable,geomesa,Cassandra,Time Series,Geospatial,Bigtable,Geomesa,我正在做一个项目,我们每天导入50k-100k个数据点,在时间上(YYYYMMDDHHmm)和空间上(lon,lat),然后根据用户设置的查询参数将其动态渲染到地图上。我们在给定的缩放级别下使用预先计算的簇 在这种情况下,鉴于我们正在为存储层选择数据库引擎,我目前正在评估Cassandra和BigTable的变体 具体来说,我试图理解在Cassandra中使用复合分区键与在BigTable中使用交错索引键(如GeoMesa使用的索引键)之间的区别 据我所知,这两种方法都可以利用COTS硬件,并且

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

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

具体来说,我试图理解在Cassandra中使用复合分区键与在BigTable中使用交错索引键(如GeoMesa使用的索引键)之间的区别

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


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

GeoMesa实际上支持Accumulo和Cassandra等大型克隆。在撰写本文时,对卡桑德拉的支持目前处于早期阶段。具有索引方案的说明

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