初始MongoDB
最近在做新闻的推荐系统,用户画像这块需要用MongoDB来存储,所以就抽时间系统学一下MongoDB吧!
好好学习,天天向上!哈哈哈!— Rocket,Qian
1. NoSQL数据库
NoSQL(Not Only SQL)数据库是“非关系型数据库”的统称。
1.1 何为NoMQL数据库
NoSQL数据库与传统的关系型数据库不同,NoSQL数据库中数据之间的关联较少,因此更容易分散储存。
通常适用于存储大规模数据。在储存这些大量数据时,通常没有绝对固定的模式,数据是独立存在的,无需多余操作就能以横向扩展的方式进行分布式存储。
MongoDB是一种采用文档形式进行存储的数据库,具有很强的灵活性和可扩展性。
- MongoDB具有直观且完善的数据处理指令;
- 提供驱动(driver)和丰富的API;
- 提供完善的管理模式和配置方式。
1.2 NoSQL数据库有哪些特征
- 可弹性扩展:去掉关系型数据库的关联特性,数据之间没有关联,更容易扩展;
- BASE特征:Basically Available、Scalable、Eventual Consistency;
- 大容量、高性能;
- 灵活的数据模型;
- 高可用性:NoSQL数据库可通过副本集实现故障转移,保证高可用。
1.3 NoSQL数据库有哪些种类
- 1.文档型数据库
就是MongoDB,采用文档的方式来存储数据,即将单个实体的所有数据都存在一个文档中,而文档存在于集合中。 - 2.“键值对”(key-value)数据库
Redis属于此类。
键值对数据库使用数据结构中的key来查找特定的Value。
键值对数据库适用大量数据的高访问负载场景,例如日志系统。 - 3.列存储数据库
- 4.图存储数据库
1.4 NoSQL与RDB使用场景
-
数据模型的关联要求
需要多表关联,更适合用RDB;对象实体关联少,则更适合用NoSQL数据库。
-
数据库的性能要求
数据量多且访问速度至关重要,那么使用NoSQL数据库更合适。NoSQL数据库能通过数据的分布式存储大幅提高存取性能。
-
数据的一致性要求
NoSQL数据库在事务处理与一致性方面无法与RDB相提并论。
-
数据的可用性要求
NoSQL数据库提供了强大的数据可用性。
2. MongoDB
2.1 概念
一个半结构化的非关系型数据库,有着分布式的存储架构,能有效解决海量数据的存储与高并发访问效率的问题。可以提供性能佳且扩展性高的解决方案。
对于数据的结构没有硬性要求,以BSON格式来保存数据,便于存储复杂多样、类型特殊的数据文件。
支持丰富多元的查询,不仅支持大部分关系型数据库的单表查询,还支持范围查询、排序、MapReduce等。
2.2 MongoDB特性
2.2.1 存储结构
- 采用集合存储文档数据。集合类似于SQL的表。
- 文档的存储架构基于JSON格式改良的BSON。
- 可以存储无模式的文档,不需要事先定义数据结构和数据类型。
- 能让使用者根据应用程序的存取需求来设计反正规化的数据结构,以加快查询速度。
2.2.2 数据查询
- 不仅支持单表查询,还支持强大的聚合计算(如:sum、avg、count、group等),以及大数据引擎常见的映射和归纳(MapReduce)
- 可以在特定的集合字段上添加索引,提高查询性能
- 多种语言操作,Java,python等。
2.2.3 数据库架构
- MongoDB集群具有副本集的架构,可以实现数据实时备援、故障转移等,确保服务不会长时间中断或发生数据丢失的情况;
- 支持数据自动切分,实现横向扩容,能保证数据存储与访问的负载均衡,使得数据量不收单台硬件限制。虽然数据是分布存储,但对应用程序来说,仍可以通过统一路由来访问数据。
2.3 适用场景
- 需要处理大量低价值数据,且对数据处理性能有较高要求。
- 需要借助缓存层来处理数据
- 需要高度的伸缩性。
2.4 MongoDB中的对象
- Database
- Collection:集合对应MySQL的表(Table),差别在于集合不需要事先定义模式(schema)。
- Document:文档是MongoDB存储数据的基本单元,相当于MySQL的行(row)。
- View
- Index
- User
- Stored Procedure
- Field:字段(field)是文档中的元素,相当于MySQL的表(Column)。
MongoDB 数据库 | 关系型数据库 |
---|---|
Database | Database |
Collection | Table |
Document | Row |
View | View |
Index | Index |
User | User |
Sorted Procedure | Sorted Procedure |
Field | Column |
2.5 MongoDB中的文档
2.6 MongoDB中的数据类型
- 基本数据类型
MongoDB使用的是BSON文档格式,储存数据时会分类型,每个类型都有其对应的数字。在MongoDB中,如需要修改字段类型,则须依照对应的名称或数字来修改。如下表:
类型 | 对应数字 | 名称 |
---|---|---|
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binary data | 5 | |
undefined | 6 | |
ObjectID | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 |
- ObjectID
MOngoDB文档中有一个自动生成的字段——_id,此字段会被自动指定为一个不重复的值。若不指定,MongoDB驱动程序会在写入数据时自动生成一个类型为ObjectID的唯一值。 - 子文档
- 数组
- 日期和时间
附:MongoDB大学在这个里面注册账号,可以免费使用一个3个node的集群,同时配有讲解课程,是入门MongoDB比较好的途径,仅供参考。
当然也可以在本机安装Mongodb单机版,Robo 3T(一个第三方客户端)来使用。