mongodb适用和不适用的应用场景
近期考虑把订单历史数据从Oracle数据库迁移到Nosql数据库做历史数据查询和分析,一天千万级数据。打算使用mongodb数据库。使用nodejs做查询和统计API,对并发请求量要求低,不知道有没有前辈这样玩过。我们如今仅仅用mongodo存储日志数据,做应用故障分析用。
假设有前辈做个类似的历史库查询和数据分析,能够交流下。你们选择的Nosql库和上层开发语言。
1.mongodb介绍
MongoDB (名称来自"humongous") 是一个可扩展的高性能。开源,模式自由,面向文档的数据库。
它使用C++编写。MongoDB特点:
a.面向集合的存储:适合存储对象及JSON形式的数据。
b.动态查询:mongo支持丰富的查询表达方式。查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组。
c.完整的索引支持:包含文档内嵌对象及数组。mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
d.查询监视:mongo包括一个监视工具用于分析数据库操作性能。
e.复制及自己主动故障转移:mongo数据库支持server之间的数据复制,支持主-从模式及server之间的相互复制。
复制的主要目的是提供冗余及自己主动故障转移。
f.高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
g.自己主动分片以支持云级别的伸缩性:自己主动分片功能支持水平的数据库集群,可动态加入额外的机器。
2.mongo使用场合
mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于下面场景:
a.站点数据:mongo很适合实时的插入,更新与查询,并具备站点实时数据存储所需的复制及高度伸缩性。
b.缓存:因为性能非常高,mongo也适合作为信息基础设施的缓存层。在系统重新启动之后。由mongo搭建的持久化缓存能够避免下层的数据源过载。
c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比較贵,在此之前。非常多程序猿往往会选择传统的文件进行存储。
d.高伸缩性的场景:mongo很适合由数十或者数百台server组成的数据库。
e.用于对象及JSON数据的存储:mongo的BSON数据格式很适合文档格式化的存储及查询。
不适合的场景:
a.高度事物性的系统:比如银行或会计系统。传统的关系型数据库眼下还是更适用于须要大量原子性复杂事务的应用程序。
b.传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。
对于此类应用,数据仓库可能是更合适的选择。
c.须要SQL的问题。
mongodb适用和不适用的应用场景的更多相关文章
- 谈谈mongodb,mysql的区别和具体应用场景
最近对数据库比较感兴趣,于是就去研究了下部分相关热门的数据库. MySQL 关系型数据库. 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数 ...
- MongoDB安装、CURD操作、使用场景分析总结(1)
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 ...
- 疯狂了!当游戏爱上MongoDB会怎么样???
导读 前端时间魔兽这个电影我相信大家都看过了哈,作为一个码农,有时候我也会去思考魔兽世界这个游戏背后他的一些设计和实现,比如他用什么数据库.当然真正用什么数据库这个我是不确定的,我们今天的主题是当游戏 ...
- MongoDB在实际项目中的使用
MongoDB简介 MongoDB是近些年来流行起来的NoSql的代表,和传统数据库最大的区别是支持文档型数据库. 当然,现在的一些数据库通过自定义复合类型,可变长数组等手段也可以模拟文档型数据库. ...
- 新年新技术:MongoDB 3.0
前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0. What’s new in MongoDB 3.0? 新的存储引擎WiredTiger MongoDB 3.0的存储引 ...
- Redis、Memcache和MongoDB的区别
>>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...
- Python迁移MySQL数据到MongoDB脚本
MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到Mong ...
- 关于MongoDb Replica Set的故障转移集群——实战篇
如果你还不了解Replica Set的相关理论,请猛戳传送门阅读笔者的上一篇博文. 因为Replica Set已经属于MongoDb的进阶应用,下文中关于MongoDb的基础知识笔者就不再赘述了,请参 ...
- mongodb查询关于大于小于的用法;
mongoDB查询操作符: http://www.runoob.com/mongodb/mongodb-operators.html 项目中需要的场景是这样的,每个人每天只能领取一张明信片,换句话说, ...
随机推荐
- pig 调试(explain&illerstrate)
grunt> cat t.txt kw1 2 kw3 1 kw2 4 kw1 5 kw2 2 cat test.pig A = LOAD '/user/input/t.txt' as (k:ch ...
- Tuple assignment
It is often useful to swap the values of two variables. With conventional assignments, you have to u ...
- Traversing a list
The most common way to traverse the elements of a list is with a for loop. The syntax is the same as ...
- java中移位操作
/** * * @author SunRain *2013-10-14 8:09:50 *在最后一个移位运算中,结果没有直接付给b,而是直接打印出来,所以结果是正确的, *其他的是会被先转换成int型 ...
- Mac or windows eclipse配置tomcat
1.选择window --> Preferences 首选项 2.选择server --> Runtime Environements --> Add 3.选择对应的tomcat版本 ...
- df 显示 100%的问题
问题: 使用 df 命令查看,某个分区使用率已经达到100%,但是用du 命令统计该分区,发现该分区空间剩余10G可用. 实例: 分析: ...
- letCode(771 Jewels and Stones )
问题描述: You're given strings J representing the types of stones that are jewels, and S representing th ...
- UVA-11134 Fabled Rooks 贪心问题(区间贪心)
题目链接:https://cn.vjudge.net/problem/UVA-11134 题意 在 n*n 的棋盘上,放上 n 个车(ju).使得这 n 个车互相不攻击,即任意两个车不在同一行.同一列 ...
- AWK行处理的用法实例
第一节 awk的工作流程及基础用法 awk操作符会先检索文件的行信息,然后在行信息里找需要的内容. Awk的默认分割付是空格,awk '/模式/{print $1,$2}' file ##模式的位置可 ...
- 数据库中Select For update语句的解析
----------- Oracle -----------------– Oracle 的for update行锁 键字: oracle 的for update行锁 SELECT-FOR UPDAT ...