暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

谷歌推出AlloyDB,直接挑战 ORACLE、DB2 和 SQL SERVER

原创 通讯员 2022-05-17
853

为什么谷歌需要另一个数据库,为什么它特别需要引入针对谷歌数据中心规模的分解计算和存储高度优化的 PostgreSQL 版本?

上周在 Google I/O 2022 活动上推出了 AlloyDB 关系数据库之后,这是一个很好的问题。




谷歌这个名字实际上是各种形式的大规模数据存储和操作的代名词。该公司创建用于查询非结构化数据的 MapReduce 技术,启发了 Hadoop、BigTable NoSQL 数据库Firestore NoSQL 文档数据库Spanner 地理分布式关系 SQL 数据库这些工具最初是在内部使用的,然后作为 Dataproc、Cloud BigTable 和 Cloud Spanner 服务放在 Google Cloud 上。


关系数据库重新流行起来,部分原因是谷歌表明真正的关系数据库可以随着 Spanner 的出现而扩展。为了鼓励在云上采用 Spanner,谷歌去年为 Spanner 创建了一个 PostgreSQL 界面,使其看起来和感觉就像那个越来越流行的开源数据库。这一点很重要,因为在 Oracle 于 2010 年初收购 Sun Microsystems 并控制了两年前 Sun 自己控制的更广泛使用的开源 MySQL 关系数据库之后,PostgreSQL 已成为首选数据库。

Google 需要在云中运行的真正版 PostgreSQL 的原因是,它需要帮助那些困在 IBM DB2、Oracle 和 Microsoft SQL Server 关系数据库作为其关键任务系统的后端数据存储的企业客户。记录离开这些数据库,不仅可以迁移到合适的 PostgreSQL 替代品,还可以从本地应用程序和数据库迁移到云。

简而言之,搜索引擎、广告服务和云计算巨头的数据库副总裁兼总经理 Andi Gutmans 就是这种情况。


“谷歌一直是数据方面的创新者,我们必须创新,因为我们拥有数十亿用户业务,”古特曼斯说。“但我们的优势确实在于云原生、非常具有变革性的数据库。但谷歌云已经加速进入主流企业——我们在金融服务、制造和医疗保健领域拥有蓬勃发展的业务,我们专注于传统系统并确保将应用程序提升和转移到云中。在过去的两年里,我们一直专注于支持 MySQL、PostgreSQL、SQL Server、Oracle 和 Redis,但是像 SQL Server 和 Oracle 这样更昂贵、遗留和专有的关系数据库具有不友好的许可模式,这真的迫使它们进入一个特定的云。

AlloyDB 服务是谷歌为这次提升和转变而创建的叉车,不要指望谷歌会开放它添加到 PostgreSQL 的所有好东西,因为这些都是针对谷歌自己的 Colossus 文件系统及其物理基础设施进行了高度调整的。但是,从长远来看,它可能会发生,就像谷歌采用其 Borg 基础设施和容器控制器并将其变体开源为 Kubernetes 一样。

正如我们之前指出的,数据库,而不是操作系统,当然也不是服务器基础设施,可以说是数据中心中最棘手的事情,公司做出的数据库决策跨越一到二十年——有时甚至更久。因此,拥有一个坚固、可扩展的 PostgreSQL 非常重要,它可以跨越在 Google Cloud 上运行的多达 64 个 vCPU,而且在未来几年内将其扩展到 128 个 vCPU 甚至更多,Gutmans 说 Google 正在努力。

但这种数据库粘性与实现 SQL 查询语言的不同方言的数据库有关,并且还具有在这些数据库中创建和嵌入存储过程和触发器的不同方式。存储过程和触发器本质上是将应用程序的元素嵌入到数据库中,而不是在数据库之外以实现重用和性能,但是没有普遍接受和兼容的方式来实现这些功能,这造成了锁定。

这就是谷歌去年 10 月收购 CompilerWorks的原因之一CompilerWorks 创建了一个名为 Transpiler 的工具,可用于将 SQL、存储过程和触发器从一个数据库转换到另一个数据库。作为一个恰当的例子,Gutmans 说尚未作为商业服务提供的 Transpiler 可以将甲骨文 70% 的 PL SQL 语句转换为另一种格式,而且谷歌云正在与一个拥有 450 万行数据的客户合作它必须处理的 PL SQL 代码。为了帮助进行数据库转换,Google 拥有进行数据复制和方案转换的工具,并提供了额外的资金,他们可以从系统集成商那里获得人工帮助。

AlloyDB 与其说是 PostgreSQL 的发行版,不如说它是一个存储层,旨在与 Google 的计算和存储基础设施一起工作。

尽管 Google 拥有支持 PostgreSQL 多租户实例的庞大规模,但您不会认为它没有跨越数百甚至数千个线程的数据库。IBM 的 DB2 on Power10 处理器在 240 核、16 插槽系统中具有 1,920 个线程,并启用了 SMT8 同步多线程,它可以抓取 AIX 或 Linux 未使用的任何线程并使用它来扩展数据库,只是为了让你了解什么是真实的企业规模适用于关系数据库。但我们相信,谷歌需要创建一个 2,000 线程的 PostgreSQL 实现,它可以通过其网络上的 NUMA 集群和其他缓存技术或安装八路 X86 服务器来实现,这将带来 896 个线程来承载 56-核心“Sapphire Rapids”至强 SP 和 1,204 个线程以支持 64 核“Granite Rapids”至强 SP。(同样,操作系统会吃掉一堆这样的线程,但肯定不如数据库能吃的那么多。)后一种方法——使用 NUMA 扩展的硬件——在扩展 AlloyDB 时肯定更容易,但这也意味着添加专门的基础设施,实际上只适用于数据库。

