MongoDB相关概念
业务应用场景
传统的关系型数据库,在数据操作的"三高"需求以及应对web2.0的网站需求面前,显得力不从心
三高需求:
High performance
对数据库高并发读写的需求
Huge Storage
对海量数据的高效率存储和访问的需求
High Scalability&&High Availability
对数据库的高可扩展性和高可用性的需求
具体的应用场景如:
1. 数据量大
2. 写入操作频繁
3.价值较低的数据,对事务性要求不高
什么时候选择MongoDB?
1. 不需要事务及复杂join支持
2. 新应用,需求会变,数据模型无法确定,快速迭代
3. 应用需要2000-3000以上的读写QPS
4. 应用需要TB甚至PB级别的数据存储
5. 应用要求存储的数据不丢失
6. 应用需要99.999%高可用
7. 应用需要大量的地理位置查询,文本查询
MongoDB简介
MongoDB是一个开源,高性能,无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,
是NoSQL数据库产品中的一种,是最像关系型数据库(Mysql)的费关系型数据库
SQL概念 | MongoDB概念 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表链接 MongoDB不支持 | |
嵌入文档 | MongoDB通过嵌入式文档代替多表关联 | |
primary key | primary key | 主键, mongodb将_id字段自动设置为主键 |
数据模型
BSON数据类型参考列表
数据模型 | 描述 | 举例 |
---|---|---|
字符串 | 字符串类型的数据 | {“key”:“字符串”} |
对象ID | 12字节的唯一ID | {“key”:ObjectID()} |
布尔值 | true && false | {“key”:true} |
数组 | 值可以表示成数组 | {“key”:[“a”,“b”]} |
null | 表示空值或者未定义的对象 | {“key”:null} |
undefined | 文档中也可以支持未定义类型 | {“key”:undefined} |
正则表达式 | 正则表达式采用JavaScript的语法 | {“key”:/foobar/i} |
代码 | 文档中还可以包含javascript代码 | {“key”:function(){/…/}} |
MongoDB的特点
MongoDB主要有如下特点:
- 高性能:
MongoDB提供高性能的数据持久性,特别是,对嵌入式数据模型的支持减少了数据库系统上的I/O活动
索引支持更快的查询,并且可以包含来自嵌入式文档和数组的key
- 高可用性:
MongoDB的复制工具称为副本集,它可提供自动故障转移和数据冗余
- 高扩展性:
分片将数据分布在一组集群机器上,海量数据存储,服务能力水品扩展,MongoDB支持基于片键创建数据区域,在一个平衡的集群中,将一个区域所覆盖的读写只定向到该区域内的那些片
- 丰富的查询支持:
MongoDB支持丰富的查询语言,支持读和写的操作(CRUD),比如数据聚合,文本搜索,地理空间查询等
mongodb安装地址
有手就会环节 要是装不上就不用学了
mongodb:
https://www.mongodb.com/try/download/enterprise
mongodb连接工具 Robo3T:
https://robomongo.org/