MongoDB:JSON and BSON

news2024/12/28 18:18:52

目录

什么是 JSON

MongoDB-JSON连接

什么是 BSON

MongoDB 使用 BSON 还是 JSON

JSON 与 BSON

架构灵活性和数据治理


  • JSON 和 BSON 是近亲,正如它们几乎相同的名称所暗示的那样
  • JSON(即 JavaScript 对象表示法)是网络上广泛流行的数据交换标准
  • BSON(二进制 JSON)就是基于该标准

什么是 JSON

  • JSON(即 JavaScript 对象表示法)是一种人类可读的数据交换格式,在 2000 年代初指定
  • 尽管 JSON 是基于 JavaScript 编程语言标准的子集,但它完全独立于语言
  • JSON 对象是关联容器,其中字符串键映射到值(可以是数字、字符串、布尔值、数组、空值 — null,甚至是另一个对象)
  • 几乎所有编程语言都有这种抽象数据结构的实现—JavaScript 中的对象、Python 中的字典、Java 和 C# 中的哈希表、C++ 中的关联数组等等
  • JSON 对象易于人类理解,也易于机器解析和生成
  • 主要用于
  • APIs
  • 配置文件
  • 记录消息
  • 数据库存储

MongoDB-JSON连接

  • MongoDB 从一开始就被设计为一个专注于提供出色开发体验的数据库
  • JSON 的普遍存在使其成为表示 MongoDB 文档数据模型中的数据结构的明显选择
  • 然而,有几个问题使得 JSON 不太适合在数据库内部使用
  • 1-JSON 仅支持有限数量的基本数据类型;最值得注意的是,JSON 缺乏对日期和二进制数据的支持
  • 2-JSON 对象和属性没有固定长度,这使得遍历速度变慢
  • 为了使 MongoDB 成为 JSON 优先,但仍然具有高性能和通用性
  • BSON 的发明弥补了这一差距:一种以 JSON 格式存储数据的二进制表示形式,并针对速度、空间和效率进行了优化

什么是 BSON

  • BSON 代表“二进制 JSON”,这正是它被发明的目的
  • BSON 的二进制结构对类型和长度信息进行编码,这使得它的遍历速度比 JSON 快得多
  • BSON 添加了一些非 JSON 原生数据类型,例如日期和二进制数据,如果没有这些数据类型,MongoDB 将失去一些有价值的支持
  • 以下是一些示例:JSON 对象及其相应的 BSON 表示形式

MongoDB 使用 BSON 还是 JSON

  • MongoDB 在内部和网络上以 BSON 格式存储数据,但这并不意味着您不能将 MongoDB 视为 JSON 数据库
  • 您可以用 JSON 表示的任何内容都可以本机存储在 MongoDB 中,并且可以在 JSON 中轻松检索
  • 当使用您最喜欢的编程语言的 MongoDB 驱动程序时,您将使用该语言的本机数据结构
  • 当查询数据库时,驱动程序将负责将数据转换为 BSON 并返回
  • 与将 JSON 存储为字符串编码值或二进制编码 blob 的系统不同,MongoDB 使用 BSON 在 Web 最流行的数据格式之上提供强大的索引和查询功能
  • 例如,MongoDB 允许开发人员通过 JSON/BSON 文档中的特定键查询和操作对象
  • 甚至在深入记录的多层嵌套文档中,在那些相同的键和值上可以创建高性能索引

JSON 与 BSON

  • JSON 和 BSON 在设计上确实是近亲
  • BSON 被设计为 JSON 数据的二进制表示形式,具有针对更广泛应用的特定扩展,并针对数据存储和遍历进行了优化
  • 就像 JSON 一样,BSON 支持嵌入对象和数组
  • BSON 与 JSON 的一个特殊区别在于它支持一些更高级的数据类型
  • 例如,JSON 不区分整数(整数)和浮点数(具有不同程度的小数精度)

架构灵活性和数据治理

  • 对于使用具有 JSON 和 BSON 数据模型的数据库的开发人员来说
  • 最大的吸引力之一是与关系数据库使用的严格的表格数据模型相比,它们提供的动态且灵活的模式
  • 首先,MongoDB 文档是多态的——单个集合中不同文档的字段可能不同(类似于关系数据库中的表)
  • 这种灵活性使得对任何结构的数据进行建模并根据需求变化调整模型变得更加容易
  • 其次,不需要向数据库声明文档的结构——文档是自描述的;开发人员可以开始编写代码并在创建对象时保留它们
  • 最后,如果需要将新字段添加到文档中,则可以在不影响集合中的所有其他文档的情况下创建新字段,无需更新中央系统目录,也无需使数据库脱机
  • 当您需要更改数据模型时,文档数据库会继续存储更新的对象,而无需执行昂贵的 ALTER TABLE 操作 - 或者更糟糕的是,必须从头开始重新设计架构

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

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

相关文章

CVPR上新 | 从新视角合成、视频编解码器、人体姿态估计,到文本布局分析,微软亚洲研究院精选论文

编者按:欢迎阅读“科研上新”栏目!“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里,你可以快速浏览研究院的亮点资讯,保持对前沿领域的敏锐嗅觉,同时也能找到先进实用的开源工具。 本周&#xff0…

2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试…

uni-app通过配置package.json实现环境变量、自定义条件编译

