基本 nosql 和 mongodb等数据库对比基本 nosql 和 mongodb等数据库对比

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 基本 nosql 和 mongodb等数据库对比基本 nosql 和 mongodb等数据库对比

咱们工作或者学习的过程中,接到一个需求,或者学习一个技能的时候,我们是如何去学习的呢?

我想大概分成如下几步吧:

  • 了解背景,了解这个技术或者需求的背景,特性,定律等等
  • 对比学习,进行同类事物对比
  • 关联学习,关联已知的知识进行学习

一起来看看 NOSQL 是什么

这里来推荐一个看数据排名的地址:

DB-Engines

这里可以看到各种类型的数据库排名,数据库选型的时候这个网址就很香了

NOSQL 是什么

咱们先来列举一下传统型数据库的特点:

  • 结构化
  • 二维表
  • E-R关系(实体-关系模型)
  • sql 标准化
  • 支持事务(ACID)
  • 索引

sql ,是结构化查询语言,泛指关系型数据库

nosql (not noly sql),不仅仅是 sql ,这泛指不提供 sql 功能的非关系型数据库

它不遵循 sql 的标准,acid 特性,表结构等特性。

最开始 nosql 实际上是 not sql ,后面慢慢发展成 not only sql

简述 nosql 的发展历史:

列式存储 – 键值对存储 – 文档存储 – 图形存储

为什么需要 NOSQL?

大致列举如下几点:

  • 由于现代网络的发展,大多是超大规模高并发的 web 2.0 动态网站
  • 对于大量数据,关系型数据库已经遇到瓶颈,性能方面和扩展性方面的瓶颈
  • 如何解决大规模数据集合,多重数据种类带来的挑战,这就需要 nosql 来处理了
  • mysql 等关系型数据库应用在大数据上面,显然是一个难题了

常用的四大类 NOSQL 数据库的优缺点对比

分类 优势 劣势 场景 代表
键值对 查找速度快 数据无结构化,通常只是用来作为字符串或者二进制 内容缓存,主要用于处理大量数据的高频访问负载 reids
列式存储 查找速度快,支持分布式横向扩展,数据压缩率搞 功能相对受限 用于分布式文件系统 HBase
文档存储 数据结构要求不严格,表结构可变 查询性能不高,缺乏统一的查询语法 用于web 应用等 MongoDB
图形数据库 可以利用图结构相关等算法 需要对整个图做计算,不利于图数据的分布式存储 用于社交网络,推荐系统,意向图,兴趣图,关系图等等 Neo4J

我们可以知道 es 也是 文档存储的 nosql ,那么 es 和 mongodb 有什么异同的呢?

