6分钟.10个小朋友同时吃10个面包,需要烤面包预热多长时间间

对比MySQL,你究竟在什么时候更需要MongoDB
我的图书馆
对比MySQL,你究竟在什么时候更需要MongoDB
【编者按】随着数据的爆发性增长,NoSQL得到的关注已越来越多,然而你的用例真正需要使用NoSQL数据库吗?又真的适合使用NoSQL吗?近日,Bright Aqua研发副总裁Moshe Kaplan以BillRun系统为例,分析了MongoDB的优势和使用场景:&以下为译文: NoSQL已经流行了很长一段时间,那么究竟是什么场景下你才更需要用到这些“新兴事物”,就比如MongoDB?下面是一些总结:你期望一个更高的写负载默认情况下,对比事务安全,MongoDB更关注高的插入速度。如果你需要加载大量低价值的业务数据,那么MongoDB将很适合你的用例。但是必须避免在要求高事务安全的情景下使用MongoDB,比如一个1000万美元的交易。不可靠环境保证高可用性设置副本集(主-从服务器设置)不仅方便而且很快,此外,使用MongoDB还可以快速、安全及自动化的实现节点(或数据中心)故障转移。未来会有一个很大的规模数据库扩展是非常有挑战性的,当单表格大小达到5-10GB时,MySQL表格性能会毫无疑问的降低。如果你需要分片并且分割你的数据库,MongoDB将很容易实现这一点。使用基于位置的数据查询MongoDB支持二维空间索引,因此可以快速及精确的从指定位置获取数据。非结构化数据的爆发增长给RDBMS增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,这个问题通常发生在表格大于1GB(更是下文提到BillRun系统中的痛点——单表格动辄几GB)的情况下。鉴于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速;因此,在应用程序发生改变时,你不需要专门的1个DBA去修改数据库模式。缺少专业的数据库管理员如果你没有专业的DBA,同时你也不需要结构化你的数据及做join查询,MongoDB将会是你的首选。MongoDB非常适合类的持久化,类可以被序列化成JSON并储存在MongoDB。需要注意的是,如果期望获得一个更大的规模,你必须要了解一些最佳实践来避免走入误区。(来自)现实用例学习:账单在上一次的ILMUG上,Ofer Cohen提出了BillRun,一个下一代基于MongoDB的开源账单解决方案。这个账单系统已被增速最快的以色列移动电话运营商采用,每月处理超过5亿的CDR(通讯记录),Ofer分享了该系统如何利用MongoDB的优势:
弱数据结构模式允许系统快速引入新的CDR类型,BillRun负责托管所有的数据。 BillRun系统已经管理了TB级的表格,I/O性能受限于新字段的增加及数据体积的增长。 快速副本集允许更简单地设置多数据中心DRP和HA方案。 分片允许I/O超预算时的线性横向扩展。 在CDR插入达到2000个每秒时,MongoDB非常适用于高写入系统。同时,你完全可以使用findAndModify(会影响性能)以及2阶段提交(应用程序级别)来解决事务问题。 面向开发者的查询允许优雅查询的编写。 基于位置允许更好的分析用户使用情况,从而更好地制定移动电话基础设施的投入点。
MongoDB是个非常不错的工具,但是只有在适合的场景下才能爆发出压倒性优势,BillRun就是一个不错的用例。 原文链接: (编译/仲浩 审校/毛梦琪)
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&5965人阅读
云计算(4)
& & & &最近考虑把订单历史数据从Oracle数据库迁移到Nosql数据库做历史数据查询和分析,一天千万级数据,打算使用mongodb数据库,使用nodejs做查询和统计API,对并发请求量要求低,不知道有没有前辈这样玩过,我们现在只用mongodo存储日志数据,做应用故障分析用。如果有前辈做个类似的历史库查询和数据分析,可以交流下,你们选择的Nosql库和上层开发语言。
1.mongodb介绍
& & MongoDB (名称来自&humongous&) 是一个可扩展的高性能,开源,模式自由,面向文档的数据库。它使用C++编写。MongoDB特点:
& a.面向集合的存储:适合存储对象及JSON形式的数据。
& b.动态查询:mongo支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组。
& c.完整的索引支持:包括文档内嵌对象及数组。mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
& d.查询监视:mongo包含一个监视工具用于分析数据库操作性能。
& e.复制及自动故障转移:mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移。
& f.高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
& g.自动分片以支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器。
2.mongo使用场合
& & mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:
& a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
& b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。
& c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。
&&d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。
& e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。
不适合的场景:
& a.高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
&&b.传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
& c.需要SQL的问题。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1491780次
积分:16096
积分:16096
排名:第618名
原创:242篇
转载:302篇
译文:10篇
评论:303条
文章:22篇
阅读:57421
阅读:11987
文章:14篇
阅读:41331
文章:58篇
阅读:164110
(2)(3)(3)(5)(4)(3)(4)(7)(15)(12)(16)(17)(5)(16)(13)(7)(10)(15)(8)(12)(18)(33)(8)(10)(3)(7)(3)(4)(5)(10)(9)(17)(27)(26)(22)(7)(1)(5)(2)(1)(1)(1)(3)(2)(3)(1)(1)(5)(2)(2)(1)(2)(2)(2)(3)(3)(14)(5)(16)(9)(15)(7)(16)(8)(1)(1)(1)(1)(21)(1)(4)(1)(1)(2)(3)(2)(1)(1)(4)(3)(1)对比MySQL,什么场景MongoDB更适用
对比MySQL,什么场景MongoDB更适用
发布时间: 2:21:15
编辑:www.fx114.net
本篇文章主要介绍了"对比MySQL,什么场景MongoDB更适用 ",主要涉及到对比MySQL,什么场景MongoDB更适用 方面的内容,对于对比MySQL,什么场景MongoDB更适用 感兴趣的同学可以参考一下。
原文链接:&
MongoDB已经流行了很长一段时间,相对于MySQL,究竟什么场景更需要用MongoDB?下面是一些总结。
更高的写入负载
默认情况下,MongoDB更侧重高数据写入性能,而非事务安全,MongoDB很适合业务系统中有大量&低价值&数据的场景。但是应当避免在高事务安全性的系统中使用MongoDB,除非能从架构设计上保证事务安全。
MongoDB的复副集(Master-Slave)配置非常简洁方便,此外,MongoDB可以快速响应的处理单节点故障,自动、安全的完成故障转移。这些特性使得MongoDB能在一个相对不稳定(如云主机)的环境中,保持高可用性。
数据量很大或者未来会变得很大
依赖数据库(MySQL)自身的特性,完成数据的扩展是较困难的事,在MySQL中,当一个单达表到5-10GB时会出现明显的性能降级,此时需要通过数据的水平和垂直拆分、库的拆分完成扩展,使用MySQL通常需要借助驱动层或代理层完成这类需求。而MongoDB内建了多种数据分片的特性,可以很好的适应大数据量的需求。
基于位置的数据查询
MongoDB支持二维空间索引,因此可以快速及精确的从指定位置获取数据。
表结构不明确,且数据在不断变大
在一些传统RDBMS中,增加一个字段会锁住整个数据库/表,或者在执行一个重负载的请求时会明显造成其它请求的性能降级。通常发生在数据表大于1G的时候(当大于1TB时更甚)。 因MongoDB是文档型数据库,为非结构货的文档增加一个新字段是很快速的操作,并且不会影响到已有数据。另外一个好处当业务数据发生变化时,是将不在需要由DBA修改表结构。
没有DBA支持
如果没有专职的DBA,并且准备不使用标准的关系型思想(结构化、连接等)来处理数据,那么MongoDB将会是你的首选。MongoDB对于对像数据的存储非常方便,类可以直接序列化成JSON存储到MongoDB中。 但是需要先了解一些最佳实践,避免当数据变大后,由于文档设计问题而造成的性能缺陷。
BillRun是由Ofer Cohen推出开源账单系统,采用MongoDB做为数据存储。这套账单系统被以色列一家增速最快的电信运营商采用,每月处理5亿条通信记录,Ofer在上说明了具体利到了MongoDB的哪些特性:
弱数据结构的特点,使得BillRun能很快的支持新的CDR(通讯记录)类型。这个特性使文档型数据库很适用于快速发展、业务需求不确定的系统中。
BillRun仅使用了一个Collection,已经管理了数TB的文档数据,并且没有遇到由结构变更、数据爆发式增长的带来的限制和问题。
replicaSet副本集特性使建立更多的数据中心DRP变得更轻松。
内建的Sharding分片特性避免系统在数据增长的过程中遇到性能瓶颈。
每秒钟2000条通信记录的插入,MongoDB在架构设计上很好的支持了高负载的数据写入。并且可以使用findAndModify(相对缓慢)完成基础的事务特性,并且通过应用层面的支持,实现双段式提交。
查询方式相比SQL,更加易读、易懂,开发相对轻松。
基于位置允许更好的分析用户使用情况,从而更好地制定移动电话基础设施的投入点。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:MongoDB 之类的 NoSQL 与关系型数据库相比,各有什么优缺点及适用场景? - 知乎1289被浏览137184分享邀请回答01 条评论分享收藏感谢收起与世界分享知识、经验和见解

我要回帖

更多关于 面包机烤面包多长时间 的文章

 

随机推荐