文/蒋杰
Big
Data是近来的一个技术热点,但从名字就能判断它并不是什么新词。毕竟,大是一个相对概念。历史上,数据库、数据仓库、数据集市等信息管理领域的技术,
很大程度上也是为了解决大规模数据的问题。被誉为数据仓库之父的Bill Inmon早在20世纪90年代就经常将Big Data挂在嘴边了。
然
而,Big
Data作为一个专有名词成为热点,主要应归功于近年来互联网、云计算、移动和物联网的迅猛发展。无所不在的移动设备、RFID、无线传感器每分每秒都在
产生数据,数以亿计用户的互联网服务时时刻刻在产生巨量的交互……要处理的数据量实在是太大、增长太快了,而业务需求和竞争压力对数据处理的实时性、有效
性又提出了更高要求,传统的常规技术手段根本无法应付。
在这种情况下,技术人员纷纷研发和采用了一批新技术,主要包括分布式缓存、基于MPP的分布式数据库、分布式文件系统、各种NoSQL分布式存储方案等。
10年前,Eric Brewer提出著名的CAP定理,指出:一个分布式系统不可能满足一致性、可用性和分区容忍性这三个需求,最多只能同时满足两个。系统的关注点不同,采用的策略也不一样。只有真正理解了系统的需求,才有可能利用好CAP定理。
架构师一般有两个方向来利用CAP理论。
- Key-Value存储,如Amazon Dynamo等,可以根据CAP理论灵活选择不同倾向的数据库产品。
- 领域模型+分布式缓存+存储,可根据CAP理论结合自己的项目定制灵活的分布式方案,但难度较高。
对大型网站,可用性与分区容忍性优先级要高于数据一致性,一般会尽量朝着A、P的方向设计,然后通过其他手段保证对于一致性的商务需求。架构设计师不要将精力浪费在如何设计能满足三者的完美分布式系统,而应该懂得取舍。
不同的数据对一致性的要求是不同的。SNS网站可以容忍相对较长时间的不一致,而不影响交易和用户体验;而像支付宝这样的交易和账务数据则是非常敏感的,通常不能容忍超过秒级的不一致。
图1 memcached构成
Cache篇
缓存在Web开发中运用越来越广泛,mem-cached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。
memcached具有以下特点:
协议简单;基于libevent的事件处理;内置内存存储方式;memcached不互相通信的分布式。
memcached处理的原子是每一个(Key,Value)对(以下简称KV对),Key会通过一个hash算法转化成hash-Key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。
memcached
由两个核心组件组成:服务端(ms)和客户端(mc),在一个memcached的查询中,ms先通过计算Key的hash值来确定KV对所处在的ms位
置。当ms确定后,mc就会发送一个查询请求给对应的ms,让它来查找确切的数据。因为这之间没有交互以及多播协议,所以memcached交互带给网络
的影响是最小化的。
MemcacheDB是一个分布式、Key-Value形式的持久存储系统。它不是一个缓存组件,而是一个基于对象存取
的、可靠的、快速的持久存储引擎。协议与memcached一致(不完整),所以很多memcached客户端都可以跟它连接。MemcacheDB采用
Berkeley DB作为持久存储组件,因此很多Berkeley DB的特性它都支持。
图2 Greenplum数据引擎软件
类似这样的产品也很多,如淘宝Tair就是Key-Value结构存储,在淘宝得到了广泛使用。后来Tair也做了一个持久化版本,思路基本与新浪MemcacheDB一致。
分布式数据库篇
支付宝公司在国内最早使用Greenplum数据库,将数据仓库从原来的Oracle RAC平台迁移到Greenplum集群。Greenplum强大的计算能力用来支持支付宝日益发展的业务需求。
Greenplum数据引擎软件专为新一代数据仓库所需的大规模数据和复杂查询功能所设计,基于MPP(海量并行处理)和Shared-Nothing(完全无共享)架构,基于开源软件和x86商用硬件设计(性价比更高)。
分布式文件系统篇
谈
到分布式文件系统,不得不提的是Google的GFS。基于大量安装有Linux操作系统的普通PC构成的集群系统,整个集群系统由一台Master(通
常有几台备份)和若干台TrunkServer构成。GFS中文件备份成固定大小的Trunk分别存储在不同的TrunkServer上,每个Trunk
有多份(通常为3份)拷贝,也存储在不同的TrunkServer上。Master负责维护GFS中的
Metadata,即文件名及其Trunk信息。客户端先从Master上得到文件的Metadata,根据要读取的数据在文件中的位置与相应的
TrunkServer通信,获取文件数据。
图3 引自Facebook工程师的Hive与Hadoop关系图
在Google的论文发表后,就诞生了Hadoop。截至今日,Hadoop被很多中国最大互联网公司所追捧,百度的搜索日志分析,腾讯、淘宝和支付宝的数据仓库都可以看到Hadoop的身影。
Hadoop具备低廉的硬件成本、开源的软件体系、较强的灵活性、允许用户自己修改代码等特点,同时能支持海量数据存储和计算任务。
Hive是一个基于Hadoop的数据仓库平台,将转化为相应的MapReduce程序基于Hadoop执行。通过Hive,开发人员可以方便地进行ETL开发。
如图3所示,引用一张Facebook工程师做的Hive和Hadoop的关系图。
NoSQL篇
随
着数据量增长,越来越多的人关注NoSQL,特别是2010年下半年,Facebook选择HBase来做实时消息存储系统,替换原来开发的
Cassandra系统。这使得很多人开始关注HBase。Facebook选择HBase是基于短期小批量临时数据和长期增长的很少被访问到的数据这两
个需求来考虑的。
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC
Server上搭建大规模结构化存储集群。HBase是BigTable的开源实现,使用HDFS作为其文件存储系统。Google运行
MapReduce来处理BigTable中的海量数据,HBase同样利用MapReduce来处理HBase中的海量数据;BigTable利用
Chubby作为协同服务,HBase则利用Zookeeper作为对应。
图4 线上应用系统与数据平台的无缝融入
总结篇
近
来NoSQL数据库的使用越来越普及,几乎所有的大型互联网公司都在这个领域进行着实践和探索。在享受了这类数据库与生俱来的扩展性、容错性、高读写吞吐
外(尽管各主流NoSQL仍在不断完善中),越来越多的实际需求把人们带到了NoSQL并不擅长的其他领域,比如搜索、准实时统计分析、简单事务等。实践
中一般会在NoSQL的外围组合一些其他技术形成一个整体解决方案。
准实时的统计分析
- 传输时统计分析,Stream Processing技术:FlumeBase、S4。
FlumeBase:可参考 http://flumebase.org/documentation/0.1.0/UserGuide.html中的quick start和architecture两部分。
S4:Yahoo!开源数据来流计算实时框架,可参考http://labs.yahoo.com/files/KDCloud%202010%20S4.pdf。
- 查询时统计分析,结果集较小时,可以直接在返回前做统计分析处理。
比如买家消费记录查询的HBase实现,Schema设计,rowkey=uid,column=搜索词和查询值,version=交易id。
搜索相关
- 充分利用NoSQL(比如HBase)内部数据的有序性、Row Key、Column Family、Version Timestamp。
我们用“HBase+二次索引”来实现实时营销的解决方案。也可以参考Facebook Message的解决方案:http://blog.bluedavy.com/?p=258。
Google
MegaStore:原文链接为http://www.cidrdb.org/cidr2011/Papers/CIDR11_Paper32.pdf,
中文译文链接为http://cloud.csdn.net/a/20110216/291968.html。
也有人开始尝试基于HBase的MegaStore实现,链接为https://github.com/drevell/megalon。
简单事务
- 淘宝开发的千亿级海量数据库Oceanbase,通过update server角色执行将写操作限制在一台机器上,实现事务。参考链接为:http://www.nosqlnotes.net/archives/170。
- Google MegaStore通过为用户提供机制,根据应用特点划分entity group,将事务涉及的数据分布到一台机器上,实现事务。
分享到:
相关推荐
base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz
这个赛题,即“ZZ-2022010 机器人技术应用赛项”,是针对这一目标而设立的竞赛项目。 赛题通常涵盖以下几个核心知识点: 1. **机器人基础知识**:参赛者需要了解机器人的基本构成,包括机械结构、电子元件、传感器...
ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB
wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。
在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。
我们研究了四轻子最终状态ℓ+ℓ-ℓ+ℓ-的产生,这些状态主要由一对弱电Z玻色子ZZ产生。 使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的...
为了方便部署和扩展,`atguigu_springboot2_zz-master`可能包含了Dockerfile,通过Docker容器化技术实现应用的快速部署。 14. **Cloud Native** SpringBoot天生适合云环境,支持微服务架构,可以很好地融入...
根据提供的文件内容,下面是关于“ZZ-2021010 机器人技术应用赛项规程”的知识点整理: 1. 赛项背景和目的 该赛项为全国职业院校技能大赛的一部分,面向中职组学生,旨在考核学生在工业机器人领域的安装调试、操作...
cad标高归零,好用的
《现代模具制造技术——注塑模具技术赛项详解》 注塑模具技术是现代模具制造技术中的重要组成部分,尤其在中等职业教育阶段,这一领域的学习和技能大赛的参与,对于培养具备实际操作能力和创新思维的技能型人才具有...
最后,为了优化用户体验,开发者可能运用了异步处理技术,如AsyncTask或IntentService,避免UI线程阻塞,确保应用流畅运行。同时,通知服务也可能被用来提醒用户重要的医疗信息或待办事项。 总的来说,“zz-doctor...
首先,规程明确了赛项名称为“数控综合应用技术赛项”,编号为ZZ-2021012,适用于中职组参赛者,所属产业为制造业。赛项的目的在于推动中职院校数控加工技术等专业的建设与课程改革,加强专业与产业的结合,提升校企...
总的来说,ZZ Fibo Trader EA结合了技术分析的两大经典工具,为交易者提供了一套完整的自动化交易解决方案。然而,任何EA都不能保证100%的成功率,因此,交易者在使用时仍需结合自身的市场理解和风险管理策略,以...
,主图指标,顶底信号,突破,转折信号,都很明显
标题中的“ZZ_MODIFIED_GEEBINF.ENS.zip”是一个压缩包文件,主要包含一个名为“ZZ_MODIFIED_GEEBINF.ENS”的文件。这个文件是一种特殊格式,用于定义EndNote的引用样式。EndNote是一款强大的文献管理软件,广泛应用...
总的来说,《zz809.com留言本》不仅是一个实际的网络应用,也是学习Web开发,尤其是PHP或相关技术的一个实例教程。对于初学者而言,这是一个宝贵的资源,可以帮助他们在实践中提高技能;对于有经验的开发者,它则...
在MT5的世界里,“ZZ_YZ_MDAC_ELDER 1-1000 - MetaTrader 5脚本.zip”是一个特别的压缩包,内含了一个结合了Elder彩色柱形和MDAC(Market Data Access Component)指标的脚本。 Elder彩色柱形是伊利亚·布林格...
《DT_ZZ_optimized - MetaTrader 4脚本:深入解析与优化技术》 MetaTrader 4(MT4)是一款广泛应用于外汇、期货和股票交易的交易平台,它提供了丰富的技术分析工具和自动化交易功能。在MT4平台中,用户可以编写...
"变形版SD ZZ高达"是一款深受高达爱好者喜爱的纸模型,它源于日本著名的机器人动漫《机动战士Z高达》中的角色。SD(Super Deformed)是日本动漫中的一个术语,意为超级变形,通常指的是角色被夸张地简化和可爱化,...
- 赛项编号:ZZ-2021009 - 英文名称:Parts Measurement & Modeling & Drafting Competition - 赛项组别:中职组 - 赛项归属产业:加工制造类 2. 竞赛目的: - 贯彻国家关于加快发展现代职业教育的决定和国家职业...