转自: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. busybox hexdump 命令使用

    http://blog.sina.com.cn/s/blog_a6559d920101gvlk.html hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别 ...

  2. MySQL InnoDB简介

    从MySQL 5.5版本开始InnoDB已经是默认的表存储引擎 InnoDB 1:完全支持ACID 2:支持行级锁 3:支持MVCC 4:支持外键 MySQL 5.1版本 MySQL 5.1版本之前, ...

  3. taro 填坑之路(一)taro 项目回顾

    (1)像素写法 PX -- 大写,否则会自动成rem (2)拿取列表第一条数据 let { activity:[firstItem] } = this.state; (3)使用props 需要设置默认 ...

  4. 2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    NPOI教程:http://www.cnblogs.com/atao/archive/2009/11/15/1603528.html 之所有说NPOI强大,是因为常用的Excel操作她都可以通过编程的 ...

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

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

  6. Android画图之抗锯齿

    在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿.其实Android自带了解决方式.    方法一:给Paint加上抗锯齿标志.然后将Paint对象作为参数传给canvas的绘制方法. ...

  7. HDU 3667 Transportation(网络流之费用流)

    题目地址:HDU 3667 这题的建图真是巧妙...为了保证流量正好达到k.须要让每一次增广到的流量都是1,这就须要把每一条边的流量都是1才行.可是每条边的流量并非1,该怎么办呢.这个时候能够拆边,反 ...

  8. firefox浏览器批处理插件imacros

    http://www.360doc.com/content/14/1012/19/4360822_416372016.shtml javascript部分 var code = "CODE: ...

  9. 剑指offer代码 vs2013执行

    方法: 代码文件夹名称为:CodingInterviewChinese2-master 1. 用vs2013加载解决方案 .sln文件 2. 一个解决方案下面有多个项目,通过右键解决方案->属性 ...

  10. 使用URLConnection下载文件或图片并保存到本地

    有时候需要从网络上面下载图片到本地进行保存,代码如下: package com.jointsky.jointframe.test; import java.io.FileOutputStream; i ...