MongoDB简介

数据库,顾名思义,是保存数据的地方。中华文化博大精深,短短3个文字,就定义了一个强大的数据管理和读写方式出来。数据库,管理的对象是数据。称为库,表示数据在库中有组织,相互之间有微妙的关系。数据怎样进入库,库的容量大小有多少,库中的数据怎样分区保存,采用怎样的形式来保存,怎样快速的定位到数据库中的数据,当库满的时候,怎样实现扩充。与普通的仓库中的货物不同,货物可以损失可以再生产或采购。当数据造成损失时,应该怎样减少损失,或者恢复数据。同时,访问数据库,哪些系统和操作人员才可以访问数据库,怎样防止数据丢失,保证数据安全,都是数据库需要考虑的问题。

以oracle为代表的关系型数据库,曾经是各种数据库形式中最主流的数据库形式。数据库设计按照固定的模式,表示数据之间的关联关系。这种关系型数据库,对数据进行了有效的分类组织并减少数据冗余。 通过建立索引,主外键关联等措施,提高了数据读取的效率。定义结构化查询语句(sql)来查询数据,实现了数据的方便读写。数据库内部的解析优化器,为大量数据读取提供了性能保障。

自mongodb 1.0版本发布以来,其文档的简单便捷性,结构上的灵活性,数据读取的高效性逐渐受到开发人员的广泛关注和欢迎。带动了文档型数据库,内存数据库等不需要使用sql查询的数据库(NoSql数据库)的发展。近几年,各种类型的数据库搭配使用,为系统设计提供了更多的解决方案。而NoSql的概念从不需要sql语句查询,也变成了不只是sql查询语句(not only sql)。

自本文开始,通过对官网文档的翻译整理和时间,结合多年开发经验,对Mongodb进行深入浅出的介绍,并准备了一些列mongodb的文章和使用技巧。欢迎关注订阅。

文档型数据库

mongodb是文档型数据库,数据库中的一条记录,就是一个文档。文档是由键值对构成的结构化数据。类似JSON数据结构。文档中的数据,也可以是数组,日期,或其他文档。

复制代码
{
  name: "sue",                    //键值对,字段-name, 值:"sue",字符类型
  age: 26,                        //键值对,字段-age, 值:26, 数字类型
  status: "A",                    //键值对,字段-status, 值:"A", 字符类型
  groups: ['news', "sports"],     //键值对,字段-groups, 值:['news', "sports"], 数组
  location: {                     //键值对,字段-groups, 值:{city: "New York"}, 对象
    city: "New York"              //键值对,字段-city, 值:'New York', 字符类型
  }
}

多个文档放在一起,构成了一个文档集合。集合与关系型数据库中的表类似,但格式上比关系型数据库灵活,并不需要完全统一的格式和数据类型。

多个集合构成了一个数据库。而数据库包含在运行在虚拟机或物理机上的mongodb运行实例中。

在mongo数据库中,使用文档型数据库,为mongodb带来了三点优势

  • 文档中的数据类型,能够映射到大多数开发语言支持的原生数据类型
  • 支持嵌入式对象和数组类型,减少数据关联查询带来的开销
  • 动态数据结构,支持更频繁的数据结构变化

mongodb的功能与优势

存储和查询数据,是数据库的基本功能,mongodb既然是数据库,就一定擅长类似数据增删改查这样基本的数据库操作。mongodb虽然支持动态数据结构,但开发人员也可以为集合定义统一数据模型,包含字段类型和字段上的验证和限制等。

此外,mongodb还有下面一些优势

    • mongodb支持数据的聚合操作,为数据的查询,转换,分类排序提供了流水线式的工作方式。
    • 提供安全的数据存储和访问方式,具备数据加密,完备的用户登陆验证管理功能
    • 易于部署安装和拓展,支持横向添加多节点支持和纵向数据分片。
    • 支持多种数据存储引擎,包括WireTiger存储引擎和In-Memory存储引擎。
    • 高性能,内嵌数据模型,减少IO开销。支持索引查询,并支持为嵌套对象和数组建立索引。
    • 高可用,支持故障自动切换主节点,具备数据冗余备份功能。
相关推荐
言德斐5 分钟前
SQL性能优化的思路及策略
数据库·sql·性能优化
码界奇点15 分钟前
Django视图从基础到高级的全面解析
数据库·django·sqlite·web·python3.11
Allan_202524 分钟前
数据库学习
数据库·学习
fen_fen29 分钟前
人大金仓数据库kingbase8创建表示例
数据库·oracle
一勺菠萝丶34 分钟前
「您的连接不是私密连接」详解:为什么 HTTPS 证书会报错,以及如何正确配置子域名证书
数据库·网络协议·https
²º²²এ松1 小时前
蓝牙低功耗(BLE)通信的中心设备/外围设备(连接角色)、主机/从机(时序角色)、客户端/服务器(数据交互角色)的理解
运维·服务器·数据库
百锦再1 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
数据库知识分享者小北2 小时前
云栖重磅|瑶池数据库:从云原生数据底座向“AI就绪”的多模态数据底座演进
数据库·人工智能·云原生
_Johnny_2 小时前
Redis 升级操作指南:单机与主从模式
数据库·redis·缓存
源力祁老师2 小时前
ODOO数据文件(XML、CSV、SQL)是如何转换并加载到 Odoo 数据库
xml·数据库·sql