近期考虑把订单历史数据从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适用和不适用的应用场景的更多相关文章

  1. 谈谈mongodb,mysql的区别和具体应用场景

    最近对数据库比较感兴趣,于是就去研究了下部分相关热门的数据库. MySQL 关系型数据库. 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数 ...

  2. MongoDB安装、CURD操作、使用场景分析总结(1)

    NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 ...

  3. 疯狂了!当游戏爱上MongoDB会怎么样???

    导读 前端时间魔兽这个电影我相信大家都看过了哈,作为一个码农,有时候我也会去思考魔兽世界这个游戏背后他的一些设计和实现,比如他用什么数据库.当然真正用什么数据库这个我是不确定的,我们今天的主题是当游戏 ...

  4. MongoDB在实际项目中的使用

    MongoDB简介 MongoDB是近些年来流行起来的NoSql的代表,和传统数据库最大的区别是支持文档型数据库. 当然,现在的一些数据库通过自定义复合类型,可变长数组等手段也可以模拟文档型数据库. ...

  5. 新年新技术:MongoDB 3.0

    前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0. What’s new in MongoDB 3.0? 新的存储引擎WiredTiger MongoDB 3.0的存储引 ...

  6. Redis、Memcache和MongoDB的区别

    >>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...

  7. Python迁移MySQL数据到MongoDB脚本

    MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到Mong ...

  8. 关于MongoDb Replica Set的故障转移集群——实战篇

    如果你还不了解Replica Set的相关理论,请猛戳传送门阅读笔者的上一篇博文. 因为Replica Set已经属于MongoDb的进阶应用,下文中关于MongoDb的基础知识笔者就不再赘述了,请参 ...

  9. mongodb查询关于大于小于的用法;

    mongoDB查询操作符: http://www.runoob.com/mongodb/mongodb-operators.html 项目中需要的场景是这样的,每个人每天只能领取一张明信片,换句话说, ...

随机推荐

  1. Constructor call must be the first statement in a constructor

    super()和this ()不能共存.否则编译时会报异常. Constructorcall must be the first statement in a constructor 换句话说就是su ...

  2. Linux socket 编程中存在的五个隐患

    前言:         Socket API 是网络应用程序开发中实际应用的标准 API.尽管该 API 简单,但是   开发新手可能会经历一些常见的问题.本文识别一些最常见的隐患并向您显示如何避免它 ...

  3. maven3+eclipse搭建webAPP企业级实战《一》

    想做企业级web系统:环境搭建不可缺少GO 1:新建 2:next : 3:选择webAPP next: 填完finish 初始项目结构: watermark/2/text/aHR0cDovL2Jsb ...

  4. Hadoop框架基础(五)

    ** Hadoop框架基础(五) 已经部署了Hadoop的完全分布式集群,我们知道NameNode节点的正常运行对于整个HDFS系统来说非常重要,如果NameNode宕掉了,那么整个HDFS就要整段垮 ...

  5. ASP.NET Identity 角色管理(Roles)

    当我们使用ASP.NET 4.5创建模板项目时,会发现模板只提供了ApplicationUserManager用于用户的登录注册.修改.设置等,而没有提供与用户角色相关的代码,对此就需要我们自己手动的 ...

  6. SQL Server在用户自定义函数(UDF)中使用临时表

    SQL Server在用户自定义函数中UDF使用临时表,这是不允许的. 有时是为了某些特殊的场景, 我们可以这样的实现: CREATE TABLE #temp (id INT) GO INSERT I ...

  7. SQL Server存储ntext截断问题

    SQL Server存储ntext截断问题   最近遇到一个问题:将大文本存储到数据库的时候,查询出来的文本却被截断了. 最后百度发现,作者提出 sql server management studi ...

  8. tail---显示文件中的尾部内容

    tail命令用于输入文件中的尾部内容.tail命令默认在屏幕上显示指定文件的末尾10行.如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题.如果没有指定文件或者文件名为“-”,则读取标准输 ...

  9. 安装Signavio Web设计器

    在Jbpm3版本号中,这个著名的开源项目并没有基于浏览器的图形化流程设计器,结果导致流程设计一直停留在CS阶段. 比方我之前做过的一个OA项目.项目中採用的就是Jbpm3.因为它不支持在浏览器中的图形 ...

  10. android数据储存之存储方式

    能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...