mongodb删除索引_NoSQL之MongoDB——简介

MongoDB是一款高性能、高可用、易扩展的开源文档数据库,支持JSON样式的文档存储,具备丰富的查询语言和自动故障转移。其文档结构灵活,支持嵌入式数据和数组,减少了I/O操作。通过复制集实现数据冗余和高可用,通过分片实现水平扩展。固定集合是MongoDB的一个特色,用于存储顺序操作的日志或缓存,保证插入顺序并自动删除旧数据。
摘要由CSDN通过智能技术生成

MongoDB是一种开源文档型数据库,它具有高性能,高可用性,自动扩展性

1.文档数据库

MongoDB用一个文档来表示一条记录,文档的数据结构由键值对组成。MongoDB文档类似于JSON对象,字段值可能是文档,数组,或文档数组。

2b85a2020377ab227b5b017c4752a184.png

使用文档的优点:

  • 文档中字段值的数据类型同大多数编程语言中的原生数据类型一致。
  • 嵌入式文档和数组减少了连接查询的需求。
  • 动态的文档结构支持多态性。

2.主要特性

高性能

MongoDB支持高性能数据存储。特别地:

  • 支持嵌入式数据模型以减少对数据库系统的I/O
  • 利用索引实现快速查询,并且嵌入式文档和集合也支持索引

丰富的查询语言

MongoDB提供了丰富的查询语言以支持读写操作和聚集操作、文本检索、地理信息查询

高可用性

MongoDB的复制能力被称作复制集(replica set),它提供了自动的故障迁移和数据冗余。一个复制集是一组包含了相同数据的多台MongoDB服务器,它提供了冗余性和加强了数据的可用性。

横向扩展

MongoDB的横向扩展能力是其核心功能的一部分:

  • 分片的数据分布在服务器集群上。
  • 带标签的分片能够引导数据到指定的分片上。

支持多存储引擎

包括:WiredTiger Storage Engine,MMAPv1 Storage Engine。此外,MongoDB 提供可插拔存储引擎API,允许第三方开发者为MongoDB开发存储引擎。

3.数据库和集合

MongoDB 存储BSON文档,例如数据记录在集合中,集合在数据库中。

9c481bd2a46326e8704a6383d5d8cf66.png

3.1数据库

在MongoDB 中数据库持有集合。

在Mongo shell中,选中一个数据库使用如下命令:use ,例如:

use myDB

创建数据库

如果待操作的数据库不存在,那么在第一次向MongoDB 存储数据时,MongoDB会创建这个数据库。例如,使用如下命令操作一个不存在的数据库。

use myNewDB

db.myNewCollection1.insert( { x: 1 } )

insert()操作创建了数据库myNewDB,若集合myNewCollection1也不存在,同样地集合myNewCollection1也被创建。

3.2集合

MongoDB 在集合中存储文档,集合类似于关系数据库中的表。

创建一个集合

如果一个集合不存在,使用下面命令时集合会被创建:

db.myNewCollection2.insert( { x: 1 } )

db.myNewCollection3.createIndex( { y: 1 } )

insert() 和 createIndex()在集合不存在的情况下会创建集合。

显式创建集合

MongoDB 提供了db.createCollection()方法来显示地创建一个集合。可以为创建的集合指定参数,例如设置集合的大小或者文档的验证规则,如果不需要指定这些参数,那么没必要显示地创建一个集合。

文档验证(3.2版新特性)

默认情况下,一个集合中的文档不必具有相同的结构 ,

一个集中的文档不需要具有一系列相同的字段,并且不同文档中字段的数据类型可以不同。

修改文档结构

可以更改集合中的文档结构,如添加新字段,删除现有字段,或将字段值更改为一种新的类型,更新文档结构

3.3固定集合

3.3.1概述

固定集合,即具有固定大小的集合,它支持基于插入顺序的插入和查询这两种高通量操作。固定大小的集合的工作方式类似于循环缓存:一旦一个集合被填满,待插入的文档会覆盖掉最先插入的文档。

3.3.2行为

插入顺序

固定集合保证了插入顺序,因此对于查询操作而言,不需要索引的支持就可以返回多个按顺序排列的文档。没有索引的开销,固定集合支持更高的插入吞吐量。

自动删除最先插入的文档

为了给新文档让出存储空间,固定集合自动删除最先插入的文档而不需要显示的删除操作。

例如,集合oplog.rs中存储了副本集操作日志,这里副本集使用了固定集合。考虑下面对固定集合可能的操作:

  • 存储由大容量系统生成的日志信息。在无索引的情况下,文档插入固定集合的速度与将日志信息写入文件系统的速度相似。此外,先进先出的特性保证了事件的顺序,同时管理了存储的使用。
  • 在固定集合中缓存少量数据。由于缓存重读而非写,你应确保这个集合总在工作集中(例如,内存中)或接受一点点写操作,因为索引需要写操作。

_id 字段索引

固定集合含有_id字段,此字段索引是默认的。

3.3.3限制和建议

更新

如果你要更新固定集合中的文档,创建索引以防止全表扫描。

文档大小(3.2版本变更)

如果更新或替换操作改变了文档大小,则操作失败。

删除文档

不能删除固定集合中的文档,可使用drop() 命令删除整个固定集合并新建之。

分片

固定集合不允许分片。

查询效率

使用自然排序可高效地检索最新插入的元素。这是(有点)像追踪一个日志文件。

聚集操作符$out

不能使用聚集管道操作符$out将结果写入固定集合

3.3.4过程

创建固定集合

在mongo shel中,使用db.createCollection()方法创建固定集合,创建固定集合的时候要指定集合的字节大小,MongoDB将会提前为所创建的固定集合分配存储空间。固定集合的字节大小包含了内部使用的空间大小。

db.createCollection( "log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值