小言_互联网的博客

你不敢问的数据管理知识,都列在这里了

489人阅读  评论(0)
全文共 8823字,预计学习时长 16分钟

为了成为一名真正的全栈数据科学家,或者许多博客文章和雇主所说的“独角兽”,你必须完全掌握数据科学流程的每一步。由于项目涉及大量本地机器无法处理的数据,企业通常在云中建模,同时将大多数应用程序和数据库托管在其他地方的数据中心的服务器上。即使你找到了一份数据科学家的工作,数据管理也常常是由独立的团队负责。因此,很多数据科学家对数据存储和基础设施知之甚少,这将阻碍他们在工作中做出正确决策。

NIST 大数据分类(来源:维基共享资源)

本文的目标是为数据科学家提供一份2019年数据管理概念图,包括数据库的类型、数据存储和处理的位置和方式和当前的商业选择。这样,有抱负的“独角兽”就可以百尺竿头更进一步,或者至少学到足够的东西,让他们在面试和鸡尾酒会上表现得像个专家。

非结构化数据和大数据工具的兴起

IBM 305 RAMAC (来源:维基共享资源)

数据科学的故事实际上是数据存储的故事。在数字时代之前,数据存储在人们的大脑里、粘土板上或纸上,因此收集和分析数据非常耗时。1956年,IBM推出了第一台带有磁性硬盘的商用计算机305 RAMAC。整个装置占地30英尺×50英尺,重量超过一吨。公司可以每月花3200美元租赁该装置,存储最多5 MB的数据。在那之后的60年里,每千兆字节的价格从1965年的26.4亿美元下降到2017年的4.9美元。

由于数据存储的成本和占地空间大幅降低,大数据分析在今天成为可能。凭借超低的存储成本,企业可以构建数据基础架构,从大量数据中收集和提取意见并从中获益。随着大量不断生成和传输用户数据的物联网设备的出现,企业将收集越来越多活跃的数据,创造出大量高容量、高速度和高多样性的信息资产(简称为“大数据的三个V”)。大多数这些活动(例如电子邮件、视频、音频、聊天消息、社交媒体帖子)的数据都可被生成。如今这些活动占企业数据总量的近80%,并且增长速度是过去十年结构化数据的两倍。

企业在2017年共存储了125兆字节的数据,其中80%是非结构化数据。(来源:Credit Suisse)

巨大的数据增长极大地改变了数据存储和分析的方式,因为传统的工具和方法无法处理高容量、高速度和高多样性的大数据。新技术能够以更快的速度和更低的成本处理不断增加、更多样化的数据。这些新工具还对数据科学家的工作方式产生了深远的影响——允许他们通过执行分析和构建以前不可能实现的新应用程序来将海量数据货币化。以下是每个数据科学家都应该了解的大数据创新。

RDBMS & NoSQL

关系数据库管理系统(RDBMS)出现于20世纪70年代,以具有行和列的表的形式存储数据,使用结构化查询语言(SQL)语句来查询和维护数据库。关系数据库基本上是表的集合,每个表都有一个模式,该模式严格定义它们存储的数据的属性和类型,以及能够快速定位到特定行列的键。关系数据库管理系统曾经由Oracle和IBM统治,但今天许多开源选项,如MySQL、SQLite和PostgreSQL也同样流行。

按受欢迎程度排序的关系数据库管理系统(来源:DB-Engines)

由于一些吸引人的特性,关系数据库在商业世界占有一席之地。数据完整性在关系数据库中非常重要。关系数据库管理系统满足原子性、一致性、隔离性和持久性(或ACID)的要求,通过施加许多约束来确保存储的数据可靠且准确,使它们成为跟踪和存储诸如帐号、订单和付款之类的数据的理想选择。但是这些限制伴随着高昂的代价。由于模式和类型的限制,关系数据库管理系统很难存储非结构化或半结构化数据。僵化的模式也让系统的建立、维护和发展更加昂贵。建立关系数据库管理系统需要用户事先掌握特定的用例;对模式的任何更改通常都是困难和耗时的。此外,传统的管理系统需要在单个计算机节点上运行,因此在处理大量数据时它们的速度要慢得多。分割关系数据库也极具挑战性,因为它需要在保持ACID合规性的同时水平扩展。所有这些属性使得传统的关系数据库管理系统无法处理现代大数据。

