MongoDB介绍

一、MongoDB介绍

1.1 mongoDB介绍

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

1.2 特点
  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。

  • 可以在MongoDB记录中设置任何属性的索引 (如:id="1",name="goudan",Address="beijing")来实现更快查询或排序。

  • 可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。

  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。

  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。

  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。

  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。

  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

  • MongoDB安装简单。

1.3 MongoDB相关术语

不管我们学习什么数据库都应该学习其中的基础概念,在MongoDB中基本的概念是文档、集合、数据库。

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将==_id字段==设置为主键

通过下图实例,我们也可以更直观的了解Mongo中的一些概念:

二、MongoDB详细介绍

MongoDB是一个开源的、跨平台的、面向文档的NoSQL数据库系统,由10gen公司(现更名为MongoDB Inc.)开发和维护。它使用JSON格式的文档来存储数据,而不是传统的表格形式。MongoDB的设计目标是为了满足当今互联网应用程序的需求,包括大规模的数据存储和高性能的读写操作。

MongoDB的特点包括:

1. 面向文档的存储:MongoDB使用BSON(Binary JSON)格式来存储数据,可以存储复杂的数据结构,包括嵌套文档和数组。这种灵活的数据模型使得MongoDB非常适合存储半结构化的数据,如日志、用户配置和社交媒体数据。

2. 高性能:MongoDB使用内存映射文件来提高读取性能,同时支持水平扩展和副本集,以确保数据的高可用性和可靠性。它还支持索引和聚合操作,以提高查询性能。

3. 自动分片:MongoDB支持自动分片,可以水平扩展到数百台服务器,以处理大规模的数据存储和高并发的读写操作。

4. 丰富的查询语言:MongoDB支持丰富的查询语言,包括范围查询、正则表达式、聚合操作和地理空间查询。它还支持二进制数据存储和全文搜索。

5. 灵活的数据模型:MongoDB的文档模型非常灵活,可以动态添加字段和嵌套文档,而无需预定义表结构。这种灵活性使得数据模型可以根据应用程序的需求进行自由调整。

6. 支持多种编程语言:MongoDB提供了丰富的客户端驱动程序和工具,支持多种编程语言,包括Java、Python、Node.js、Ruby和C#等。

MongoDB的架构包括以下几个核心组件:

1. 数据存储:MongoDB使用存储引擎来管理数据的存储和检索。目前MongoDB支持两种存储引擎:WiredTiger和MMAPv1。WiredTiger是MongoDB 3.2版本引入的默认存储引擎,它提供了更好的性能和可靠性。MMAPv1是MongoDB的旧存储引擎,它提供了更好的内存利用率。

2. 查询处理:MongoDB使用查询处理器来解析和执行查询操作。查询处理器负责解析查询语句、优化查询计划和执行查询操作。

3. 复制和故障转移:MongoDB支持副本集来提供数据的高可用性和可靠性。副本集包括一个主节点和多个从节点,主节点负责处理写操作,从节点负责复制主节点的数据。当主节点发生故障时,副本集会自动选举一个新的主节点来接管写操作。

4. 分片:MongoDB支持自动分片来实现数据的水平扩展。分片集群包括多个分片节点和多个配置服务器,分片节点负责存储数据,配置服务器负责存储分片集群的元数据。

5. 安全性:MongoDB提供了丰富的安全功能,包括访问控制、认证、授权和加密通信。它还支持角色和权限管理,可以根据用户的角色来控制其对数据库的访问权限。

总的来说,MongoDB是一个功能强大、性能优越、灵活可扩展的NoSQL数据库系统,非常适合存储半结构化的数据和处理大规模的数据存储和高并发的读写操作。它已经被广泛应用于互联网应用程序、大数据分析、物联网和人工智能等领域,成为了当今最受欢迎的NoSQL数据库系统之一。

Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记

Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记 Abstract 无人机在各种应用中得到了广泛使用,例如航拍和军事安全,这得益于它们与固定摄像机相比的高机动性和广阔视野。多无人机追踪系统可以通过从不同视角收集互补的…

【5G PHY】NR参考信号功率和小区总传输功率的计算

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

Redis延迟队列原理及实例

redis延迟队列 一、Redis延迟队列的原理二、数据结构说明2.1、数据结构说明2.2、为什么Sorted Set适合做延迟队列2.3、Sorted Set内部结构 三、三种实现方式3.1、 Jedis实现方式3.2、Redisson实现(**推荐**)3.3、RedisTemplate 实现 四、总结 一、Redis延…

2016年第五届数学建模国际赛小美赛A题臭氧消耗预测解题全过程文档及程序

