转自:http://blog.jobbole.com/86269/

 

尽管层次数据库如今在大型机上依然被广泛使用,但关系数据库(RDBMS)(SQL)已经占领了数据库市场,并且表现的相当优异。我们存的钱不会跑到别人的账户,我们预定机票可以确保我们在飞机上有一个专属的座位,而且我们也不会因为没有做过的事而受到责备等等。关系数据库的数据完整性是因为它遵循了ACID(原子性,一致性,独立性以及持久性)原则。关系数据库技术可追溯到上世纪70年代。

那么,现在有什么变化呢?Web 技术开启了这次变革。如今,许多人在亚马逊上买东西。但关系数据库并不是设计用来处理亚马逊上每秒大规模的交易的。其主要的制约因素是关系数据库的机制问题。

NoSql 数据库提供了另一种机制,但这种机制却削弱了ACID原则。一些 NoSql 供应商在解决这些问题上取得了长足的进步;他们的解决方案称作最终一致性。至于 NewSql,为什么不利用现代的编程语言和技术来新建一个没有缺点的关系数据库呢?这就是很多 NewSql 供应商起家的方法。其他的 NewSql 公司创建了增强的 MySql 解决方案。

Hadoop 是一个完全不同的物种。它实际上是一个文件系统而非数据库。Hadoop 的根是基于互联网搜索引擎的。虽然 Hadoop 和 伙伴(Hbase,Mapreduce,Hive,Pig,Zookeeper)已经使它变成一个很强大的数据库,但 Hadoop 依旧是一个可容错、可扩展、廉价的分布式文件系统。Hadoop 当下的特点在于它的批量处理适用于数据分析。

现在,我们开始举例说明:我设想,视频游戏公司在营业了十年后,最近上线了我们最火热的游戏,并把货发给世界各地的零售商。我们的客户信息目前存储在一个 Sql Server 数据库中,我们对此一直很乐观。然而,由于玩家开始在线玩游戏,我们的数据库不能够跟上数据更新速度,导致玩家体验有延迟。随着用户群的快速增长,我们花了大笔的钱来买更多的硬件和软件也无济于事。我们最不希望的就是损失客户。我们现在该何去何从?

我们决定分割我们的线上用户群,同时在 NoSql 和 NewSql 上运行我们的线上游戏。我们的目标就是要找到最佳的解决方案。IT 部门于是选择了 NoSql CouchBase (类似于 MongoDB 的面向文档型)和 NewSql VoltDB。

Couchbase 是开源的,它有一个集成的缓存机制,并且可以自动地在多个节点之间传播数据。VoltDB 是一个遵循 ACID 原则的关系数据库,能够容错,横向扩展,并拥有无共享 & 内存中的架构。最后,这两个系统都能够运作。我不会详述各个方案的复杂细节,因为这只是一个例子,而且实际上比较这些技术需要测试,标杆管理以及深入分析。

既然线上操作可以顺利进行,我们想要分析我们的数据来找到我们应该开拓的市场。那么最适合推销我们的产品是哪个国家呢?为此,我们需要把 Sql Server 数据仓库的用户数据和线上游戏数据库的数据合并起来,然后运行分析报告。这就轮到 Hadoop 登场了。我们构建一个 Hadoop 系统并将这两个数据源的数据合并起来。最后,我们利用开源的 R 语言与其 MapReduce 模块连接起来,以生成分析报告。

