[发明专利]一种基于二维地理位置的海量数据空间范围查询方法在审
申请号: | 201810201147.5 | 申请日: | 2018-03-12 |
公开(公告)号: | CN108446357A | 公开(公告)日: | 2018-08-24 |
发明(设计)人: | 杨国青;李红;金榆林;王成城;吴朝晖 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 王琛 |
地址: | 310013 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 范围查询 地理位置 海量数据 二维 二维空间索引 关系型数据库 查询效率 二级索引 方法使用 目标区域 索引搜索 大数据 第一级 构建 索引 数据库 搜索 维护 | ||
1.一种基于二维地理位置的海量数据空间范围查询方法,包括如下步骤:
(1)通过第一级索引搜索,首先定位到目标空间区域有可能落在的所有数据库分片,组成待搜索分片集合S;
(2)在待搜索分片集合S内使用第二级索引搜索,将落入目标空间范围的数据加入结果集R中;
(3)返回给出结果集R即搜索所得的目标数据。
2.根据权利要求1所述的海量数据空间范围查询方法,其特征在于:所述第一级索引采用GeoHash编码来构建,相应的分片逻辑也是根据GeoHash编码进行,以使得空间上相邻的数据尽可能存放在同一数据库分片上。
3.根据权利要求1所述的海量数据空间范围查询方法,其特征在于:所述第一级索引中的每一个节点都是一段GeoHash编码前缀,父节点的GeoHash编码必然是两个子节点GeoHash编码的前缀,即父节点代表的地理位置空间必然完全包含其子节点代表的地理位置空间。
4.根据权利要求1所述的海量数据空间范围查询方法,其特征在于:所述第二级索引采用类似线段树的思想进行组织,父节点所对应的空间范围完全包含其子节点对应的空间范围。
5.根据权利要求1所述的海量数据空间范围查询方法,其特征在于:所述第二级索引的构建过程为:对于待加入索引树的节点A,若当前索引树为空,则将其作为第一个节点加入索引树;若当前索引树非空,则进一步判断当前索引树根节点的GeoHash编码是不是节点A的GeoHash编码前缀:若不是,则将当前根节点和节点A的最长公共前缀作为父节点,当前根节点和节点A作为其两个子节点;若是,则搜索其根节点的左右子树,直到找到节点A应该插入的位置,此时若该位置为空,则将节点A插入,若该位置非空,则需要将该位置上已有的节点与节点A合并生成父节点后插入。
6.根据权利要求1所述的海量数据空间范围查询方法,其特征在于:所述步骤(1)中第一级索引搜索的具体实现过程如下:
1.1采用二叉树搜索方式从索引根节点开始递归调用遍历搜索其左右子树,搜索到的每一个叶子节点即对应表示一个数据库分片;
1.2若当前节点所表示的空间范围与目标空间区域存在交集且当前节点非叶子节点,则递归调用遍历搜索当前节点的左右子树,若不存在交集则直接回溯;
1.3若当前节点所表示的空间范围与目标空间区域存在交集且当前节点为叶子节点,则将当前节点对应的数据库分片加入待搜索分片集合S中,若不存在交集则直接回溯。
7.根据权利要求1所述的海量数据空间范围查询方法,其特征在于:所述步骤(2)中第二级索引搜索的具体实现过程如下:
2.1采用二叉树搜索方式从索引根节点开始递归调用遍历搜索其左右子树;
2.2若当前节点所表示的空间范围完全被包含于目标空间区域内,则将当前节点所对应的数据加入结果集R中并进行回溯,若当前节点所表示的空间范围与目标空间区域不存在交集则直接回溯;
2.3若当前节点所表示的空间范围与目标空间区域存在交集,且当前节点为叶子节点或当前GeoHash编码长度已达到阈值M,则将当前节点所对应的数据加入结果集R中并进行回溯;
2.4若当前节点所表示的空间范围与目标空间区域存在交集,且当前节点非叶子节点,当前GeoHash编码长度未达到阈值M,则递归调用遍历搜索当前节点的左右子树。
8.根据权利要求7所述的海量数据空间范围查询方法,其特征在于:所述阈值M根据数据量和相应速度需求动态调节。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810201147.5/1.html,转载请声明来源钻瓜专利网。