浏览全部文档 · 11/37

功能简介

Database 是结构化数据的顶层容器,Table 定义结构与权限,Row 保存业务数据。AppBase 同时保留兼容接口并提供 TablesDB 表达;新页面与增强能力以 Database、Table、Column、Row 术语为主。

当前支持范围

  • 数据库(SUPPORTED):在项目边界内创建和管理数据库,并通过权限化 API 组织结构与数据。

适用场景

  • 为应用领域拆分结构化数据。
  • 通过 Table 与 Row 权限保护多租户数据。
  • 为 Aggregation、Transactions 与 Schema Version 建立基础。

前置条件

  • Project 已启用 Databases API。
  • 服务端 Key 拥有 databases.read/databases.write 等最小 Scope。
  • 已确定 Table 结构、索引和 Row 权限策略。

Console 操作路径

Console → Project → Databases。创建 Database 后进入详情页管理 Tables、Schema Versions、Backups、Settings 与 Usage;具体标签受版本和实例能力影响。

SDK 示例

SDK · TypeScript
import { Client, TablesDB, ID } from 'appbase-console-sdk';

const client = new Client()
  .setEndpoint('https://<APPBASE_HOST>/v1')
  .setProject('<PROJECT_ID>')
  .setKey('<API_KEY>');

const tables = new TablesDB(client);
const database = await tables.create({
  databaseId: ID.unique(),
  name: 'Application data',
  enabled: true
});

REST 示例

REST · Bash
curl 'https://<APPBASE_HOST>/v1/tablesdb' \
  -X POST \
  -H 'X-Appwrite-Project: <PROJECT_ID>' \
  -H 'X-Appwrite-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  --data '{"databaseId":"unique()","name":"Application data","enabled":true}'

权限模型

Database 与 Table 管理通常要求 Admin 或带数据库写 Scope 的 API Key;客户端 Session/JWT 主要用于 Row 数据面,并继续受 Table/Row Permission 控制。

常见错误

现象处理建议
401user_unauthorized确认请求使用了当前接口允许的 Session、JWT 或 API Key;不要把 Console Session 与 Project API Key 混用。
403general_access_forbidden检查 API Key Scope、组织角色以及资源级 Permission;认证成功不等于拥有目标操作权限。
404核对资源 ID 与 Project;不可见资源可能与不存在资源使用相同响应,客户端不应据此探测资源。
429按响应的限流语义退避,避免并发重试放大请求。

当前限制

  • 删除 Database 是破坏性操作,应先验证备份与依赖。
  • 结构创建/更新可能异步完成,不能只看 HTTP 接受响应。
  • 底层 OceanBase/MySQL 适配、存储模式与 Pool 不属于公开 Database API。

Appwrite 兼容说明

核心层级与 REST/SDK 调用方式保持兼容;TablesDB 是文档首选术语。

AppBase 增强说明

AppBase 在同一层级增加 Column Comment、Row Aggregation 与 Schema Version。

发布状态和验证 Commit

origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353

权威来源文件列表

  • backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Create.php
  • backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/XList.php
  • backend-candidate:tests/e2e/Services/Databases/DatabasesBase.php
  • frontend-candidate:console/src/routes/(console)/project-[region]-[project]/databases/

Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/databases。上游页面不是 AppBase 实现证据。

继续阅读