据开发 S3 兼容对象存储的 Minio 称,对象存储正在以如此令人信服的方式赢得大数据存储之战,以至于数据库制造商开始将数据存储让给对象存储供应商,转而专注于优化他们的 SQL 查询性能系统。

自AWS于 2006 年 3 月推出以来,Amazon S3 已成为云原生对象存储的标准。数以百万计的开发人员已经采用简单存储服务(使用简单的基于 REST 的 API 进行访问),将近乎无限的存储连接到无数的 Web 和移动应用程序。
最近,企业架构师开始在 S3 和兼容 S3 的对象存储之上部署对延迟有更严格要求的分析和事务应用程序。业务关键型工作负载传统上使用关系数据库——包括用于 OLAP 的面向列的数据库和用于 OLTP 工作负载的面向行的数据库——在基于 SAN 的块存储和基于 NAS 的文件存储之上运行以提供快速的性能,如输入/企业所需的每秒输出 (IOPS)。
但随着数据规模的增加和对象存储的 IOPS 性能能力的提高,传统关系数据库在 OLAP 和 OLTP 工作负载方面的长期优势已经开始在对象存储手中受到侵蚀,MinIO的负责人Jonathan Symonds 说营销人员。
“他们意识到只有很多其他公司,MinIO 就是其中之一,他们所做的工作比他们在 [存储] 中所能做的要好得多......围绕纠删码、吞吐量和安全性,”Symonds 在最近对Datanami的采访。
“目前数据库市场竞争如此激烈,以至于他们都希望专注于查询优化,”他继续说道。“他们都希望提供高性能查询,而且他们都希望以最并行的方式进行。所以他们基本上是说,我将专注于此,因为它是我业务的核心,我不会专注于此。”

Genies 和 Bottles
例如,Snowflake决定在 2022 年夏天推出允许用户使用 Snowflake 查询自己的对象存储的新功能(目前处于预览阶段),这表明这家云数据仓库巨头对开放对象存储充满信心,Symonds 表示.
“多年来,Snowflake 有效地转售了 AWS S3,”西蒙兹说。“但他们得出的结论是,在前进的基础上,这对他们来说不是战略性的。他们需要在产品方面提升自己的水平,而不用担心存储方面的问题。”
他说,这一举措为 Snowflake 做了两件事。对于初学者来说,它允许 Snowflake 及其客户访问更多数据(例如驻留在 MinIO 中的数据),而无需通过 ETL 将数据物理移动到 Snowflake 的专有数据库格式,这是一件缓慢、繁琐且成本高昂的事情做。Symonds 说,它还允许 Snowflake 客户查询更大的数据集,这有助于客户的业务。
“这不像是某种战略选择。客户说,'嘿,我想要支持对象存储,'”西蒙兹说。“一旦发生这种情况,精灵就会从瓶子里出来。但与此同时,他们必须在查询处理方面具有竞争力。如果您必须选择将您的工程时间安排在哪里,您将把它放在查询处理上,因为这是您业务的核心。你不会将它放入存储组件中,这不是你业务的核心。”
微软最近决定在云中为 SQL Server 使用 S3 对象存储,这是数据库巨头不再将数据存储在数据库中的另一个例子。Minio 首席执行官兼联合创始人 AB Periasamy 表示,这表明微软选择支持其竞争对手的格式 S3,而不是其自己的 Azure Blob 存储格式(其根源在于 HDFS)。
“MS SQL Server 可以在任何地方的任何云上运行。他们已经接受了 S3 API 而不是 Azure Blob Store API,”Periasamy 说。“微软的大数据游戏实际上是与对象存储相关联的 MS SQL Server。”

