mongoDB——通过客户端理解mongoDB体系结构

通过之前的博客,我们了解了NoSQL,MongoDB的一些基本概念,其中,被提到最多的是mongoDB的存储理念:面向文档的存储、模式自由,还有集合、文档等名词,在没有接触mongoDB之前,可能觉得这些名词比较抽象,下面,我们通过对mongoDB的CRUD操作,借助可视化工具mongoVUE来看一下mongoDB中的结构,相信一定会对理解这些基本概念有更形象的认识。

      通过shell命令来执行数据库的CRUD操作:执行mongo命令启动客户端

      

      启动shell时,默认连接本地的test数据库,并将该数据库的连接保存到db变量中。db.user.insert(userDoc)中,user表示数据库中的集合名,不需要提前定义,可以在插入时创建。

      看一下mongoVUE中更形象的图片吧:

   

  

  

   从上图中可以看到,admin、local、test是mongoDB提供的三个db,当然,我们可以创建自己的数据库。

   Collections:在mongoDB中叫做集合,是文档的集合。它是无模式的,可以存储各种各样的文档。在图中,user就是一个集合。看上去有点像关系型数据库中的表。

       和关系型数据库中的表相比,关系数据库的每一张表就是一个关系模型的映射,每张表的字段就是对应实体的属性和主外键的集合,每个字段需要提前定义。

       而集合中可以保存毫无关系的数据,而且具体要保存什么不需要提前定义。

  Document:这里的user集合中有两个document。文档是mongoDB保存数据的基本单元。数据的存储结构为BSON格式,也就是TextView中显示的文本。

       保存的数据类型可以为:null、boolean、String、object、32位整数、64位整数、64位浮点数、日期、正则表达式、js代码、二进制数据、数组、内嵌文档、最大值、最小值、未定义类型。

 GridFS:由于BSON对象有大小限制,不适合存储大型文件,GridFS文件系统为大型文件提供了存储方案(其存储原理稍后再讲)。fs中保存的是图片、视频等大文件。

    从图上我们可以看到集合中的每个文档都自动增加了一个_id,而每个图片则新增了多个键:_id,chunkSize,md5、length、aliases等,这些属性都不是我上传时添加的,而是系统自动保存的,这就涉及到了GridFS处理大文件的机制。


相关内容推荐