API、客户端库和 ORM 驱动程序概览

可用的接口

与 Spanner 交互时,您可以使用多种编程接口中的一种。下面按我们推荐使用的顺序列出了可用的接口:

  • 客户端库:Spanner 客户端库支持多种语言,以 gRPC 为基础构建。这些客户端库在 gRPC 基础之上提供了一个抽象层,能处理会话管理、事务执行、重试等具体任务。
  • ORM 和框架驱动程序:Google 支持数种常用的“对象-关系”映射库 (ORM) 和框架(例如 JDBC)的开源 Spanner 驱动程序。这些驱动程序允许通过这些框架定义的 API 使用 Spanner 数据库。
  • RPC API:如果您选择的编程语言不提供客户端库或 ORM 驱动程序,请使用基于 gRPC 构建的 RPC API。与使用 REST API 相比,gRPC 带来若干方面的性能优势,包括以 Protocol Buffer 格式表示对象(与 JSON 相比,生成和处理速度更快)以及持久连接(可减少每个请求的开销)。请阅读 gRPC 概念,详细了解这些优势以及其他好处。
  • REST API:如果您无法使用 Spanner 的客户端库或 RPC API,请使用 REST API。请注意,REST API 不支持 RPC API 中提供的某些功能,如下所述。

RPC 与 REST API 的对比

下表比较了 Spanner 通过 RPC 和 REST API 接口提供的功能。

功能 RPC API 是否支持? REST API 是否支持?
取消请求
设置请求的截止时间或超时时间
发送流式传输请求 是。请参阅 ExecuteStreamingSQLStreamingRead 部分支持。支持 HTTP 流式传输,但不支持应用级流控制

客户端库功能支持

下表列出了客户端库,并介绍了它们各自支持的主要 Spanner 功能。

客户 Go Java Node.js Python Ruby C++ PHP C#
批处理 DDL
批处理 DML
可配置的主副本选项
图表查询
交错表
JSON 类型
变更
分区 DML
分区读取
PostgreSQL 界面
请求优先级
请求代码植入
会话标签
过时读取
语句提示