Xata:具备数据分支和 PII 匿名化的 Postgres 平台

重新推出 Xata,定位为 "大规模 Postgres"。一个 Postgres 平台,具备 Copy-on-Write 分支、数据脱敏以及存储与计算分离的特性。

作者 Tudor Golubenco 发布日期 2025年5月14日

在 Xata,我们一直默默地从头(重新)构建一个新的 PostgreSQL 平台。我们整合了四年多来运营 Postgres 数据平台所学到的一切,结合了客户的反馈以及我们对当前市场空白的分析。

最终成果是一个全新的 Postgres 服务,它:

我们稍后将深入探讨技术细节,但首先让我们讨论一下这个 Postgres 平台是为谁设计的。

大规模 Postgres

我们的目标是解决团队在使用大规模 Postgres 时面临的挑战。当我们说“规模”时,我们不仅指数据量、CPU 数量、RAM 容量或垂直/水平扩展能力等技术维度。虽然这些都包含在我们的“规模”定义中,但我们也指组织上的挑战,例如:

让我们首先看看开发和测试用例,然后再讨论生产用例。

开发和测试用例

Copy-on-Write 分支是在处理大型数据集时,快速启动具有生产数据的预览或开发环境的好方法。但就其本身而言,它们有两个主要限制:

幸运的是,我们已经通过两个开源项目研究这些问题很长时间了:

新的 Xata 平台将这些项目与 Copy-on-Write 分支结合在一起,为 PostgreSQL 创建了一个完整、安全且一致的开发人员工作流程。

Xata deployment for AWS/GCP/Azure with anonymization and copy-on-write branches

最好的部分是,即使您不打算更改生产 Postgres 服务,也可以使用 Xata。 Xata 可以与您现有的 PostgreSQL 服务协同工作并改进它,无论它是 AWS RDS、Amazon Aurora、GCP CloudSQL、Azure Database 还是自托管 Postgres。

从高层次上讲,采用 Xata 看起来像这样:

如果您不想将任何数据发送到生产环境之外(即使是匿名数据),则不必这样做:我们有一个 BYOC(自带云)部署模型,其中所有 staging 和开发分支都在您的 AWS/GCP/Azure/或其他账户中运行,甚至在本地运行。 稍后会详细介绍。

生产用例

虽然您无需在我们的平台上运行生产即可获得 Xata 的优势,但在我们的平台上运行生产可以为您节省成本、提高性能,并在灵活性、扩展性和支持方面带来其他好处。

Xata 使用一种将存储与计算分离的架构。 这带来了以下好处:

虽然像 Amazon Aurora 和 Neon 这样的服务也分离了存储和计算,但 Xata 的实现方式不同,因为它严格在存储层完成。 这意味着我们根本不必修改 Postgres。 我们只是运行原生的 Postgres,因此具有 100% Postgres 兼容性,并通过高性能的 NVMe over Fabrics (NVMe-oF) 从我们的分布式存储集群挂载逻辑卷。

Xata prod architecture using CNPG and Simplyblock nodes

我们保持了 pricing 模型的简单性:

这使得它可以轻松地与 Amazon Aurora 直接比较,并且我们的 benchmarks 表明,我们以更低的价格获得了略微更好的性能。 最重要的是,当将我们的 Pay As You Go 计划与 Aurora On Demand 比较时,您可以降低高达 80% 的成本

灵活性方面,因为我们不对 Postgres 代码库进行任何修改,所以我们可以轻松运行您可能需要的任何扩展,包括自定义扩展。 我们也很乐意与您合作,根据需要快速批准和部署新扩展。

如果您担心数据治理、合规性或延迟,我们的 Bring Your Own Cloud 部署模型 让您可以在自己的云账户中或本地运行完整的 Xata 平台。 这使您可以完全控制,同时减少网络延迟并避免带宽费用。

存储:基于 NVMe/TCP 的分布式集群

在了解新平台时,最好的起点是存储系统。 它是我们两个核心功能的支持者:即时 Copy-on-Write 分支以及存储与计算分离。

我们很高兴地宣布,我们已与 Simplyblock 合作,以便将他们的分布式存储系统集成到 Xata 平台中。 我们一起为您提供真正独特的 PostgreSQL 服务。

Simplyblock 是一种云原生、软件定义的存储层,专为速度和弹性而构建。 它作为基于 Linux 系统的存储节点分布式集群运行,将逻辑卷公开为虚拟 NVMe 设备。 使用 SPDK(Storage Performance Development Kit)和 DPDK(Data Plane Development Kit),它以最小的延迟实现用户空间存储操作。

为了实现这一目标,Simplyblock 将 NVMe 设备与 Linux 内核分离,绕过典型的基于内核的处理。 然后,它直接完全控制设备,处理用户空间中与硬件的所有通信。 这消除了从用户空间到内核再返回的转换,从而缩短了延迟并减少了处理时间和上下文切换。

