zoukankan      html  css  js  c++  java
  • MongoDB 初探

        什么是MongoDB? 为什么要使用类似mongodb的nosql数据库?

         MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等。 它与我们平常所使用的那种关系型数据库有很大的不同,MongoDB是基于文档(Documents)存储的,Document相当于关系型数据中的每一行的条目,而MongoDB的每个集合(Collection)相当于关系型数据库中的表。MongoDB中Collection之间没有关系型数据库那种很强的关联,所以MongoDB存储相对独立,并且它是一种数据冗余的存储方式,用以加快数据的查询。

      Mongo数据主要特性有:

    1    面向文档存储:(类JSON数据模式简单而强大)。
    2    高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
    3    复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。
    4    Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
    5    动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
    6    全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
    7    支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
      适用场景:
    1    适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性。
    2    适合作为信息基础设施的持久化缓存层。
    3    适合由数十或数百台服务器组成的数据库。因为Mongo已经包含对MapReduce引擎的内置支持。
    4    Mongo的BSON数据格式非常适合文档化格式的存储及查询。

      不适用场景:
    1    高度事务性的系统。
    2    传统的商业智能应用。
    3    极为复杂的SQL查询。

       MongoDB 与 CAP理论

       图片2

    MongoDB的核心理论就是Document,它是由一个键值对集合构成的,就像是一个HashMap,或是字典。它的存储格式类似一个json,

    {“username”: “Peter”, “age”: 10 }

    MongoDB中的Collection表示一组documents。并且Collection是schema-free的,也就是说没有严格的格式限制,可以随意插入各种不同格式和类型的document。

    例如一个Collection中可以包含

    {“username”: “Peter”}

    {“username”: “Peter”, “age”: 10 }

    {“password”: 11111}

    {“scorelist”: [{“math”:90 } , {“english”:100 }]}   复杂的包含数组类型的数据

    MongoDB中的DataBase用于聚集Collection ,一个MongoDB实例可以host多个Database,而每个database可以认为是完全独立的,类似于SqlServer数据库可以通过host多个数据库一样。

    关于MongoDB的其他内容,都可以在一本叫做《MongoDB权威指南》的书中找到。而且Mongo的官网,就提供了MongoDB的快速入门 等资料,通俗易懂,很容易学习。

    关于Nosql的个人理解:

          Nosql并不是No sql ,而应该更合理地解释为not only sql 或是非关系型数据库。传统的关系型数据库,强化了关系的概念。随着目前互联网应用规模的迅速膨胀,传统的存储模型出现了很多性能瓶颈,很多跨表、跨库、跨物理机器的查询导致数据查询的效率降低。 而nosql数据库,则淡化了关系的概念,通过可能造成数据冗余的代价使得数据存储相对独立,无需交叉查询 ,这也使得Nosql数据库具有了很好的扩展性,因为数据存储相对独立,扩展着实十分方便。并且Nosql数据库普遍具有非常高的读写能力,尤其是大数据量下,这都得益于无关系性和数据库存储结构简单的特性。但是不存在nosql和传统关系型数据库谁好谁差的概念,它们各自存在优缺点,不同场景进行不同的应用,让关系数据库关注在关系上,nosql关注在存储上。

  • 相关阅读:
    3.22-3.29课题(拼团系统)进度汇报
    结对编程二--单元测试
    个人作业2——英语学习APP案例分析
    第三周进度报告(拼团系统项目)
    结对编程1
    启动Tomcat提示:指定的服务未安装
    (C#)DataTable导出Excel
    支持向量机通俗导论(理解SVM的三层境界)
    LIBSVM在Matlab下的使用
    dev中 使用一些控件后,窗体屏蔽右键某些菜单
  • 原文地址:https://www.cnblogs.com/coser/p/2238402.html
Copyright © 2011-2022 走看看