[TOC]
mongo
MongoDB
是一个介于关系数据库和非关系数据库之间的开源产品,是最接近于关系型数据库的NoSQL 数据库
。它在轻量级JSON
交换基础之上进行了扩展,即称为 BSON
的方式来描述其无结构化的数据类型。
如何选择数据库,完全取决于你所需要处理的数据的模型,即
Data Model
。如果它们之间,关系错综复杂,千丝万缕,这个时候 MySQL 一定是首选。如果他们的关系并不是那么密切,那么, NoSQL 将会是利器
- 面向集合存储,易存储对象类型的数据。
- 模式自由。支持动态查询。支持完全索引,包含内部对象。
- 支持查询。支持复制和故障恢复。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 自动处理碎片,以支持云计算层次的扩展性支持 Python , PHP , Ruby , Java , C , C# , Javascript ,Perl 及 C++ 语言的驱动程序,社区中也提供了对 Erlang 及 .NET 等平台的驱动程序。
- 文件存储格式为 BSON (一种 JSON 的扩展)。
- 可通过网络访问
地理位置索引
现在高效的索引结构都是B树索引,B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间、年龄、薪水等等。
mongo将地理位置二维信息转换为一维信息,由此可以建立索引,转换过程依赖了geoHash函数
1. geoHash
- GeoHash将二维的经纬度转换成字符串,一个区域的位置共享同一个字符串,这样可以方便做缓存。因为不同位置的经纬度信息不一样,将这个作为key的话,很难做缓存
- 字符串越长,表示的范围越精细
网友评论