Skip to content

D1

D1 是 Worker 可查询的 SQLite 数据库。在 open-compute 上,每个 database 是运行 ocd 的主机上的一份 SQLite,不提供只读副本。

例如:

  • 从 Worker 查询关系数据
  • 导入 schema 并执行 SQL
  • 在同一事务中执行多条语句
ts
export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const { results } = await env.DB.prepare(
      "SELECT * FROM Customers WHERE CompanyName = ?",
    ).bind("Bs Beverages").all();
    return Response.json(results);
  },
} satisfies ExportedHandler<{ DB: D1Database }>;

open-compute.json 中绑定已存在的 database:

json
{
  "name": "d1-app",
  "main": "src/index.ts",
  "bindings": {
    "DB": { "type": "d1_database", "id": "<d1-database-id>" }
  }
}

id 必须指向平台上已有的 database。语法见 绑定。CLI:oc / oc run / oc types

兼容性

主题Cloudflareopen-compute
Worker APID1 Worker API相同:prepare / bind / run / all / first / raw / exec / batch、session、bookmark、prepared-statement / result / meta
存储位置托管 D1(可含只读副本)本机一份 SQLite
只读副本提供不提供
按区域路由提供不提供
served_by 地域信息region / colo不提供;served_by_* 不表示地域产品
Bookmark跨副本因果顺序同一数据库上的本地顺序
rows_read / rows_written计费计数本地 SQLite 执行计数
dump()托管非 alpha 拒绝同样拒绝(D1_DUMP_ERROR
REST / client.v4提供不提供;使用 Worker 绑定

本节