数据共享

数据共享(Data Sharing)让 Lakehouse 中的数据可以零复制地授权给其他实例访问——提供方只需创建 Share 对象并授权,消费方即可实时查询原始数据,数据不离开提供方账户。

类比:数据共享像"数据的只读访问权限共享"——不是把书借给对方,而是把书架的钥匙临时给对方,对方可以随时来读,书还是在你这里,你随时可以收回钥匙。这与 ETL 同步不同:同步是复制一本书给对方,之后各自独立;共享是共用同一本书,提供方修改后消费方立即可见。

与其他数据交换方式的对比

方式数据是否复制实时性消费方存储成本适用场景
数据共享(Share)❌ 不复制实时跨团队/跨公司实时协作
数据同步(ETL)✅ 复制有延迟占用完整存储跨云、需独立加工的场景
导出文件✅ 复制一次性占用文件存储离线数据交换

核心机制

数据共享基于元数据授权实现,不移动任何数据:

Provider Instance Consumer Instance ┌────────────────────┐ ┌────────────────────┐ │ source_table_a │ │ │ │ source_table_b │ │ CREATE SCHEMA │ │ source_view_c │ ──── Share ──── │ FROM SHARE │ │ │ (authorized) │ │ │ data stays here │ │ read-only query │ └────────────────────┘ └────────────────────┘

  • 提供方:创建 Share 对象,向 Share 添加表/视图,配置允许访问的消费方实例
  • 消费方:执行
    CREATE SCHEMA FROM SHARE
    CREATE SCHEMA FROM SHARE
    创建只读 Schema,通过 Schema 查询数据
  • 实时同步:提供方数据变更后,消费方无需任何操作即可看到最新数据
  • 计算独立:消费方查询消耗消费方自己的 VCluster 资源,与提供方无关

典型应用场景

场景做法
跨企业数据协作A 企业 Share 销售数据给合作伙伴 B,B 实时分析,无需建同步链路
集团主数据分发总部 Share 客户/产品主数据表给各业务部门,各部门实时获取
数据产品对外提供数据服务商 Share 处理后的数据产品给客户,按客户控制访问范围

快速示例

-- ===== 提供方操作 ===== -- 创建 Share 对象 CREATE SHARE sales_share; -- 将表授权给 Share GRANT SELECT ON TABLE orders TO SHARE sales_share; GRANT SELECT ON TABLE products TO SHARE sales_share; -- 添加消费方实例(填写消费方的服务实例名) ALTER SHARE sales_share ADD INSTANCE partner_instance; -- 查看 Share 配置 DESC SHARE sales_share; -- ===== 消费方操作 ===== -- 查看可访问的 Share SHOW SHARES; -- 创建只读 Schema(映射到提供方 Share) CREATE SCHEMA shared_sales FROM SHARE provider_instance.sales_share; -- 直接查询共享数据 SELECT * FROM shared_sales.orders LIMIT 10;

常见问题

常见问题 1:跨云/跨服务区共享失败

问题:尝试将阿里云上海实例的数据共享给腾讯云实例。

症状

ADD INSTANCE
ADD INSTANCE
执行成功,但消费方无法访问数据。

解决:数据共享仅支持同云同服务区。跨云场景改用数据同步任务将数据写入消费方实例。

常见问题 2:共享部分数据但共享了整张表

问题:只想共享订单表中某个商家的数据,但直接共享了整张表。

解决:先创建 View 过滤所需数据,再将 View 加入 Share:

CREATE VIEW orders_for_partner AS SELECT * FROM orders WHERE merchant_id = 1001; GRANT SELECT ON VIEW orders_for_partner TO SHARE sales_share;

常见问题 3:消费方复制数据后二次使用

问题:消费方通过

CREATE TABLE AS SELECT
CREATE TABLE AS SELECT
将共享数据复制出去,再二次分享。

解决:Share 本身禁止二次分享,但无法阻止消费方复制数据。提供方需在协议层面约束消费方的数据使用范围,并谨慎选择共享哪些表。

成本影响

存储成本

  • 消费方不产生任何存储费用,数据存储在提供方
  • Share 对象本身只存储元数据,几乎零成本

计算成本

  • 提供方:Share 本身不产生计算费用
  • 消费方:查询共享数据消耗消费方自己的 VCluster CRU,不由提供方承担

生命周期管理

创建 Share → 添加数据对象 → 配置消费方实例 → 消费方创建 Schema → 查询 → 撤销授权 ↓ ↓ ↓ ↓ ↓ ↓ 空 Share GRANT TO SHARE ADD INSTANCE FROM SHARE 只读查询 REVOKE/DROP

-- 从 Share 移除数据对象 REVOKE SELECT ON TABLE orders FROM SHARE sales_share; -- 移除消费方实例 ALTER SHARE sales_share REMOVE INSTANCE partner_instance; -- 删除 Share(消费方的 Schema 将失效) DROP SHARE sales_share; -- 消费方:删除只读 Schema DROP SCHEMA shared_sales;

本章内容

页面说明
数据共享对象模型Share 对象完整说明、核心原理、权限控制
数据共享概念提供方/消费方角色、操作流程、注意事项

相关文档

文档说明
跨账号数据分享指南端到端操作流程
Studio 数据分享通过 Web UI 配置共享
数据共享 SQL 命令CREATE/ALTER/DROP SHARE 完整语法
联系我们
预约咨询
微信咨询
电话咨询