MongoDB 地理位置索引的实现原理
来源:互联网 发布:大数据概念的首次提出 编辑:程序博客网 时间:2024/05/17 08:27
地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道,通常的数据库索引结构是B+ Tree,如何将地理位置转化为可建立B+Tree的形式,下文将为你描述。
首先假设我们将需要索引的整个地图分成16×16的方格,如下图(左下角为坐标0,0 右上角为坐标16,16):
单纯的[x,y]的数据是无法建立索引的,所以MongoDB在建立索引的时候,会根据相应字段的坐标计算一个可以用来做索引的hash值,这个值叫做geohash,下面我们以地图上坐标为[4,6]的点(图中红叉位置)为例。
我们第一步将整个地图分成等大小的四块,如下图:
划分成四块后我们可以定义这四块的值,如下(左下为00,左上为01,右下为10,右上为11):
01110010这样[4,6]点的geohash值目前为 00
然后再将四个小块每一块进行切割,如下:
这时[4,6]点位于右上区域,右上的值为11,这样[4,6]点的geohash值变为:0011
继续往下做两次切分:
最终得到[4,6]点的geohash值为:00110100
这样我们用这个值来做索引,则地图上点相近的点就可以转化成有相同前缀的geohash值了。
我们可以看到,这个geohash值的精确度是与划分地图的次数成正比的,上例对地图划分了四次。而MongoDB默认是进行26次划分,这个值在建立索引时是可控的。具体建立二维地理位置索引的命令如下:
db.map.ensureIndex({point : "2d"}, {min : 0, max : 16, bits : 4})
其中的bits参数就是划分几次,默认为26次。
原文出处:http://blog.nosqlfan.com/html/1811.html- 图解 MongoDB 地理位置索引的实现原理
- 图解 MongoDB 地理位置索引的实现原理
- 图解 MongoDB 地理位置索引的实现原理
- MongoDB 地理位置索引的实现原理
- 图解 MongoDB 地理位置索引的实现原理
- 图解 MongoDB 地理位置索引的实现原理
- mongodb地理位置索引实现原理
- 转 图解 MongoDB 地理位置索引的实现原理
- 图解GeoHash算法--MongoDB 地理位置索引的实现原理
- mongodb的地理位置索引
- mongodb的地理位置索引
- mongodb的地理位置索引
- mongoDB的地理位置索引
- Mongodb 地理位置索引
- MongoDB 地理位置索引
- MongoDB地理位置索引
- Mongo地理位置索引原理
- 阿里云mongodb 添加地理位置索引的心酸路。
- finally的相关认识
- 检查字符串是否为电话号码的方法
- sql
- sql 字符串长度
- fodera20安装后的配置
- MongoDB 地理位置索引的实现原理
- Jquery 2.0.3中的live不能用了,可以用on代替
- 怎样分析crash dump(软件看门狗超时)
- 跨域 表单提交
- POJ 1113 Wall (凸包周长)
- 网页自动采集之内涵吧内涵段子自动采集
- 二进制的世界
- strcpy strcmp strcat
- 一般PNG图片压缩的Java实现