为了保证回复实时性,有任何问题欢迎加我QQ:451443165 讨论?(申请问题答案:xiaof22a)
分布式空间索引可以说是GeoMesa的灵魂了,它直接决定了空间数据的:(1)行主键(2)数据分区与负载均衡(3)索引高效查询。所以说要想真正了解GeoMesa的核心代码,必须要把索引这一部分弄懂吃透。空间索引方法是一套完整切复杂的理论体系,建议读者在阅读本文之前先看这篇论文:
Böhm, Klump, and Kriegel. “XZ-ordering: a space-filling curve for objects with spatial extension.” 6th. Int. Symposium on Large Spatial Databases (SSD), 1999, Hong Kong, China. (http://www.dbs.ifi.lmu.de/Publikationen/Boehm/Ordering_99.pdf)
下面进入正文。
1. 空间填充曲线(Space Filling Curve)
基于空间目标排序的索引方法的基本思想是按照某种策略将索引空间细分为许多均等的网格,并给每一网格分配一个编号,然后用这些编号为空间目标获得一具有代表意义的数字。这样,多维空间目标就可以背影射成一维的目标,从而也就可以使用现有的数据库管理系统中比较成熟的一维索引技术来提高对空间数据的快速查找和存取。问题的关键在于影射算法必须较好地保持多维空间目标间的临近关系以提供较好的空间查询性能。空间填充曲线(后面简称sfc)是一种降低空间维度的方法。sfc能够将高维空间中的数据映射到一维空间,使用经典线性索引结构存储数据。空间目标排序的技术很多,最常见的sfc是基于Z排序(Z-order)和Hilbert排序的空间索引技术,技术的区别主要在于建立的多维到一维的映射关系是否能够很好的保持多维空间目标间的临近关系。关于Z-order和Hilbert曲线本文不做详细阐述,请读者自己查阅相关文献。
Z-order: