Hadoop与常见数据库的区别

想必在数据量情况少的情况下我们首先想到的时擅长于存储的常见数据库如MySQL或者oracle,甚至我们可以将企业的web Server,db Server都装载到一个服务中,但是随着时间或者公司的成长数据库会越来越满。

这时候我们想到了读写分离,使用Master/salve架构,使用Master负责写操作,使用几个Salve负责写操作。

但是随着压力增大,Master节点压力也变大,一般我们采用的是进行垂直分库,就是将没有逻辑关系的数据表,分布在不同的数据库中。当数据一直增大导致一张表的数据会特别大,这样也会使得一个数据表的查询变得特别慢,我们只能采取的水平分区的办法,将一个表的数据量限制在10W,来减轻库的压力。

毕竟不是最终的解决办法,不能解决数据一直激增的存储问题。Hadoop是通过集群的方式,即通过增加机器的方式解决了数据的存储问题。

目前oracle虽然可以搭建集群 但是当数据量达到一定限度之后查询处理速度会变得很慢 且对机器性能要求很高。

SQL数据库和Hadoop 区别

  1. 用向外扩展代替向上扩展
    Hadoop集群就是增加更多的机器。一个Hadoop集群的标配是十至数百台计算机。而不是专注于提高单台服务器的性能

  2. 用键/值对代替关系表
    SQL 针对结构化查询语句 是结构化数据,hadoop针对的是非结构化数据,文本形式
    关系数据库是 有一定格式,而存放文本、图片和xml文件 则应该用键值对的方式

  3. 用函数式编程(MapReduce)代替声明式查询(SQL)
    hadoop读取出的数据,可以建立复杂的模型或者改变图片格式

  4. 用离线批量处理代替在线处理
    Hadoop是专为离线处理和大规模数据分析而设计的,它并不适合那种对几个记录随机读写的在线事务处理模式。

同时在设计Hadoop时考虑的是对大量数据的存储和操作,虽然在小量的数据上Hadoop可能不如RDMS,但是大量数据存储情况下,如HDFS可以存储超大的文件,更新或修改大部分数据时MapReduce效率大于常见数据的B树查询。

为什么不通过使用数据库加上更多磁盘来做大规模批量分析?为什么我们还需要MapReduce?

1、磁盘驱动器寻址时间的速度远远慢于传输速率的提高速度,寻址就是将磁头移动到特定位置进行读写操作的工序,它的特点是磁盘操作有延迟,而传输速率对应磁盘的带宽。如果数据的访问受限于磁盘的
寻址,势必会导致它花更长的时间来读或写大部分数据。

2、在更新一小部分数据的情况下,传统的B树效果很好,但在更新大部分数据时,B树的效率就没有MapReduce的高,因为它需要使用排序/合并来重建数据库。

在很多情况下,MapReduce能够被视为一种RDBMS的补充,MapReduce很适合处理那些需要分析整个数据集的问题,以批处理的方式,尤其是Ad Hoc(自主或即时)分析。RDBMS适用于点查询和更新
(其中,数据集已经被索引以提供低延迟的检索和短时间的少量数据更新)。MapReduce适合数据被一次写入和多次读取的应用,而RDBMS更适合持续更新的数据集。

为什么数据库使用B树索引而非散列索引?

一般关系型数据库使用B+树来做索引,NoSQL数据库用哈希来做索引。MySQL就普遍使用B+Tree实现其索引结构。
因为索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。

因此为了提高效率,要尽量减少磁盘I/O。

为了达到这个目的,磁盘往往不是严格按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存。这样做的理论依据是计算机科学中著名的局部性原理:
当一个数据被用到时,其附近的数据也通常会马上被使用。程序运行期间所需要的数据通常比较集中。

根据B Tree的定义,可知检索一次最多需要访问h个节点。数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。为了达到这个目的,在实际实现中B-Tree在每次新建节点时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页里,加之计算机存储分配都是按页对齐的,就实现了一个node只需一次I/O。

B-Tree中一次检索最多需要h-1次I/O(根节点常驻内存),渐进复杂度为O(h)=O(logdN)。一般实际应用中,出度d是非常大的数字,通常超过100,因此h非常小(通常不超过3)。
综上所述, 用B-Tree作为索引结构效率是非常高的。
而红黑树这种结构,h明显要深的多。由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为O(h),效率明显比B-Tree差很多。
B+Tree更适合外存索引,原因和内节点出度d有关。从上面分析可以看到,d越大索引的性能越好,而出度的上限取决于节点内key和data的大小,由于B+Tree内节点去掉了data域,因此可以拥有更大的出度,拥有更好的性能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容