Embracing Object
Periasamy 说,大数据发展的最后十年讲述了客户和供应商如何努力存储和处理不断增长的数据集。
多年来,数据库制造商处理数据存储和所有必要的事情,例如提供横向扩展功能和数据弹性/保护,以及更高阶的功能,例如优化 SQL 查询性能。Periasamy 说,数据库制造商需要处理这些较低级别的存储需求,因为底层 SAN 和 NAS 文件系统中的数据存储原语在这方面非常有限。
开源社区推动了 Hadoop 的发展。然而,Hadoop 和 Hadoop 分布式文件系统 (HDFS) 在几个关键领域受到限制,包括它们主要用于存储和处理非结构化数据,而企业主要存储结构化数据。企业也拒绝学习并行编程的新 MapReduce 风格,Periasamy 说,他们无论如何都想要一个 SQL 接口来访问他们的数据。
“客户最后说'我想要在这些数据之上使用 SQL',”Periasamy 说。“那时 SQL 玩家说‘我们有更好的 SQL 引擎。如果我们放开存储,我们支持大型数据集并不难。'”
Apache Hive 是第一个在 HDFS 上运行的 SQL 引擎。由于临时性能缓慢,Hive 创建者 Facebook 将其替换为 Presto(及其衍生产品 Trino)。Presto 和 Trino 都是没有底层存储引擎的查询引擎,这种模型现在似乎被更成熟的数据库制造商所接受,例如 Microsoft 和 Snowflake。
最终,市场说话了,HDFS 让位于 S3 和 S3 兼容的对象存储,成为大数据存储和处理的事实标准。Spark-backer Databricks还支持带有 Databricks 文件系统 (DBFS) 的 S3 和 S3 兼容对象存储,DBFS 是一个将类 Unix 文件系统调用映射到云存储 API的抽象层。
即使是长期以来一直是本地大规模并行处理 (MPP) 数据库黄金标准的Teradata,也在 8 月正式采用了在 S3 兼容对象存储基础上进行 OLAP 计算的“数据湖”风格(尽管它坚持认为一些分析工作负载将在其优化的文件系统格式上运行得更好)。

Setting the (Open) Table
根据 Periasamy 的说法,对象存储故事中还有另一个元素对于使它适合客户来说至关重要:开放表格式的出现。
在对象存储中存储大量数据的好处之一是能够使用不同的查询引擎访问它。这是一种简单的认识,例如,最适合低延迟临时分析的方法可能不是最适合训练机器学习模型的方法。
但是,当多个引擎访问相同的数据集时,存在潜在的冲突,包括(但不限于)得到错误的答案。简而言之,这就是产生开放表格式的原因,例如 Apache Iceberg、Apache Hudi 和 Databricks 的 Delta Lake 表格式。
“这实际上是数据库市场发生的最大变化,为了让所有人合作,他们必须就标准达成一致,并且 MinIO 或任何对象存储上的数据格式必须采用某种开放格式,”Periasamy说。“这是正在进行的最大创新,我们完全接受它。”
虽然 Periasamy 的工程师(Gluster 文件系统的共同创建者)偏爱 Iceberg,因为它是三者中最“云原生”的,但 MinIO 本身支持所有三种开放表格式。Databricks 值得支持推出开放表格式概念,它使多个用户和应用程序可以访问相同的数据而不会弄乱它,但此后它被广泛采用。
Periasamy 说,开放的表格格式很重要。“客户会复制每一份数据。它不像两到三份。这是15份,20份。这对基础设施造成了巨大的负担,”他说。“要解决这个问题,如果我们都可以处理同一个数据集会怎么样,但无论你做出什么改变,它都是你的副本。这就像对大型数据集进行版本控制。它就像一个类似 Git 的存储库,基于相同的源代码 [具有] 不同的数据分支。”
传统数据库市场不会很快萎缩。数据库仍在激增以满足特定工作负载的利基需求,包括图形数据、时间序列数据、地理空间数据、物联网数据、非结构化数据、JSON 等。就纯粹的速度而言,对象存储的性能可能永远无法与优化的内存数据库。
但在大数据曲线的上游——比如从 1PB 到 100PB 甚至更高,复制或移动数据是一个即时交易破坏者——在对象存储之上构建的数据湖和 lakehouse 有很大的领先优势,而且似乎没有任何东西准备好让他们不再拥有存储层。数据库制造商最好将对象存储纳入他们的计划,如果他们还没有这样做的话。

原文标题:Are Databases Becoming Just Query Engines for Big Object Stores?
原文作者:Alex Woodie
原文链接:https://www.datanami.com/2023/01/03/are-databases-becoming-just-query-engines-for-big-object-stores/




