【.com速译】简介Snowflake、Panoply、Repods是三种云服务,可以让你在托管云中提取、处理、存储和访问数据建筑学。不同于其他只能提供数据呈现和处理的云服务,这些平台可以为海量数据提供计算和存储资源,所以我们常称它们为云数据仓库平台。以数据存储和处理为核心功能的数据仓库服务,为数据的整体管理和分析提供了坚实的云平台基础。由于这三个平台的受众并不完全相同,我们可能无法直接全面地比较它们的各个方面。特别是Panoply和Snowflake,我们只是从他们在互联网上的公开信息来分析。架构Panoply综合使用AmazonRedshift数据服务、Elasticsearch数据库、AmazonS3存储、Spark计算架构。AmazonRedshift是一个可扩展的数据库,它源自Postgres数据库架构,具有集群的附加功能。但是,它只能作为AmazonWebService运行。该架构可以通过向集群添加更多节点来在线扩展。由于不同的Panoply客户端可以共享相同的基础设施,当一个客户端上出现高流量查询负载时,可能会影响其他客户端的查询性能。使用Panoply,您可以创建多个AmazonRedshift类型的数据库。所以从某种意义上说,这样的数据库虽然有独立的存储区域,但它们仍然共享同一个查询引擎(即DBMS系统)。虽然Snowflake并未详细披露其底层架构,但总体而言,它可以通过在线扩展平台将存储和计算资源明确分离。Snowflake允许您在同一个帐户中创建和管理多个数据仓库。您不仅可以详细配置每个仓库的计算集群大小,还可以为每个仓库配置自动在线伸缩规则,即实现服务不中断的垂直扩展(使用更多资源)和横向扩展(引入更多计算)资源)。当然,为了保证各个仓库的性能稳定,Snowflake的数据仓库不共享计算资源,而是使用外部工具直接访问数据库。Repods的基础设施包括原生PostgreSQL(版本10及以上)和TimescaleDB。该数据库可用于大时间跨度的数据分区、存储集群管理、扩展存储以及许多与数据仓库相关的服务。目前,虽然Repods可以提供可靠的I/O速度和PB级的在线扩展,但扩展计算资源的过程仍然需要数秒的数据仓库停机时间,不具备容量弹性。您可以为每个帐户创建、管理和共享多个数据仓库。然而,平台中不同的数据仓库实例主要依靠不与集群中任何其他实例共享的专用资源来实现一致的查询性能。导入界面我们将导入界面分为以下四个部分:文件——仍然是最常见的数据形式。网络服务——网络上有大量的相关数据。数据库——通常,各种类型的数据存储在不同组织的传统数据库中,组织对这些数据库的访问一般不会暴露在互联网上,因此不能直接在云数据平台上使用。然后可以将Web服务放在内部部署的数据库和云服务之间,以处理访问控制等与安全相关的问题。当然,另一种方法是在安全跳转主机上使用ssh-tunneling。实时流-实时数据流由各种消息路由器传送。随着物联网的兴起,它们将变得越来越重要。Panoply为以上所有四种提供了大量的导入选项。但是,根据我们掌握的信息,Panoply既不能根据自动调度从云存储桶(buckets)或SFTP中提取文件;它也不能根据时间表请求RESTfulURL。虽然Snowflake只专注于加载文件(如cat.II),但它允许您从云存储(包括AmazonS3或MicrosoftAzure)加载文件。Snowflake可让您监控新文件的到达并及时加载它们。在Repods中,您可以上传文件、从S3Buckets加载文件或从外部SFTP服务器加载数据。Repods不为所有可能的Web服务提供单一接口,但它提供了一个通用API,可用于接受任何类型服务(例如Socrata)的Web请求。虽然用户不能在各种数据库之间导入/导出数据,但他们可以通过Repods在消息路由器(目前仅WAMP)上订阅和接收不同的主题,以微批次的方式提取数据。数据转换ETL通常,导入数据平台的数据必须经过类型转换,才能在数据流中进行分析。该过程通常称为ETL(提取、转换、加载),包括:为原始数据创建表、分配数据类型、过滤值、连接现有数据、创建派生列/行以及合并应用于原始数据的各种自定义逻辑.业界通常将创建和管理ETL的过程称为数据工程。这个过程不仅耗时,而且会耗尽管理人员的精力。一些较大的数据仓库通常包含数千个具有不同阶段、依赖性和处理顺序的ETL过程。在Panoply中,您使用代码来创建数据转换。一些转换为每次数据访问提供重新计算的虚拟结果(“视图”);其他人节省了重新计算的工作。据我们所知,在Panoply中,如果数据已经物化,则必须手动刷新数据才能获得更新。示例:当有新数据进来时,用户必须点击刷新来执行转换。根据源的大小和转换的复杂性,我们可以禁止将中间结果存储在专用的管理结果表中。通常的做法是将新数据增量加载到表中的现有数据中。当然,Panoply不提供对历史的具体支持。Snowflake在处理数据转换方面采用了与Panoply类似的方法。您可以使用Snowflake的SQL语句在表格SQL查询中实现数据转换,然后根据需要在新表中进行后处理。在Snowflake中,您可以对数据对象进行底层控制,就像使用Postgres、MySQL、Oracle或DB2等传统数据库系统一样,您可以创建表、索引、视图、查询和分区。此外,Snowflake还允许您查询表在特定时间点(最多90天前)的状态。但是,Snowflake不支持“开箱即用”的数据自动化历史记录。在Repods中,您可以创建所谓的“管道”,将原始数据转换为特定的数据仓库表(例如Evo表)。在这些查询中,您不必为每个转换重写表,因为实际插入目标表将依赖于诸如:重复数据删除、密钥生成、历史记录和版本控制等技术来实现集成后处理。制定数据插入策略。监控通常,大型数据仓库系统可以轻松容纳和包含数百个数据表,以及数百个管理数据流的自动化ETL流程。然而,它们必然会出现错误,其中一些错误需要人为干预。对于这种复杂性,我们需要通过监控来了解平台的状态。在Panoply中,您可以查看已执行的各种查询,以及作业的历史记录。警报视图让您了解服务和其他资产的问题,以及它们的来源。各种查询日志会每隔几秒根据轮询服务更新一次(不是实时刷新)。Snowflake通过监控报告为您提供特定时间范围内活动查询数量及其资源消耗的汇总信息。在Snowflake中,您可以使用SQL语句访问各种内部元数据表,并提取有关系统中查询活动的相关类型信息。同时,Snowflake还可以在web界面显示历史查询操作。Repods通过提供实时更新的图形概览来显示当前和历史执行的管道详细信息。Repods还允许您使用SQL语句来分析系统的日志并提取有关管道执行的信息类型。可用性在创建和管理用户、数据仓库、表格、转换、报告等方面,云工具通常会根据目标受众平衡控制级别和易用性。由于这里的三个平台本质上都属于云环境,用户可以使用基于浏览器的Web应用程序直接访问和控制。具体来说:Snowflake为用户提供类似于数据库系统的高级可控功能。用户可以在代码面板中编写、导入、制表、查看、索引等处理代码;通过Web表单处理创建和删除整个数据仓库及其用户等任务。但其网页界面不会自动响应平台上的各种活动,用户需要定期(每10秒)刷新视图以实现更新。在Panoply中,用户通过Web表单处理对象的创建和数据导入相关的设置,进一步的数据转换和分析需要通过代码面板来实现。此外,Panoply只能提供英文界面。在Repods中,用户可以通过Web表单处理对象创建,并在代码面板中处理各种自定义转换逻辑。对于Repods的数据分析,用户可以使用工作簿式的方式创建自定义分析查询,也可以使用内置的OLAP工具,通过点击快速学习数据模型。多用户工作流这里主要比较的是:用户交互,以及数据和工作内容共享支持。总的来说,这三个平台都允许多个用户在同一数据环境中协同工作。当然,它们都不提供在线讨论或聊天的功能。Panoply为所有用户提供了一个类似于基础设施的环境,用户可以在该环境上创建多个AmazonRedshift数据库。您可以在Panoply上管理“管理员”和“编辑”角色。然而,Panoply平台的用户之间没有沟通,平台中的数据对象和转换的文档也很缺乏。在Snowflake中,您可以细粒度地控制每个帐户以及如何访问多个数据仓库。类似于传统数据库系统中使用的访问控制,你可以自定义这些数据仓库中所有对象的权限,创建不同的角色。在Repods中,可以让每个用户管理多个数据仓库(即DataPods),并为其他用户提供类似于GitHub平台的访问权限。平台预设的访问角色包括:“Viewer”、“Reporter”、“Developer”、“Administrator”和“Owner”。每个用户都可以在各个pod中分配一个角色,不同的数据表通过“标签”进行分组。当然,每个用户也可以根据“标签”进行单独授权。由于平台的实时性,用户之间的交互会立即被所有其他用户发现。数据历史化(DataHistorization)随着时间的推移,新产生的数据需要添加到现有的数据库存中,因此数据仓库往往需要能够管理历史悠久的数据,并且需要能够将分离的数据块进行合并进入一个同质的数据历史。同时,为了持续管理和应用数据历史化,我们可以使用专有的时间范围列(timerangecolumn)来跟踪不同表中的时间范围。Repods支持开箱即用的数据历史化。历史化通常发生在数据转换之后和插入数据库表之前。对于缓慢变化的数据,此算法的空间效率最高。而这种最小化历史记录的方法可以大大减小表的大小,同时对数据查询的完整性有有利的影响。其他两个平台的数据历史化时间范围由用户提供的转换逻辑管理。其中,Panoply提供了一个名为“历史表”的功能,我们将在下面进一步讨论。数据版本控制通过数据版本化,可以跟踪一段时间内数据的修改情况,以便按需恢复到旧版本状态,或者对已有数据进行无损修改。在比较云数据仓库的版本控制能力时,您必须考虑创建版本的难易程度,以及恢复或查询它们的难易程度。可以在不同的系统级别处理版本控制:版本的快照在存储子系统上创建,就像备份一样。底层数据库系统可以支持版本跟踪。版本控制可以由数据仓库系统处理。版本控制可以作为用户空间中的自定义转换逻辑来实现。Panoply通过持续备份实现内置版本控制。您可以恢复到备份时间范围内快照中的任意时间点,但不能使用此方法查询主用系统中的版本。在Panoply中,您还可以通过创建“历史表”的方式,将伴随表插入到原始表中。当原始表发生更新时,系统会自动将相同的记录插入到伴随表中,时间间隔代表更改。这些历史表允许您使用SQL语句查询同一数据的不同版本。使用Snowflake,您可以轻松创建所有数据的快照,并获得数据库系统提供的“时间旅行”功能,即可以灵活地使用SQL语句查询某个时间点的数据。但是,此功能仅适用于企业版,并且仅包含90天的历史记录。换句话说,用户必须在更长的时间内自己实现版本控制逻辑。目前,Repods不提供为每个数据仓库用例设计的连续备份和版本跟踪服务。您可以通过指定“冻结”时间戳来确保数据的可恢复性。可以使用简单的SQL语句灵活查询各种冻结时间(不限天数)的数据。分析/报告数据平台最基本的任务之一是以各种方式分析大量原始数据,然后将数据存储为更长的历史记录。今天,有许多商业智能工具可以从大型数据库中提取和聚合数据,执行自动化分析,并以可读的方式呈现相关报告。Panoply和Snowflake都为您提供了SQL代码编辑器来创建数据转换、分析和聚合。这两个平台都允许您使用用户名和密码通过ODBC(和类似工具)工具访问。因此,您可以使用Jupyter工作簿或PowerBI等专用分析工具来分析您自己的数据。但是,您不能使用平台上的资源来运行Python或训练机器学习模型。同时,您无法将这些工作簿的结果整合到平台中的数据工作流中。目前,尽管Repods不允许用户使用外部工具访问该平台,但它为用户提供了一种独特类型的工作簿,可以创建各种数据故事(datastories)和分析摘要(analyticalextracts)。这里的工作簿是指由许多SQL代码面板和文档面板组成的工作表(使用“Markdown”)。当然,除了工作簿式的分析,Repods还包括一个OLAP(在线分析处理)界面,您可以使用点击的方式来了解数据模型或创建报告结果。创建机器学习模型的数据科学是数据平台需要提供的一种新型服务。目前业界普遍采用Python或R语言,搭配numpy、pandas、scikitlearn、tensorflow、pytorch等专有库。然而,这些平台都没有直接提供在平台上执行数据科学任务的实现。因此,通常的策略是通过指定工具访问平台,并在平台外执行所有与数据科学相关的任务。尽管有很多工具可供选择,但我们可能面临依赖托管计算资源来支持那些要求苛刻的机器学习任务的挑战。外部访问和API我们将从以下几个方面比较三个平台如何向外部用户展示他们的数据内容:SQL访问。API访问(REST请求)。通过文本推送或电子邮件通知。文件导出。Panoply允许用户以类似ODBC的方式直接访问受用户名和密码保护的平台。几乎所有标准化的商业智能工具(例如Looker或Tableau)都可以连接到Panoply并使用其数据。虽然Panoply可以跟踪系统警报,但它不会向用户发送短信或电子邮件。Snowflake既可以向其他工具提供对其数据的SQL访问,也可以将文件导入云存储桶(AWSS3或MSAzure)。但是,用户只能为一般Snowflake服务设置可用性电子邮件通知。在Repods中,您可以创建API访问密钥并控制对平台数据的获取访问。通过将这些访问密钥分发给外部用户,他们可以使用任何编程语言的标准化REST请求来访问平台的数据资源。借此,你还可以将商业智能工具PowerBI接入Repods平台,创建各种仪表盘,直接通过浏览器导出和下载不限大小的文件。但是,该平台目前不提供任何类型的推送通知。文档因为数据工程往往不是一次性的偶然需求,所以各大平台都需要提供完整的功能介绍和详细的信息文档。Snowflake提供了广泛的在线文档。由于SQL语句的广泛使用,这些文档在结构上与数据库和编程语言文档非常相似。而且,它的大部分文档都会涉及到SQL的相关功能。此外,Snowflake还提供了许多指南和YouTube视频,帮助用户更好地熟悉和试用该平台。Panoply也提供在线文档,但不如Snowflake详细。当然,由于Panoply直接将底层的AmazonRedshift暴露给用户进行SQL访问,用户可以直接参考AmazonRedshift的SQL文档。除了提供数据仓库的一般指南外,Panoply还提供了一些YouTube教程。Repods仅为其WebAPI用法提供单独的在线文档。例如:如何使用RESTfulWeb请求通过Python、JavaScript和PHP访问Repods中的数据。通常,该平台将使用文档直接嵌入到其相应的工具中。与Panoply类似,用户可以直接参考原始Postgres文档以获得SQL支持。同样在Medium.com上,Repods有一系列技术文章,以及YouTube类型的解释视频。安全通常,数据平台的安全主要体现在存储(静态数据)、交互(传输中的数据)和访问控制上。目前,这三个平台都能够加密静态和传输中的数据。对于访问控制,它们都提供基于密码的用户身份验证。此外,Snowflake还提供最安全的双因素认证机制。Panoply和Snowflake允许您通过类似ODBC的接口访问底层数据库。为了减少公共数据库端口在Internet上的暴露,用户可以(也应该)使用安全的ssh-tunneling和特殊的跳转主机方法来实现访问。结语如果要搭建一个完整的数据仓库平台,Snowflake和Panoply需要结合其他工具来查漏补缺。由于涉及SQL代码,这三个平台都要求用户具有基本的数据工程专业知识。如果你需要一个在线的数据库架构来进行数据分析,又不想在系统和硬件管理上投入太多,那么Snowflake是一个不错的选择,它更适合大规模的数据环境,当然数据库管理员也是需要进行平台管理。前面说了,Snowflake和常规数据库非常相似,如果你的数据需求不是特别的,可以选择托管在AWS上的。Panoply比Snowflake更简单,它不需要用户具有系统、硬件和数据库管理专业知识。与其他两个平台相比,Panoply更适合不太复杂的数据环境。Repods的简单性和对用户的技术要求与Panoply类似。Repods在数据仓库中的功能还包括:代理键(surrogatekey)的自动化、历史记录、维护和分析。Repods的管理界面非常适合面向项目的数据仓库方法,而不是大型中央数据仓库架构。同时,Repods也可以用于数据编目。原标题:云数据仓库比较,作者:MelissaRojasT?nzer
