发布网友 发布时间:2022-04-26 23:56
共2个回答
懂视网 时间:2022-04-14 11:01
这是之前发布于《程序员》杂志2011年08期的一篇文章,这里再在Blog上发布一下。 在当前这个信息量飞速增长的时代,一个企业,尤其是电子商务企业的成功已经越来越多地与其海量数据处理能力相关联。高效、迅速地从海量数据中挖掘出潜在价值并转化为决策依据的
这是之前发布于《程序员》杂志2011年08期的一篇文章,这里再在Blog上发布一下。
在当前这个信息量飞速增长的时代,一个企业,尤其是电子商务企业的成功已经越来越多地与其海量数据处理能力相关联。高效、迅速地从海量数据中挖掘出潜在价值并转化为决策依据的能力,将成为企业的核心竞争力。
数据的重要性毋庸置疑,但随着数据的产生速度越来越快,数据量越来越大,数据处理技术的挑战自然也越来越大。如何从海量数据中挖掘出价值所在,分析出深层含义,进而转化为可操作的信息,已经成为各互联网企业尤其是电子商务公司不得不研究的课题。本文将介绍国内箱包行业电子商务领军者麦包包如何利用海量数据的分析处理(个性化推荐引擎)来协助用户更好地完成购买体验。
图1 数据层基础架构数据层基础架构
如图1所示,麦包包的数据层基础架构与其他很多互联网公司相比,可能会有一点儿差异,那就是有一个用于实时分析处理的在线分析数据层,用来处理一些对实时性要求较高的分析任务。
总的来说,麦包包的数据层分为下面三个部分。
用于存放网站对外访问数据,如交易相关、产品相关、用户相关等数据。
用于分析各种报表、数据挖掘,如购买行为、销售分析、浏览跟踪等。
用于处理一些对实时性要求较高的分析,如在线交易分析、用户浏览推荐等。在线交易数据层和离线分析数据层对于大家来说都已经比较熟悉了,二者的数据特点和访问特点都很清晰明确,架构方向也相对明确。只有在线分析系统比较特别,既有高并发的用户访问,同时又兼具了分析型复杂查询及海量的基础数据,构建起来相对要复杂一些。所以下面简单介绍一下麦包包如何构建在线分析系统的应用之一——“个性化推荐引擎”。
个性化推荐引擎
我们首先分析一下这个推荐引擎的需求。
根据用户的喜好倾向以及访问历史记录,不同用户浏览同一个产品时,将给出不同的关联推荐结果。
不同用户访问同一个页面,我们将会根据用户的以往购买历史及浏览行为而展示个性化的内容。
随着用户的多次搜索及结果点击行为,我们会对搜索结果进行过滤重组,尽可能展示更符合用户需求的搜索结果。也就是说,在完全相同的基础数据中,不同用户在同一时间搜索同一个关键词,可能会给出不一样的结果;或者同一个用户重复多次搜索同一个关键词,也可能会有不一样的结果。
我们再来看一看推荐引擎的数据特点。
超过500万会员,5位数的SKU,7位数的访问量。将这些数据与会员及SKU的各类属性相互关联,数据量之庞大可想而知。
从性能优化角度来说,数据量大并不可怕,只要访问方式简单,很容易通过索引等手段进行优化。可偏偏不幸的是,由于将用户和产品进行度关联,既需要根据用户去分析,又需要根据产品去关联,再辅以运行时的各类属性;既可能各个维度同时存在,也可能只有任何一个维度;度就度吧,可还有很多访问是分析型,比较难以优化扩展。
当然,数据量大也并不一定就可怕,如果并发访问较小,响应时间要求不是太高,那也容易解决,可以用Hadoop之类的分布式系统来分析计算。可恰恰不巧的就是这个系统面对的是网站上的访问客户,对并发及响应时间的要求和OLTP系统一样。
需求已经确定,数据特点也已了解,下一步就是根据数据的特点,设计一个切实可行的架构来实现这些应用需求了。
在如此海量数据中进行高并发的复杂分析查询,还要能够快速响应,看上去就像是一个不可能的任务。但仔细分析之后,我们不难发现,推荐引擎结果主要由以下几个因素决定。
以上四个因素实际上对应了四种数据,在分析每一种数据的特点之后,可以发现前面三个因素所对应的数据都是相对静态的,只有用户当前行为才是一个在不断变化的动态数据。也就是说,在海量数据中,只有少部分数据是动态的,其他大部分都是静态。
当然,用户属性中的各种喜好,也需要我们通过用户以往的历史购买以及浏览行为进行各种分析挖掘才能获得,但这都是由历史积淀数据分析得来,而不是由当前的运行时动态数据决定。价格承受范围以及地域特性也同样如此。
数据的这一特性对我们的架构设计起到了一个非常关键的作用,因为我们可以使用完全不同的方式来将静态数据和动态数据分开处理,再合并分析。静态数据的变化较小,实时性要求较低,我们将进行离线分析;动态数据相对较少,但实时性要求较高,我们在线实时处理。动、静数据在线合并分析。这样一来,我们就可以很轻松地绕过海量数据的高并发在线分析的问题,将这一动作交由离线分析系统定时作业批量完成,既不会有高并发问题,又不存在响应时间的压力。至于在线实时数据的处理,由于数据量的大幅缩减,以及访问方式的简化,比在线交易的OLTP系统复杂度高不了太多,自然也就容易优化了。
图2 推荐引擎基本架构架构设计
简单来说,推荐引擎系统本身的基础架构就如图2所展现的一样,一部分数据进行离线计算,另一部分数据在线计算合并,最终通过推荐引擎API将数据处理后返回给前端应用。
看上去简单,但有几个问题并没有展现出来,那就是离线计算和在线计算这两部分具体是如何构建的?数据如何进入离线计算系统?又如何将离线运算结果回送至在线计算系统中?最终数据又如何交由前端应用使用?让我们再来看看图3。
离线分析层完全可以通过成熟的产品来构建,如Greenplum、Hadoop等,目前我们已经使用了Greeplum,后续很快还会引入Hadoop,通过HBase + Hive来对处理我们的用户与各SKU的关系数据,帮助进一步完善我们的协同过滤算法,进而优化推荐引擎。在线合并分析层我们选择MySQL数据库。可能有些人会问,为什么不使用当前如此流行的NoSQL产品呢?主要原因有以下两点。
NoSQL产品虽然流行,但每种产品都还只适于某些特定的应用场景,很多听上去完美的理论目前暂时还仅仅只是听上去完美,实际用起来仍然存在各种各样的问题。所以我们选择了更适合于我们的MySQL作为在线合并分析层的数据库。
图3 推荐引擎整体架构
整个架构的数据流,如图3所示。
热心网友 时间:2022-04-14 08:09
从数据类型看,腾讯数据最为全面,这与其互联网业务全面相关,其最为突出的是社交数据和游戏数据,其中:社交数据最为核心的是关系链数据、用户间的互动数据、用户产生的文字、图片和视频内容;游戏数据主要包括大型网游数据、网页游戏数据和手机游戏数据,游戏数据中最为核心的是游戏的活跃行为数据和付费行为数据,腾讯的数据最大的特点是基于社交的各种用户行为和娱乐数据。阿里最为突出的是电商数据,尤其是用户在淘宝和天猫上的商品浏览、搜索、点击、收藏和购买等数据,其数据最大特点是从浏览到支付形成的用户漏斗式转化数据。百度的数据以用户搜索的关键词、爬虫抓取的网页、图片和视频数据为主,百度的数据特点是通过搜索关键词更直接反映用户兴趣和需求,百度的数据以非结构化数据更多。
百度、阿里巴巴和腾讯的数据应用场景
百度、阿里巴巴和腾讯的数据应用场景都有共同的体系,该体系一共分为七层,代表了企业不同层面的数据价值应用场景,形成了企业运营的数据价值金字塔:
(1)数据基础平台层。金字塔的最底层也是整个金字塔的基础层,如果基础层搭建不好,上面的应用层也很难在企业运营中发挥效果,这一层的技术目标是实现数据的有效存储、计算和质量管理;业务目标是把企业的所有用户(客户)数据用唯一的ID串起来,包括用户(客户)的画像(如性别、年龄等)、行为以及兴趣爱好等,以达到全面的了解用户(客户)的目的;
(2)业务运营监控层。这一层首要的是搭建业务运营的关键数据体系,在此基础上通过智能化模型开发出来的数据产品,监控关键数据的异动,通过各种分析模型等可以快速定位数据异动的原因,辅助运营决策;
(3)用户/客户体验优化层。这一层主要是通过数据来监控和优化用户/客户的体验问题。这里面既运用了结构化的数据来监控,也运用非结构化的数据(如文本)来监控体验的问题。前者更多的是应用各种用户(客户)体验监测的模型或者工具来实现,后者更多的是通过监测微博、论坛和企业内部的客户反馈系统的文本来发现负面的口碑,以及时的优化产品或服务;
(4)精细化运营和营销层。这一层主要通过数据驱动业务精细化运营和营销。主要可以分为四方面:第一,构建基于用户的数据提取和运营工具,以方便运营和营销人员通过人群定向把客户提取出来,从而对客户进行营销或运营活动;第二方面,通过数据挖掘的手段提升客户对活动的响应;第三,通过数据挖掘的手段进行客户生命周期管理;第四,主要是用个性化推荐算法基于用户不同的兴趣和需求推荐不同的商品或者产品,以实现推广资源效率和效果最大化,如淘宝商品的个性化推荐;
(5)数据对外服务和市场传播层面。数据对外服务一般为服务该互联网企业的客户或用户,如百度通过提供百度舆情、百度代言人、百度指数等服务其广告主客户;淘宝通过数据魔方、淘宝情报和在云端等产品服务其客户;腾讯通过腾讯分析和腾讯云分析等服务其开放商客户。在市场传播层面,主要通过有趣的数据信息图谱和数据可视化产品来实现(如淘宝指数、百度指数、百度春节迁徙地图)。
(6)经营分析层面。主要通过分析师对大数据进行统计,形成经验分析周报、月报和季度报告等,对用户经营情况和收入完成等情况进行分析,发现问题,优化经营策略。
(7)战略分析层面。这方面既要结合内部的大数据形成决策层的数据视图,也要结合外部数据尤其是各种竞争情报监控数据、国外趋势研究数据来辅助决策层进行战略分析。
虽然百度、阿里巴巴和腾讯在企业运营的数据价值的应用体系上有共同的特点,但由于企业的商业模式以及数据资产不同,他们在整体的大数据发展策略也有显著的不同。
百度大数据策略
百度大数据最重要的是来源是通过爬虫搜集的100多个国家的近万亿网页数据,数据量是在EB级的规模。百度的数据非常多样化,其收集的数据既有为非结构化的或者半结构化的数据,包括网页数据、视频和图片等数据,也有结构化的数据,如用户的点击行为数据,广告客户的付费行为数据等。
百度大数据主要服务三类人群:一类是互联网网民,通过大数据和自然语言处理技术让网民的搜索更加准确;第二类是广告主,通过大数据让广告主的广告和搜索关键词的匹配度更高,或者和网民正在看的网页内容匹配度更高;第三类是,也是在重点推进的百度大数据引擎,重点是服务传统行业拥有一定规模数据的企业。
百度大数据引擎代表了互联网企业数据服务能力开放和合作的趋势,百度大数据引擎由以下三方面构成:
开放云:百度的大规模分布式计算和超大规模存储云,开放云大数据开放的是基础设施和硬件能力。过去的百度云主要面向开发者,大数据引擎的开放云则是面向有大数据存储和处理需求的“大开发者”。据百度相关人员称,百度开放云还拥有CPU利用率高、弹性高、成本低等特点。百度是全球首家大规模商用ARM服务器的公司,而ARM架构的特征是能耗小和存储密度大,同时百度还是首家将GPU(图形处理器)应用在机器学习领域的公司,实现了能耗节省的目的。
数据工厂:数据工厂为百度将海量数据组织起来的软件能力,与数据库软件的作用类似,不同的是数据工厂是被用作处理TB级甚至更大的数据。百度数据工厂支持超大规模异构数据查询,支持SQL-like以及更复杂的查询语句,支持各种查询业务场景。同时百度数据工厂还将承载对于TB级别大表的并发查询和扫描,大查询、低并发时每秒可达百GB。
百度大脑:百度大脑将百度此前在人工智能方面的能力开放出来,主要是大规模机器学习能力和深度学习能力。此前它们被应用在语音、图像、文本识别,以及自然语言和语义理解方面,并通过百度Inside等平台开放给了智能硬件。现在这些能力将被用来对大数据进行智能化的分析、学习、处理、利用,并对外开放。
百度将基础设施能力、软件系统能力以及智能算法技术打包在一起,通过大数据引擎开放出来之后,拥有大数据的行业可以将自己的数据接入到这个引擎进行处理。从架构来看,企业或组织也可以只选择三件套中的一种来使用,例如数据存放在自己的云,但要运用百度大脑的一些智能算法或者数据存放在百度云,自己写算法。
百度大数据引擎的作用
我们可以从两方面来具体看百度大数据引擎的作用:
(1)对于*机构:如交通部门有车联网、物联网、路网监控、船联网、码头车站监控等地方的大数据,如果这些数据与百度的搜索记录、全网数据、LBS数据结合,在利用百度大数据引擎的大数据能力,则可以实现智能路径规划和运力管理;卫生部门拥有流感法定报告数据、全国流感样病例哨点监测和病原学监测数据,如果和百度的搜索记录及全网数据结合,便可进行流感预测、疫苗接种指导。
(2)对于企业:很多企业也拥有海量大数据,不过很多企业的大数据处理和挖掘能力比较弱,如果应用百度大数据引擎,则可以对海量数据进行可靠低成本的存储,进行智能化的由浅入深的价值挖掘。如在2014年4月的百度技术开放日上,中国平安便介绍了如何利用百度的大数据能力加强消费者理解和预测,细分客户群制定个性化产品和营销方案。
阿里巴巴大数据策略
阿里巴巴大数据整体发展方向是以激活生产力为目的的DT(data technology,数据技术驱动)数据时代发展。阿里巴巴大数据未来将由“基于云计算的数据开放+大数据工具化应用”组成:
(1)基于云计算的数据开放。云计算使中小企业可以在阿里云上获得数据存储、数据处理服务,也可以构建自己的数据应用。云计算是数据开放的基础,云计算可以为全球的数据开发者提供数据工作平台,阿里分布式的存储平台和在这个平台上的算法工具,可以更好的为数据开发者所用;同时,阿里巴巴还需要做好数据的脱敏,把数据的商业定义,每个标签打得足够清晰,能够让全球的数据开发者在阿里巴巴平台展开数据思维,让数据为*所用、消费者所用以及行业所用。阿里的大数据开放之后,线上线下的数据能够串联起来,所有人都是数据提供方,也是数据的使用者。
(2)在大数据应用上,马云已经在整个数据应用上确定了两个方针:
第一个方针:从IT到DT(数据技术),DT就是点燃整个数据和激发整个数据的力量,被管理所用,被社会所用,被销售所用,为制造业所用,为消费者信用所用。前文已经分析道,阿里巴巴的数据资产是以电商为主,其中,淘宝和天猫每天会产生丰富多样的数据,阿里巴巴已经沉淀了包括交易、金融、生活服务等多种类型的数据。这些数据能够帮助阿里巴巴进行数据化运营(如下图)。
另外一个其最为重要的应用是金融领域——小微金融。在小微金融企业融资领域。由于银行无法掌握小微企业真实的经营数据,不仅导致很多企业无法拿到贷款,还因为数据类型的不足导致整个判断流程过长,阿里已经通过其电商数据中的交易、信用、SNS等多种数据来决定是否可以发放贷款以及放贷的额度。
第二个方针:让阿里巴巴的数据、让阿里巴巴的工具能够成为中国商业的基础设施。阿里巴巴已经开始在转型,阿里将由自己直接面对消费者变成支持网商面对消费者,阿里会根据其已有的运营和数据经验,开发更多的工具,帮助网商成长,让网商们更懂得用最好的工具、服务去服务好消费者。正如马云所言“我相信没有一个网商不希望拥有自己的客户,没有一个网商不希望知道客户对自己的体验到底好还是坏,如何持久的拥有这些客户,我们觉得一个国家的经济,应该让给企业家群体去做,我们觉得淘宝网商未来的经济,是应该留给网商们去决定,而不是我们去做决定”。
腾讯大数据策略
腾讯的大数据目前更多的是为腾讯企业内部运营服务,相对于阿里和百度,数据开放程度并不高。因此,对于腾讯我们主要重点介绍腾讯大数据在服务企业内部的应用场景和服务。
腾讯90%以上的数据已经实现集中化管理,数据集中在数据平台部,有超过100多个产品的数据已经集中管理起来,而且是集中存储在腾讯自研数据仓库(TDW)。腾讯大数据从数据应用的不同环节可以分为四个层面,包括数据分析、数据挖掘、数据管理和数据可视化:
(1)数据分析层有四个产品:自助分析、用户画像、实时*度分析和异动智能定位工具。自助分析可以帮助非技术人员通过简单的条件配置实现数据的统计和展示功能;用户画像则是对某一群用户或者某一业务的用户实现自动化的人群画像;实时*度分析工具则是可以对某一指标可以实现实时的多个维度的切分,方便分析人员从不同角度对某一指标进行*度分析;异动智能定位工具则实现数据异动问题的智能化定位。
(2)数据挖掘层面的产品应用有:精准广告系统、用户个性化推荐引擎和客户生命周期管理。精准广告系统如广点通,是基于腾讯大社交平台的海量数据为基础,通过精准推荐算法,以智能定向推广位导向实现广告精准投放;用户个性化推荐引擎根据每位用户的兴趣和喜好,通过个性化推荐算法(协同过滤、基于内容推荐、图算法、贝叶斯等),实现产品的个性化推荐需求;客户生命周期管理系统,则是基于大数据,根据用户/客户的所处的不同生命周期进行数据挖掘,建立预测、预警和用户特征模型,以根据用户/客户所处的不同生命周期特点进行精细化运营和营销。
(3)在数据管理层面则有:TDW(腾讯数据仓库)、TDBank(数据银行)、元数据管理平台和任务调度系统和数据监控。这一层面主要是实现数据的高效集中存储、数据的业务指标定义管理、数据质量管理、计算任务的及时调度和计算以及数据问题的监控和告警。
(4)在数据可视化层面有:自助报表工具、腾讯罗盘、腾讯分析和腾讯云分析等工具。自助报表工具可以自助化的实现结构相对简单和逻辑相对简单的报表。腾讯罗盘分为内部版和外部版,内部版则是服务于腾讯内部用户(产品经理、运营人员和技术人员等)的高效报表工具,外部版则是服务于腾讯合作伙伴如开发商的报表工具。腾讯分析是网站分析工具,帮助网站主进行网站的全方位分析。腾讯云分析则是帮助应用开发商决策和运营优化的分析工具。
总的来看,百度、阿里巴巴和腾讯三大互联网企业都拥有大数据,三大互联网巨头的数据都用来优化自己业务的运营效果,从这个层面看,其数据价值应用场景比较类似。但由于其业务和商业模式的不同决定了三者数据资产的不同,也决定了三者未来大数据策略的不同,尤其是基于大数据的开放和合作角度看,百度和阿里巴巴相对更加开放。对于重视大数据开放和合作的互联网企业,他们最为期待的是借着大数据开放的策略,与更多的传统行业交换更多的数据,从而更好的丰富其在线下数据,形成线上和线下数据的协同,从中拓展新的商业模式,如智能硬件和大数据健康。