基于 Databend 构建数据可信空间展望
随着大数据收集和存储技术的解决,公司和企业的数据量也在不断增加,但只有将更多数据组合起来,才能产生更大的价值。本篇文章结合 Databend 在某省级大数据交易所落地后的经验,探讨对数据交易的理解及可信数据空间做一些展望。。
在数据交易所中,数据通常有几种用途:
- 省厅间各部门间的数据交换
- 与社会上公司的数据服务(如API能力或线下撮合交易)
- 跨省数据交易所间的数据合作, 省和国家数据交易所的数据交换
- 促进跨企业的数据交易或合作
- ...
这些场景用原来传统的技术解决,往往导致参与者陷入无休止的加班和数据质量争论的会议中。因此需要新技术来突破这些限制。 例如,在某省级业务中,人口库数据面临以下情况:
- 出生和死亡类数据归到公安厅
- 学历数据归到教育厅
- 结婚离婚数据归到民政厅
- 就业类数据又归到社保局类
- ... 各部门都希望获得一份完整的数据,最初的解决方案是通过API相互共享数据,这似乎可行,但后来演变为全局汇聚(如省级数据汇聚平台),再进行推送,问题变得复杂:
- 汇聚数据时效性
- 汇聚质量考核
- 推送数据时效性
- 推送数据质量考核 (数据校验工作)
- 每个厅局存储一份认为完整的民生数据,数据非常庞大
这些问题是否有解决方案?答案是肯定的。随着IT基础设施的云化或私有云化,大多数企业和国有企业已经实现:
- 统一的存储: 对象存储
- 统一的计算: k8s 或者说计算虚拟化
- 不同VPC间的网络隔离和加密通信能力
新一代完善的IT基础设施也为上层架构带来了新变化。Databend正是面向这类新的云原生基础架构构建的湖仓一体化平台。下面我们分为两个步骤来讲解一下数据可信空间建设及展望。我们将数据可信空间分为两类: 1. 集团或是省内数据共享 2. 跨集团或是跨省级的数据共享。
集团或是省级内数据共享
这可以视为可信数据空间1.0版本, 目前已经在挺多项目中落地, 也是一个最简单易用的方案。
在基于Databend的存算分离架构中,数据存储在对象存储中,可以基于对象存储的授权,直接将数据注册给Databend平台用户。
如图所示,三个独立的租户,每个租户拥有独立的计算资源和存储资源,数据共享以表为单位,针对每个租户单独执行。 例如,表级授权到租户。
attach table attach_t01
's3://bucket_name/db_id/table_id/ '
connection=(
endpoint_url='https://url',
region='us-east-01',
access_key_id='x',
secret_access_key='x'
);
当租户申请访问相应表时,在对应租户下执行相应的SQL命令即可。
在这种架构下,可以实现一份数据对所有内部租户的共享,例如,人口库数据统一汇聚后, 直接共享给有需求的厅局,从而减少数据推送和核对的工作。
跨集团或是跨省级数据共享
技术永远向前进步,上述方案在实际落地中表现良好。 但为了追求更优的实现,例如,在共享中使用云上的IAM Role方式,实现基于生命周期的授权,是否可以直接基于数据库或数据集进行共享。
这里假设每个独立租户仍有独立的计算资源和存储,但引入了一个统一的元数据集群Databend-meta(即一个统一的共享元数据服务),每个租户位于独立的命名空间。
数据共享和接收共享,抽象为下面的 SQL
- 共享方
create share myshare;
grant usage on database wubx to share myshare;
grant select on table wubx.tb01 to share myshare;
# 限制只有租户 sh10086, fj10086, bj10086 可以访问
alter share myshare add accounts='sh10086,fj10086,bj10086';
- 使用方
create databbase wubx_share from share myshare;
use wubx_share; # 就可以看到共享的表
大致结构如下:
这个方案中,把原表的权限认证,s3 访问信息都存储到 share 这个 object 中, 使用在请求 share 这个对象时,只需要校验存在这个相应的权限即可以使用。但这里最好使用云上的 IAM Role 的方式授权,对 IT 基础有一定的要求。
区别对比
目前 Databend 中两种风格的共享都有实现,第一种方案已经有大量的落地,下面我们对比一下两者的区别。
对比项 | attach table | share |
---|---|---|
部署方式 | 每个租户可拥有独立的databend-meta集群 | 所有租户共享一个databend-meta集群 |
对象存储 | 支持跨对象存储 | 支持跨对象存储 |
共享单位 | 表级 | 数据集粒度 |
权限管理 | 只读,可以全表,字段共享 | 只读,可以针对租户限制,全表,视图,字段共享 |
环境依赖 | 对象存储 | 对象存储 & IAM Role 权限管控 |
WEB 封装 | 简单,针对表共享 | 简单,针对数据集共享 |
Databend 在数据共享这块内部实现了多个版本,进入了多种探索, 目前也有一些落地经验,也欢迎有这方面需求的朋友一起交流探索,一起努力构建一个安全,易用,可信的数据空间。
💬 社区支持
有问题与我们的团队联系:Slack微信:82565387