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。请注意,RPC API 中提供的某些功能在 REST API 中不受支持,如下所述。

RPC 与 REST API 的对比

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

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

客户端库功能支持

下表列出了客户端库,其中列出了每个客户端库支持的主要 Spanner 功能。

客户端 Go Java Node.js Python Ruby C++ PHP C#
语句提示
变更
批处理 DML
批处理 DDL
过时读取
交错表
分区 DML
为会话加标签
请求优先级
JSON 类型
请求添加链接
可配置的主管选项
分区读取
PostgreSQL 页面