到2000年中期,现有的关系数据库管理系统不再能有效应对一些非常成功的线上企业不断变化的需求和指数级增长的规模,因此开发了许多非关系(或NoSQL)数据库。在当时没有任何已知的解决方案的情况下,这些在线企业发明了新的方法和工具来处理他们收集的大量非结构化数据:谷歌创建了GFS、MapReduce和BigTable;亚马逊创建了DynamoDB;雅虎创建了Hadoop;Facebook研发了Cassandra和Hive;领英研发了Kafka。这些企业中有一些是开源的;一些已发表的研究论文详细介绍了他们的设计,导致了新技术数据库的激增,并使NoSQL数据库成为该行业的主导者。

自2000年以来,数据库选项激增。来源:Korflatis et. al (2016)

NoSQL数据库与模式无关且十分灵活,能够存储和处理大量非结构化和半结构化数据。用户不需要知道设置期间将存储什么类型的数据,系统可以自行适应数据类型和模式的变化。NoSQL数据库旨在跨不同节点分发数据,通常具有更高的水平可伸缩性和容错性。但是,这些性能优势也是有成本的——NoSQL数据库不符合ACID标准,数据一致性也没有保证。相反,它们具有“最终一致性”:当旧数据被覆盖时,它们会暂时返回带有一些错误的结果。例如,当人们同时搜索一个给定的术语时,谷歌的搜索引擎索引不能覆盖它的数据,所以当我们搜索时,它不能给我们最及时的结果,但是它能给我们能力范围内最新的、最好的答案。虽然这种设置在绝对需要数据一致性的情况下(如金融交易)不起作用,但对于需要速度而不是精确定位的任务来说很好。

现在,NoSQL有几个不同的类别,每个类别都有特定的用途。键值存储(如Redis、DynamoDB和CosmosDB)只存储键值对,它的基本功能是检索与已知键相关联的值。它们在简单的数据库模式下工作得最好,并且速度很快。宽列存储(如Cassandra、Scylla和HBase),将数据存储在列族或表中,并在大规模分布式系统中管理千兆字节的数据。文档存储(如MongoDB和Couchbase)以XML或JSON格式存储数据,文档名称作为关键字,文档内容作为值。文档可以包含许多不同的值类型,并且可以嵌套,这使得它们特别适合应用于跨分布式系统和管理半结构化数据。图形数据库(如Neo4J和Amazon Neptune)将数据表示为相关节点或对象的网络,以便于数据可视化和图形分析。图形数据库对于分析异构数据点之间的关系特别有效,可以用在防欺诈或Facebook的好友关系图中

MongoDB是目前最受欢迎的NoSQL数据库,为一直在努力用传统管理系统方法处理非结构化数据的企业提供了巨大的价值。以下是两个行业事例:都市人寿保险公司花了数年时间试图在一个能够处理其所有保险产品的RDBMS上建立一个集中的客户数据库,在之后的内部黑客马拉松中,某个人仅仅在数小时内就用MongoDB建立了一个数据库,该数据库在90天内投入生产。另一个例子是市场研究公司YouGov,它每小时收集5GB数据,通过把RDBMS迁移到MongoDB,节省了70%的存储容量。

数据仓库、数据湖和数据沼泽

随着数据源的不断增长,对多个数据库的分析变得低效而昂贵。本世纪初出现了一种称为数据仓库的解决方案,它将企业所有数据库中的数据集中起来。数据仓库通过创建来自不同来源(内部和外部)的单一数据存储库,支持数据从操作系统流向分析/决策系统。基本上,数据仓库是一个关系数据库,存储为收集业务见解而优化的已处理数据。它收集来自事务系统和业务应用程序的具有预定结构和模式的数据,这些数据通常用于操作报告和分析。

但是在现代,因为进入数据仓库的数据需要在存储之前进行处理,处理海量的非结构化数据可能需要大量的时间和资源。因此企业开始维护数据湖,它可以以任何规模存储企业的所有结构化和非结构化数据。数据湖存储原始数据,并且可以在不需要首先定义数据结构和模式的情况下进行设置。它允许用户运行分析,并且不必将数据移动到单独的分析系统,这使企业能够从以前无法分析的数据源中得到新领悟,例如使用日志文件、点击流、社交媒体和物联网设备中的数据构建机器学习模型。因为所有的企业数据变得易于分析,数据科学家可以回答新的业务问题,或者用新数据解决旧问题。

数据仓库和数据湖的比较(来源:AWS)

