译文:对比MySQL,你究竟在什么时候更需要MongoDB

原文链接: When Should I Use MongoDB rather than MySQL (or other RDBMS): The Billing Example(编译/仲浩 审校/毛梦琪)

【编者按】随着数据的爆发性增长,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。需要注意的是,如果期望获得一个更大的规模,你必须要了解一些最佳实践来避免走入误区。

BillRun——使用MongoDB的账单系统|2014年2月MUG IL(来自oc666

现实用例学习:账单

在上一次的ILMUG上,Ofer Cohen提出了BillRun,一个下一代基于MongoDB的开源账单解决方案。这个账单系统已被增速最快的以色列移动电话运营商采用,每月处理超过5亿的CDR(通讯记录),Ofer分享了该系统如何利用MongoDB的优势:

PPT请访问Slide Share

  • 弱数据结构模式允许系统快速引入新的CDR类型,BillRun负责托管所有的数据。
  • BillRun系统已经管理了TB级的表格,I/O性能受限于新字段的增加及数据体积的增长。
  • 快速副本集允许更简单地设置多数据中心DRP和HA方案。
  • 分片允许I/O超预算时的线性横向扩展。
  • 在CDR插入达到2000个每秒时,MongoDB非常适用于高写入系统。同时,你完全可以使用findAndModify(会影响性能)以及2阶段提交(应用程序级别)来解决事务问题。
  • 面向开发者的查询允许优雅查询的编写。
  • 基于位置允许更好的分析用户使用情况,从而更好地制定移动电话基础设施的投入点。

总结

MongoDB是个非常不错的工具,但是只有在适合的场景下才能爆发出压倒性优势,BillRun就是一个不错的用例。

对比MySQL,你究竟在什么时候更需要MongoDB(转)的更多相关文章

  1. 对比MySQL,你究竟在什么时候更需要MongoDB(转载)

    你期望一个更高的写负载 万美元的交易. 不可靠环境保证高可用性 设置副本集(主-从服务器设置)不仅方便而且很快,此外,使用MongoDB还可以快速.安全及自动化的实现节点(或数据中心)故障转移. 未来 ...

  2. 对比MySQL,什么场景MongoDB更适用

    原文链接: http://page.factj.com/blog/p/4078 MongoDB已经流行了很长一段时间,相对于MySQL,究竟什么场景更需要用MongoDB?下面是一些总结. 更高的写入 ...

  3. 对比MySQL,一文看透HBase的能力及使用场景

    MySQL + HBase 是我们日常应用中常用的两个数据库,分别解决应用的在线事务问题和大数据场景的海量存储问题. 本文内容适合初次理解HBase的读者,包括技术.功能及场景,也欢迎老司机们补充和温 ...

  4. 云数据库 MySQL 8.0 重磅发布,更适合企业使用场景的RDS数据库

    点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 云数据库MySQL 8.0 升级发布会 2019年5月29日15时,阿里云云数据 ...

  5. 对比Linux系统和Windows系统哪个更好

    最近半年来,我一直在读一本叫做<Linux就该这么学>的Linux教材,确实让我进步的很快,也慢慢的让Linux系统走入了我的知识认知中,那么学习前我们来对比下Windows和Linux的 ...

  6. mysql 利用触发器(Trigger)让代码更简单

    一,什么触发器 1,个人理解 触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了.你放炮仗,点燃了,一会就炸了. 2,官方定义 触发器 ...

  7. 老叶观点:MySQL开发规范之我见(更新版)

    转自:http://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=207239419&idx=2&sn=bddbe0a657758 ...

  8. 华为MateBook笔记本对比微软Surface Pro 4,谁更好?

    继上网本.超极本等概念之后,变形本和二合一设备逐渐升温,今年终于整体爆发,继苹果的iPad Pro.微软的Surface Pro 4之后,华为推出了自己的第一部电脑产品同时也是二合一设备的华为Mate ...

  9. MySQL与PostgreSQL比较 哪个数据库更好

    最后结论说的好,通常由团队成员的熟悉度来决定: PostgreSQL 的名字很少听到,最近试装发现不是很友好:官方文档写的对新手来说有点坑: 有数据库工作经验的直接看最后一句就可以. 如果打算为项目选 ...

随机推荐

  1. APK反编译之一:基础知识

    作者:lpohvbe | http://blog.csdn.net/lpohvbe/article/details/7981386 这部分涉及的内容比较多,我会尽量从最基础开始说起,但需要读者一定的a ...

  2. WebApi接口安全认证——HTTP之摘要认证

    摘要访问认证是一种协议规定的Web服务器用来同网页浏览器进行认证信息协商的方法.它在密码发出前,先对其应用哈希函数,这相对于HTTP基本认证发送明文而言,更安全.从技术上讲,摘要认证是使用随机数来阻止 ...

  3. java强行删除文件(针对进程正在使用的文件的删除)

    boolean result = f.delete(); if(!result)    { System.gc(); f.delete; }

  4. JS——简单的正则表达式验证

    <!-- 用户注册:结构层:html;表现层:css;行为层:javascript; html利用ul,li来构造: 注意事项:1.每个Input都要有相应的id,这是在js中去调用的. 2.& ...

  5. eclipse JavaEE版"javax.servlet.http.HttpServlet" was not found on the Java Build Path问题的解决办法

    使用eclipse JavaEE 版,新建 Dynamic Web Project 项目.在项目里添加 JSP 文件,会在文件头部出现错误提示.提示语句为:The superclass "j ...

  6. 延迟队列DelayQueue

    应用场景:有一批广告需要不定时上下架,有可能上下架的时间间隔很长,就没必要用定时器轮询,用延迟队列进行任务执行. public class Test2 { public static void mai ...

  7. 去掉点击map时的显示area边框

    cus="true"的属性即可 如下: <img src="some.jpg" border="0" usemap="#ma ...

  8. 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件

    jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...

  9. 第一百四十六节,JavaScript,百度分享保持居中--下拉菜单

    JavaScript,百度分享保持居中--下拉菜单 百度分享保持居中 效果图 html代码 <div id="share"> <h2>分享到</h2& ...

  10. ashx一般处理程序

    说明:    虽然通过标准的方式可以创建处理程序,但是实现的步骤比较复杂,为了方便网站开发中对处理程序的应用,从Asp.net 2.0开始,asp.net提供了称为一般处理程序的处理程序,允许我们使用 ...