Mongodb体系结构 文档操作 索引 分析查询性能

Posted halulu.me

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb体系结构 文档操作 索引 分析查询性能相关的知识,希望对你有一定的参考价值。

目录

Mongodb

  • MongoDB是一个基于分布式文件存储的开源、高性能、高可用、高扩展的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • 它是一个最像关系型数据库的非关系型数据库。

体系结构

mongodb的好处

  • High Performance:对数据库高并发的读写需求。
  • Huge Storage:对海量数据的高效率存储和访问需求。
  • High Scalability && High Availability:对数据库的高扩展性和高可用性的需求。

mongodb的应用场景

1)社交场景,使用 MongoDB 存储用户信息、用户发布的朋友圈信息,通过地理位置索引实现附近的人等功能。

2)游戏场景,使用 MongoDB 存储游戏用户信息、用户的装备、经验值等直接以内嵌文档的形式存储,方便查询。

3)物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会一直更新,以 MongoDB
内嵌数组的形式来存储,一次查询就能将订单所有的变更都查询出来。

4)物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息多维度的分析。

5)视频直播,使用 MongoDB 存储用户信息、点赞信息、弹幕信息等。

1)数据量大。
2)读写操作频繁(并发数大)。
3)价值较低的数据,对事务性要求不高。
对于这样的数据,我们可以使用 MongoDB 来做数据的存储。

mongodb的应用范围

1)应用不需要事务以及复杂的join支持。

2)应用的需求会变,数据库表中的字段数量、类型等无法确定。

3)应用需要2000以上的高QPS(Query Per Second)(并发数,mysql仅有200QPS)。

4)应用需要TB 甚至 PB级别的数据存储。

5)应用要求存储的数据不丢失。

6)应用要求99.99%高可用

文档操作

  • document:要写入的文档。
  • writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求(一般不用,不做要求)。
  • ordered:指定是否按顺序写入,默认 true,按顺序写入。(一般不用,不做要求)。

  • query : update的查询条件,类似sql update语句的where后面的。
  • update : update的对象和一些更新的操作符(如 , , ,inc.$set)等,也可以理解为sql update语句的set
  • upsert : 可选,这个参数的意思是,如果不存在要修改的记录,是否插入新记录,true为插入,默认是false。
  • multi : 可选,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern : 可选,抛出异常的级别(一般不用,不做要求)。

  • query :(可选)删除的文档的条件。
  • justOne : 默认值 false,删除所有匹配条件的文档。如果设为 true 或 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别(一般不用,不做要求)。

索引

MongoDB索引使用B-Tree结构,MySQL索引是B+Tree

索引的类型

1、单键索引

单键索引(Single Field Indexes)顾名思义就是单个字段作为索引列,mongoDB的所有collection默认都有一个单键索引_id

2、 复合索引

复合索引(Compound Indexes)指一个索引包含多个字段。mongoDB中一个复合索引最多可以包含32个字段。

3、地理空间索引

地理空间索引(GeospatialIndexes):为了支持对地理空间坐标数据的有效查询,MongoDB提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。

4、文本索引

文本索引(Text Indexes) MongoDB提供了一种文本索引类型,支持在集合中搜索字符串内容。这些文本索引不存储特定于语言的停止词(例如“the”、“a”、“or”),而将集合中的词作为词干,只存储根词。类似于ElasticSearch。

5、哈希索引

哈希索引(Hashed Indexes)为了支持基于散列的分片,MongoDB提供了散列索引类型,它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机,但只支持相等匹配,不支持基于范围的查询以及模糊匹配。

分析查询性能

以上是关于Mongodb体系结构 文档操作 索引 分析查询性能的主要内容,如果未能解决你的问题,请参考以下文章

mongoDB_08索引的操作

MongoDB索引管理

MongoDB 索引

MongoDB 索引

MongoDB索引

为啥MongoDB适合大数据的存储