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开销。支持索引查询,并支持为嵌套对象和数组建立索引。
    • 高可用,支持故障自动切换主节点,具备数据冗余备份功能。
相关推荐
sR916Mecz8 分钟前
Netty 线程模型
java·数据库·oracle
kjmkq20 分钟前
2026移动应用跨平台开发框架从技术到业务的创新
数据库·代码
EFCY1MJ9030 分钟前
MYSQL ID耗尽应急恢复方案
java·数据库·mysql
lzhdim37 分钟前
SQL 入门 8:SQL 复杂查询:子查询与ALL关键词
数据库·sql·mysql
不像程序员的程序媛1 小时前
mysql 表主键id 自增&雪花
数据库·mysql
l1t1 小时前
DeepSeek辅助编写的Oracle dmp转SQL脚本和CSV文件工具
数据库·人工智能·sql·oracle
Carino_U1 小时前
Innodb底层原理与MySQL日志机制
数据库·mysql
稻草猫.2 小时前
Spring事务操作全解析
java·数据库·后端·spring
momin~2 小时前
MySQL-part2【MySQL表的增删改查】
数据库·mysql
white-persist2 小时前
【vulhub weblogic CVE-2017-10271漏洞复现】vulhub weblogic CVE-2017-10271漏洞复现详细解析
java·运维·服务器·网络·数据库·算法·安全