全栈开发【第1期】MongoDB入门之概述

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 全栈开发【第1期】MongoDB入门之概述

概述


在关系型数据库的今天,还是主流MongoDB 是一个基于分布式的文件存储数据库,由C++语言编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。是一款为web应用程序和互联网基础设施设计的数据库管理系统。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。是一个以文档为中心的NOSQL(NoSQL = Not Only SQL,意为"不仅仅是SQL"。)数据库,具备高性能、高可用性及可伸缩性等特性又称为文档数据库,主要用来存放word、图片等文档数据,它也是nosql数据的一种。支持Linux、windows系统,支持集群部署。

数据库Database)基本概念


  • 数据库就是按照一定的数据结构来组织,储存和管理数据的仓库
  • 我们写的程序都是在内存中运行的,一旦程序运行结束或者计算机断点,程序运行中的数据就会全部丢失;所以我们就需要将一些程序的数据持久化到键盘之中,以确保数据的安全性。
  • 数据库则是大批量数据持久化的普遍选择,1.文件 2. 数据库
  • 数据库分为关系数据库和非关系数据库
  • 常见的关系数据库有MySql 、sql server Oracle
  • 常见的非关系数据库有MongoDB

为什么都采用数据库来储存数据


  • 数据库是有结构的
  • 数据库可以提供各种接口,让数据处理(增删改查)快捷方便
  • 各种语言提供了完善的接口

关系数据库与非关系数据库区别


  • 成本:Nosql数据库(非关系型数据库)简单易部署,基本都是开源软件,不需要使用类似于Oracle数据库那样花费大成本购买使用,相比关系型数据库价格便宜。
  • 查询速度:Nosql数据库将数据存于缓存之中,而且不需要经过SQL层的解析,关系型数据库将数据存储在硬盘中,自然查询速度远不及Nosql数据库。
  • 存储数据的格式:Nosql的存储格式是key,value以键值对的形式、文档格式、图片格式等等,所以可以存储基础类型及对象或者集合等各种形式,而关系型数据库只支持基础类型。
  • 扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。Nosql基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
  • 持久存储:Nosql不适用于持久存储。
  • 数据的一致性:非关系型数据库一般强调的是数据最终一致性,不像关系型数据库一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据。
  • 事务处理:Nosql不提供对事务的处理。
数据库类型 数据存储的方式 存储单元 区别
ROBMS(关系型数据库) 表(table) 行(row) 1.常见的有MySql 、sql server Oracle 2.特点 通过一张张表来建立联3.基本都使用SQL语言来管理数据库
非关系数据库(NoSQL) 集合(collection) 文档document 1.没有行 、列的概念 用json类储存数据2.集合相当于“表”,文档相当于“行”3.

什么是MongoDB


MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档、数组及文档数组,非常灵活。

为什么要使用MongoDB


  1. MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,MongoDB 将数据存储为一个文档(类似于 JSON 对象),数据结构由键值对组成,类似于 Java 中的 Map,通过 key 的方式访问起来效率就高得多,这使得MongoDB能在生产环境中提供高读写的能力,吞吐量较mysql和SQL数据库有大大增强。
  2. 易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。
  3. 数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,可灵活存取。

4.MongoDB 提供了企业版(功能更强大)和社区版,对于我们开发者来说,拿社区版来学习和使用就足够了。MongoDB 的驱动包很多,常见的编程语言都有覆盖到,比如说 Java、JavaScript、C++、C#、Python 等等。

特点


任何关系数据库都有一个典型的数据结构设计,表明了表结构及表之间的关系。而在MongoDB中,没有关系的概念。

  • 使用键值(Key Value)储存数据;
  • MongoDB的逻辑结构是一种层次结构,主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。
  • 文档(document):由键/值对构成,像{a:1};{s:”abc”}等,它是MongoDB核心单元,MongoDB的文档(document),相当于关系数据库中的一行记录。
  • 集合(Collection):多个文档组成一个集合(collection),相当于关系数据库的表。
  • 数据库(database):多个集合(collection),逻辑上组织在一起,就是数据库(database)。
  • 一个MongoDB实例支持多个数据库(database)。
  • 无固定结构 – MongoDB是一个文档数据库,一个集合中可以包含不同的文档。文档的字段数、内容和大小都可以不同。
  • 关系型数据库通过主键或者外键的约束保证数据的完整性与唯一性,所以关系型数据库常用于对数据完整性较高的系统。MongoDB在这一方面是不如关系型数据库,且MongoDB没有固定的Schema,正因为MongoDB少了一些这样的约束条件,可以让数据的存储数据结构更灵活,存储速度更加快。
  • 即时查询能力MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力。这一点汲取了关系型数据库的优点,相比于同类型的NoSQL redis 并没有上述的能力。
  • 复制能力MongoDB自身提供了副本集能将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移、扩展读能力。
  • 速度与持久性MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动调用写入时,可以立即得到返回得到成功的结果(即使是报错),这样让写入的速度更加快,当然会有一定的不安全性,完全依赖网络。MongoDB提供了Journaling日志的概念,实际上像mysql的bin-log日志,当需要插入的时候会先往日志里面写入记录,再完成实际的数据操作,这样如果出现停电,进程突然中断的情况,可以保障数据不会错误,可以通过修复功能读取Journaling日志进行修复。
  • 数据扩展MongoDB使用分片技术对数据进行扩展,MongoDB能自动分片、自动转移分片里面的数据块,让每一个服务器里面存储的数据都是一样大小。
  • 单个对象的结构是清晰的。
  • 没有复杂的表连接。
  • 查询功能强大。MongoDB的查询功能几乎与SQL一样强大,使用基于文档的查询语言,可以对文档进行动态查询。
  • 易于调优。
  • 易于扩展。
  • 应用程序对象与数据库对象天然对应。
  • 使用内存存储工作集,可以更快地访问数据。
  • 数据模型比较简单
  • 需要灵活性更强的后台系统
  • 对数据库性能要求比较高
  • 不需要高度的数据一致性

