MongoDB系列之适用场景和不适用场景_mongodb的优缺点及应用场景-程序员宅基地

技术标签: # MongoDB  数据库  mongodb  nosql  

MongoDB是一款开源的分布式架构的NoSQL数据库管理系统。在前面的NoSQL和SQL对比学习中,我们知道了NoSQL数据库系统和传统的RDBMS的不同和优点

1、MongoDB优点

可以简单列举MongoDB一些明显的主要的优点

  • 速度:MongoDB比一般的关系型数据库快很多,作为面向文档的NoSQL数据库,MongoDB可以通过索引使访问文档变得很容易而且快速
  • 分片:MongoDB另外一个优势是允许用户存储大量的数据,其通过分片的方式将数据分发到多个服务器上。
  • 灵活性:因为MongoDB是非结构化的数据库系统,而且多种数据类型,所以不需要像关系型数据那样,进行特别的表结构设计,存储数据更加灵活
  • 分布式:MongoDB数据库默认支持分布式,内带分布式的解决方案

2、MongoDB局限性

  • 不支持连接:与支持连接的理性数据库不同,MongoDB 不支持。尽管可以通过手动编码来添加连接功能,但执行起来可能会很慢并影响性能。
  • 数据大小有限制:MongoDB允许的文档最大值为16MB
  • 不能无限嵌套:MongoDB的数据格式是BSON的,但是其不支持无限的嵌套,用户不能超过100级的文档嵌套
  • 高内存:MongoDB会存储每个值对的键名。它还受到数据冗余的影响,因为它缺乏连接的功能。这会导致高内存使用率。
  • 不支持业务复杂查询:MySQL这些类型数据库都可以进行表连接等等复杂业务查询,MongoDB是文档型的数据库,所以不支持联表(Collection)查询

3、适用场景

归纳了MongoDB一些比较明显的特征后,我们可以知道MongoDB的一些适用场景。

在MongoDB官网也会列举了MongoDB的适用场景:

  • 1)网站实时数据:MongoDB 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及
    高度伸缩性。
  • 2)数据缓存:由于性能很高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后,由 MongoDB
    搭建的持久化缓存层可以避免下层的数据源过载。
  • 3)大尺寸、低价值数据存储:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很
    多时候程序员往往会选择传统的文件进行存储。
  • 4)高伸缩性场景:MongoDB 非常适合由数十或数百台服务器组成的数据库。MongoDB 的路线图中已经包
    含对 MapReduce 引擎的内置支持。
  • 5)对象或 JSON 数据存储:MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询。

4、不适用场景

  • 1)高度事务性系统:例如银行或会计这些金融系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
  • 2)传统的商业智能应用:针对特定问题的 BI 数据库会对产生高度优化的查询方式。对于此类应用,关系型可能是更合适的选择。

所以,对于需要复杂 SQL 查询的问题。MongoDB是不太适合的,在技术选项上需要根据业务场景和公司实际情况选择合适的数据库,关系型数据库和NoSQL数据库各有优缺点,应该根据实际场景合理选择数据库

5、参考资料

  • MongoDB应用场景:https://hevodata.com/learn/mongodb-use-case/
  • MongoDB 官网地址:https://www.mongodb.com/
  • MongoDB 官方英文文档:https://docs.mongodb.com/manual/
  • MongoDB 各平台下载地址:https://www.mongodb.com/download-center#community
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014427391/article/details/125454135

智能推荐

计算机专业毕设选题,java毕设选题-程序员宅基地

文章浏览阅读44次。计算机专业毕设选题,java毕设选题

STM32CubeMX使用-程序员宅基地

文章浏览阅读1.4k次。一、新建工程首先,打开,第一次使用的朋友可以点击右侧的和检查一下软件更新并且找到对应芯片的固件库然后下载,软件和固件库都推荐是使用最新版的,这里不多介绍。完毕之后点击来创建一个新的工程。在弹出的界面中找到并选择对应芯片型号,可以在左上角的对话框中搜索,选中后点击来新建工程。_stm32cubemx

repeater里绑定dropdownlist控件各行的值-程序员宅基地

文章浏览阅读111次。//repeater绑定数据事件绑定答案dropdownlist protected void rpQuestionAnswer_ItemDataBound(object sender, RepeaterItemEventArgs e) { DropDownList ddl = e.Item.FindControl("drpRightAnswe..._repeater设置dropdownlist的值

