基本概念和应用场景
应用场景
- 数据量大
- 写入操作频繁
- 价值较低的数据,对事务要求不高
场景特点
- 应用不需要事务和复杂join
- 应用需要2000~3000以上的的读写QPS
- 应用需要TB或PB级别数据存储
- 应用发展迅速,需要快速水平扩展
- 应用要求存储的数据不丢失
- 99.99%的高可用
- 大量的地理位置查询,文本查询
MongoDB特点
- 高性能
- 高性能的数据持久性
- 索引支持更快的查询,可以包含来自嵌入式文档的数组的键
- Gridts解决存储的需求
- 高可用
- MogoDB的复制工具为副本集,可提供自动故障转移和数据冗余
- 高扩展
- 分片将数据分布在集群机器上
- 丰富的查询支持
- 其他特点
- 无模式(动态模式)
- 灵活的文档模式
基本概念
简单介绍
- 开源,高性能,无模式的文档型数据库
- 支持的数据结构非常松散,类似json的格式叫BSN
- 记录是一个文档,由一个字段和值对(field:value)组成的数据结构,一个文档认为是一个对象,字段的数据类型是字符型,值除了基本的类型还可以包括文档,普通数组和文档数组
体系结构
sql概念 | MongoDB概念 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 行/文档 |
column | field | 数据字典/域 |
index | index | 索引 |
table joins | MongoDB不支持连表 | |
嵌入文档 | MongoDB通过嵌入文档来替代多表连接 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
数据类型
数据类型 | 描述 | 举例 |
---|---|---|
字符串 | UTF-8都可表示为字符串类型的数据 | {“x”:“bar”} |
对象id | 对象id是文档的12字节的唯一ID | {“x”:ObjectId{}} |
布尔值 | true或false | {“x”:true}+ |
数组 | 值的集合或列表 | {“x”:[“a”,“b”,“c”]} |
32位整数 | 类型不可用,会被自动转换为64位浮点数 | |
64位整数 | 型不可用,会被自动转换为64位浮点数 | |
null | 空值或未定义的类型 | {“x”:null} |
undefined | 未定义类型 | {“x”:undefined} |
符号 | 不支持,会自动转换为字符串 | |
正则表达式 | 文档可以包含正则,采用js的正则表达式 | {“x”: /bar/i} |
代码 | 文档可以包含js代码 | {“x”: function(){}} |
二进制数据 | 可以有任意字节的串组成,不过shell无法使用 | |
最大值/最小值 | BSON包括一个特殊类型,表示可能的最大值 |
- shell默认64浮点型数值,对于整型值.可以使用Numberint或者NumberLong.{“x”:NumberInt(“3”)},{“x”:NumberLong(“3”)}