文章目录 前言官方提示使用方法微信小程序配置如下自定义条件编译使用方法 前言 uni-app 官方概括 官方文档 在开发web时,有时需要一套代码编译发布到不同的站点,比如主站和微信h5站。(注意不是一套代码内部自适应不同浏览器,是真…

CentOS 生命周期结束指南

2019 年 9 月,Red Hat 宣布打算废止 CentOS,并将其替换为 CentOS Stream。 CentOS 7 和 8 是 CentOS Linux 的最终版本。CentOS 7 和 8 的生命周期结束日期为: CentOS 8 - 2021 年 12 月 31 日 CentOS 7 - 2024 年 6 月 30 日 相关内容推荐 点…

MySQL数据库存储引擎

MySQL数据库存储引擎 存储引擎概念 存储引擎也称为表类型 通过不同的技术比如说,存储机制,索引技巧,锁定水平等等,来提供不同的功能。 查看MySQL支持的存储引擎 show engines\G; 常用引擎比较 对事务有需求 innodb …

MySQL丢失更新问题的出现和解决

MySQL丢失更新问题的出现和解决 丢失更新问题(Lost Update)指的是两个或多个事务在读同一数据并基于此数据进行更新操作时,某些更新操作被覆盖或丢失。例如,事务A和事务B都读取了某个数据,然后事务A更新了该数据&…

谷歌Gemma 2:开源模型的新里程碑

引言: 在人工智能领域,谷歌一直是创新的先行者。最近,谷歌DeepMind团队在I/O Connect大会上发布了Gemma 2,这是其开源模型系列的最新力作,标志着AI技术的又一大步。 Gemma 2的前身,Gemma,已经因…

0-30 VDC 稳压电源,电流控制 0.002-3 A

怎么运行的 首先,有一个次级绕组额定值为 24 V/3 A 的降压电源变压器,连接在电路输入点的引脚 1 和 2 上。(电源输出的质量将直接影响与变压器的质量成正比)。变压器次级绕组的交流电压经四个二极管D1-D4组成的电桥整流。桥输出端…

中电金信:时代有命题,运营有答案——咨询服务为金融机构运营加上智慧“基因”

这两年,很多搞运营的“卷王”都开始迷茫了 原因其实没别的:时代变了 与此同时,条线集中趋于成熟 跨条线共享障碍多多 运营模式创新所带来的变革红利 也达到了发展瓶颈 想破局就必须引入一些新“变量” 基于中电金信多年来对银行业的实践…

多行业预约门店服务小程序源码系统 支持多门店预约 带完整的安装代码包以及搭建教程

系统概述 该系统基于先进的云计算和大数据技术,采用模块化设计,具有高度的可扩展性和可定制性。无论是餐饮、美容美发、健身房还是其他服务行业,都可以通过该系统轻松实现多门店预约功能。同时,我们还提供了丰富的接口和插件&…

Linux防火墙【SNAT,DNAT】

NAT: 支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标IP,根据跟踪机制自动实现 NAT的实现分为下面类型: SNAT:source…

goLang小案例-获取从控制台输入的信息

goLang小案例-获取从控制台输入的信息 1. 案例代码展示 package mainimport ("bufio""fmt""log""os" )var pl fmt.Printlnfunc main() {//控制台输出欢迎提示pl("Hello Go")fmt.Print("what is your name? ")…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊,终究还是被 Stable Diffusion 闯进去了~ SDSeg:第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型,在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文:Stable Diffusion Segmen…

安宝特分享 | 数字化革命,AR技术打造智慧城市的未来

随着城市化进程的加速和科技创新的不断推进, AR技术正逐步融入智慧城市建设的方方面面,为城市居民提供更智能、便捷、舒适的生活体验,开启了智慧城市的新时代。 01 优化城市规划与建设 AR技术在城市规划和建设中发挥着重要作用。城市规划师和…

leetcode提速小技巧

据我所知,leetcode可能是按最难那个用例给你打分的,非难题的用时好坏不完全看复杂度,因为可能都差不多,O(n/2)和O(n)虽然都是O(n),但是反应到成绩上是不同的,所以,尽可能的在条件足够的情况下提…

宏集物联网工控屏通过 S7 ETH 协议采集西门子 1200 PLC 数据

前言 为了实现和西门子PLC的数据交互,宏集物联网HMI集成了S7 PPI、S7 MPI、S7 Optimized、S7 ETH等多个驱动来适配西门子200、300、400、1200、1500、LOGO等系列PLC。 本文主要介绍宏集物联网HMI如何通过S7 ETH协议采集西门子1200 PLC的数据,文中详细介…

JVM专题五:类加载器与双亲委派机制

通过上一篇Java的类加载机制相信大家已经搞明白了整个类加载从触发时机,接着我们就来看下类加载器,因为类加载机制是有加载器实现的。 类加载器的分类 启动类加载器 Bootstrap ClassLoader 是 Java 虚拟机(JVM)的一部分&#x…

Sqlserver双活

要实现Sqlserver双活不是一件简单的事情,什么是双活,就是两边都活着,两边都可以访问,也就是A服务器部署一个sqlserver服务,B服务器部署一个sqlserver服务,两边数据双向同步保持一致,当A数据库服…

web前端之文档流、浮动、定位详解

目录 一、文档流 二、浮动 1.添加浮动 2.清除浮动 三、定位 1.相对定位 2.绝对定位 一、文档流 什么是文档流? ● 文档流指的是文档中的标签在排列时所占用的位置。 将窗体自上而下分成一行行 ,并在每 行中按从左至右的顺序排放标签&#xff0c…

智慧校园-学工管理系统总体概述

智慧校园学工管理系统是高等教育机构内部管理不可或缺的一部分,它通过集成信息技术,全面覆盖学生从入学至毕业的各类事务,旨在优化学生工作流程,强化管理效率,同时深化学生与学校间的互动,确保学生需求得到…