什么是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:用于分片时,存储分片信息的数据库。