GeoMesa架构
GeoMesa支持多种可扩展的、基于云端的数据存储架构,包括Apache Accumulo, Apache HBased,Google Cloud Bigtable以及用于流计算的Apache Kafka 。同时GeoMesa还可以和Apache Storm一起处理流数据,并使用Spark进行空间分析。 GeoMesa架构如图1:![]()
GeoMesa和GeoServer
GeoMesa以GeoServer插件的形式为GeoServer提供了读取GeoMesa表的功能。在GeoServer中,GeoMesa表作为一种数据源存在,通过GeoServer,用户可以通过WMS/WFS的形式访问GeoMesa的数据。 GeoMesa表作为数据源,如图2:![]()
与GeoMesa集成
为了方便用户使用GeoMesa中存储的数据,GeoMesa通过实现GeoTools接口,提供了使用OGC标准服务接口访问数据的能力,实现的OGC标准有:
- Web Feature Service (WFS)
- Web Mapping Service (WMS)
- Web Processing Service (WPS)
- Web Coverage Service (WCS)


键值对存储和Z曲线
GeoMesa的数据存储使用 key-value数据库。key-value数据库是一种NoSQL数据库,其数据按照键值对的形式进行组织、索引和存储。 Accumulo,HBase和Google Cloud Bigtable对这些键进行排序,并可将它们存储在任意数量的节点(服务器)上。 当使用key-value数据库时,Key的良好设计可以使应用程序更高效的运行。与关系数据库不同的是,key-value数据库中会频繁的使用key进行查询。例如在订单数据库中,会以订单号作为key进行存储,当用户查询订单的时候,即可用通过订单号直接查询到订单数据并返回该条数据。Accumulo,HBase和Cloud Bigtable都是使用类似的机制进行工作,GeoMesa同样也是使用该机制来进行数据组织。GeoMesa根据时空数据的特点,实现了生成包含时空信息的Key的算法,算法的基本思想如图5:

GeoMesa 索引
GeoMesa 索引的基本原理计算将三维(经度、纬度、时间)的数据按照Z曲线进行降维,得到一维数据作为Key使用,方便在key-value数据库中进行查询。 实际的Key结构比简单的键值对更复杂。在Accumulo中GeoMesa索引的结构如图7:
查看原文:http://www.giser.net/?p=1551