数据湖体系结构可能面临一种挑战。如果没有适当的数据质量和治理框架,当万亿字节的结构化和非结构化数据流入数据湖时,通常很难对其内容进行排序。数据变得太乱而无法使用,因此数据湖变成了数据沼泽。许多组织正在呼吁更广泛的数据治理和元数据管理实践。

分布式并行处理:Hadoop、Spark和MPP

尽管存储和计算需求在过去的几十年里飞速增长,但传统硬件还没有发展到足以跟上时代的步伐。企业数据不再适合标准存储,大多数大数据分析任务可能需要数周甚至数月的计算,或者根本不可能在标准计算机上完成。为了克服这一缺陷,许多新技术已经发展到多台计算机一起工作,将数据库分发到数以千计的商品服务器上。当一个计算机网络连接起来并共同完成相同的任务时,这些计算机就形成了一个集群。集群可以被看作一台计算机,但是它的功能更强大,可以显著提高性能、可用性和可扩展性,还可以降低商用硬件的成本。Apache Hadoop是分布式数据基础架构的一个应用,它利用集群来存储和处理大量数据,并支持数据湖架构。

数据库技术的发展(来源:Business Analytic 3.0)

当你想到Hadoop时,想想“分布”。Hadoop由三个主要组件组成:Hadoop分布式文件系统(HDFS),一种跨多个(分布式)物理硬盘存储和跟踪数据的方法;MapReduce,一个跨分布式处理器处理数据的框架;还有另一个资源协商器(CHINE),一个集群管理框架,用于协调分布式计算机之间的事务分配,如CPU使用、内存和网络带宽分配。Hadoop的处理层具有很强的创新性:MapReduce是一种两步计算方法,能以可靠、容错的方式处理分布在大型商用硬件集群中的大型(万亿字节或更大)数据集。它的第一步是将数据分布在多台计算机(Map)上,每台计算机并行地对其数据切片执行计算。下一步是以成对的方式组合这些结果(Reduce)。谷歌在2004年发表了一篇关于MapReduce的论文,两年后,一个雅虎程序员在开源Apache环境中实现了该论文,极大地提高了商用硬件存储数据量的能力,为每个企业提供了前所未有的体验。尽管这个想法有许多开源的实现,谷歌品牌MapReduce仍然存在,有点像极可意浴缸或舒洁面巾纸。

Hadoop是为迭代计算而构建的,它在单次操作中从磁盘扫描大量数据,将处理分布在多个节点上,并将结果存储回磁盘。使用Hadoop和HBase可以仅在10-12秒之内查询相当于在传统数据仓库环境中查询4小时的索引数据。Hadoop通常用于生成复杂的分析模型或大容量数据存储应用程序,如回顾性和预测性分析;机器学习和模式匹配;客户细分和流失分析;活动档案。

但是,因为MapReduce的原理是成批处理数据,它不适合处理实时数据。Apache Spark建于2012年,旨在填补这一空白。Spark是一种并行数据处理工具,通过处理内存中的数据来优化速度和效率。它在相同的MapReduce原理下运行,但它在内存中完成大部分计算,并且仅在内存已满或计算完成时写入磁盘,因此运行速度要快得多。这种内存计算允许Spark“在内存中运行程序的速度比Hadoop MapReduce快100倍,或比在磁盘上快10倍”。然而,当数据集过大以至于内存(数百千兆字节或更多)不足时,Hadoop MapReduce的性能可能会超过Spark。Spark还拥有一套庞大的数据分析库,它涵盖了广泛的功能:Spark数据库用于查询和结构化数据;MLib用于机器学习,Spark Streaming用于流处理,GraphX用于图形分析。因为Spark的重点是计算,它没有自己的存储系统,而是运行在各种存储系统上,如Amazon S3、Azure Storage和Hadoop’sHDFS。

在MPP系统中,所有节点都是相互连接的,数据可以通过网络进行交换(来源:IBM)

