剖析大数据平台的数据存储

数据作为一种资产,若少了存储,就成了无根之木,失去了后续挖掘的价值。在小数据时代,受存储容量与CPU处理能力限制,在现在看来相当小的数据,在当时其实也可以认为是“大数据”了。正如在蒸汽机时代,创造了时速126英里(203公里)纪录的Mallard蒸汽火车就可以被视为极速火车了。那么,为何在当时没人提出Big Data概念,得到业界关注并催生出一波数据浪潮呢?

Big Data概念是1998年由SGI首席科学家John Masey在USENIX大会上提出的。他当时发表了一篇名为Big Data and the Next Wave of Infrastress的论文,使用了Big Data来描述数据爆炸的现象。但大数据真正得到业界关注,则是其后多年的事情了。其中大数据最重要的发酵素则是2003-2006年Google发布的GFS、MapReduce和BigTable三篇论文。

在我看来,小数据时代的数据量虽然在逐年增加,但是当时突破存储容量的解决办法依旧是垂直伸缩,即通过寻求更大容量的存储介质来解决这个问题。由于互联网业务不够流行,Web 2.0还未开始(更谈不上移动应用与物联网),当时IT系统要处理的数据结构相当单一,都是相对规整的关系型数据(结构数据)。因而在小数据时代,存储世界是关系数据库一统天下的时代。

当存储技术的发展变得步履蹒跚,赶不上数据发展的速度时,分布式存储成为了必然选择,非结构型数据也对存储格式提出了新的要求。层出不穷的数据源也使得数据量产生了井喷似的迅猛增长。

此时,分布式存储与NoSQL的诞生回应了这样的需求,解决了大数据存储的根本难题。

数据存储工具如百花盛开,一时仿佛来到了数据存储的盛世。然而,乱花渐欲迷人眼,我们反而不知道该怎么选择合适的数据存储技术了。正如设计需要结合业务场景,对数据存储的技术决策同样需要结合具体的场景。决定的因素包括:

数据源的类型与数据的采集方式

采集后数据的格式与规模

分析数据的应用场景

如果数据的采集是针对业务历史数据的同步与备份,那么HDFS可能就是最好的存储选择;如果数据的格式为文档型结构,那么诸如MongoDB之类的文档型数据库就可能是我们首要考虑的目标;如果存储的数据是要应对全文本搜索的应用场景,那么ElasticSearch可能才是我们的心头所爱。

倘若存在某种业务场景,使得这几种决定因素互相冲突,例如既需要分布式的文档数据库,又需要支持高性能的统计分析,该怎么应对呢?这就引出了大数据平台数据存储的一个重要特征:

相同的业务数据会以多种不同的表现形式,存储在不同类型的数据库中,形成polyglot-db这种产生数据冗余的生态环境。

没有哪一款存储工具擅长应对所有的数据处理场景。

在对数据存储进行技术决策时,我们需要充分了解各种存储工具的优缺点,然后结合业务场景对其进行选择。就像足球教练那样,要对各个球员的技术特点了如指掌,才能将他们安排在合适的位置上。

在大数据存储领域,HDFS或许就是我们最放心的守门员,全量的历史数据都可以交给他。你几乎不用害怕他会“丢球”,而他守门的技巧是可以横向扩展的,再多再猛烈的射门他都能挡得住。

PostgreSQL是保守型的后场选手,他技术全面,在保持数据一致性方面他能做到近乎完美的万无一失。性格稳重,以符合大多数教练对后防需求的思维方式来踢球。

HBase属于后腰型选手,既能在防守上给PostgreSQL以协助,又不时通过列式存储的技术特点传出让人拍案叫绝的好球。

Redis是中场提速器,他不仅能够加快球队的传球效率为球队提速,而且还以极高的传球命中率著称,偶尔传出的致命一击更能帮助球队攻城拔寨。Redis还是最好的团队成员,可以与各种类型的球员打出漂亮配合,他还不抢风头,只在自己最擅长的领域默默地展现自己的才华。

