Skip to main content

基于 Databend 构建数据可信空间展望

· 8 min read
wubx
Data AI

随着大数据收集和存储技术的解决,公司和企业的数据量也在不断增加,但只有将更多数据组合起来,才能产生更大的价值。本篇文章结合 Databend 在某省级大数据交易所落地后的经验,探讨对数据交易的理解及可信数据空间做一些展望。。

在数据交易所中,数据通常有几种用途:

  1. 省厅间各部门间的数据交换
  2. 与社会上公司的数据服务(如API能力或线下撮合交易)
  3. 跨省数据交易所间的数据合作, 省和国家数据交易所的数据交换
  4. 促进跨企业的数据交易或合作
  5. ...

这些场景用原来传统的技术解决,往往导致参与者陷入无休止的加班和数据质量争论的会议中。因此需要新技术来突破这些限制。 例如,在某省级业务中,人口库数据面临以下情况:

  1. 出生和死亡类数据归到公安厅
  2. 学历数据归到教育厅
  3. 结婚离婚数据归到民政厅
  4. 就业类数据又归到社保局类
  5. ... 各部门都希望获得一份完整的数据,最初的解决方案是通过API相互共享数据,这似乎可行,但后来演变为全局汇聚(如省级数据汇聚平台),再进行推送,问题变得复杂:
  6. 汇聚数据时效性
  7. 汇聚质量考核
  8. 推送数据时效性
  9. 推送数据质量考核 (数据校验工作)
  10. 每个厅局存储一份认为完整的民生数据,数据非常庞大

这些问题是否有解决方案?答案是肯定的。随着IT基础设施的云化或私有云化,大多数企业和国有企业已经实现:

  1. 统一的存储: 对象存储
  2. 统一的计算: k8s 或者说计算虚拟化
  3. 不同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

  1. 共享方
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';
  1. 使用方
create databbase wubx_share from share myshare;

use wubx_share; # 就可以看到共享的表

大致结构如下:

这个方案中,把原表的权限认证,s3 访问信息都存储到 share 这个 object 中, 使用在请求 share 这个对象时,只需要校验存在这个相应的权限即可以使用。但这里最好使用云上的 IAM Role 的方式授权,对 IT 基础有一定的要求。

区别对比

目前 Databend 中两种风格的共享都有实现,第一种方案已经有大量的落地,下面我们对比一下两者的区别。

对比项attach tableshare
部署方式每个租户可拥有独立的databend-meta集群所有租户共享一个databend-meta集群
对象存储支持跨对象存储支持跨对象存储
共享单位表级数据集粒度
权限管理只读,可以全表,字段共享只读,可以针对租户限制,全表,视图,字段共享
环境依赖对象存储对象存储 & IAM Role 权限管控
WEB 封装简单,针对表共享简单,针对数据集共享

Databend 在数据共享这块内部实现了多个版本,进入了多种探索, 目前也有一些落地经验,也欢迎有这方面需求的朋友一起交流探索,一起努力构建一个安全,易用,可信的数据空间。

💬 社区支持
有问题与我们的团队联系:Slack

微信:82565387