那么谷歌究竟对PostgreSQL做了什么来创建AlloyDB呢?谷歌采用了 PostgreSQL 存储引擎,并构建了 Gutmans 所谓的“云原生存储舰队”,它链接到主 PostgreSQL 节点、数据库日志记录和数据库的时间点恢复在这个分布式存储引擎上运行。谷歌还在 PostgreSQL 核心的事务引擎上做了大量工作,因此,谷歌能够在其谷歌云基础设施上实现多达 64 个虚拟核心的“完全线性扩展”。谷歌还在 PostgreSQL 内部添加了一个“超快速缓存”,如果数据库中出现内存缺失,这个缓存可以以微秒级的延迟将数据带入内存,而不是其他缓存的毫秒级延迟。

在针对 AlloyDB 运行 TPC-C 在线事务处理基准的初始测试中,Gutmans 表示,AlloyDB 比开源 PostgreSQL 快 4 倍,比来自 Amazon Web Services 的 Aurora 关系数据库(其顶部有一个 PostgreSQL 兼容层)快 2 倍。

这不仅仅是关于性能

为了与 Oracle、SQL Server 和 DB2 等传统数据库的高可靠性和可用性相匹配,Google 为 AlloyDB 服务提供了 99.99% 的正常运行时间保证,而这一正常运行时间主要包括数据库的维护。Gutmans 说,其他在线数据库在其统计数据中只计算计划外和计划外停机时间,而不是计划内维护时间。最后,AlloyDB 具有数据集的集成列表示,旨在对存储在数据库中的操作数据进行机器学习分析,这种列格式可以在分析查询上获得比开源 PostgreSQL 高 100 倍的性能。

PostgreSQL 许可证在允许数据库创新方面非常宽松,Google 不必将这些进步贡献给社区。但话虽如此,Gutmans 补充说,谷歌打算为 PostgreSQL 社区提供错误修复和一些增强功能。他没有具体说明,但直接与谷歌底层系统相关的东西——比如 Borg 和 Colossus——不会被开放。

因此,现在 Google 可以通过三种不同的方式将 PostgreSQL 功能提供给 Google Cloud 上的客户。Cloud SQL for PostgreSQL 是开源 PostgreSQL 的托管版本。AlloyDB 是 PostgreSQL 的升级版。Spanner 有一个 PostgreSQL 层,但它不兼容存储过程和触发器,因为 Spanner 是一种与传统 SQL 数据库截然不同的动物。

这是另一个差异化因素。对于 AlloyDB 服务,谷歌根据客户消耗的计算量和存储量来定价,但支持数据库访问的 IOPS 是免费的。未计量。与许多云数据库服务不同。IOPS 让人激动,因为它不容易预测,它可能高达使用云数据库成本的 60% 以上。


AlloyDB 已经封闭预览了六个月,现在是公共预览版。Google Cloud 预计将于今年下半年全面推出。

这使我们想到了最后的想法。公司需要多少数据库管理系统和格式?

“在数据库方面,我们认为自己是实用主义者,”Gutmans 说,他也是 PHP 编程语言的联合创始人和支持其支持的 Zend 公司的联合创始人。“如果您查看专门构建的数据库,肯定有一个好处,您可以实际优化查询语言和查询执行引擎,为特定工作负载提供一流的价格和性能。当然,挑战在于,如果你有太多这些,它就会开始成为开发人员和系统管理员的认知超载。因此,在整体式和多式联运之间可能存在一个最佳平衡点。您不会完全采用多模式,因为那样您就会失去价格、性能、特定用例优化方面的好处。但是如果你的数据库太多,太宽泛了,它变得复杂。在关系方面,客户肯定至少拥有一个关系数据库,而且在许多情况下,他们也在处理遗留数据库。对于那些遗留数据库,我们肯定会看到越来越多的人对标准化一个伟大的开源关系数据库感兴趣。文档数据库提供了很多易用性,尤其是在面向 Web 的应用程序中,当您想要使用非常松散的模式来执行诸如客户信息和会话管理之类的事情时,基本上拥有关于客户或交易或歌曲的信息包。我也是图形数据库的忠实粉丝。Graph 确实正在经历一场复兴,因为它不仅在围绕欺诈检测和推荐引擎以及药物发现和主数据管理的传统用例中非常有价值,但是通过机器学习,人们正在使用图形数据库从数据中提取更多关系,然后可以用来改进推理。除此之外,我们还有一些其他的数据库模型,在我看来,它们具有一定程度的收益递减,例如时间序列或地理空间数据库。”

PostgreSQL 现在有很好的 JSON 支持,所以它可以变成一个文档数据库,并且它也得到了地理空间支持。谷歌支持这匹数据库马并让它适应比赛是有原因的。似乎任何关系数据库都不太可能具有良好的图形覆盖,或者图形数据库可能具有良好的关系覆盖,但后一项需要改天再考虑……


文章来源:https://www.nextplatform.com/2022/05/16/google-needs-another-database-to-attack-oracle-db2-and-sql-server-directly/



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论