当前位置: 首页 > news >正文

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开销。支持索引查询,并支持为嵌套对象和数组建立索引。
    • 高可用,支持故障自动切换主节点,具备数据冗余备份功能。

http://www.lryc.cn/news/250303.html

相关文章:

  • 尚硅谷hadoop3.x课程部分资料文件下载,jdk,hadoopjar包
  • vue el-radio-group多选封装及使用
  • Kaggle-水果图像分类银奖项目 pytorch Densenet GoogleNet ResNet101 VGG19
  • TPLink-Wr702N 通过OpenWrt系统打造打印服务器实现无线打印
  • [UGUI]实现从一个道具栏拖拽一个UI道具到另一个道具栏
  • 微服务--08--Seata XA模式 AT模式
  • Doris 数据导入一:Broker Load 方式
  • docker踩坑记录:docker容器创建doris容器间无法通讯问题
  • springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp
  • TCP简介及特性
  • ElasticSearch 排障常用方法
  • 【SA8295P 源码分析 (四)】136 - QNX 如何抓取系统 log 方法 之 网络部分日志抓取方法
  • 传统算法:使用Pygame实现SVM(支持向量机)算法
  • cookie wzws_sess** 逆向
  • JIRA 基本使用
  • 什么是JVM的内存模型?详细阐述Java中局部变量、常量、类名等信息在JVM中的存储位置
  • c#学习相关系列之as和is的相关用法
  • excel合并单元格教程
  • img[src=““] img无路径情况下,页面出现边框
  • TA-Lib学习研究笔记(八)——Momentum Indicators 上
  • 【MATLAB源码-第91期】基于matlab的4QAM和4FSK在瑞利(rayleigh)信道下误码率对比仿真。
  • pywin32后台键鼠
  • 大屏适配方案(vw、vh)
  • 【QuickSort】单边快排思路及实现
  • C++:继承
  • 苍穹外卖--客户催单
  • 春秋云境:CVE-2022-32991(sql注入)
  • css实现鼠标移入背景图片变灰并浮现文字的效果
  • ES-深入理解倒排索引
  • linux NAT网卡配置static