当前位置: 首页 > news >正文

一幅长文细学MongoDB(一)——MongoDB相关概念

1.MongoDB相关概念

文章目录

  • 1.MongoDB相关概念
    • 1.1 什么是MongDB
    • 1.2 什么时候选择MongoDB
    • 1.3 MongoDB简介
    • 1.4 体系结构
    • 1.5 MongoDB特点

1.1 什么是MongDB

说明:传统的关系型数据库在新时代大数据发展的趋势下,仅仅只能存储结构化数据的数据库并不能满足业务的需求,为了解决大数据的问题,NoSQL应运而生。

MongDB是NoSQL(非关系数据库的一种),其具有十分广泛的应用场景,如:

  • 使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现父级的人、地点等功能
  • 使用MongoDB存储游戏用户信息、用户的准备、积分等直接以文档的形式存储,方便查询、高效率存储和访问
  • 使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来
  • 等等。。。

在以上的应用场景中,数据操作方面的共同特点是:

  • 数据量大
  • 读写操作频繁
  • 带有大数据的4V特点

1.2 什么时候选择MongoDB

选择考虑

  • 应用不需要事务以及复杂的join支持
  • 新应用,需求汇编,数据模型无法确定,向快速迭代开发
  • 应用需要2000-3000以上的读写
  • 应用发现迅速,需要能快速水平扩展
  • 应用要求存储的数据不丢失
  • 需要高可用性

对比:Mysql也不是不能选择,但选择MongoDB可以以更低的成本来存储数据。


1.3 MongoDB简介

说明:MongoDB是一个开源、高性能、无模式的文档型数据库,这和它最初的设计理念是符合的。它支持的数据结构非常松散,是一种类似于JSON的数据类型BSON,所以它既可以存储比较复杂的数据类型,又相当地灵活。

MongoDB中的记录是一个文档,它是一个由字段和值对组成的数据结构,MongoDB文档类似于JSON对象,即一个文档认为就是一个对象,字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他的文档、普通数组和文档数组。


1.4 体系结构

我们将MongoDB与Mysql对比学习,才能体会更深:

image-20220920103104281

MySQL概念MongoDB概念说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,mongoDB不支持
嵌入文档MongoDB通过嵌入式文档来代替多表连接
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

  • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

1.5 MongoDB特点

  • 高性能
  • 高可用
  • 高扩展
  • 丰富的查询支持

相关文章:

  • 接口开发 — — RPC远程过程调用实现
  • JAMA子刊:孕妈妈每天喝半杯咖啡,可能让胎儿发育迟缓
  • Acrylamide-PEG-acid,ACA-PEG-COOH,丙稀酰胺-聚乙二醇-羧基可用于修饰多肽
  • 搭建个人的GPS定位系统
  • TorchProtein教程--蛋白质数据结构(2)
  • 动力学(dynamics)与动理学(kinetics)概念辨析
  • Vue | Object.defineProperty()、数据代理、计算属性、监视属性
  • 常见的排序总结
  • kvm存储池
  • T1055 判断闰年 (信息学一本通C++)
  • 【C++】-- STL之用哈希桶模拟实现unordered_set和unordered_map
  • Games104现代游戏引擎入门-lecture17游戏引擎的Gameplay玩法系统基础_Advanced AI
  • [JS]数据类型
  • Transformer 无卷积骨干网络
  • 服务器安全狗是什么意思?有什么功能?
  • Angular4 模板式表单用法以及验证
  • C++11: atomic 头文件
  • flask接收请求并推入栈
  • Git初体验
  • Hibernate最全面试题
  • HTTP--网络协议分层,http历史(二)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Vue 动态创建 component
  • Vue.js-Day01
  • 记一次用 NodeJs 实现模拟登录的思路
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前言-如何学习区块链
  • 深度解析利用ES6进行Promise封装总结
  • 使用 QuickBI 搭建酷炫可视化分析
  • 自定义函数
  • 你对linux中grep命令知道多少?
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 交换综合实验一
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • !!Dom4j 学习笔记
  • #define、const、typedef的差别
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (超详细)语音信号处理之特征提取
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (蓝桥杯每日一题)love
  • (离散数学)逻辑连接词
  • (论文阅读11/100)Fast R-CNN
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net 托管代码与非托管代码
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET框架
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @Autowired标签与 @Resource标签 的区别
  • @Autowired和@Resource的区别