MongoDB基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB基础知识相关的知识,希望对你有一定的参考价值。

NoSQL是什么?

   非关系型数据库,有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称


 

NoSQL的优势

     1、高扩展性

     2、高并发性,大数据下读写能力较强

     3、分布式计算

     4、处理海量数据

     5、没有复杂的关系


NoSQL数据库四大家族

    列存储:Hbase

    键值(Key-Value)存储:Redis

    图像存储:Neo4J 

    文档存储 :MongoDB 

    MongoDB 将数据存储为一个文档,数据结构由键值(name=>value)对组成。MongoDB 文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。


MongoDB和JSON、BSON

    JSON:是存储和交换文本信息的语法。类似 XML。JSON数据库语句可以容易被解析。

    BSON:二进制的JSON,JSON文档的二进制编码存储格式。BSON有JSON没有的数据类型:Date和BinData。MongoDB中document以BSON形式存放。


MongoDB文档支持不同的数据类型


{
  name:"Jone Doe",
  title:"software developer", #字符串
  address:{
           street:"123 45th street"
   state:"new York"
   zipcode:10036
  
          },             #嵌套文档
   expertise:["MongoDB","Python","javascript"], #数组
   employee_number:320,       #×××
   location:[53.34,-6326]  #Geo-spatial
}
}


MongoDB的关键特性:

    1、高性能 

    2、丰富的查询语言

    3、高可用性

           副本集,自动故障转移,数据冗余


技术分享图片


    4、水平可扩展性

    5、支持多种存储引擎

           MMAPv1存储引擎:<3.2   默认存储引擎是MMAPv1

           WirdeTiger存储引擎:>=3.2  默认存储引擎是WiredTiger

            In-Memory存储引擎:Changed in version 3.2.6

                                                                                                 存储引擎的比较

技术分享图片


MongoDB的GridFS


                                                                                     GridFS

技术分享图片



MongoDB与RDBMS数据结构逻辑对比

技术分享图片


MongoDB实际应用场景举例

游戏场景

    使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。

物流场景

    使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

社交场景

    使用MongoDB存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能


物联网场景

    使使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。

视频直播

    使用MongoDB存储用户信息、礼物信息等


MongoDB版本的选择,现在建议用3.4的版本

MongoDB分企业版和社区版,社区版支持使用MongoDB ops manager


技术分享图片


是否使用MongoDB

技术分享图片


如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择 MongoDB 绝不会后悔!!!


以上是关于MongoDB基础知识的主要内容,如果未能解决你的问题,请参考以下文章

android小知识点代码片段

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

[vscode]--HTML代码片段(基础版,reactvuejquery)

mongodb关联查询

无法在 MongoDB(猫鼬)文档中追加数组

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础