用途
本技能用于在 MotherDuck 中创建、消费或管理数据共享(data shares),并处理受众授权、表过滤与刷新策略。它围绕 MotherDuck 的共享模型工作,该模型为 zero-copy 且仅元数据(metadata-only),以数据库作为共享源,可选用 INCLUDE_PATTERN 进行表/视图过滤,接收方为只读,更新与 include-pattern 策略由所有者控制。
主要能力
- 创建共享并设置访问模式、可见性与更新模式,可选 INCLUDE_PATTERN。
- 通过 GRANT READ ON SHARE ... TO ROLE ... 向用户或角色授予访问权限。
- 使用 ALTER SHARE ... SET|RESET INCLUDE_PATTERN 调整表/视图范围。
- 使用 LIST SHARES 或 MD_INFORMATION_SCHEMA.OWNED_SHARES 读回共享进行校验。
- 支持消费者通过 ATTACH 挂载共享数据库并以只读方式查询。
- 在 UPDATE MANUAL 模式下,所有者执行 UPDATE SHARE、消费者执行 REFRESH DATABASE 以获取新快照。
使用方式
技能要求先确认源数据库、目标受众,以及可见的表/视图子集、可发现性和新鲜度需求,再编写 SQL。创建共享时应显式指定访问、可见性、更新模式以及可选的 INCLUDE_PATTERN。若访问受限,需显式授权;若共享为隐藏或基于链接,则直接分发共享 URL。创建后应读回共享并校验存储的 pattern 与消费者可见目录。消费者随后 ATTACH 共享数据库并只读查询。
默认建议:优先使用 ACCESS RESTRICTED 加 GRANT READ ON SHARE ... TO ROLE ... 进行受控内部分发;仅当确实需要其遗留的组织范围行为时,才使用 ACCESS ORGANIZATION。当同一共享的所有接收方应看到相同表/视图子集时使用 INCLUDE_PATTERN;当不同受众需要不同子集时创建单独的共享。当接收方需要稳定快照或版本化交付时使用 UPDATE MANUAL。当分发需严格控制时使用 ACCESS RESTRICTED 或 VISIBILITY HIDDEN。
对于答案、审查或规划类请求,只返回共享设计与 SQL,不进行实际配置。对于创建、更新、授予或撤销类请求,执行所请求范围内的操作并校验结果访问权限;在公开暴露、破坏性撤销或不相关的授权之前应先询问。
适用场景
适用于需要受控内部分发数据、按受众划分表/视图子集、面向外部组织或公众分发、以及需要稳定快照或版本化交付的共享场景。
限制与注意事项
不得将 INCLUDE_PATTERN 描述为行级或列级安全,它只选择整张表与视图,并且需要原生 MotherDuck 存储。对于写入密集的发布者,在依赖共享更新工作流中的 checkpoint 或并发写行为前,应确认 DuckDB 客户端版本为 MotherDuck 所支持。选择访问与可见性前应确认接收方是内部用户、其他组织还是公众。
参考与相关技能
完整 SQL 操作手册、角色授予、include-pattern 规则、访问/更新决策、消费者工作流与常见失败模式见 references/SHARE_PLAYBOOK.md。相关技能包括:motherduck-connect(认证与连接设置)、motherduck-explore(发现数据库、表、列与现有共享)、motherduck-query(校验共享 SQL 与下游查询)、motherduck-duckdb-sql(DuckDB SQL 语法与查阅)、motherduck-security-governance(角色设计与访问边界审查)。仅在缺少能力时加载相关技能,并复用已有上下文。如可用,应优先使用 MotherDuck MCP 的 ask_docs_question 功能,其次再回退到公开文档。