关于后端:MongoDB-体系结构与数据模型

4次阅读

共计 2117 个字符,预计需要花费 6 分钟才能阅读完成。

每日一句

If no one else guards the world, then I will come forward.
如果没有他人捍卫这个世界,那么我将挺身而出。

概述

MongoDB 次要是由文档 (document)、汇合(collection)、数据库(database) 这三局部组成的。类比于 mysql 的行、表、数据库。

体系结构

MYSQL 与 MongoDB 比照

MongoDB 与 SQL 的构造比照详解

SQL Terms/Concepts MongoDB Terms/Concepts 解释与阐明
database database 数据库
table collection 数据库表 / 汇合
row document or BSON document 数据记录行 / 文档
column field 数据库字段 / 域
index index 索引
table joins embedded documents and linking 表连贯,MongoDB 不反对,MongoDB 通过嵌入式文档来代替多表连贯
primary key Specify any unique column or column combination as primary key. primary key In MongoDB, the primary key is automatically set to the _id field. 主键,MongoDB 主动将_id 字段设置为主键
aggregation (e.g. group by) aggregation pipeline See the SQL to Aggregation Mapping Chart.

数据模型

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

BSON (Binary Serialized Document Format)是一品种 json 的一种二进制模式的存储格局,简称 Binary SON。

BSON 和 SON 一样,反对内嵌的文档对象和数组对象,然而 BSON 有 JSON 没有的一些数据类型,如 Date 和 BinData 类型。

BSON 采纳了相似于 C 语言构造体的名称、对示意办法,反对内嵌的文档对象和数组对象,具备轻量性、可遍历性、高效性的三个特点,能够无效形容非结构化数据和结构化数据。

这种格局的长处是灵活性高,但它的毛病是空间利用率不是很现实。

Bson 中,除了根本的 SON 类型:string integer,boolean,double,nullarray 和 object , mongo 还应用了非凡的数据类型。

这些类型包含 date,object idbinary data,regular expression 和 code。

每一个驱动都以特定语言的形式实现了这些类型,查看你的驱动的文档来获取详细信息。
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}
undefifined 文档中也能够应用未定义类型 {“x”:undefifined}
符号 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”)}

美文佳句

读过一段话,觉得很有感触:温顺的人通常是这样诞生的,他们亲身经历过许许多多的难,过后决定不再让其他人像本人这般惆怅。这份体贴,人们称之为温顺。

每个人的经验不同,但我置信,温顺的人必然都是具备同理心的人。他们晓得有些话有些行为会让人不难受,所以能将心比心,在尊重本人的同时也尊重他人。要想被别人温顺以待,就要先学会温顺待人。

你好,我是 yltrcc,日常分享技术点滴,欢送关注我的公众号:ylcoder

正文完
 0