近期考虑把订单历史数据从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的问题。

最新文章

  1. javascrit原生实现jquery的append()函数
  2. Kafka server.properties配置说明(转)
  3. jq滚动监听-导航滚动
  4. android 直接启动其他应用的Service
  5. C语言运算符表
  6. 办公室网络二三事 - chunyu
  7. CODEVS 3943 数学奇才琪露诺
  8. BZOJ2348: [Baltic 2011]Plagiarism
  9. MVC框架是什么
  10. MySQL权限说明
  11. [2017-08-16]ABP系列——QuickStartB:正确理解Abp解决方案的代码组织方式、分层和命名空间
  12. [SQL]SQL 执行顺序
  13. python 机械学习之sklearn的数据正规化
  14. jQuery中mouseleave和mouseout的区别详解
  15. Java面向对象----个人参考资料
  16. 反向代理负载均衡之APACHE
  17. iOS 10 SceneKit 新特性 – SceneKit 制作 3D 场景框架
  18. golang版并发爬虫
  19. 剑指offer第二章
  20. [android] 安卓自定义样式和主题

热门文章

  1. [javase学习笔记]-6.7 封装
  2. poj_3371
  3. 51nod-1296: 有限制的排列
  4. hpuoj--校赛--面试难题(区间相交问题)
  5. 用jquery给select加选中事件
  6. 15.map映射
  7. BackTrack5里使用OpenVAS
  8. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)
  9. CentOS6.8下完全干净卸载mysql
  10. JQ加载进度条动画