集合运行时
集合运行时
集合运行时是每次读写背后的宿主端引擎:查询编译器与写入管道。二者都不运行租户代码,除非声明附加了代码体。
读取
读取会针对集合的公开范围严格解码其 where、select 与 orderBy,合并调用方的授权范围,把字段遮罩代入每个谓词,并编译为一条 SQL 语句;筛选或排序跨越的关系会成为该语句中的连接或子查询。没有默认页大小:读取必须声明 limit 或 all。
写入管道
每次写入都经过相同的步骤:
- 按集合的白名单解码输入。
- 按授权对调用方评判一次:已存储行与写入结果的范围,以及可写字段。
- 在访客隔离环境中对整批数据运行集合的 transform。
- 应用按状态的
to与edit规则。 - 根据允许该写入的授权路由审批。
- 在一个事务中提交,每种形态一条语句:幂等、修订检查、序列号、汇总、
check、noOverlap、历史记录、审批标记与排队的运行。
结果
管道返回 committed、pendingApproval、refused、conflict 或 unknown。拒绝是一种业务答复,从不是异常。
历史记录
每次已提交的变更都会为每一行写入一条修订,只包含变更的字段及其原因(direct、cascade、derived、seed、hold、restore 或 erased)。历史记录始终开启,由平台清理,但从不越过未完成审批的恢复点。
种子数据
种子数据行以种子模式经由其集合的写入管道进入,按原样恢复这些行。