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.mfbz.cn/a/263095.html

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

相关文章

Jetpack DataStore

文章目录 Jetpack DataStore概述DataStore 对比 SP添加依赖库Preferences DataStore路径创建 Preferences DataStore获取数据保存数据修改数据删除数据清除全部数据 Proto DataStore配置AndroidStudio安装插件配置proto文件创建序列化器 创建 Proto DataStore获取数据保存数据修…

Spring AOP入门指南:轻松掌握面向切面编程的基础知识

面向切面编程 1,AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2,AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给…

swing快速入门(二十三)弹球小游戏

注释很详细,直接上代码 上一篇 新增内容 1. 键盘响应监听 2. 使用定时器事件更新画板 3. 定时器事件的开始与暂停 4. 弹球小游戏的坐标逻辑判断 import javax.swing.*; import java.awt.*; import java.awt.event.*;public class swing_test_19 {//创建一个窗…

如何选择适合的UI自动化测试工具

随着软件开发项目的复杂性增加,UI自动化测试成为确保应用程序质量的关键步骤之一。然而,在选择UI自动化测试工具时,开发团队需要考虑多个因素,以确保选取的工具适用于项目需求并提供可靠的测试结果。 1. 了解项目需求 在选择UI自动…

esp32-s3训练自己的数据进行目标检测、图像分类

esp32-s3训练自己的数据进行目标检测、图像分类 一、下载项目二、环境三、训练和导出模型四、部署模型五、存在的问题 esp-idf的安装参考我前面的文章: esp32cam和esp32-s3烧录human_face_detect实现人脸识别 一、下载项目 训练、转换模型:ModelAssist…

大型医院PACS系统源码,影像存储与传输系统源码,支持多种图像处理及三维重建功能

PACS系统是医院影像科室中应用的一种系统,主要用于获取、传输、存档和处理医学影像。它通过各种接口,如模拟、DICOM和网络,以数字化的方式将各种医学影像,如核磁共振、CT扫描、超声波等保存起来,并在需要时能够快速调取…

Docker部署 flowable-ui 进行流程建模

Docker部署 flowable-ui 进行流程建模 简介 安装Docker Desktop,本篇无安装步骤安装正常打开运行后,正式开始部署flowable-uicmd执行拉取镜像操作docker pull flowable/flowable-uicmd启动镜像docker run -d --name flowable -p 8081:8080 flowable/flowable-ui修…

基于博弈树的开源五子棋AI教程[4 静态棋盘评估]

引子 静态棋盘的评估是棋力的一个很重要的体现,一个优秀的基于博弈树搜索的AI往往有上千行工作量,本文没有做深入讨论,仅仅写了个引子用来抛砖引玉。 评估一般从两个角度入手,一个是子力,另一个是局势。 1 评估维度 …

SSH无密登陆配置

1 SSH介绍 ssh命令用于远程登录到其他计算机,实现安全的远程管理。 基本语法: ssh 域名/IP地址 示例: (1)从hadoop100服务器上远程连接hadoop101服务器 [hadoophadoop100 ~]$ ssh hadoop101 如果出现如下内容 Ar…

【C语言】动态内存管理基础知识——动态通讯录,如何实现通讯录容量的动态化

引言 动态内存管理的函数有:malloc,calloc,ralloc,free,本文讲解动态内存函数和使用,如何进行动态内存管理,实现通讯录联系人容量的动态化,对常见动态内存错误进行总结。 ✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》…

idea 远程调试linux上的代码

背景介绍 开发过程中,我们经常会遇到部署的代码运行出问题、看日志由不是很直观、我们希望可以像调试本地代码一样去调试远程代码; IDEA提供了Remote工具,基于JVM的跨平台能力,我们可以远程调试部署的代码。 前提 保证远程和本地跑的代码是一致的 操…

yocto系列讲解[实战篇]93 - 添加Qtwebengine和Browser实例

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述集成meta-qt5移植过程中的问题问题1:virtual/libgl set to mesa, not mesa-gl问题2:dmabuf-server-buffer tries to use undecl…

GBASE南大通用数据库在Windows和Linux中创建数据源

Windows 中数据源信息可能存在于两个地方:在 Windows 注册表中(对 Windows 系统), 或在一个 DSN 文件中(对任何系统)。 如果信息在 Windows 注册表中,它叫做“机器数据源”。它可能是一个“用 …

Sentinel 流量治理组件教程

前言 官网首页:home | Sentinel (sentinelguard.io) 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形…

京东tp26旋转验证

记录一下,狗东的tp26旋转验证码,难点还是在这个轨迹上。我真的是一点都不喜欢玩轨迹!!!! 类似于百度旋转的图,不过他这个东西还是稍微有点差距的。 鉴于生病了脑子不太好使,就不过多…

全光谱全天候耐久性性能测试氙灯老化箱太阳光模拟器

氙灯老化箱应用领域 添加剂 & 着色剂胶粘剂 & 密封剂建材汽车食品& 饮料平面艺术 包装材料油漆& 涂料光伏塑料纺织品风能 & 太阳能消费类电子产品 氙灯老化箱描述 氙灯老化箱是一种用于模拟阳光、雨水和温度循环的老化测试设备。它使用氙灯作为光源&am…

移动SEO:如何针对任何设备优化您的网站

您快速进行 Google 搜索并阅读一堆结果。然后,您会发现一些网站具有您正在寻找的答案。 但是你从SERP中选择的第一个,也是最有前途的网站,在你最喜欢的移动设备上无法正常工作。 所以,你关闭它,看看下一个网站是否有…

Ansible自动化工具之Playbook剧本编写

目录 Playbook的组成部分 实例模版 切换用户 指定声明用户 声明和引用变量,以及外部传参变量 playbook的条件判断 ​编辑 习题 ​编辑 ansible-playbook的循环 item的循环 ​编辑 list循环 ​编辑 together的循环(列表对应的列&#xff0…

初识Docker-什么是docker

Docker是一个快速交付应用、运行应用的技术 目录 一、Docker 二、运用场景 一、什么是Docker?它的作用是什么? Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包&…

专业数据中台哪个好?亿发数字化运营平台解决方案,助力大中型企业腾飞

数据中台的核心在于避免数据的重复计算,通过数据服务化的方式提升数据的共享能力,为数据应用赋能。 在信息技术时代,企业的信息系统建设通常是由各个组织和功能单元独立完成,以满足各自的需求。这导致了“数据孤岛”和“数据烟囱”…