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运行实例中。

MongoDB简介_第1张图片

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

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

mongodb的功能与优势

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

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

    • mongodb支持数据的聚合操作,为数据的查询,转换,分类排序提供了流水线式的工作方式。
    • 提供安全的数据存储和访问方式,具备数据加密,完备的用户登陆验证管理功能
    • 易于部署安装和拓展,支持横向添加多节点支持和纵向数据分片。
    • 支持多种数据存储引擎,包括WireTiger存储引擎和In-Memory存储引擎。
    • 高性能,内嵌数据模型,减少IO开销。支持索引查询,并支持为嵌套对象和数组建立索引。
    • 高可用,支持故障自动切换主节点,具备数据冗余备份功能。

你可能感兴趣的:(mongodb,mongodb,数据库)