论文部分内容阅读
目前空间信息应用遭遇到严重的瓶颈,一方面已经积累了巨量空间数据,并且还在继续投巨资生产数据,另一方面,大量的空间数据无法被综合处理和有效利用。为了对数据进行高效存储和管理,关系数据库技术应运而生。但在web2.0时代,面对大规模和高并发的应用,关系数据库疲态尽显,究其原因,主要是关系数据库考虑了过多的特性,如事务、范式约束等,极大地影响了数据库的性能和扩展性。NoSQL数据库摒弃了关系数据库的事务一致性和范式的约束,在很大程度上解决了关系数据库面临的诸多挑战。本文研究基于Redis的矢量数据组织。作为一种key-value型NoSQL数据库,Redis在高并发时依然具有很高的性能,同时具有丰富的数据结构,适合于对复杂的矢量数据进行组织管理。在矢量数据库管理方面,本文按照矢量数据库、空间数据集、图层、要素的四级结构对矢量数据进行层次组织,针对性地设计了各层的元数据结构,并选用高效的Redis数据结构对元数据信息和矢量数据信息(几何和属性)进行存储。在空间索引方面,本文深入研究了基于Redis的空间索引组织和查询机制,并以网格索引为例,研究了基于Redis的网格索引的表达方式、存储结构和查询方法;针对传统网格索引的缺点,提出了一种基于小角编码的网格索引:首先对矢量数据进行小角编码,然后利用Redis的有序set数据结构存储网格单元索引信息表,在此基础上,提出一种改进的网格索引方法——小角编码算法进行快速索引查询。利用小角编码思想构建的网格单元索引信息表,自动分成重复区和非重复区两部分,查询时只需要针对重复区索引信息使用简单的比较操作就能在0(N)时间内完成查重。由于查重时无需维护查找树之类的数据结构,从而降低了空间复杂度,提高了矢量数据网格索引的效率。最后,论文设计和实现了基于Redis的矢量数据引擎原型系统,并利用大批量的矢量数据进行对比实验和性能分析,实验结果验证了本文的基本思想。