美文网首页
初识MongoDB和NoSQL

初识MongoDB和NoSQL

作者: 转身丶即天涯 | 来源:发表于2021-08-08 17:05 被阅读0次

一、NoSQL

NoSQL(Not Only SQL),非关系型数据库。

1. 为何选择NoSQL?

1.1 NoSQL数据库中数据之间的关联较少,因此更容易分散存储。
1.2 NoSQL通常用于存储超大规模数据,这些数据通常没有固定的数据结构,数据是独立存在的,这样方便以横向扩展的方式进行分布式存储。
1.3 BASE特性:基本可用性(Basically Available)、可伸缩性(Scalable)、最终一致性(Eventual Consistency)
1.4 大数据量、高性能:由于数据之间的关联较少,更容易实现并发处理,拥有更好的读写性能。
1.5 灵活的数据模型:不需要实现定义数据字段,可以随时存储自定义的数据格式,这使得NoSQL更容易保存多变的非结构化数据或半结构化数据。

2. 什么是结构化、半结构化、非结构化数据?

  • 结构化:具有明确字段的数据,比如关系型数据库中的数据
  • 半结构化:JSON、XML、HTML文档等
  • 非结构化:比如声音、图形文件

3. NoSQL数据库有哪些种类?

3.1 文档型数据库
以文档的方式来存储数据,即将单个实体的所有数据都存在一个文档中,而文档又存在集合中。
MongoDB属于此类数据库。

3.2 键值对(Key-Value)数据库
键值对数据库主要使用数据结构中的键(Key)来查找特定的数据(Value)
比如Redis属于此类数据库。

3.3 列存储数据库
列存储数据库是以列为单位存储数据的,相对于行存储的数据库,它更适合用于批量数据处理与实时数据查询。
其优点是:同一列数据的格式相同,所以适合数据压缩,也更善于处理大量数据的查询与计算,而且利于分布式扩展。
其缺点是:不适合做实时的删除或更新操作。
比如AWS Redshift属于此类数据库。

3.4 图存储数据库
图存储数据库采用图形理论来存储实体之间的关系信息,比如社交关系网络、族谱。
比如Neo4j、FlockDB、GraphDB都属于此类。

4. NoSQL和RDB如何选择?

4.1 数据模型的关联性要求
关联多选RDB,关联少选NoSQL

4.2 数据库的性能要求
若数据量多、访问速度要求快,选NoSQL

4.3 数据的一致性要求
NoSQL在事务处理与一致性方面无法与RDB相提并论,因此NoSQL很难同时满足强一致性与高并发性。
如果应用程序对性能要求较高,则NoSQL只能做到数据最终一致。

4.4 数据的可用性要求

二、初识MongoDB

1. MongoDB有哪些特性?

1.1 采用集合存储文档,结构松散,容易存储大量数据。
1.2 基于BSON(Binary JSON)格式,因此可以存储视频、图片、音频。
1.3 不需要要事先定义数据结构和数据类型
1.4 不仅支持大部分RDB的单表查询功能,还支持聚合计算(如sum、avg、count、group等),以及MapReduce
1.5 可以在特定集合字段上添加索引,以提高查询性能。
1.6 多种程序语言支持,包括Java、Python、C、C++、C#、Node.js、PHP等
1.7 MongoDB集群具有副本集的架构,可以实现数据实时备援、故障转移等,确保高可用以及数据不丢失。
1.8 支持数据块自动切分,可以实现横向扩容,能保证数据存储于访问的负载均衡,使得数据量可以不受单台硬件的限制。
1.9 在分布式存储的情况下,客户端仍可以通过统一的路由来访问数据。

2. MongoDB适用于那些场景?

2.1 需要处理大量的低价值数据,且对数据处理性能有较高要求
2.2 需要借助缓存层来处理数据。
因为MongoDB能高效的处理数据,所以非常适合作为缓存层来使用,将MongoDB作为持久化缓存层,可以避免底层存储的资源过载。
2.3 需要高度的伸缩性。
对于RDB而言,数据量达到一定数量后,其性能会急剧下降。而MongoDB可以提供集群环境,实现最大程度的扩展,且不影响性能。

相关文章

网友评论

      本文标题:初识MongoDB和NoSQL

      本文链接:https://www.haomeiwen.com/subject/czdovltx.html