MongoDb数据结构详解
⾸先,向数据库插⼊⼀条bjson数据
⾸先是定义⽂档,然后使⽤admin⽤户名密码登录,进⼊test数据库,向test数据库中插⼊此⽂档(“表名称和表中的记录”)
插⼊结果,查看mongoVUE如下图所⽰
从上图可以看出系统⾃带的三个数据库,local,admin,test,在加⼊⼀条记录的时候,会⾃动⽣成_id的⾃动标识。
我们再添加图⽚,可以使⽤mongoVUE添加,如下图所⽰。
Collections:在mongodb中叫做集合,是⽂档的集合。⽆模式,可以存储各种各样的⽂档。类似mysql中的表。
在关系型数据库中,关系数据库的每⼀张表就是⼀个关系模型的映射,每张表的字段就是对应的实体的属性和主外键的集合,每个字段需要提前定义。
Document:这⾥的user集合(“表”)有⼀个document(document可以理解为mysql中的记录)。⽂档是mongodb保存数据的基本单元。数据的存储结构为BSON格式,也就是我们开始添加的⽂档,key value键值对类型。
⽂档中保存到数据类型可以为:null、boolean、String、Object、32位整数、64位整数、64位浮点数、⽇期、正则表达式、js代码、⼆进制数据、数组、内嵌⽂档、最⼤值、最⼩值、未定义类型。
GridFS:因为bson对象的⼤⼩有限制,不适合存储⼤型⽂件,GridFS⽂件系统为⼤型⽂件提供了存储的⽅案,GridFS下的fs保存的是图⽚、视屏等⼤⽂件。
⽆论是bson对象还是GriFs中存储的⼤⽂件,我们发现当添加⼀个⽂档的时候,会⾃动的添加_id ,不同的是图⽚添加后会⾃动的加上
_id,chunkSize,md5,legnth,aliases等,这些属性是我们上传完图⽚后,mongodb分析后⾃动添加的,系统⾃动保存。
参考MongoDB官⽹:
mysql存储文档 MongoDB⽂档存储是使⽤BSON类型,BSON(BSON short for Bin a ry JSON, is a bin a ry-en c oded seri a l i z a t ion of JSON-like doc u‐ments)是⼆进制序列化的形式。类如JSON,同样⽀持内
嵌各种类型。
Type Number Alias Notes
Double1“double”
String2“string”
Object3“object”
Array4“array”
Binary data5“binData”
Undefined6“undefined”Deprecated.
ObjectId7“objectId”
Boolean8“bool”
Date9“date”
Null10“null”
Regular Expression11“regex”
DBPointer12“dbPointer”Deprecated.
JavaScript13“javascript”
Symbol14“symbol”Deprecated.
JavaScript (with scope)15“javascriptWithScope”
32-bit integer16“int”
Timestamp17“timestamp”
64-bit integer18“long”
Decimal12819“decimal”New in version 3.4.
Min key-1“minKey”
Max key127“maxKey”
重点介绍⼏个类型,
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⽇)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论