Hadoop和Spark并不是唯一利用集群处理大量数据的技术。分布式查询处理的另一种流行的计算方法叫做大规模并行处理。与MapReduce类似,MPP将数据处理分布在多个节点上,这些节点并行处理数据,速度更快。但与Hadoop不同,MPP用于关系数据库管理系统,并利用“无共享”架构——每个节点都用多核处理器处理自己的数据片段,它比传统关系数据库管理系统快很多倍。一些MPP数据库,如Pivotal Greenplum,有成熟的机器学习库,支持数据库内分析。然而,与传统关系数据库管理系统一样,大多数边际产量数据库不支持非结构化数据,甚至结构化数据也需要一些处理才能适应边际产量基础设施;因此,为MPP数据库建立数据管道需要额外的时间和资源。由于MPP数据库符合ACID标准,并且比传统管理系统速度更快,它们通常用于高端企业数据仓库解决方案,如Amazon Redshift、Pivotal Greenplum和Snowflake。行业中的一个例子是纽约证券交易所,它每天接收4TB到5TB的数据,并进行复杂的分析、市场监管、容量规划和监控。该公司一直在使用传统的数据库,无法处理需要数小时来加载的工作量,查询速度也很慢。后来,该公司迁移到MPP数据库,他们的每日分析运行时间减少了八个小时。

云服务

另一项彻底改变企业大数据分析能力的创新是云服务。在云服务出现之前,企业不得不从软件和硬件供应商那里购买内部数据存储和分析解决方案,并需要预先支付永久软件许可费以及后续的年度硬件维护和服务费。除此之外,成本还包括构建和维护内部基础架构的电力、冷却、安全、灾难保护、信息技术人员。即使在技术上可以做到存储和处理大数据,大多数企业发现其成本高得令人望而却步。利用内部基础架构进行扩展还需要广泛的设计和采购流程,这需要很长时间来实施,并且需要大量前期资本。结果,许多潜在的有价值的数据和分析都被忽略了。

