存储
fotomek / stock.adobe.com
结构化和非结构化数据存储之间的界限模糊
像Presto这样的开源工具可以保持低成本的非结构化对象数据存储,同时仍然可以通过结构化数据访问工具(如SQL)访问信息。
曾几何时,组织将结构化数据存储在关系型(有时是NoSQL)数据库中,并且非组织性数据在对象存储系统中,如Amazon S3或Google云存储。然而,结构化数据存储和非结构化数据存储之间的这种区别已经变得不那么明显,并且对组织存储、查询和管理结构化数据的方式产生了重大影响。
这一转变的原因是Presto等平台的出现。作为一个免费的开源查询引擎,Presto及其同类产品支持使用低成本的对象存储来持久化数据,同时仍然可以通过结构化数据访问工具(如SQL)访问数据。
让我们考虑一个基本数据仓库,其中填充了来自多个在线事务处理系统(如销售、库存和履行管理系统)的数据。
基础数据仓库
定期从这些系统中提取数据。然后对其进行改造和重组用于数据仓库. 转换后的数据可以直接写入数据仓库,也可以保存到对象存储系统中的文件中。在后一种情况下,加载过程通常将数据复制到数据仓库中。
在此场景中,数据仓库运行在一个平台上,如Amazon Redshift或谷歌Cloud BigQuery.这两个平台都是托管服务,但在Redshift的情况下,您必须选择服务器大小并做出一些其他管理决策。你还需要比较这些服务的优缺点:
- 使用这类服务的长期优势在于,它们允许用户使用SQL和业务智能报告工具查询、报告和可视化数据。
- 管理数据仓库的缺点是成本,包括基础设施成本和管理开销。
例如,在运行Redshift的数据仓库中使用的块存储上存储数据比对象存储更昂贵。
普雷斯托和亚马逊雅典娜在哪里
但是,如果您可以消除提取、转换和加载过程中的最后一步,又会怎样呢?与将转换后的数据加载到关系或分析数据库不同,您可以对存储在对象存储中的数据进行操作,类似于对数据库管理系统(DBMS)中的数据进行操作。然后,您可以获得对象存储的成本优势和数据库的查询可访问性。
这就是Presto和亚马逊雅典娜--这是基于Presto的,请进。这些平台为可能存储在对象存储中的数据提供SQL接口。当组织以列式文件格式存储数据时,例如镶木地板和兽人,它们获得了以柱状格式存储数据的数据库的一些优势。Presto是一个柱状查询引擎,所以当它可以读取数据列时,性能会得到优化;具体来说,相对于基于行的文件格式,它提供了更好的查询性能和更小的存储占用。
重要的是要注意到不同的时间工作很快,或其他支持直接查询文件的平台,以及一个数据库管理系统:
- 数据库设计用于增量更新、插入和删除。在使用需要实时或接近实时更新的分析应用程序时,这一点非常重要。
- 当可以接受批量上传时,查询对象存储中的文件效果更好。此外,当直接使用基于文件的存储时,关系DBMS的许多功能(如完整性约束)都不可用。
相对于基于行的格式,柱状文件格式可以提高性能,而DBMS将提供更好的性能。如果您需要支持大量的低延迟查询,那么关系数据库或分析数据库是最好的选择。
使用像Presto这样的文件上查询平台的最大好处可能是简单,特别是在它们帮助模糊结构化和非结构化数据存储和管理之间的界限方面。在使用Amazon Athena这样的托管服务时尤其如此。
更简单的定价是一个因素
基本存储价格正在趋同,因此变得更加简单,至少在谷歌云中是这样。例如,BigQuery——谷歌为PB级数据仓库设计的托管分析数据库——采用了与谷歌云存储类似的存储定价计划。
BigQuery中的活动数据是最近90天内更新的数据,其收费为每月0.02美元/ g,而非活动数据的收费为每月0.01美元/ g。谷歌云存储的标准定价是0.02美元/ g /月,而Nearline存储是0.01美元/ g /月。
如果其他云供应商采用类似的策略,结构化和非结构化数据存储之间的区别将更加模糊。