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

可用的接口

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

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

RPC 与 REST API 的对比

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

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

第三方 ORM 和框架支持

下表列出了 Google 提供的所有开源 Cloud Spanner ORM 和框架驱动程序,并介绍了它们各自支持的主要 Cloud Spanner 功能。

特征 JDBC Hibernate Spring Data R2DBC* 实体框架 Active Record SQLAlchemy
语言 Java Java Java Java C# Ruby Python
语句提示
变更
批处理 DML
过时读取
交错表
分区 DML
会话标签
请求优先级
JSON 类型
请求代码植入
限制 视图 视图 视图 视图

* 此列介绍了专门用于 Spring Data 的 R2DBC。
† 仅在通过 Spring Data 的 @Query 注解发送字面量 SQL 查询时可用。

Cloud Spanner 还支持功能有限的 Django 兼容 ORM。请参阅当前限制