Learn Mongodb了解DB数据库 ①

请添加图片描述

@作者 : SYFStrive

 
请添加图片描述

@博客首页 : HomePage

📜: PHP MYSQL

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:觉得文章不错可以点点关注 👉:专栏连接🔗


请添加图片描述
相关专栏

👉 VUEJS(🔥)
👉 MYSQL(🔥)
👉 微信小程序(🔥)
👉 MONGODB(🔥)
👉 UNIAPP开发(🔥)

文章目录

  • MongoDB简介
  • MongoDB了解
  • MongoDB体系结构
  • MongoDB数据模型
  • 总结


                    ⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   

提示:以下是本篇文章正文内容

MongoDB简介

MongoDB是由C++语言编写的,是一个介于 关系数据库非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 它支持的 数据结构 非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的 数据类型 。MongoDB用起来快速上手&集群和安全系列。

MongoDB了解

  • 业务应用场景
  1. 传统的关系型数据库(如:MySQL),在数据操作的“三高”需求以及应对Web2.0的网站 什么是Web 2.0 需求面前,显得力不从心。

  2. 解释:三高需求

    1、High performance - 对数据库高并发读写的需求
    2、Huge Storage - 对海量数据的高效率存储和访问的需求
    3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
    4、而MongoDB可应对“三高”需求。

  3. 具体的应用场景

    1、存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
    2、存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
    3、存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
    4、存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
    5、存储用户信息、点赞互动信息等。
    6、数据操作的共同特点 :数据量大、写入操作频繁(读写都很频繁)、价值较低的数据,对事务性要求不高

  • 特点
  1. 高性能 :对嵌入式数据模型的支持减少了数据库系统上的I/O活动。
  2. 高扩展性 :MongoDB提供了水平可扩展性作为其核心功能的一部分。
  3. 易使用 :MongoDB的复制工具称为副本集(replica set),它可提供自动故障转移和数据冗余
  4. 丰富的查询支持 : MongoDB支持丰富的查询语言,支持读和写操作(CRUD),比如数据聚合、文本搜索和地理空间查询等。
  5. 其他特点 : 如无模式(动态模式)、灵活的文档模型
  • 什么时候选择MongoDB?
  1. 解释:应用不需要事务及复杂 Join 支持

  2. 新应用,需求会变,数据模型无法确定,想快速迭代开发

  3. 应用需要2000-3000以上的读写QPS(更高也可以)

  4. 应用需要TB甚至 PB 级别数据存储

  5. 应用发展迅速,需要能快速水平扩展

  6. 应用要求存储的数据不丢失

  7. 应用需要99.999%高可用

  8. 应用需要大量的地理位置查询、文本查询

  9. 如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。

MongoDB体系结构

  • MySQL和MongoDB对比

    1. Mysql (关系型数据库) 由 数据库、表、行 组成 。

    2. MongoDB (非关系型数据库) 由 数据库、集合、 文档 组成。

    3. Mysql 与 MongoDB术语区别

      1、Mysql →_→ 数据库(database)、表(table)、行(row)、字段(column)、索引(index)、表连接(table joins)、嵌入文档(不支持)、主键(primary key → 主键)

      2、MongoDB →_→ 数据库(database)、表 → 集合(collection)、行 → 文档(document)、字段 → (field)、索引(index)、表连接(MongoDB不支持)、嵌入文档(MongoDB通过嵌入式文档来替代多表连接)、主键(primary key → MongoDB自动将_id字段设置为主键)

MongoDB数据模型

  1. MongoDB的最小存储单位就是文档(document)对象。文档(document)对象对应于关系型数据库的行。数据在MongoDB中以BSON(Binary-JSON)文档的格式存储在磁盘上。

  2. BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON。BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

  3. BSON采用了类似于 C 语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。

  4. Bson中,除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括 date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详细信息。

BSON结构 ↓

{name: "lemo",age: "12",address: {city: "suzhou",country: "china",code: 215000}scores: [{"name": "english", "grade:3.0},  { "name": "chinese", "grade:2.0}  ]
} 

BSON数据类型参考列表 ↓

