最近在做项目的过程中有一个同事推荐了mongodb,以前有听到过该数据库是分布式数据库中的一种,但是具体并不了解紧紧是知道个名字,在该周末就用了点时间,大概去了解了下。

    mongodb分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据看中最丰富,最向关系数据库的一种。

    一、关系数据库与非关系数据库:
        1、关系数据库:顾名思义是简历在关系基础上的数据库标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构关系操作集合、关系完整性约束三部分组成。SQL:结构化查询语言,基于关系代数与关系演变之间的语言,通用功能极强的数据库查询语言。
         2、非关系型数据库:NoSQL,用于处理大量的数据需求,伴随Web2.0的发展而发展。主要优点:易扩展、大数据量和高性能、灵活的数据模型、高可用;理论:分布式系统、CAP定理、弱一致性、最终一致性、   
      备注:CAP定理:又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个 分布式计算系统 来说,不可能同时满足以下三点:[1][2]

        根据定理,分布式系统只能满足三项中的两项而不可能满足全部三项[3]


        3、关系型数据库和非关系型数据库的设计理念区别:关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。
          4、关系型数据库和非关系数据库的不同点:最主要是NoSQL不使用SQL作为查询语言,其存储可以不需要固定的表格模式,也经常避免使用SQL的JOIN操作,有水平可扩展性的特征。其实现特征:使用硬盘、或者随机存储器作存储载体。

2、MongoDB简介

MongoDB是基于文档的存储的(而非表),是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。模式自由(schema-free),意味着对于存储在MongoDB数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

       Mongo主要解决的是海量数据的访问效率问题。因为Mongo主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎。


          
01-07 23:55