MongoDB

作者: 宋song一 | 来源:发表于2019-12-05 11:31 被阅读0次

MongoDB中文社区

环形队列存储,先进先出
下载地址
mongoose高级查询:.skip.limit.sort.select
MongoDB使用B-Tree
选择custom安装
特点:(三高)高并发,海量数据的高效率存储和访问,高可扩展性与高可用性
应用场景:社交、游戏、物流、物联网、直播
数据量大,读写操作频繁,价值较低的数据

考虑:

  • 不需要复杂join支持
  • 新应用,需求会变,数据模型无法确定,想快速迭代开发
  • qps>2000
  • 存储TB以上
  • 应用要求存储的数据不丢失
  • 99.999%高可用
  • 地理位置查询,文本查询

数据格式灵活,数据字段扩展零消耗,一般情况下,读写性能略高于MySQL
从MongoDB 3.2开始,WiredTiger存储引擎开始作为默认的存储引擎,是压缩存储 要比mysql占用小

相对MySQL,成本更低(学习、开发、运维)

数据库,集合(table)、文档(row).文档格式可以不同

【Mongodb】事务

  • Mongodb 4.0 支持副本集的多文档事务
  • Mongodb 4.2 支持分片集群的多文档事务
    单个Server不支持使用事务,所以要使用事务,需要搭建一个副本集/分片集群

另外需要说明是,单个文档操作是原子操作,而mongodb是文档型数据库,在单个文档上,可以嵌入对象/数组这种格式来维护数据的关系,而不应该使用多个集合来维护数据之间的关系。由于mongodb的这种特性,所以单个文档操作消除了很多需要事务的需求

〇、性能对比

插入性能,高于mysql
Mysql.8.0 与 MongoDB.4.2大数据量查询性能对比

  1. 百万级数据量性能测试对比
    (1)从平均响应时间来看,查询条件较少的情况下MySQL占据优势,mongodb在查询条件越多的情况下,越占据优势,因为查询条件越多,筛选的数据会比较少,可以有效利用内存。但是优势不是太明显。
    (2)从吞吐量上来看,mongodb占据优势,但是除了任务信息查询以外,其他类型查询的优势不是太明显
  2. 千万级数据量性能测试对比
    (1)从平均响应时间来看,mongodb占据绝对优势。
    (2)从吞吐量上来看,mongodb占据绝对优势。
    (3)对于千万或者更大的数据量,应该是要分区或分片,同时考虑分区容错性。如下图,mongodb属于CP,同时满足一致性(C,Consistency)、分区容错性(P,Partition Tolerance)。MySQL属于CA,同时满足一致性(C,Consistency)、可用性(A, Availability)

一、启动与部署

MongoDB 4.2的下载安装配置
MongoDB4.0在windows10下的安装与服务配置教程详解

cmd命令行启动也可以:bin目录下:mongod --dbpath=..\data\db

二、查询

投影查询:1,显示。0,不显示
涵盖的查询(仅查询索引字段)
批量更新:{multi:true}
{justOne:true}
db.user.find({uid:{$mod:[2,0]}}) 查找uid为偶数的集合

三、索引

  • 单字段索引
  • 复合索引
  • 地理空间索引
  • 文本索引
  • 哈希索引
  1. 执行计划: .explain()
    显示结果中winningPlan的stage内容,未使用索引显示‘COLLSCAN’,使用索引为‘FETCH'

四、深入MongoDB4.2新特性:字段级加密

相关文章

网友评论

      本文标题:MongoDB

      本文链接:https://www.haomeiwen.com/subject/qprdgctx.html