跳到主要内容

集合运行时

集合运行时

集合运行时是每次读写背后的宿主端引擎:查询编译器与写入管道。二者都不运行租户代码,除非声明附加了代码体。

读取

读取会针对集合的公开范围严格解码其 where、select 与 orderBy,合并调用方的授权范围,把字段遮罩代入每个谓词,并编译为一条 SQL 语句;筛选或排序跨越的关系会成为该语句中的连接或子查询。没有默认页大小:读取必须声明 limit 或 all。

写入管道

每次写入都经过相同的步骤:

  1. 按集合的白名单解码输入。
  2. 按授权对调用方评判一次:已存储行与写入结果的范围,以及可写字段。
  3. 在访客隔离环境中对整批数据运行集合的 transform。
  4. 应用按状态的 to 与 edit 规则。
  5. 根据允许该写入的授权路由审批。
  6. 在一个事务中提交,每种形态一条语句:幂等、修订检查、序列号、汇总、check、noOverlap、历史记录、审批标记与排队的运行。

结果

管道返回 committed、pendingApproval、refused、conflict 或 unknown。拒绝是一种业务答复,从不是异常。

历史记录

每次已提交的变更都会为每一行写入一条修订,只包含变更的字段及其原因(direct、cascade、derived、seed、hold、restore 或 erased)。历史记录始终开启,由平台清理,但从不越过未完成审批的恢复点。

种子数据

种子数据行以种子模式经由其集合的写入管道进入,按原样恢复这些行。