可用的接口
与 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 是否支持? |
---|---|---|
取消请求 | 是 | 否 |
设置请求的截止时间或超时时间 | 是 | 否 |
发送流式传输请求 | 是。请参阅 ExecuteStreamingSQL 和 StreamingRead 。 |
部分支持。支持 HTTP 流式传输,但不支持应用级流控制。 |
客户端库功能支持
下表列出了客户端库,并介绍了它们各自支持的主要 Spanner 功能。
客户 | Go | Java | Node.js | Python | Ruby | C++ | PHP | C# |
---|---|---|---|---|---|---|---|---|
语句提示 | ||||||||
变更 | ||||||||
批处理 DML | ||||||||
批处理 DDL | ||||||||
过时读取 | ||||||||
交错表 | ||||||||
分区 DML | ||||||||
会话标签 | ||||||||
请求优先级 | ||||||||
JSON 类型 | ||||||||
请求标记 | ||||||||
可配置的主要副本选项 | ||||||||
分区读取 | ||||||||
PostgreSQL 页面 |