mongodb 和 elasticsearch 相同点

  • 文档结构化
  • 都有自定义的一套操作语法
  • 有全文检索 (es 更多是用在搜索引擎上面
  • 索引

不同点

  • mongodb 有 MapReduce , es 没有
  • 全文检索实现的方式不一样

nosql 和 关系型数据库对比

特点 NoSQL 关系型数据库
数据一致性上面 运用CAP定理,保证最终一致性,非ACID属性 严格的一致性,ACID
数据表的形式 键-值对存储,列存储,文档存储,图形数据库 二维表,数据和关系都存储在单独的表中
是否结构化 非结构化的、半结构化的,没有声明性查询语言 高度组织化结构化数据,结构化查询语言 sql
事务方面 属于 弱 事务 基础事务
Join 方面 弱,没有预定义的模式 强,数据操作语言,数据定义语言
成本代价 高(硬件方面和软件方面)
扩展性方面 强,高性能,高可用,可伸缩性强

什么是 mongodb ?

mongodb 是基于 C++ 开发的 NOSQL 开源文档数据库 ,是最像关系型数据库的 nosql,功能也是最丰富的 nosql

它具有所以的可伸缩性,灵活性,高性能,高扩展性的优势,大致有如下特性:

  • 面向集合文档的存储,存储 Bson (json的扩展)
  • 格式自由,数据格式自由,生产环境下面修改数据表结构对程序没有影响
  • 查询语句强大,面向对象查询语句,覆盖了 sql 语言的能力
  • 完善的索引支持,支持查询计划
  • 支持复制和自动故障转移 (这里有点像 redis)
  • 支持二进制数据和大型对象文件的高效存储
  • 使用分片集群提升系统的扩展性
  • 使用内存映射存储引擎,把磁盘的 IO 操作转换成内存的操作

什么业务场景需要使用 mongodb ?

mongodb 数据库,并不是说适合每一种场景的,咱们需要人尽其才,物尽其用,技术选型,我们也是要选择最合适的技术来解决实际的业务问题或者是场景问题

如下的场景就适合使用 mongodb:

  • 不需要事务及复杂的 join 支持
  • 要应对 2k - 3k 以上的读写 QPS 的时候
  • 存储的数据达到 TB 或者 PB
  • 新的服务,数据结构会变,类型会变,模型也会变的情况
  • 要求存储的数据不丢失
  • 要求 4 个 9 的高可用
  • 需要服务水平扩展,持续迭代的
  • 大量的地理位置查询,文本查询的

实际过程中,咱们会在哪些成场景使用到 mongodb 呢?

mongodb 应用的场景可以说是非常的多,大致有游戏,物流,内容管理,物联网,电商,社交,视频直播等等

如物流场景:

mongodb 存储订单信息,订单在运送的过程中,订单信息会不断的更新,这个时候使用mongodb 内嵌的数据形式来存储就非常方便,一次查询就可以将所有的物流信息全部取出来

再例如社交场景:

mongodb 存储用户信息,存储用户发表的朋友圈信息,那么就可以通过地理位置索引到附近的人,地点,以及相关的配套功能

不适合使用 mongodb 的场景

不适合使用 mongodb 的场景,即是 mongodb 自身的劣势场景,例如:

  • 高度的事务性系统,例如做银行等金融业务的,要求高度的一致性,mongodb 就不合适
  • 使用 sql 方便,数据结构相对固定的场景,这个使用使用 sql 标准成本会更低

最后贴一下 mongodb 的官方文档地址,学习任何一门技术,都是看官网的一手资料才是正确的

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1天前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
5天前
|
JSON NoSQL Ubuntu
在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库
在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库
15 1
|
12天前
|
NoSQL 大数据 MongoDB
云中对决:Amazon DocumentDB 与 MongoDB的终极较量,谁将主宰云端数据库的未来?
【8月更文挑战第8天】在云计算与大数据时代,文档数据库因灵活高效备受开发者青睐。本文作为指南,全面对比Amazon DocumentDB与MongoDB。DocumentDB兼容MongoDB,便于迁移;在AWS环境下,它提供卓越的性能与自动伸缩能力。MongoDB则侧重于自定义部署与成本控制。DocumentDB作为托管服务简化管理但成本较高,而MongoDB需自行处理安全性与备份。根据需求与预算,开发者可作出最佳选择。
29 3
|
13天前
|
存储 NoSQL 物联网
MongoDB:改变游戏规则的数据库,看它如何统治数据世界的每一个角落
【8月更文挑战第7天】MongoDB是一款高性能、开源的NoSQL数据库,采用文档数据模型,支持丰富查询语言及二级索引。其灵活的数据模型和扩展性使其在大数据应用、实时分析、物联网、内容管理系统及电子商务平台等多种现代场景中广泛应用。例如,在大数据应用中,它可以高效存储社交媒体的非结构化数据;在实时分析中,能快速处理新数据并即时更新结果;在物联网应用中,则适用于存储大量非结构化传感器数据;而在内容管理和电子商务平台中,能提供灵活的内容存储和高效的商品搜索功能。
31 2
|
18天前
|
存储 NoSQL 关系型数据库
MongoDB保姆级指南(上):七万字从零到进阶,助你掌握又一款强大的NoSQL!
MongoDB是数据库家族中的一员,是一款专为扩展性、高性能和高可用而设计的数据库,它可以从单节点部署扩展到大型、复杂的多数据中心架构,也能提供高性能的数据读写操作;而且提供了数据复制、无感知的故障自动选主等功能,从而实现数据节点高可用。
|
5天前
|
JSON NoSQL MongoDB
在Ubuntu 14.04上如何导入和导出MongoDB数据库
在Ubuntu 14.04上如何导入和导出MongoDB数据库
9 0
|
6天前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
20 0
|
1天前
|
SQL 存储 关系型数据库
数据库-MySQL-01(一)
数据库-MySQL-01(一)
12 4
|
6天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
1天前
|
SQL 存储 关系型数据库
数据库-MySQL-03
数据库-MySQL-03
7 0

热门文章

最新文章