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

每日一句

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理