mongo

[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的话,很难做缓存
  • 字符串越长,表示的范围越精细

你可能感兴趣的:(mongo)