什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

什么是MongoDB?

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB的特点

MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。

MongoDB 很容易扩展

MongoDB可以通过字段,范围查询进行搜索,并且还支持正则表达式搜索。

可以索引文档中的任何字段。

MongoDB支持主从复制。主机可以执行读写操作,从机从主机复制数据,只能用于读取或备份(不写入)。

PS.如何扩展数据库:

纵向扩展:提升单台服务器的性能达到优化的目的

横向扩展:购买一台普通的服务器添加到集群

MongoDB三个基本概念

1、文档

文档就是键值对的一个有序集合,是一组键值(key-value)对(即BSON)。

BSON(Binary JSON)是类JSON的二进制文档存储格式。

【注】

1) MongoDB的键是有序的

2) MongoDB中不能出现重复的键

3) MongoDB的文档区分数据类型

4) MongoDB的文档区分大小写

【命名规范】

1)键不能含有\0 (空字符)。这个字符用来表示键的结尾。

2)"."和"$"有特别的意义,只有在特定环境下才能使用。

3)以下划线"_"开头的键是保留的(不是严格要求的)。

2、集合

集合就是一组结构类似的文档,再起一个统一的名字,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

动态模式,意味着,每个文档的格式可以不同。

【命名规范】

集合名不能是空字符串“”。

集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。

集合名不能以"system."开头,这是为系统集合保留的前缀。

集合名字不能包含保留字符"$"。

3、数据库

数据库就是硬盘上存储的文件,一个mongodb中可以建立多个数据库。

MongoDB的默认数据库为"db",该数据库存储在data目录中。

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

【命名规范】

不能是空字符串。

不能违反所在操作系统平台的文件命名规则。

只能使用ASCⅡ范围内的字母和数字。

数据库名区分大小写,建议全部小写。

数据库名最多64字节。

不能使用保留的数据库名:

    -admin:存储管理员身份的数据库。

    -local:存储本地集合的数据库。

    -config:用于分片时,存储分片信息的数据库。