mongoDB简介及关键特性

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: mongoDB是一个介于关系数据库和非关系数据库之间的开源产品,是最接近于关系型数据库的NoSQL数据库。

mongoDB是一个介于关系数据库和非关系数据库之间的开源产品,是最接近于关系型数据库的NoSQL数据库。它在轻量级JSON交换基础之上进行了扩展,即称为BSON的方式来描述其无结构化的数据类型。尽管如此它同样可以存储较为复杂的数据类型。本文对其进行简要描述以及列出其关键特性。

一、什么是mongoDB

    开源的NoSQL数据库
    用于存储非结构化数据
    SQL中的绝大多数操作有对应的方式来实现
    采用BSON描述数据类型

二、有哪些逻辑概念


        mongoDB与SQL数据库脚本上大同小异,常见的逻辑对象通常包括
                数据库,集合,文档,字段
                索引,主键,聚合
                以下为其与SQL的对照,详细可以参考:http://blog.csdn.net/leshami/article/details/52692912

        SQL Terms/Concepts                      MongoDB Terms/Concepts
        -------------------                     -----------------------------------
        database                                  database
        table                                     collection
        row                                     document or BSON document
        column                                  field
        index                                     index
        table joins                             embedded documents and linking
        primary key(指定一个唯一列或复合列)      primary key(由_id自动生成)
        aggregation (e.g. group by)             aggregation pipeline 

如下图所示
这里写图片描述

    文档
            简单点说,可以理解为一个文本文件,不过这个文本文件有固定的格式,即为使用BSON的有序键值对。
            对于接触或使用过关系型数据库的亲们,文档就相当于表中的一条记录。
            MongoDB 的文档可以设置为使用不同的字段,并且相同的字段可以使用不同同的数据类型
            文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
            MongoDB区分类型和大小写。
            MongoDB的文档不能有重复的键。
            文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

    示例
            {
            author:"Leshami",
            age:25,
            email:"robinson.cheng@qq.com",
            score:{c:89,m:96,e:87},
            country:"USA",
            books:["JS","C++","EXTJS","MONGODB"]
            blog:"http://blog.csdn.net/leshami"
            }       

    集合
            多个文档组成一个集合,相当于关系型数据库的表。通常包括常规集合以及定长集合
            集合存在于数据库中,无固定模式,即使用动态模式。也就是说集合不要求每一个文档使用相同的数据类型以及列
            上述特性及成为free-schema,但通常还是建议将相关类型的文档组织或存放到一个集合里边。 
            在上面的图示中,即可以看到都多个不同的文档组成了一个集合

    数据库
            一个mongodb实例可以包含多个数据库
            一个数据库可以包含多个集合
            一个集合可以包含多个文档                            

三、有哪些关键特性

    面向集合
            易存储对象类型的数据,包括文档内嵌对象及数组,支持二进制及大型对象
    模式自由
            无需知道存储数据的任何结构定义,支持动态查询、完全索引
    文档型
            以键-值对形式存储,支持数组,支持文档之间嵌套
    支持B+索引,全文索引,地理空间索引
    C++实现
    支持复制和故障恢复
            可以通过配置复制集的方式实现节点间复制以及故障转移
            基于复制集的读写分离以分散IO,提高性能
    支持分片
            可以基于片键实现分片,即将数据集分散在不同的节点
            支持分片自动均衡以及手动均衡
            可以结合复制集构建强大的分布式集群
    易伸缩,支持水平的数据库集群,可动态添加额外的服务器
    支持多平台
            Windows,Linux,Mac OS-X,FreeBSD,Solaris
    多语言驱动
            Ruby,Java,C#,JavaScript,C,C++,PHP,Perl,Python
    不需要额外的缓存                
    丰富的数据类型
    mongoDB自身包含一个监视工具用于分析数据库操作的性能

四、适用哪些场景

    更高的写负载
    不可靠环境保证高可用
    数据量超大规模,大尺寸,低价值的数据 
    基于位置的数据查询      
    非结构化数据的爆发增长
    常用的场景包括
            Web应用程序
            敏捷开发
            分析和日志(目标原子更新,定长集合)
            缓存
            可变Schema 

五、不适用哪些场景

    高度事务性,强一致性业务系统(银行,证券等)
    传统商业智能应用
    极为复制的业务逻辑查询
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
存储 SQL NoSQL
MongoDB 6.0 新特性概览
正如发布MongoDB 5.0时承诺的更快发布频率,年度大版本MongoDB 6.0也于2022年正式跟广大数据库爱好者们见面了。目前阿里云MongoDB已经完成了对6.0版本的适配工作,大家可以直接在官网控制台进行购买和尝鲜体验!
MongoDB 6.0 新特性概览
|
存储 NoSQL 安全
【MongoDB】MongoDB可查询加密简介
MongoDB 6.0引入了一个预览功能,它实现了一个近乎神奇的功能,即允许将加密数据用作搜索目标,而无需将密钥传输到数据库。
|
3月前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
65 0
|
5月前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
67 0
|
6月前
|
存储 NoSQL 关系型数据库
MongoDB简介以及核心概念
MongoDB简介以及核心概念
56 1
|
6月前
|
供应链 NoSQL 关系型数据库
MongoDB中的事务处理与ACID特性深度解析
【4月更文挑战第30天】MongoDB从4.0版开始支持多文档事务,以满足对数据一致性和可靠性的需求。本文深入探讨了MongoDB的事务处理机制及ACID特性:原子性保证操作全执行或全不执行;一致性确保事务前后数据库状态符合业务规则;隔离性通过MVCC和乐观锁防止并发影响;持久性借助Write Concern确保数据持久化。事务适用于金融交易等高一致性场景,但在使用时需评估业务需求和数据访问模式。
|
6月前
|
存储 分布式计算 NoSQL
MongoDB的简介和安装(在服务器上)
MongoDB的简介和安装(在服务器上)
114 0
|
存储 JSON NoSQL
01 MongoDB - 简介
01 MongoDB - 简介
40 0
|
存储 JSON NoSQL
95分布式电商项目 - MongoDB 简介
95分布式电商项目 - MongoDB 简介
68 0
|
存储 JSON NoSQL
MongoDB从入门到实战之MongoDB简介
MongoDB从入门到实战之MongoDB简介
278 0
MongoDB从入门到实战之MongoDB简介