入门篇
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)
1.什么是NoSQL
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
2.关系型数据库 PK 非关系型数据库
RDBMS | NoSQL |
高度组织化结构化数据 | 代表着不仅仅是SQL |
结构化查询语言(SQL) | 没有声明性查询语言 |
数据和关系都存储在单独的表中。 | 没有预定义的模式 |
数据操纵语言,数据定义语言 | 键 - 值对存储,列存储,文档存储,图形数据库 |
严格的一致性 | 最终一致性,而非ACID属性 |
基础事务 | 非结构化和不可预知的数据 |
CAP定理 | |
高性能,高可用性和可伸缩性 |
3.NoSQL分类
4.CAP原则
在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
- 一致性(Consistency) (所有节点在同一时间具有相同的数据)
- 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
- 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
5.mongodb数据结构
MongoDB的基础单元——文档
文档是MongoDB的核心概念。多个键值对有序的放置在一起便是文档
{"course1":"MongoDB","course2":"hadoop"}
说明:文档是有序的,键是区分大小写的
集合
集合就是一组文档。
集合是无模式的,即:一个集合中的文档可以是各式各样的例如:
{"course1":"hadoop","course2":"hive"} {"studentName":"小红"}
数据库
MongoDB中多个集合组成数据库。一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。每个数据库有自己的权限控制
6.关系型数据库与MongoDB逻辑结构对比
7.测试MongoDB
> show dbs //显示数据库信息 local (empty) > db //查看当前链接到那个数据库 test > user test //使用test数据库 Fri Mar 28 10:20:14 SyntaxError: missing ; before statement (shell):1 > use test switched to db test > post = {"title":"love","content":"I love you"} //定义文档 { "title" : "love", "content" : "I love you" } > db test > db.test.blog.insert(post) //将文档插入到集合中 > db.test.blog.find() //查询集合 { "_id" : ObjectId("5334dd149b7a445ea2166559"), "title" : "love", "content" : "I love you" } > post = {"job":"java","city":"wuhan"} { "job" : "java", "city" : "wuhan" } > db.test.blog.insert(post) > db.test.blog.find() { "_id" : ObjectId("5334dd149b7a445ea2166559"), "title" : "love", "content" : "I love you" } { "_id" : ObjectId("5334dd669b7a445ea216655a"), "job" : "java", "city" : "wuhan" } >
8.MongoDB中的数据类型
null
{"x":null}
布尔
{"x":true}
32位整数
64位整数
64位浮点数
字符串
{"x":"hi word"}
对象id
日期
{"x":new Date()}
正则表达式
{"x":/foobar/i}
代码
{"x":function(){//......}}
二进制数据
可以由任意字节的串组成
最大值
最小值
未定义
{"x":undefined}
数组
{"x":["a","b","c"]}
内嵌文档
{"x":{"foo":"bar"}}
9._id和ObjectId
Mongodb中存储的文档必须有一个“_id”键。这个键的值可以是任何类型的,默认是ObjectId对象。在集合中,每个文档都有唯一的“_id”,来确保集合里面每个文档都能被唯一标示。
一个BSON ObjectID是12字节的值,包含了4字节的时间戳(纪元以来的秒数),3字节机器id,2字节进程id,和3字节计数值。注意不同于BSON中的其他字段,时间戳和计数值字段必须存储为big endian。这是由于会对它们按字节比较,我们希望大多数情况下保证是升序。它的格式:
相关推荐
MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...
本篇文章将深入介绍MongoDB的基础知识,包括它的应用背景、主要特性、数据库概念、安装部署以及基本操作。 在国内,MongoDB被广泛应用于互联网公司,如电商平台、社交网络和大数据分析等场景。在国外,其应用更为...
MongoDB入门篇1主要介绍了数据的基本概念,数据库管理系统(DBMS)的定义,常见的数据库管理系统,以及NoSQL数据库的相关知识。 1. 数据:数据是未经处理的原始记录,描述事物存在的符号,通常需要通过组织和分类...
本资源包含四篇PDF学习文档,旨在帮助初学者和进阶者全面掌握MongoDB的相关知识。 首先,"MongoDB基础教程"是入门MongoDB的最佳起点。这个教程将详细介绍MongoDB的基本概念,如数据模型、集合、文档、字段等。...
第一部分:入门篇 - **第一章**:介绍MongoDB的核心特性,包括从1.0到2.0版本新增的功能。重点讲解了聚合框架与全文搜索等高级特性。 - **第二章**:引导读者通过JavaScript Shell进行交互,深入了解MongoDB的文档...
MongoDB入门和微聊即时通讯功能实现 在这篇文章中,我们将探索MongoDB的基本概念和Java API的使用,并学习如何使用Spring Boot整合MongoDB来搭建微聊系统实现微聊功能和分布式WebSocket解决方案。 MongoDB入门 ...
前端迈向全栈入门篇。基于 Node.js + Express + ejs+ MongoDB
本篇文章将深入介绍MongoDB的基础知识,包括它的核心概念、安装与配置、数据模型、查询操作以及一些常用命令。 1. MongoDB的核心概念 - 文档数据库:MongoDB以JSON格式的文档存储数据,每个文档由键值对组成,支持...
总的来说,这个MongoDB入门教程覆盖了从安装到实际操作的全方位内容,是学习MongoDB的宝贵资源。通过这些笔记,读者不仅可以理解MongoDB的核心概念,还能掌握在实际项目中应用MongoDB的技能。无论是开发Web应用还是...
本篇快速入门笔记主要关注MongoDB中的插入文档操作。 首先,MongoDB的文档是以BSON(Binary JSON)格式存储的,这是一种二进制化的JSON衍生格式,它允许更高效地存储和传输数据。BSON文档包含键值对,其中键是字符...
### MongoDB基础篇知识点 #### 1.1 为什么要用NoSQL - **NoSQL简介**:解释什么是NoSQL数据库,它是非关系型数据库的总称,不使用传统的表格结构存储数据。 - **发展现状**:介绍NoSQL的发展历程,以及它如何在...
然后,内容转向Pentaho的入门,详细说明了如何安装Pentaho以及如何通过Instaview访问和连接到MongoDB。在Instaview中,我们学会了如何对MongoDB集合进行解析和分析,并添加查询表达式以及创建和保存分析视图。 在...
作为基于分布式文件存储的数据库,在目前的云计算实践中,MongoDB炙手可热。《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发...