3.文档存储数据库MongoDB
MongoDB是一款开源、跨平台、分布式,具有大数据处理能力的文档存储数据库。
MongoDB是由C++语言编写的非关系型数据库,也是一个基于分布式文件存储的开源数据库系统。
概述
1、发展历程
2、简介
(1)可扩展,敏捷 (2)语法类似面向对象、关系型数据库查询语句(支持建立索引)
(3)面向集合的文档型数据库 (4)模式*的文档型数据库
3、优势
(1)易用性:无“行”,文档中嵌入“文档”、“数值”,无预定义模式
(2)高性能:动态填充,对文件预分配,高效查询
(3)高可用性:(副本集)
(4)易扩展型:横向扩展,分片处理
体系结构
1、发展历程
MongoDB的逻辑结构是体系结构的一种形式,它是一种层次结构,主要由文档(Document)、集合(Collection)、数据库(DataBase)这三部分组成。
MongoDB的逻辑结构是面向用户的。
- 数据库
一个数据库可创建多个集合,系统默认提供admin、local、config、test数据库.
admin数据库:存储数据库账号的相关信息。
local数据库:存储限于本地单台服务器的任意集合。
config数据库:存储分片集群中与分片相关的元数据信息。
test数据库,是MongoDB默认创建的一个测试库,默认连接。 - 集合
一般集合:通常称为集合,没有固定的格式,数据具有一定关联性
上限集合:可以限制集合的容量大小,在数据存满时,从头开始覆盖最开始的文档,从而进行循环写入。 - 文档
以键值对的形式存储在集合中,其中,键用于唯一标识一个文档,为字符串类型,值可以是各种复杂的文件类型,(BSON)
文档中不能有重复的键,每个文档都有一个默认的_id键。
MongoDB单个文档大小上限为16MB
特点:(1)键值对有序 (2)区分字符串和数字 (3)区分大小写
数据类型
- 数字类型:MongoDB支持三种数字类型(即32位整数(Int32)、64位整数(Int64)和64位浮点数(Double))
- 日期类型:MongoDB会将存储的日期自动保存成ISODate日期类型。
- 数组类型:MongoDB数组是一系列元素的集合,使用中括号**[ ]**表示数组。数组元素允许重复且位置固定,数组中可以存在不同数据类型的元素。
- ObjectId类型:ObjectId 是一个12字节BSON类型,由一组十六进制的24位字符串构成,每个字节存储2位十六进制字符,总共使用了12字节的存储空间。
Time:前4个字节表示时间戳 Machine:后的3个字节表示所在主机的唯一标识符
PID:后2个字节表示进程标识符 INC:后3个字节是一个随机值 内嵌文档 code类型
使用规范
数据库,集合,文档统一使用规范 编码格式必须为UTF-8字符,不可以出现空字符串,命名中不可含有“\0”字符即空字符,建议不要使用数字开头
名称区分大小写(建议全部小写),不使用数字开头,名称的长度限制为64个字节
- 数据库
只能使用ASCII码表中的字母和数字,禁止使用下划线(“_”)以外的特殊字符,
建议数据库命名规则为db_xxxx - 集合
不能出现以“system.”开头的集合名称,这是系统集合保留的前缀
建议不要使用“_”(下划线)和“.”(点)以外的特殊字符
命名不可包含字符“$”,集合命名规则为t_xxxx - 文档
文档中的键建议全部为小写,不建议以数字或“_”开头
_id值不建议自定义,同一文档中,不可以存在相同名称的键
建议尽量不要使用数组字段作为查询条件