探索MongoDB:发展历程、优势与应用场景

一、MongoDB简介

MongoDB 始于 2007 年,由 Dwight Merriman、Eliot Horowitz 和 Kevin Ryan –(DoubleClick 的主理团队)共同创立。

DoubleClick 是一家互联网广告公司(现隶属于 Google),公司团队开发并利用多种自定义数据存储,来弥补现有数据库的短板。虽然该企业每秒钟服务 400,000 条广告,但可扩展性和敏捷性仍时常制约着业务发展。团队痛定思痛,潜心打造出一种数据库,完美解决 DoubleClick 所面临的问题。于是就有了 MongoDB。

1.1、MongoDB历史

MongoDB是一个开源的文档型数据库,它支持JSON格式的数据存储和查询。MongoDB的发展史可以分为以下几个阶段:

  • 2007年,MongoDB的前身10gen公司成立,最初是一个云计算平台,后来决定自己开发一个适合海量数据的数据库。
  • 2009年,MongoDB 1.0正式发布,作为一个开源的数据库项目,提供了文档模型、索引、复制等基本功能。
  • 2010年,MongoDB 2.0发布,引入了自动分片的功能,实现了水平扩展和高可用性。
  • 2015年,MongoDB 3.0发布,主要功能包括支持 WiredTiger 存储引擎、可插拔存储引擎 API等功能。
  • 2018年,MongoDB 4.0发布,MongoDB 提供了针对副本集执行多文档事务的功能 。
  • 2021年,MongoDB 5.0发布,MongoDB引入了时间序列集合,它可以有效地存储一段时间内的测量序列。
  • 2022年,MongoDB 6.0发布,支持对加密数据进行丰富的查询。
  • 2023年,MongoDB 7.0发布,在性能和可用性方面进行了改进。

MongoDB的发展历程体现了它不断创新和适应市场需求的能力,也证明了它作为一个流行的文档型数据库的地位。

1.2、MongoDB版本

MongoDB是一个开源的文档型数据库,它支持JSON格式的数据存储和查询。MongoDB有几个主要的版本:MongoDB Atlas, MongoDB Enterprise Advanced和MongoDB Community Edition。

  • MongoDB Atlas是MongoDB的云服务,它提供了MongoDB Enterprise Advanced的所有功能,以及自动化的管理、安全和扩展性。您可以在AWS, Azure或Google Cloud上部署MongoDB Atlas,并选择多种实例配置和存储引擎。MongoDB Atlas还提供了免费的入门层,以及在线迁移和数据联合的功能。
  • MongoDB Enterprise Advanced是MongoDB的商业版本,它提供了MongoDB Community Edition的所有功能,以及额外的安全、审计、加密、认证和监控功能。您需要自己部署和管理MongoDB Enterprise Advanced,并支付订阅费用。
  • MongoDB Community Edition是MongoDB的免费版本,它提供了MongoDB的基本功能,包括服务器、数据库引擎、工具、复制和分片。您需要自己部署和管理MongoDB Community Edition,并遵守SSPL协议。

二、优势特点

在过去十年中,MongoDB一直是DB-Engines排名中增长最快的数据库之一,并且在Stack Overflow的年度开发人员调查中一直被评为开发人员最想使用的数据库之一。

MongoDB是一种流行的文档型NoSQL数据库,它具有以下几个优势:

  • 高可用性:MongoDB采用了分布式架构,数据会自动分布在多台服务器上,从而实现高可用性和容错性。如果一个节点故障,系统会自动将其从集群中删除,并将数据迁移至其他节点上。
  • 高扩展性:MongoDB可以轻松地进行水平扩展和垂直扩展。在水平扩展时,可以添加更多的服务器和节点,以增加处理能力和存储容量;在垂直扩展时,则可以升级硬件设备,以提高单机性能。
  • 灵活性:MongoDB支持动态模式和动态查询,可以根据应用程序需求灵活调整文档结构和查询条件。此外,它还支持复杂的文档嵌套、数组类型和地理位置等特性。
  • 性能优势:MongoDB使用了内存映射文件和快速索引等技术,具有较高的读写性能和查询效率。此外,MongoDB还支持分片和副本集等技术,以进一步提高性能和可靠性。

  • Redis的数据存储主要依赖于内存,因此其存储容量受到物理内存的限制。虽然支持持久化机制,但主要是为了保障数据的持久性,存储量一般较小。
  • Redis适合需要快速读写、对数据结构操作较多的场景,如缓存、实时计数等。

VS

  • MongoDB的数据存储基于磁盘,可以存储比内存更大容量的数据。它更适合存储大规模数据集,数据可以超出物理内存容量。
  • MongoDB适合需要复杂查询和大规模数据存储的场景,如Web应用、分析、内容管理等。

三、应用场景

MongoDB适合以下几种应用场景:

  • 社交场景:使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
  • 物联网场景:使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
  • 视频直播:使用MongoDB存储用户信息、点赞互动信息。
  • 内容管理:使用MongoDB存储文章、评论、标签等内容,支持全文搜索、分类、排序等功能。

以下是一些使用MongoDB的企业:

超过 46,400 名客户选择在 MongoDB 上构建当今和未来的应用程序

在国内阿里巴巴、腾讯、360、百度等,这些都是一线互联网公司,它们都在尝试或者已经使用 MongoDB 来处理海量的数据和业务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/492116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型的密码:传统企业转型路径的深度剖析

引言:数字经济浪潮下的新资产形态 传统行业,如零售、金融、教育等,在如今这场数字化浪潮中,同样需要积极拥抱变革,探索适合自身的转型之路。本文将结合制造业的转型经验,深入探讨传统行…

