MongoDB是一个基于分布式文件存储的数据库。用C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是介于关系型数据库和非关系型数据库之间的产物。它是非关系数据库中功能最强的,与关系数据库最相似。这里需要简单介绍一下非关系数据库(NoSQL)1什么是NoSQLNoSQL指的是非关系数据库。NoSQL有时被称为NotOnlySQL的缩写,它是区别于传统关系型数据库的数据库管理系统的总称。NoSQL用于存储非常大规模的数据。(例如谷歌或Facebook每天为其用户收集数万亿比特的数据)。这些类型的数据存储不需要固定的架构,无需冗余操作即可横向扩展。2关系数据库与非关系数据库|关系数据库|NoSQL数据库||------|------||高度组织的结构化数据|||结构化查询语言(SQL)|没有声明式查询语言||数据和关系存储在单独的表中|没有预定义模式||数据操作语言、数据定义语言|键值存储、列存储、文档存储、图数据库||严格一致性|最终一致性,而不是ACID属性||基本交易|非结构化和不可预测的数据|||CAP定理|||可扩展性|3NoSQL数据库分类类型的典型代表特征列存储HbaseCassandraHypertable,顾名思义,就是将数据存储在列中。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩。对于某一列或者几列的查询有非常大的IO优势。文档存储MongoDBCounchDB文档存储一般以类似json的格式存储,存储的内容是文档化的。这样就有机会对某些字段进行索引,实现关系数据库的某些功能。键值存储TokyoCabinet/TyrantBerkeleryDBMemcacheRedis可以通过键快速查询其值。一般来说,无论值的格式如何存储,都按顺序接受。(Redis包括其他功能)图存储Neo4JFlockDB是最好的图关系存储。如果用传统的关系型数据库来解决,性能低下,设计使用不方便。对象存储Db4oVersant通过类似于面向对象语言的语法来操作数据库,以对象的形式存储数据。XML数据库BerkeleyDBXMLBaseX高效存储XML数据,存储XML内部查询语法,如XQuery、Xpath。4CAP理论在计算机科学中,CAP定理,又称布鲁尔定理,指出对于一个分布式计算系统,不可能同时满足以下三点:1.Consistent一致性(所有节点具有相同的数据同时)2.可用性(保证无论成功还是失败,每个请求都有响应)3.分区容错性(系统中任何信息的丢失或故障不影响系统的继续运行)的核心CAP理论是:分布式系统不能同时满足一致性、可用性和分区容错三个需求,最多只能同时满足两个需求。因此,根据CAP原则,NoSQL数据库分为满足CA原则、CP原则和AP原则的三类:CA——单点集群,满足一致性和可用性的系统,通常不是很强大的可扩展性。CP-满足一致性和分区容错性的系统,通常性能不是特别高。AP——满足可用性和分区容错性的系统,一般可能对一致性的要求较低。5MongoDB数据结构与关系数据库数据结构比较关系数据库术语/概念MongoDB术语/概念解释/说明不支持PrimaryKeyObjectID主键/MongoDB自动设置_id为主键6MongoDB中的数据类型|数据类型|说明|说明|范例||------|-------|------|------------||空|空值|表示空值或未定义的对象||真还是假:真还是假|{“x”:真}||整数|整数|整数值。用于存储值。根据你使用的服务器,可以分为32位或者64位。||双|浮动|双精度浮点值。|{“x”:3.14,“y”:3}||字符串|字符串|UTF-8字符串|||符号|符号|象征。这种数据类型基本上等同于字符串类型,不同的是它一般用于使用特殊符号类型的语言。||对象ID|对象编号|对象ID。用于创建文档的ID。|{“id”:ObjectId()}||日期|日期|约会时间。以UNIX时间格式存储当前日期或时间。|{“日期”:新日期()}||时间戳|自标准纪元以来的时间戳(以毫秒为单位)|||:/testdb/i}||代码|代码|可以包含JavaScript代码|{“x”:函数(){}}||未定义|未定义|弃用|||数组|{“arr”:[“a”,“b”]}||二进制|资料|二进制|用于存储二进制数据。||对象|嵌入文档|文档可以作为文档中一个键的值|{"x":{"foo":"bar"}}||最小/最大键|对比BSON(二进制JSON)元素的最小值和最大值。|7MongoDB应用场景和不适用场景7.1适用场景对于MongoDB的实际应用,是否使用MongoDB需要根据项目的具体特点一一筛选,这就需要我们对MongoDB有一定的了解MongoDB适用和不适用的场景学习。根据MongoDB官网介绍,MongoDB的适用场景如下:1)实时网站数据:MongoDB非常适合实时插入、更新和查询,具有实时所需的复制和高扩展性网站上的数据存储。2)数据缓存:MongoDB由于其高性能,也适合作为信息基础设施的缓存层。系统重启后,MongoDB构建的持久化缓存层可以防止底层数据源过载。3)大容量、低价值的数据存储:使用传统的关系型数据库存储一些数据可能成本更高。在此之前,程序员往往会选择传统的文件进行存储。4)高扩展性场景:MongoDB非常适合由几十台或者上百台服务器组成的数据库。MongoDB的路线图已经包括对MapReduce引擎的内置支持。5)对象或JSON数据存储:MongoDB的BSON数据格式非常适合文档格式的存储和查询。7.2不适用场景了解了MongoDB的适用场景后,您需要知道哪些场景不适合使用MongoDB,具体如下:1)高事务性系统:如银行或会计系统。传统的关系型数据库还是更适合需要大量原子复杂事务的应用。2)传统商业智能应用:针对特定问题的BI数据库会生成高度优化的查询方式。对于此类应用程序,数据仓库可能是更合适的选择。3)需要复杂SQL查询的问题。相信通过上面的描述,您对MongoDB的使用规则有了一个大概的了解。需要注意的是,MongoDB不仅仅是一个数据库,更多的用途是将MongoDB作为一个数据库中间件,在实际应用中合理划分使用细节。一点对于MongoDB应用至关重要!8安装MongoDB数据库(Windows和Linux环境)下载地址:https://www.mongodb.com/downl...8.1安装与启动1.在D盘创建安装目录,D:\MongoDB,将解压后的文件复制进去files导入新创建的文件。2、在D盘创建目录D:\MongoDB\Data,用于存放MongoDB数据。3.执行安装,使用命令行,进入MongDb的安装目录,执行安装命令,指定存放MongoDB的路径。注意,如果你的目录有空格,会报Invalidcommand错误。dbpathtomongod.exe-dbpath=”D:\MongoDB\Data”后面的值加上双引号。最后一行显示我们的MongoDB已经连接到27017,这是默认的数据库端口;它建好数据库后,会在我们的MongoDbData文件夹下生成一些文件夹和文件:journal文件夹下会存放相应的文件Datafiles,NoSQL的MongoDB,以文件的形式存放所有的数据模型,即以json由二进制代码转换而来。8.2环境变量配置8.3启动数据库要启动MongoDB数据库,需要根据自己配置mongodb.bat文件,在D:\MongoDB\Server\3.4\bin下创建一个mongodb.bat文件,然后我们会写这个可执行文件如下:mongod--dbpath=D:\MongoDB\Data运行mongodb.bat文件,MongoDB就启动成功了!9安装Studio3T客户端,关注微信公众号“汤姆炸弹架构”回复“MongoDB”获取配套资料。本文为《汤姆炸弹建筑》原创,转载请注明出处。科技在于分享,我分享我的快乐!如果大家有什么建议,也可以留言或者私信。您的支持是我坚持创作的动力。关注微信公众号“汤姆炸弹架构”,获取更多技术干货!原创不易,坚持很酷,看到这里了,小伙伴们记得点赞、收藏、观看、加关注哦!如果觉得内容太干,可以分享转发给身边的朋友一起滋润哦!