教资科目一如何备考?_教资科目一选择题怎么复习-程序员宅基地

文章浏览阅读233次。科目一的选择题确实有点难,其实每一年的可以选择题都有点偏。给大家分享一下,科目一的一些相关备考知识!Q:都考什么内容?A:考试内容包括职业理念、教师职业道德、教育法律法规、文化素养、基本能力五大模块。各模块所占比重如下:Q:都有什么题型?A:试卷分为单选题、材料分析题和写作题三种题型,满分为150分。五个模块的内容在试卷中题型题量如下表:Q:考试难不难?A:科目一考查考生综合素质,属于规范化考试,命题严格依照考试大纲,难度非常稳定,易于把握规律,便于考生有针对性地复习。反之,如果对考情不了解,_教资科目一选择题怎么复习

java(数据库连接池)_java 多数据源连接池释放-程序员宅基地

文章浏览阅读438次。【代码】java(数据库连接池)_java 多数据源连接池释放

MOSFET热仿真_mosfet管在工作过程中的热性能仿真情况-程序员宅基地

文章浏览阅读1.7k次。功率电路中MOSFET的热研究原文:https://wenku.baidu.com/view/282066fa16fc700aba68fc16.html电源管理应用中的功率MOSFET的热分析方法原文:https://wenku.baidu.com/view/2c1b8bceda38376baf1fae78.html_mosfet管在工作过程中的热性能仿真情况

随便推点

跑通yolox-s官方源码(可与yolov5s做对比试验)_yolox_s.pth-程序员宅基地

文章浏览阅读3.7k次,点赞8次,收藏37次。跑通yolox-s官方源码(可与yolov5s做对比试验)_yolox_s.pth

适用于渗透测试不同阶段的工具收集整理(转载)-程序员宅基地

文章浏览阅读1.1k次。Red Teaming / Adversary Simulation Toolkit该资源清单列表涵盖了一系列,适用于渗透测试不同阶段的开源/商业工具。如果你想为此列表添加贡献,欢迎你向我发送pull requestGithub:github.com/Snowming04内容侦察武器化交货命令与控制横向运动建立立足点升级特权数据泄露杂项参考侦察主动情报收集Ey..._gophish获取cookie

centos6.8服务器配置之编译安装PHP、配置nginx-程序员宅基地

文章浏览阅读122次。php version 5.6.31、nginx version: nginx/1.10.21、下载:wget http://cn2.php.net/distributions/php-5.6.31.tar.gz2、安装组件yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg li..._centos6 安装 libiconv.so.2

python pip 代理设置-程序员宅基地

文章浏览阅读682次。pip install --proxy="user:password@server:port" packagenameorigin url:http://xiuxixiuxi.blogspot.jp/2013/04/how-to-install-packages-with.htmlThere are two easy way to install packages for python (..._pip install --proxy=

Linux Deploy安装配置Ubuntu使用教程_linuxdeploy安装ubuntu-程序员宅基地

文章浏览阅读1.2w次,点赞6次,收藏44次。记录Linux Deploy使用总结1. 前言最近换了一部新手机,老的手机荣耀play也不能空着。正好平时电脑装了个虚拟机Ubuntu来做开发/运维环境,有点占电脑配置,无法一边开虚拟机一边玩游戏,老是不能放心玩耍。于是萌生起用手机做Linux服务器的想法。安卓是基于Linux内核进行开发的,理论上是可以实现Linux部署的。百度研究了下(研究了2天。。。),特此记录一下,本位以Ubuntu为..._linuxdeploy安装ubuntu

Freemarker使用详解_freemarker使用教程-程序员宅基地

文章浏览阅读9.4k次,点赞5次,收藏57次。1.什么是网页静态化技术随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行。 什么是网页静态化技术呢?简单来说就是将网页以纯静态方式的形式展现。2.网页静态化技术与缓存技术的比较共同点:都可以减小数据库的访问压力。区别:(1)缓存技术适用于小规模的数据。以及一些经常变动的数据。(2)网页静态化技术适用于大规模但是变化不太频繁的数据。页面静态化与缓存技术的定义:页面静态化是指通过一些模板技术(如freemarker)将数据模型生成静态html页面并通过.._freemarker使用教程

推荐文章

热门文章

相关标签