为了实现数据弹性,Simplyblock 实现了 erasure coding,这是一种类似于 RAID 的方法,它使用奇偶校验数据从故障中恢复。 与传统的磁盘级冗余不同,Simplyblock 在 节点级别 应用此方法,具有集群范围的分布式奇偶校验数据,从而为整个集群提供容错能力。 该系统将容错定义为可以发生故障的节点数(不仅仅是驱动器),从而以最小的存储开销提供强大的保护。

Redundancy with Simplyblock

作为第二层,Simplyblock 利用 NVMe-oF 多路径来确保对逻辑卷的持续访问,方法是自动处理主节点和辅助节点之间的故障转移。 每个卷都提供多个活动路径,如果主节点由于故障、维护或网络中断而不可用,则允许 I/O 操作无缝地通过辅助节点重新路由。

Copy-on-Write 分支

Xata 的一项关键功能是即时分支,它由存储层的 Copy-on-Write (CoW) 提供支持。 这是一个简化的工作原理的思维模型。

Simplyblock 存储系统将数据拆分为数据块。 元数据索引会跟踪块在物理磁盘上的位置。

在此示例中,我们从一个“main”分支和 8 个数据块开始。

Postgres Copy-on-Write branches - diagram 1

创建新分支时,将创建一个新的元数据索引,但不复制任何数据块。 新分支的索引只是指向现有块。 这就是分支操作是即时的原因:它(还)不必复制任何大量数据。

收到写入时,无论是父分支还是子分支,都会在处理写入之前复制修改后的块。 发生这种情况时,每个分支都会引用其自己的块副本。 在下图中,块 3 和 6 发生了这种情况。

请注意,所有其他块仍然未复制。 这就是为什么它被称为 Copy-on-Write:只有在处理数据块中的第一次写入时才会复制数据块。

假设在分支操作之后写入的块相对较少,这可以显着节省开发分支之间的磁盘空间。

计算:Kubernetes 和 CloudNativePG

在计算方面,我们保持相当标准:我们通过 CloudNativePG operator 在 Kubernetes 上部署 Postgres 实例。 CloudNativePG 是 Kubernetes 上最稳定、功能丰富且最受欢迎的 PostgreSQL operator 之一。 该 operator 为许多生产问题提供了基础:通过同步复制、只读副本、向上和向下扩展、次要版本滚动升级、备份等实现高可用性。

这意味着我们的数据平面与云无关,我们可以在任何有 Kubernetes 集群的地方进行部署。 这使得我们可以使用 Bring Your Own Cloud (BYOC) 部署模型,我们可以在您的云账户或数据中心中部署 Xata 平面。

Xata Bring Your Own Cloud architecture

除了提供最佳的安全性和合规性姿态外,BYOC 还意味着您可以使用云提供商的积分和折扣来运行 Xata 使用的基础设施。 这也意味着 Postgres 节点在您的 VPC 中运行,从而最大限度地减少延迟和带宽成本。

使用 Xata Agent 进行 Postgres 优化和调优

正如我们所说,我们保持计算层标准,并且我们运行的是原生版本的 Postgres。 这意味着您所有喜欢的工具都可以与它一起使用。

这也意味着我们可以利用我们的另一个开源项目 Xata Agent 来监控、诊断和优化 PostgreSQL 实例。 Xata Agent 是一个由 LLM 驱动的 PostgreSQL 专家代理。

它将推理模型与工具结合在一起,使模型可以访问 Postgres 实例的指标、日志、活动查询、统计信息和设置。 该 Agent 帮助您优化查询并帮助您调整 Postgres 实例。

Xata Lite:面向构建者和 AI Agent 的免费 Postgres

如果您是 Xata 的现有客户或免费用户,您可能想知道您现在使用的经典 Xata 平台会发生什么情况。 简而言之:它重命名为 Xata Lite,它获得了一个新的 website,但在功能和定价方面保持不变。

Xata Lite 使用共享 Postgres 集群实现,这 allows us 提供具有非常慷慨的免费套餐的 Postgres。 截至目前,Xata Lite 当前的底层 Postgres 服务是 Amazon Aurora,但我们将对其进行迁移以使用我们自己的 Xata 实例。

两个平台之间的区别如下:

如何开始

我们目前正在对新 Xata 平台的访问进行限制,因为我们正在载入我们的第一批主要客户。 但是,该平台已准备好投入生产,我们只是想专注于为有限数量的客户提供尽可能最佳的体验。

如果您想了解 Xata 是否可以为您提供帮助,请在此处 request access。 我们将与您联系以讨论后续步骤。

如果您只是觉得大规模 Postgres 很有趣,并且想继续关注,您可以在 X, BlueSky, 或 LinkedIn 上找到我们。