深入浅出MongoDB(三):MongoDB的体系结构

逻辑结构关系对比

我们用一张表格来对关系型数据库和MongoDB进行对比

MongoDB

关系型数据库

文档对象(document)

行(row)

集合(collection)

表(table)

数据库(database)

数据库(database)

数据存储结构

MySQL的数据存储结构:

MySQL的每个数据库存放在一个与数据库同名的文件夹中,MySQL如果使用MyISAM存储引擎,数据库文件类型就包括frm、MYD、MYI.

MongoDB的数据存储结构:

MongoDB的默认数据目录是/data/db,它负责存储所有的MongoDB的数据文件,在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做mydb的数据库,那么构成mydb这个数据库的文件就会由mydb.ns,mydb.0,mydb.1等等组成。

MongoDB数据类型

MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null、布尔、数字、字符串、数组及对象),不能完全满足复杂业务的需要,因此,BSON还提供了日期、32位数字、64位数字等类型,以下对MongoDB数据类型进行简要说明:

类型

描述

null

用于表示空值或者不存在的字段

{“x”,null}

布尔

‘true’和’false’

{“x”,true}

32位整数

Shell中这个类型不可用,MongoDB在控制台使用JS引擎进行输入,而JS仅支持64位浮点数,所以32位整数将会被自动转义

64位整数

Shell中这个类型不可用, 64位整数与32位整数一样,在MongoDB控制台使用时,会转义成64位浮点数

64位浮点数

Shell中的数字都是这种类型,下面是浮点数

{“x”:3.14}、{“x”:3}

字符串

UTF-8字符串都可表示为字符串类型的数据

{“x”:”foobar”}

符号

Shell不支持这种类型,将自动转义成字符串

对象ID

对象id是文档的12字节的唯一ID,时间戳|机器|PID|计数器

{“x”:ObjectId()}

日期

日期类型存储的是从标准纪元开始的毫秒数

{“x”:new Date()}

正则表达式

文档中可以包含正则表达式,其正则表达式采用JS语法来表示

{“x”:/foobar/i}

代码

文档中可以包含js代码

{“x”:function(){…}}

二进制数据

二进制数据可以由任意字节的串组成,不过Shell无法使用

最大值

BSON包括一个特殊类型,表示可能的最大值

Shell无法使用

最小值

BSON包括一个特殊类型,表示可能的最小值

Shell无法使用

未定义

文档中也可以使用未定义类型

{“x”:undefined}

数组

值的集合或者列表可以表示成数组

{“x”:[“a”,”b”,”c”]}

内嵌文档

文档可以包含别的文档

{“x”:{“foo”:”bar”}}

本文链接:http://www.656463.com/portal.php?mod=view&aid=77,转载请注明出处

下一节:MongoDB的常用命令

相关推荐