电脑开机0x0000007B蓝屏怎么办?

电脑开机0x0000007B蓝屏怎么办啊?相信很多用户的电脑都有遇到过蓝屏的问题,最近有用户电脑一开机就蓝屏,并且显示0x0000007B错误代码,原本想通过安全模式进行修复,结果发现安全模式进不去,不知道该怎么解决。这可能与我们的内存或硬盘有关,尝试设置一下硬盘模式,看看是…

嵌入式软件工程师都需要安装哪些软件

文章目录 一、编程软件1.keil2.vscode①Chinese:中文②C/C、C/C Extension Pack③CMake、CMake Tools等代码调试运行的工具④Remote-SSH等,关于远程登录linux服务器的插件 3.Pycharm和Anaconda,用来写python脚本和配置环境,PYQT上…

【Python】搭建 Python 环境

目 录 一.安装 Python二.安装 PyCharm 要想能够进行 Python 开发,就需要搭建好 Python 的环境 需要安装的环境主要是两个部分: 运行环境: Python开发环境: PyCharm 一.安装 Python (1) 找到官方网站 (2) 找到下载页面 选择 “Download for Windows”…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

C语言:动态内存管理(malloc,calloc,realloc,free)

目录 前言 malloc函数 free函数 calloc函数 realloc函数 前言 在这一章节将讲解动态内存分配,它可以在程序的堆区创建一块内存,在这块内存中存什么值就是由自己决定的了 开辟的空间有两个特点: 1. 空间开辟的大小是固定的 2. 数组在…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上…

JAVA获取免费天气

JAVA调用天气代码示例 前沿:最近在开发任务中需要获取每日的实时天气和天气预报,要求还是免费的。在网络上搜索了一下免费的API并有了以下思路 免费API网址:https://dev.qweather.com/docs/api/grid-weather/grid-weather-now/ 调用格林天…

工程企业的未来选择:Java版工程项目管理系统平台与数字化管理的融合

在现代化的工程项目管理中,一套功能全面、操作便捷的系统至关重要。本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统,结合Vue和ElementUI实现前后端分离。该系统涵盖了项目管理、合同管理、预警管理、竣工管理、质量管理等多个…

基于Colab训练的yolov4-tiny自定义数据集(可用于OpenCV For Unity)

参考资料文档和视频。 1.打开文档,点击【文件】【在云端硬盘中保存一份副本】,即将文档复制到自己云端硬盘。 2.打开该文件,按文中提示进行。 【代码执行程序】【更改运行时类型】修改运行时为GPU(免费的GPU不好用,收费的好用,某宝上几十元就可用一个月) 步骤1) !git…

大数据面试题 —— Kafka

目录 消息队列 / Kafka 的好处消息队列的两种模式什么是 KafkaKafka 优缺点你在哪些场景下会选择 Kafka讲下 Kafka 的整体结构Kafka 工作原理 / 流程Kafka为什么那么快/高效读写的原因 / 实现高吞吐的原理生产者如何提高吞吐量(调优)kafka 消息数据积压&…

python爬虫-----输入输出与流程控制语句(第四天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

力扣:字母迷宫,python

这里写自定义目录标题 问题描述题解踩坑记录global和nonlocal关键字的区别:类中可以用实例变量替换全局变量 问题描述 字母迷宫游戏初始界面记作 m x n 二维字符串数组 grid,请判断玩家是否能在 grid 中找到目标单词 target。 注意:寻找单词…

【C++ leetcode】双指针(专题完结)

15. 三数之和 题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的…

P1443马的遍历 典bfs

题目&#xff1a; 代码&#xff1a; #include<algorithm> #include<iostream> #include<cstring> #include<queue>using namespace std;int n,m;int dx[] {-1,-1,-2,-2,1,1,2,2}; int dy[] {-2,2,-1,1,-2,2,-1,1}; bool vis[450][450];struct node{…

秋招打卡算法题第一天

一年多没有刷过算法题了&#xff0c;已经不打算找计算机类工作了&#xff0c;但是思来想去&#xff0c;还是继续找吧。 1. 字符串最后一个单词的长度 public static void main(String[] args) {Scanner in new Scanner(System.in);while(in.hasNextInt()){String itemin.nextL…

Ubuntu 下统计文件数量的命令

参考:https://blog.csdn.net/kxh123456/article/details/123811580 查看当前目录下的文件数量&#xff08;不包含子目录中的文件&#xff09; ls -l|grep "^-"| wc -l实例展示&#xff1a;如下图所示&#xff0c;当前路径下&#xff0c;有2个json文件和2个文件夹&a…

面向对象【Annotation注解】

文章目录 注解概述注解与注释常见的 Annotation最基本的注解使用@Override@Override@SuppressWarnings元注解@Retention@Target@Documented@Inherited自定义注解格式定义使用注解概述 注解(Annotation)是从 JDK5.0 开始引入,以“@注解名”在代码中存在。例如: @Override @D…

EtherCAT转RS232网关在风电领域的应用

开疆智能EtherCAT转RS232网关在风电领域的应用主要体现在以下几个方面&#xff1a; 1.数据采集与传输&#xff1a;在风力发电设备中&#xff0c;传感器和执行器的数据采集和传输至关重要。EtherCAT转RS232网关可以将风力发电设备中的RS232通信协议转换为EtherCAT协议&#xff0…

Unity 布局元素Layout Element

Layout Element是一种用于控制UI元素在布局组件&#xff08;如Horizontal Layout Group、Vertical Layout Group、Grid Layout Group、Content Size Fitter和Aspect Ratio Fitter&#xff09;中的大小和位置的组件。Layout Element组件可以附加到UI元素上&#xff0c;以便在布局…