举例说明:Hadoop vs. NoSql vs. Sql vs. NewSql的更多相关文章

  1. 5G时代,为什么NoSQL和SQL存在短板?

    01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...

  2. MongoDB 1: NoSQL 和 SQL的区别

    导读:本篇博客,主要是结合自己在项目中的使用,简单的阐述一下NoSQL和SQL的区别.那么,根据自己的应用,NoSQL这边,选择的是MongoDB(Redis虽然也是,但属于内存存储,这里不予说明). ...

  3. 为什么使用Nosql:Nosql和SQL的区别

    1.概念: SQL(Structured Query Language)数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not O ...

  4. Accessing data in Hadoop using dplyr and SQL

    If your primary objective is to query your data in Hadoop to browse, manipulate, and extract it into ...

  5. NoSQL和SQL怎么选用?

    NoSQL 有分很多种,其中key-value NoSQL (Redis, MemcacheD, etc) 的选用相对比较清楚些,大多是当后端Data storage的cache层来用.这篇主要想请教 ...

  6. NoSQL还是SQL?这一篇讲清楚

    https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653550127&idx=1&sn=93f79e007d757a ...

  7. [No0000195]NoSQL还是SQL?这一篇讲清楚

    随着大数据时代的到来,越来越多的网站.应用系统需要支撑海量数据存储,高并发.高可用.高可扩展性等特性要求. 传统的关系型数据库在应付这些已经显得力不从心,并暴露了许多难以克服的问题. 由此,各种各样的 ...

  8. about云资源汇总指引V1.4:包括hadoop,openstack,nosql,虚拟化

    hadoop资料 云端云计算2G基础课程 (Hadoop简介.安装与范例) 炼数成金3G视频分享下载 虚拟机三种网络模式该如何上网指导此为视频 Hadoop传智播客七天hadoop(3800元)视频, ...

  9. mySQL、mariaDB、noSQL、SQL server、redis之间是什么关系?

    1.首先,从数据库类型上分类,mySQL.mariaDB.SQL server这3种属于关系型数据库. noSQL属于非关系型数据库,被视为数据库革命者. redis成为内存缓存数据库,而前面的两种类 ...

随机推荐

  1. AndroidStudio简单的apk混淆

    打包APK又一个看起来难 却不难并且不可或缺的标配,为什么这样说呢?由于没有混淆,你的代码被别人反编译你的代码将像一个裸奔的人一样展示在别人的面前.你的APP的安全将得不到保证.Android搞的混淆 ...

  2. 全栈project师体能备战--知识面(10--20)

    WCF Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,能够翻译为Windows 通讯开发平台. 对于 WCF 的client ...

  3. UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1)

    一.管道 管道的名称很形象,它就像是一个水管,我们从一端到水然后水从令一端流出.不同的是这里说的管道的两边都是进程.从一端往管道里写数据,其它进程可以从管道的另一端的把数据读出,从而实现了进程间通信的 ...

  4. oracle 存储过程 变量的声明和赋值的3种方式

      oracle 存储过程 变量的声明和赋值的3种方式 CreationTime--2018年8月31日16点00分 Author:Marydon 1.声明变量的3种方式 按照数据类型的声明方式进行区 ...

  5. 站点CSS样式不起作用,或仅仅有一部分起作用?随手记

    事件:网页中使用了相同的样式,下半部分正常显示,上半部分样式所有丢失不能显示. 解决:改动了相应的CSS样式文件的编码 这个是最没有想到的解决的方法. 怎样调试:通过右键页面查看编码为UTF-8 或 ...

  6. 【Espruino】NO.17 使用平板电脑调试Espruino(OTG方式)

    http://blog.csdn.net/qwert1213131/article/details/38068379 本文属于个人理解,能力有限,纰漏在所难免,还望指正! [小鱼有点电] [Espru ...

  7. PHP-Windows下搭建Nginx+PHP环境

    项目中光用Nginx了, 由于有运维人员, 很少搭建Nginx服务器, 开发也就用用Apache, 搭过几次Nginx也忘的快, 每次都去翻别人博客, 今天重搭特此记录, 装前最好了解下FastCGI ...

  8. windows设置默认打印机

    实现这个功能需要使用windows api [DllImport("winspool.drv")] public static extern bool SetDefaultPrin ...

  9. Python Unicode 转换 字符串

    estimate_price = "\u00a340\u00a0\u00a0-\u00a060" sold_price = "Sold for \u00a345" ...

  10. java web中get请求中文乱码在filter中解决

    之前已经讲过get或者post方法的中文乱码问题,之前都是在每个方法中编写设置编码.如果程序变大,就会很繁琐,使用filter可以避免这种繁琐. 1)写一个encodingFilter进行编码设置 p ...