“As a service”服务提供商:基础设施服务(IaaS)和存储服务(STaaS)(来源:IM

自从云服务于2000年代后期推出,内部模式就开始迅速失去市场份额——过去十年,全球云服务市场每年增长15%。云服务平台提供各种服务(从虚拟计算到存储基础架构再到数据库),这些服务通过互联网以现收现付的方式交付,让客户能够快速访问灵活、低成本的存储和虚拟计算资源。云服务提供商负责所有硬件和软件的购买和维护,通常拥有庞大的服务器和支持人员网络来提供可靠的服务。许多企业发现,他们可以通过云服务大幅降低成本和提高运营效率,并且能够利用现成的云资源及其内置的可扩展性,更快地开发和生产产品。通过消除构建内部基础架构的前期成本和时间承诺,云服务还降低了采用大数据工具的障碍,并有效实现了中小型企业大数据分析的民主化。

云服务模型分为几种,公共云是最常见的。在公共云中,所有硬件、软件和其他支持基础架构都由云服务提供商拥有和管理。客户与其他“云租户”共享云基础架构,并通过网络浏览器访问他们的服务。私有云通常由具有特殊安全需求的组织使用,如政府机构和金融机构。在私有云中,服务和基础架构仅专供于一个组织,并在专用网络上维护。私有云可以是内部的,也可以由其他地方的第三方服务提供商托管。混合云将私有云与公共云相结合,使组织能够获得两者的优势。在混合云中,数据和应用程序可以在私有云和公共云之间移动,以获得更大的灵活性:例如,公共云可用于高容量、低安全性数据,私有云可用于敏感的业务关键型数据,如财务报告。多云模型涉及多个云平台,每个云平台提供特定的应用服务。多云可以是公共云、私有云和混合云的组合,以实现组织的目标。组织通常选择多云来满足其特定的业务、位置和时间需求,并避免供应商锁定。

案例研究:为推荐应用程序启动构建端到端数据科学基础架构

不同类型数据环境的机器学习包(资料来源:Kosvakov(2016))

要构建一个可行的数据科学产品,仅仅会用scikit构建一个机器学习模型是远远不够的——还需修改并用服务器加载它。你需要了解企业生态系统是如何协同工作的:首先是数据在哪里、如何流入数据团队、数据处理/转换的环境、企业可视化/呈现数据的惯例、以及模型输出如何转换为其他企业应用程序的输入。主要目标包括建立一个易于维护的流程;其中模型可以迭代并且性能可以再现;对于其他利益相关者来说,模型的输出很容易理解和可视化,这样他们就可以做出更明智的商业决策。实现这些目标需要选择正确的工具,了解行业内其他人的任务,并投入最佳实践。

想象以下场景:假设你刚刚被聘为一个假期推荐应用程序的首席数据科学家,该程序预计每天从用户那里收集数百千兆字节的结构化(客户概况、温度、价格和交易记录)和非结构化(客户的帖子/评论和图像文件)数据。你的预测模型需要每周使用新的数据进行再培训,并根据需要立即提出建议。由于你预计应用会大受欢迎,因此你的数据收集、存储和分析能力必须具有极高的可扩展性。你将如何设计数据科学流程并生产模型?完成这项工作需要什么工具?因为这是一家初创公司,你是首席——也许是唯一的——数据科学家,所以你负责做这些决定。

首先,你必须弄清楚如何建立数据管道,从数据源接收原始数据,处理数据,并将处理后的数据反馈到数据库。理想的数据管道具有低事件延迟性(收集数据后立即查询数据的能力);可扩展性(能够随着产品的扩展处理大量数据);交互式查询(支持批处理查询和较小的交互式查询,允许数据科学家探索表和模式);版本控制(能够在不关闭管道和丢失数据的情况下对管道进行更改);监控能力(当数据停止进入时,管道应生成警报);和测试能力(不间断测试管道的能力)。最重要的是,它最好不要干扰日常业务运营——比如说,如果正在测试的新模型导致运营数据库陷入停顿,那么你就会面临大麻烦。构建和维护数据管道通常是数据工程师的责任,但是数据科学家至少应该熟悉过程、它的局限性以及访问已处理数据进行分析所需的工具。

接下来,你必须决定是要建立内部基础架构还是使用云服务。对于初创企业来说,当务之急是在不耗费更多运营资源的情况下扩展数据收集。如前所述,内部基础架构需要巨额前期和维护成本,因此云服务往往是初创企业的更好选择。云服务允许扩展以满足需求,并且只需要最少的维护工作,因此你的小团队可以专注于产品和分析,而不是基础架构管理。

提供基于Hadoop的解决方案的供应商(来源:维基共享资源)

为了选择云服务提供商,你必须首先建立分析所需的数据,以及最适合这些数据类型的数据库和分析基础架构。由于你的分析管道中既有结构化数据,也有非结构化数据,因此可能需要建立一个数据仓库和一个数据湖。对于数据科学家来说,两个问题非常重要:存储层是否支持构建模型所需的大数据工具,以及数据库是否提供有效的数据库内分析。例如,一些ML库(如Spark的MLlib)不能有效地与作为数据主要接口的数据库一起使用——数据必须从数据库中卸载后才能运行,这可能会随着数据量的增长而变得非常耗时。当你必须定期重新训练模型时,这可能会成为阻碍(从而导致另一种“遇到麻烦”的情况)。

对于云数据科学,大多数云提供商都在努力开发他们的本地机器学习能力,这些能力允许数据科学家利用存储在他们自己平台上的数据轻松构建和部署机器学习模型(亚马逊有SageMaker,谷歌有BigQueryML,微软有Azure Learning)。但是工具集仍在开发中,而且往往不完整:例如,BigQueryML目前只支持线性回归、二进制和多类逻辑回归、K均值聚类和TensorFlow模型导入。如果你决定使用这些工具,你必须彻底测试它们的能力以确保完成任务。

选择云提供商时要考虑的另一个主要问题是供应商锁定。如果你选择专有的云数据库解决方案,你很可能无法访问本地环境中的软件或数据。切换供应商可能会很昂贵,因为它需要迁移到不同的数据库。一种解决这个问题的方法是选择支持开源技术的供应商。使用开源技术的另一个优势是更大的用户群体,这意味着你更容易雇佣一个有经验和技能的人在你的基础架构中工作。解决该问题的另一种方法是选择第三方供应商(如PivotalGreenplum和Snowflake),这些供应商使用其他主要云提供商作为存储后端来提供云数据库解决方案,这也允许你将数据存储在多个云中,如果你的企业有所需求的话。

最后,因为你是初创企业的首席或唯一的数据科学家,并且希望公司能够发展壮大,所以你必须实施稳健的云管理实践来保护云,防止数据丢失和泄漏,例如管理数据访问以及保护接口和APIs。你还希望实施数据治理最佳实践来维护数据质量,并确保你的数据湖不会变成数据沼泽。

正如你所看到的,企业数据科学项目中有很多学问,而不仅是调整机器学习模型中的超参数。希望这一高层次的概述能让你更有动力,学习更多关于数据管理的知识。或许当你在饮水机前遇到数据工程师时,你可以用学到的东西给他们留下深刻印象!

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

 


转载:https://blog.csdn.net/duxinshuxiaobian/article/details/101082488
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场