https://www.jianshu.com/p/ae6615d1e2ce
image.pngimage.png
基础概念
MongoDB与SQL的结构对比详解
image.png- key是document中的键的名称,类似关系型数据库中表的列,但是这个key不像关系数据库那样子被限定;
- document是MongoDB中数据的基本单位,类似关系型数据库表的行,但是比行要复杂多;
- collection就是一组document,类似关系型数据库的一个表;
- db就是一组collection,类似关系型数据库的库,单个实例可以支持多个库,每一个db都有自己的集合和权限;
- 每个document都有一个特殊的键_id ,这个键值是唯一的,相当于关系型数据库中的表的主键;
- MongoDB存储的数据库是以BSON的格式的,BSON是一种二进制的json数据。
数据类型
Object ID :文档的id
String: 字符串,最常用,必须是utf-8
Boolean:布尔值,true 或者false
Integer:整数
Double:浮点数
Arrays:数组或者列表,多个值存储到一个键
Object:用于嵌入文档,即一个值为一个文档
Null:存储null值
Timestamp:时间戳
Date:存储当前日期或时间unix时间格式
重点介绍几个类型,
ObjectId类型:这是MongoDB生成的类似关系型DB表主键的唯一key,生成快速。具体由12个字节组成:
前4个字节是unix秒,3个字节的机器标识符(为了分布式下的主键唯一),2个字节的进程id,3个字节的计数器数字
a 4-byte value representing the seconds since the Unix epoch,
a 3-byte machine identifier,
a 2-byte process id, and
a 3-byte counter, starting with a random value.
MongoDB的设计之初就是要做分布式数据库。从ObjectId唯一主键的生成上,值得分布式系统设计人员参考。
3个字节的机器标识符,表示MongoDB实例所在机器的不同;2个字节的进程id,表示相同机器的不同MongoDB实例。再加上时间戳和随机数(3个字节随机数,同一秒上,理论上可以有2^24次个插入),很大程度上保证了ObjectId的唯一性。
String类型:BSON字符串都是UTF-8编码。
Timestamps类型:BSON具有内部MongoDB使用的特殊时间戳类型,并且不与常规Date类型相关联。 时间戳值是64位值,其中:
第一个32bit是unix时间戳秒;
第二个32bit是当前秒的递增操作数。
可以保证一个mongod实例下,timestamps总是唯一的。
Date类型:BSON Date是一个64bit有符号整数,表示自Unix纪元以来的毫秒数(1970年1月1日)。
网友评论