数据类型描述举例
字符串UTF - 8字符串都可表示为字符串类型的数据{ “x” : “foobar”
对象id对象id是文档的12字节的唯一 ID{ “X” : ObjectId() }
布尔值真或者假:true或者false{ “x”: true } +
数组值的集合或者列表可以表示成数组{ “x” :[“a”, “b”, “c”] }
32位整数类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被自动转换。shell是不支持该类型的,shell中默认会转换成64位浮点数
64位整数不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数shell是不支持该类型的,shell中默认会转换成64
64位浮点数shell中的数字就是这一种类型{ “x”:3.14159,“y”:3 }
null表示空值或者未定义的对象{ “x”: null }
undefined文档中也可以使用未定义类型{ “x”: undefined }
符号shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串
正则表达式文档中可以包含正则表达式,采用JavaScript的正则表达式语法{ “x” : /foobar/i }
代码文档中还可以包含JavaScript代码{ “x” : function() { /* …… */ } }
二进制数据二进制数据可以由任意字节的串组成,不过shell中无法使用
最大值 / 最小值BSON包括一个特殊类型,表示可能的最大值。shell中没有这个类型。

提示 : shell默认使用64位浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用NumberInt(4字节符号整数)或 NumberLong(8字节符号整数),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}

总结

以上是个人学习Mongodb的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波👍

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

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

相关文章

Splunk Enterprise 9.1.0 (macOS, Linux, Windows) - 机器数据管理和分析

Splunk Enterprise 9.1.0 (macOS, Linux, Windows) - 机器数据管理和分析 请访问原文链接:https://sysin.org/blog/splunk-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 混合世界的数据平台 快速、大规模地从…

emscripten的安装

参考:1.1 安装Emscripten-C/C面向WebAssembly编程 下载emsdk(emscripten),git地址:git clone GitHub - emscripten-core/emsdk: Emscripten SDK打开emsdk中emsdk.bat所在的目录,进入cmd,输入 e…

基于SpringBoot的二手书交易系统的设计与实现(源码、数据库、文档)

作为新兴事物,校园电子商务是,首先是指在校园范围内,其技术手段是校园网,而服务对象是全部师生。主要经营形式为学生自主经营,能够满足多群体生活学习需求,同时具备范围小,安全性高,…

Linux--设置目录或文件的默认权限:umask权限掩码

目录起始权限是从777,普通文件起始权限从666 为何我们创建一个目录或文件,默认权限是你所看到的样子? 因为凡是在umask中出现的权限,都不应该在最终权限中出现! 最终权限起始权限&(~umask&#xff09…

android studio git使用

pull代码 我们从远程仓库拉取代码时,一般有下面的两个选项 当使用Android Studio拉取代码时,有两种常见的选项:合并(merge)传入的更改到当前分支和变基(rebase)。 合并(Merge&…

uniapp将图片转化为base64格式,并用url展示出来

效果图&#xff1a; 编码&#xff1a; <template><view class"container"><button click"chooseImage">选择图片</button><image v-if"base64Image" :src"base64Image"></image></view> &…

SNMP 计算机网络管理 实验2(二) SNMP服务与常用网管命令之任务三:对同学的计算机进行网络管理 任务四:查询计算机网卡的相关信息

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

Redis高可用

Redis高可用 一、redis高可用类型 类型说明持久化持久化是最简单的高可用方法(有时甚至不被归为高可用的手段)&#xff0c;主要作用是数据备份&#xff0c;即将数据存储在硬盘&#xff0c;保证数据不会因进程退出而丢失主从复制主从复制是高可用Redis的基础&#xff0c;哨兵和…

手机记事本中的内容转到新手机不见了,怎么办?

在更换新手机时&#xff0c;很多网友都会面临这样一个问题&#xff0c;这就是旧手机中的重要数据如何转移到新手机上。一般来说&#xff0c;如果是相同品牌的手机&#xff0c;我们可以借助手机云空间账号进行数据的同步&#xff1b;但如果使用的是不同品牌的手机&#xff0c;这…

HPM6750系列--第五篇 使用Segger Embedded Studio for RISC-V开发环境

一、目的 之前的博文中《HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境》我们介绍了如何使用visual studio code进行开发调试&#xff0c;但是用起来总缺少点感觉&#xff0c;那么有没有更加友好一些的IDE用来开发呢&#xff1f; 本篇主要介绍如何使用Embedded Stud…

ERP重构-SLA子分类账-分布式实现方案

背景 ERP中的GL总账模块&#xff0c;明细数据来源于各个业务模块如库存、成本、应收、应付、费控、资产等&#xff0c;统称为子模块&#xff0c;生成的账叫做子分类账。然而记账的业务逻辑各式各样&#xff0c;但是最终输出都是来源、类型、期间、科目、借贷金额等等关键信息。…

【机器学习】主成分分析实现案例 (PCA)

一、说明 这篇文章的目的是提供主成分分析&#xff08;PCA&#xff09;的完整和简化的解释。我们将逐步介绍它是如何工作的&#xff0c;这样每个人都可以理解并使用它&#xff0c;即使是那些没有强大数学背景的人。 PCA是网络上广泛覆盖的机器学习方法&#xff0c;并且有一些关…