2016年第五届数学建模国际赛小美赛 A题 臭氧消耗预测 原题再现: 臭氧消耗包括自1970年代后期以来观察到的若干现象:地球平流层(臭氧层)臭氧总量稳步下降,以及地球极地附近平流层臭氧(称为臭氧空洞&#x…

数据结构和算法-二叉排序树(定义 查找 插入 删除 时间复杂度)

文章目录 二叉排序树总览二叉排序树的定义二叉排序树的查找二叉排序树的插入二叉排序树的构造二叉排序树的删除删除的是叶子节点删除的是只有左子树或者只有右子树的节点删除的是有左子树和右子树的节点 查找效率分析查找成功查找失败 小结 二叉排序树 总览 二叉排序树的定义 …

【LeetCode:1954. 收集足够苹果的最小花园周长 | 等差数列 + 公式推导】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

C语言—每日选择题—Day60

指针相关博客 打响指针的第一枪:指针家族-CSDN博客 深入理解:指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 下列for循环的循环体执行次数为() for(int i 10, j 1; i j 0; i, --j) A:0 B:1 C&#…

蓝桥小课堂-平方和【算法赛】

问题描述 蓝桥小课堂开课啦! 平方和公式是一种用于计算连续整数的平方和的数学公式。它可以帮助我们快速求解从 1 到 n 的整数的平方和,其中 n 是一个正整数。 平方和公式的表达式如下: 这个公式可以简化计算过程,避免逐个计算…

2024年【制冷与空调设备运行操作】免费试题及制冷与空调设备运行操作试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 制冷与空调设备运行操作免费试题根据新制冷与空调设备运行操作考试大纲要求,安全生产模拟考试一点通将制冷与空调设备运行操作模拟考试试题进行汇编,组成一套制冷与空调设备运行操作全真模拟考…

Android Native Hook 深入理解PLT hook

前言 本文介绍NativeHook技术里的PLT hook,参考开源的xhook和bhook进行理解,本文不涉及该hook技术源码的分析,只分析大体原理,用于在进行修复稳定性问题时候寻找hook点使用。 基本搬运如下两篇文章,主要是加深自己理解: 字节跳动开源 Android PLT hook 方案 bhook xhoo…

K8S面试题

请问一下,在K8S中,deployment和RS有什么区别和联系? 在Kubernetes(K8s)中,Deployment和ReplicaSet(RS)是用于管理应用程序副本的两个重要概念,它们之间存在着一些区别和…

【FPGA】分享一些FPGA协同MATLAB开发的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

python时间处理方法和模块

在 Python 中,有一些内置的模块和库,可以帮助我们处理日期和时间的表示、计算和转换。 1. 时间模块(time) Python 的 time 模块提供了一系列函数来处理时间相关的操作。通过这个模块,可以获取当前时间、睡眠指定时间…

【设计模式】RBAC 模型详解

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、什么是 RBAC 呢? 二、RBAC 的组成 三、RBAC 的优缺点 3.1 优点: 3.2 缺点: 四、RBAC 的…

如何用Python画坤坤?

前言 最近闲得慌,突然想起坤坤了,那就画一个吧。 一、Python画坤坤 坤坤大家都熟悉不过了,也就是蔡徐坤。 代码: from turtle import * from math import * #高级椭圆参数方程(颜色),sita为…

MySQL报错:1366 - Incorrect integer value: ‘xx‘ for column ‘xx‘ at row 1的解决方法

我在插入表数据时遇到了1366报错,报错内容:1366 - Incorrect integer value: Cindy for column name at row 1,下面我演示解决方法。 根据上图,原因是Cindy’对应的name字段数据类型不正确。我们在左侧找到该字段所在的grade_6表&…

轻松学会在 Linux 上使用 Docker

前言 本文将带你轻松掌握在 CentOS 和 Ubuntu 上安装和配置 Docker 的步骤。Docker 是一个强大的容器化平台,让应用程序的打包、交付和运行变得简单易行。 步骤 步骤 1: 安装所需工具 在 CentOS 和 Ubuntu 上安装必要的工具,确保系统能够通过 HTTPS …

【图文教程】windows 下 MongoDB 介绍下载安装配置

文章目录 介绍MySQL 之间的区别和适用场景差异数据模型:查询语言:可扩展性:数据一致性: 下载安装环境变量配置 介绍 MongoDB 是一种开源的、面向文档的 NoSQL 数据库管理系统。它使用灵活的文档模型来存储数据,这意味…

HarmonyOS - 基础组件绘制

文章目录 所有组件开发 tipsBlankTextImageTextInputButtonLoadingProgress 本文改编自&#xff1a;<HarmonyOS第一课>从简单的页面开始 https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667360160710997 所有组件 在 macOS 上&#xff0c;组…

k8s部署nginx-ingress服务

k8s部署nginx-ingress服务 经过大佬的拷打&#xff0c;终于把这块的内容配置完成了。 首先去 nginx-ingress官网查看相关内容。 核心就是这个&#xff1a; kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/prov…