我爱编程

MongoDB 初探

2017-02-26  本文已影响0人  vivi_wong

这次用mongoDB 只是存储请求日志。

1.mongodb是什么?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组

2.mongodb怎么用?

https://blog.gtwang.org/programming/getting-started-with-mongodb-shell-1/

我用springboot-mongodb 整合,直接用mongodbTemplate的API

3.为何选择

选择MongoDB的原因

1、 面向文档且架构更为灵活:不同于关系数据库,MongoDB使用了以json(JS对象表示法)为基础的文档存储模式,这种模式被称为BSON。在必须将应用与一些其他平台相集成的情况下,这种模式很有好处。比如YouTube的API就是以JSON格式输出数据的,因此MongoDB在处理这些请求时就会十分得心应手。同时,这种模式还简化了领域对象与数据库之间的映射关系。因此,对于那些开发时间总是很紧张,不能在数据库设计上花费大量时间的多态性数据领域快速软件开发来说,MongoDB就成为了很好的选择。

2、水平可扩展性与高可用性:数据库可以智能地水平扩展。数据库的可扩展性是通过其特有的分片(sharding)方式来实现的,使用MongoDB可以通过复制与分片技术构建集群拓扑(clustered topology)。为了增强可用性与一致性,MongoDB可以在创建副本集(replica set)的同时复制数据。这是因为复制过程提供了持续读取的可扩展性,分片功能让读写操作更容易,在结果一致的前提下智能处理复制中的故障。

3、基于位置的查询功能:如果你打算开发的应用包含位置追踪类、基于位置的事件追踪等位置功能的话,由于MongoDB是具有地理空间信息功能的NoSQL数据库,它会是很好的选择。

4、综合查询与聚合框架:MongoDB利用现有且合适的索引,提供强大的查询功能,并允许用户查询嵌套/植入对象与数组。MongoDB在压力下表现良好,尤其在处理实时更新的即席查询之时。聚合框架是一种新的机制,专为查询所设计,要求SQL实现任何MAX、AVG或者GROUP BY操作。无需累赘的Map-Reduce脚本,此框架允许用户运行某些即席聚合查询。

5、直观的架构:MongoDB每个副本只有单一的master,相对来讲,点对点架构由于并行写入或写入冲突而显得非常累赘。

用还是不用呢?

我们知道,MongoDB很出色,对于需要处理庞大数据库的项目来说非常不错,最适合开发博客平台、电子商务平台、元数据存储与基于位置的应用程序。不过在使用它之前,仍需考虑到MongoDB可能出现的故障:

l 可能会在运行大型、复杂的Map/Reduce工作上浪费大量的时间;

l 很多时候需要使用JOINs语句,或者得有使用“SUM”操作的计划;l 会被大量镜像或大段二进制数据所困扰;

l 可能需要排队系统。

在下结论之前,先将其与CouchDB进行一下对比。

如果已做好准备接受这些挑战的话,那么选用MongoDB作为NoSQL数据库吧。下面我们来看一下在选择CochDB或者MongoDB之前,开发人员必须决定的一些重要与次要问题。

1、如果你打算使用移动组件,或者需要允许桌面用户离线工作,稍候再同步到服务器的话,就选择CouchDB。

2、如果只需代码在服务器端运行,选MongoDB好了。

3、想要满足可用性与分区容错性,MongoDB更有优势。

4、想要满足一致性与分区容错性,CouchDB是正确的选择。

5、如果需要动态查询,或者更需要定义索引(并非map/reduce功能)的话,选MongoDB。

6、偶尔需要对运行预定义查询的数据进行改动的话,选CouchDB。

上一篇下一篇

猜你喜欢

热点阅读