ElasticSearch或许可以称得上是“中场大师”,因为他能为各种类型的前锋提供传球支持,并能保证球权处理的高效性。他的各种盘球技法(支持各式各样的查询)让人眼花缭乱。兴之所至时,他的盘带与传球真如水银泻地一般,No look pass的传球总是出人意料的精彩。

诸如Parquet、Neo4j、Pilosa之类的数据库都可以称得上是剑走偏锋的前锋球员.他们不善于应对阵地战靠着稳扎稳打通过硬实力硬吃对手,而是像刺客一般伺机而动,对手稍有不慎,迎接他的就是一剑封喉的绝杀。

对于polyglot-db这种解决方案,我们还需要细心处理好数据一致性问题,即当数据源的数据发生变化时,我们如何将这些数据变化反应到各种存储工具中。如果数据是以immutable形式存储,满足数据的一致就变得容易多了。因此在polyglot-db的场景下,我们倾向于数据保持不变。如果业务场景确实不支持,同步就会变得更复杂。在前面讲解数据采集时,我已经给出了不够完美的解决方案,庶几能解决数据同步问题。

数据存储就是数据平台工程师手中的工具百宝箱,你需要熟悉各种工具的利弊,他们擅长处理的场景,然后再将好钢用在刀刃上,以求最大性的发挥工具的潜力。记住,在大数据平台中,不是数据驱动而是业务场景驱动你对数据存储的技术决策。

原文发布于微信公众号 - 逸言(YiYan_OneWord)

原文发表时间:2017-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

几近满分的项目管理课程

大公司的一个好处,是各个领域都有牛人,可以为你提供经验分享交流。腾讯庞大的培训体系更是保证了:如果你想学点什么东西,你总可以学到。项目管理是很多人的痛点。我...

3465
来自专栏腾讯大讲堂的专栏

“喂,你要不要让自己试试看?”

973
来自专栏Java架构

做为Java高级工程师的你们,你们是如何理解:点、线、面、体的?

2136
来自专栏腾讯技术工程官方号的专栏

2017年数据库技术盘点

作者介绍: 那海蓝蓝,腾讯金融云数据库技术专家,熟悉PostgreSQL、MySQL、Informix等数据库内核技术,著有《数据库查询优化器的艺术》、《数据库...

2.9K47
来自专栏腾讯大讲堂的专栏

架构师的四种兵器

小编:每一个小网工都有着想成为架构师的梦想,而如此高大上的岗位又不知道如何努力,小编苦思不得其解的情况下,终于找到了鹅厂的架构师好朋友Kinghe,经过其点拨,...

1857
来自专栏阿杜的世界

大教堂和集市--两种不同的软件开发模式【阅读笔记】

该博文来自《The Cathedral and the Bazaar》一文的阅读总结,再加入一些自己的理解。今天又发现网上的一个资料,可以说是对本文的一个纲领吧...

602
来自专栏后端技术探索

程序员如何优雅的挣零花钱?

虽然程序员有女朋友的不多(误),但是开销往往都不小。 VPS、域名、Mac上那一堆的收费软件、还有Apple每年更新的那些设备,经常都是肾不够用的节奏。

762
来自专栏企鹅号快讯

如何向十岁以下的朋友解释编程?这个说法碉堡了!

苹果公司于旧金山圣何塞召开第28届WWDC全球开发者大会。在大会上,被库克点名邀请的年仅10岁的小男孩获得了空前关注,再看他短小精悍的童年经历,简直羡煞旁人。 ...

1736
来自专栏大数据钻研

Java程序员常用的10大构建工具

令我惊讶的是,有些人觉得编程并不令人兴奋——只将它当作是一份枯燥的工作。不过,虽然可能的确有很多无聊的编程工作,但这并不意味着你不得不接受这些工作中的一个。程序...

34715
来自专栏养码场

易宝支付李艳鹏:10年外企后转战互联网,30岁跳出舒适区,为的只是不留遗憾

因《史上最全的技术知识图谱秘籍》这篇文章,场主有幸认识了易宝支付产品中心的首席架构师李艳鹏,和鹏哥相聊胜欢。聊天中,发现鹏哥已有十三年的技术经历,三十而立之初却...

932

扫描关注云+社区