Spanner Omni 概览

Spanner Omni 是 Spanner 的可下载版本,可让您在本地数据中心、公有云和笔记本电脑上部署 Google 的分布式数据库技术。它通过使用基于 Paxos 的复制、自动分片和软件定义的 TrueTime API,提供核心 Spanner 功能,包括横向可伸缩性、高可用性、ACID 合规性和强大的外部一致性。

Spanner Omni 集成了关系型、图表、向量和键值对数据模型,并具有全文和运营分析功能。与 Spanner 一样,Spanner Omni 支持 GoogleSQLPostgreSQLSpanner Graph Language。 您可以在各种环境中实现跨环境弹性、应用可移植性和一致的开发技术栈。Spanner Omni 支持以下部署选项:

  • 虚拟机
  • Linux 容器
  • Kubernetes 集群

Spanner Omni 的 预览 版 包含 Spanner 中的核心功能,但不包括企业级安全和数据保护 功能。如需提前使用具有完整功能的版本, 请与 Google 联系

主要特性

Spanner Omni 提供以下功能:

  • 部署灵活性:在 Linux 或 macOS 上运行 Spanner Omni。Spanner Omni 支持公有云环境(例如 Google Cloud (Google Kubernetes Engine (GKE) 和 Cloud Storage) 和 Amazon Elastic Kubernetes Service (Amazon EKS) 和 Amazon Elastic Compute Cloud (Amazon EC2))、本地环境和笔记本电脑。

  • 高可伸缩性:Spanner Omni 可以自动对 数据进行分片并平衡分片,以实现读取和 写入的弹性扩缩。

  • 高可用性:Spanner Omni 提供多种 部署拓扑。Spanner Omni 提供多可用区和多集群部署,以便在可用区或集群发生故障时提供高可用性。

  • 强大的外部一致性:Spanner Omni 使用基于软件的 TrueTime 提供全局 事务一致性,该 TrueTime 可 部署在任何环境中。

  • 可互操作的多模型:Spanner Omni 支持多种 数据模型(关系型、键值对、图表、向量)和功能 (全文搜索、分析处理),并提供跨模型查询 和跨不同数据模型的 ACID 合规事务。

  • 熟悉的界面:使用 Spanner CLI 与数据交互, 其中包括用于交互式查询的 SQL Shell。 Spanner Omni 支持 GoogleSQL、PostgreSQL 方言和 GQL,可让您迁移现有应用。

部署拓扑

Spanner Omni 使用区域、可用区和服务器的层次结构来定义其部署配置。Spanner Omni 提供以下部署配置:

  • 单服务器 - Spanner Omni 在单台机器上运行。 此拓扑非常适合本地开发,因为它在单台机器上运行。升级到此拓扑会导致停机。

  • 单可用区(或可用区级) - 所有 Spanner Omni 服务器都属于 一个可用区。此部署配置至少使用三台服务器。为了实现最佳正常运行时间,此拓扑具有较低的可用性目标,因为单可用区故障可能会导致服务中断。

  • 多可用区(或区域级) - Spanner Omni 将 服务器分布在多个可用区中。所有可用区都位于同一位置。对于多可用区部署,至少使用三个可用区。每个可用区必须至少有一台服务器。我们建议在每个可用区中使用三台服务器。与单可用区部署相比,此部署配置具有更高的可用性。

  • 多集群(或多区域级) - Spanner Omni 服务器 位于多个集群中的多个可用区中。为了实现高可用性,请在两个或多个集群中使用三个可用区,并为每个可用区配置三台或更多服务器。

系统要求

为了优化性能,请使用以下服务器部署的最低推荐要求:

环境 操作系统或平台 硬件建议
本地 Linux (RHEL 9、Ubuntu 22) 每个 vCPU 4 GB RAM,20+ GB 磁盘空间
云端(Google Cloud 和 AWS) 虚拟机或 Kubernetes Pod 每个虚拟机或 Kubernetes Pod 4 个 vCPU、16 GB RAM
开发者(笔记本电脑、台式机) macOS (M1、M2、M3) 4 GB RAM、10 GB 磁盘空间

对于存储,建议使用具有 ext4 文件系统的专用固态硬盘 (SSD) 存储。

连接和开发

如需连接到 Spanner Omni 并开发应用,请考虑以下工具:

  • 客户端库:您可以通过指定 Spanner Omni 端点来使用现有的 Java 和 Go 版 Spanner 客户端 库。例如,在 Java 中,设置 setExperimentalHost("http://localhost:15000")

  • PGAdapter:此代理可让现有 PostgreSQL 应用 使用标准 PostgreSQL 网络协议 连接到 Spanner Omni PostgreSQL 方言数据库。

  • 诊断:专用 spanner admin diagnostics create 命令 会收集日志、跟踪记录和线程堆栈以进行问题排查。