与关系数据库区别


关系型数据库比较结构化,操作不是很灵活,菲关系型数据库操作灵活,但不适合大型数据存储,比较适合微架构,两者是相辅相成的关系



相关实践学习
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
目录
相关文章
|
5月前
|
NoSQL MongoDB
MongoDB入门-sort和投影
这篇文章介绍了MongoDB中的排序(sort)和投影(projection)操作,通过示例代码展示了如何使用这些功能来控制查询结果的排序顺序和返回的字段。
55 3
MongoDB入门-sort和投影
|
5月前
|
NoSQL MongoDB
MongoDB入门-MongoDB的CURD语句练习
这篇文章提供了MongoDB的CURD操作的练习,涵盖了插入、查询、更新和删除数据的基本命令,并通过具体示例展示了如何在MongoDB中执行这些操作。
56 2
|
2月前
|
存储 NoSQL Cloud Native
MongoDB云原生化:为企业开发注入高效动力
MongoDB云原生化为企业开发注入高效动力,分为三部分:1. 介绍阿里云和MongoDB的服务;2. 阿里云MongoDB解决自建模型痛点的功能,包括隔离性、海量数据处理、弹性能力及运维操作优化;3. 客户案例展示。通过云原生架构,MongoDB实现了灵活的扩展、高效的备份恢复和快速的回档能力,显著提升了企业的业务迭代速度和数据管理效率。典型客户如吉比特、莉莉丝、掌阅等受益于这些功能,实现了更稳定和高效的数据库服务。
|
4月前
|
存储 NoSQL MongoDB
MongoDB入门级别教程全(Windows版,保姆级教程)
一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
321 2
MongoDB入门级别教程全(Windows版,保姆级教程)
|
4月前
|
存储 人工智能 NoSQL
使用 MongoDB 构建 AI:Gradient Accelerator Block 如何在几秒钟内让您从零开发 AI
借助 MongoDB,开发者可以存储任何结构的数据,然后使用单一查询 API 和驱动程序将这些数据用于 OLTP、文本搜索和向量搜索处理。
|
5月前
|
存储 NoSQL MongoDB
01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
文章详细介绍了MongoDB的概览、应用场景、下载与连接方式,并涵盖了MongoDB的主要特性及其在数据存储方面的优势。
53 0
|
6月前
|
NoSQL BI 数据处理
【超实用攻略】MongoDB 聚合框架:从入门到精通,带你解锁数据处理新姿势!
【8月更文挑战第24天】MongoDB是一款以其灵活性和高性能闻名的NoSQL数据库。其强大的聚合框架采用管道式处理,允许用户定义多个数据处理阶段如过滤、分组等。本文通过示例数据库`orders`和`products`,演示如何利用聚合框架计算各产品的总销售额。示例代码展示了使用`$lookup`连接两集合、`$unwind`打平数组及`$group`按产品ID分组并计算总销售额的过程。这突显了聚合框架处理复杂查询的强大能力,是进行数据分析和报表生成的理想选择。
75 3
|
6月前
|
存储 NoSQL MongoDB
八:《智慧的网络爬虫》— MongoDB概述
【8月更文挑战第14天】本篇文章简单介绍了MongoDB的下载和安装以;其基本的操作语法,并附上每个语法的代码示例,为后续的爬虫学习打下基础
69 0
八:《智慧的网络爬虫》— MongoDB概述
|
6月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
123 0
|
7月前
|
JSON NoSQL 关系型数据库
MongoDB常用命令大全,概述、备份恢复
MongoDB常用命令大全:服务启动停止、查看状态、备份;数据库相关,集合操作,文档操作,其他常用命令;数据备份恢复/导入导出——mongodump、mongorestore;MongoDB与SQL比较