`

MongoDB学习

 
阅读更多
MongoDB是基于分布式文件存储的数据库。
由C++编写,目的是为web应用提供"可扩展的高性能数据存储"解决方案。
MongoDB是介于关系数据库和非关系数据库之间的产品。是非关系数据库当中功能最丰富,最像关系数据库的。

1. NoSQL简介
NoSQL(Not Only SQL), 意思是"不仅仅是SQL"
NoSQL指的是非关系型数据库,用于超大规模的数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

2. RDBMS vs NoSQL
RDBMS:
- 高度组织化结构化数据
- 结构化查询语言SQL
- 数据和关系都存储在单独的表中
- 数据操纵语言,数据定义语言
- 严格的一致性
- 事务

NoSQL:
- Not Only SQL
- 没有声明性查询语言
- 没有预定于的模式
- key/value对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID.
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性,可伸缩性

NoSQL的优点和缺点
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系

缺点:
- 没有标准化
- 有限的查询功能
- 最终一致是不直观的程序

3. 什么是MongoDB
MongoDB是基于分布式文件存储的开源数据库系统。
在高负载下,通过添加更多的节点,可保证服务器性能。
MongoDB旨在为web应用提供可扩展的高性能数据存储解决方案。
MongoDB将数据存成文档,数据结构由(key/value)对组成。MongoDB文档类似于Json对象,字段值可以包含其他文档,数组及文档数组。

MongoDB的主要特点:
- MongoDB提供了面向文档的存储,操作起来较简单和容易。
- 你可以在MongoDB记录中设置任何属性的索引(如:firstName='Alian', Address='Gandhi Road')来实现更快的查询。
- 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
- 如果负载增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上。这就是所谓的"分片"
- MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- MongoDB使用update()命令可以实现替换完成的文档或者一些指定的数据字段
- MongoDB中的map/reduce主要用来对数据进行批量处理和聚合操作。
- Map-Reduce. Map函数调用emit(key, value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理
- Map函数和Reduce函数是用JavaScript编写的,可通过db.runCommand或mapreduce命令来执行MapReduce操作。
- GridFS是MongoDB中的一个内置功能,可用于存放大量小文件
- MongoDB支持各种编程语言:Ruby, Python, Java, C++, php, c#等
- MongoDB安装简单

4. MongoDB概念解析
与SQL做对比:
SQL -- MongoDB -- 说明
database -- database -- 数据库
table -- collection -- 数据库表/集合
row -- document -- 数据记录行/文档
column -- field -- 数据字段/域
index -- index -- 索引
table join -- 无 -- 表连接/MongoDB不支持表连接
primary key -- primary key -- 主键/MongoDB自动将_id字段设置为主键

1)数据库:
一个mongoDB可以创建多个数据库
MongoDB的默认数据库为"db", 该数据库存储在data目录中。
MongoDB的单个实力可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

2)文档:
文档是mongoDB中最核心的概念。文档类似于关系数据库中的一行。
多个键及其关联的值有序的放在一起,就是文档。mongodb使用了BSON这种结构来存储数据和网络数据交换。
BSON可以理解为在JSON基础上添加了一些json中没有的数据类型。

文档的规则:
- 文档中的key/value是有序的
- 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)
- mongodb区分类型和大小写
- mongodb的文档不能有重复的key
- 文档的key是字符串

3)集合
集合是一组文档的组合。集合类似于关系数据库中的表。
在mongodb中的集合是无模式的,也就是说,集合中存储的文档的结构可以是不同的,比如下面两个文档可以同时存入到一个集合中。
{"name":"abc"}
{"name":"abc","sex":"nan"}

4)元数据
数据库的信息存储在集合中,他们使用了系统的命名空间:
dbname.system.*

MongoDB的数据类型:
String, Integer, Boolean, Double, Min/Max keys, Arrays, Timestamp, Object, Null, Symbol, Date, Object ID, Binary data, Code, Regular expression.

5. MongoDB复制(副本集)
MongoDB复制是将数据同步到多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。
复制还允许您从硬件故障和服务中断中恢复数据。

MongoDB复制原理:
mongodb的复制至少需要两个节点,其中一个是主节点,负责处理客户端请求,其余都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从,一主多从。
主节点记录在其上的所有操作oplog, 从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
副本集特征:
- N个节点的集群
- 任何节点可作为主节点
- 所有写入操作都在主节点上
- 自动故障转移
- 自动恢复

6. MongoDB分片
在MongoDB里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。
当MongoDB存储海量数据时,一台机器可能不足以存储数据,也不足以提供可接受的读写吞吐量。这时,我们可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

为什么使用分片?
- 复制所有的写入操作到主节点
- 延迟的敏感数据会在主节点查询
- 单个副本集限制在12个节点
- 当请求量巨大时不足出现内存不足
- 本地磁盘不足
- 垂直扩展价格昂贵





分享到:
评论

相关推荐

    MongoDB学习文档.zip

    本压缩包“MongoDB学习文档.zip”包含了一个名为“MongoDB学习文档.docx”的文件,该文件很可能是对MongoDB的基础知识、安装配置、操作指南以及Java API使用的详细介绍。 MongoDB的核心特性包括其灵活性、高可用性...

    mongodb学习手册.pdf

    ### MongoDB学习手册精要知识点概览 #### 一、MongoDB简介 MongoDB,源于英文单词“humongous”,意指其设计初衷在于处理海量数据。作为一款开源、面向文档的NoSQL数据库,MongoDB凭借其灵活性和高性能,迅速成为...

    mongodb学习笔记资料

    mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复

    MongoDB 学习资料集锦

    "MongoDB 学习资料集锦" 包含了深入学习 MongoDB 的关键资源,如 "mongodb权威指南" 和 "官方的详细手册"。这些资料将帮助初学者和经验丰富的开发人员掌握 MongoDB 的核心概念、操作以及最佳实践。 首先,"mongodb...

    mongodb学习手册

    这份“mongodb学习手册”可能涵盖了MongoDB的基本概念、安装配置、数据操作、查询优化、备份恢复、安全性以及一些高级特性,例如分片、复制集和聚合框架等内容。通过阅读这本手册,初学者可以快速理解MongoDB的工作...

    mongodb 学习文档

    这份"mongodb 学习文档"涵盖了多个方面的内容,包括MongoDB的基础概念、安装配置、数据模型、查询操作、聚合框架、索引管理、复制集、分片集群等关键知识点。下面将对这些主题进行详细阐述。 一、基础概念 MongoDB...

    Mongodb 学习 PPT上课教程

    MongoDB 学习 PPT 上课教程 MongoDB 是一个开源的、基于分布式的、面向文档存储的非关系型数据库。 MongoDB 的出现是为了解决大规模数据集合、多种数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的...

    mongodb学习笔记和mongodb权威指南

    `mongodb学习手册`可能是一个全面的教程,旨在引导初学者逐步了解MongoDB。它可能从安装和启动MongoDB服务开始,然后介绍数据插入、查询和更新的基本语法。此外,它可能还涵盖了一些进阶主题,如聚合框架、地理空间...

    MongoDB学习笔记思维导图.pdf

    本篇学习笔记将从基础操作到高级功能,详细阐述MongoDB的关键知识点。 首先,MongoDB的基本单元是集合(collection),类似于关系型数据库中的表,而集合中的元素称为文档(document),文档是键值对的集合,类似于...

    2024全网最全-MongoDB学习资料、安装教程

    2024全网最全-MongoDB学习资料、安装教程,是一份集学习和安装为一体的资源。MongoDB是一款基于分布式文件存储的数据库系统,由于其高效、高性能、高可用等特点而备受关注。该资源收集了众多MongoDB的学习资料和安装...

    MONGODB学习总结入门篇.pdf

    MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...

    MongoDB学习视频

    MongoDB学习视频,讲解了非关系型数据库的使用方法以及搭建方法,对mongomd进行了详细的解析!入门!

    Mongodb学习笔记.docx

    MongoDB 学习笔记 本文档是 MongoDB 学习笔记,涵盖了 NoSQL、Cache、运行平台等多个方面的知识点。 一、NoSQL 数据库 MongoDB MongoDB 是一个强大、灵活、可扩展性好的文档数据存储器,可以完成大部分关系数据库...

    MongoDB学习资料5合一

    "mongodb学习手册"作为一本基础教材,会详细介绍MongoDB的数据类型、数据结构如文档、集合和数据库,以及命令行工具的使用方法。它可能会讲解如何进行数据备份和恢复、性能优化等实用技巧,是系统学习MongoDB不可或...

    MongoDB 学习文档,内附Java代码

    ### MongoDB学习文档与Java集成详解 #### 一、MongoDB简介与安装 **MongoDB**是一种基于分布式文件存储的开源数据库系统,具有高性能、高可用性以及易扩展性等特点,适用于处理大规模数据集的应用场景。 ##### ...

    MongoDB学习资料教程讲义及代码.zip

    在“MongoDB学习资料教程讲义及代码.zip”这个压缩包中,包含了丰富的学习资源,包括讲义和实际操作代码,是学习MongoDB的理想资料。 首先,我们来详细了解MongoDB的基本概念。MongoDB是以JSON格式存储数据的,这种...

    MongoDB学习总结笔记

    以下是对MongoDB学习的一些关键知识点的详细解释: 1. **MongoDB的基本概念**:MongoDB以集合(Collections)的形式存储数据,集合相当于关系型数据库中的表。集合内包含文档(Documents),文档是JSON格式的数据...

Global site tag (gtag.js) - Google Analytics