PostgreSQL码农集散地

MotherDuck这样分析阿里云OSS存储的数据

文章开始前推荐2个学习环境: 

1、欢迎使用镜像快速体验PostgreSQL/DuckDB强大功能:《最好的PostgreSQL学习镜像》

2、欢迎使用云起实验室: 《免费体验PolarDB开源数据库》

背景

DuckDB支持读写阿里云OSS, 那么作为云服务的MotherDuck是否也支持阿里云OSS呢? 答案当然是可以.

例子

1、参考2篇文档.

《PolarDB-PG | PostgreSQL + duckdb_fdw + 阿里云OSS 实现高效低价的海量数据冷热存储分离》

《DuckDB DataLake 场景使用举例 - aliyun OSS对象存储parquet》(https://github.com/digoal/blog/blob/master/202210/20221026_01.md)

2、如果你自己没有OSS, 又想做这个实验怎么办? 使用chrome打开如下阿里云云起实验, 选择公共资源. 启动实验.

https://developer.aliyun.com/adc/scenario/exp/90b2bceaf9954d6f8780f26a1c913385

在左边的云产品资源中, 记录几个东西

  • AK ID: xxxx

  • AK Secret: xxxx

  • bucket名称: famrhe20240102121144

(实验环境的console界面中操作) 在左边的实验控制台里面打开chrome浏览器(点击界面右边的图标), 输入子用户密码(在实验环境的左边可以获得)后登陆到实验环境的阿里云控制台.

(实验环境的console界面中操作)在实验控制台中打开OSS控制台:

  • https://oss.console.aliyun.com/

找到Bucket列表, 点击 famrhe20240102121144 , 新建test目录.

3、打开 motherduck web版体验平台.

https://app.motherduck.com/

点击Add Cell创建一个会话页面, 在会话页面中点击my_db连接到MotherDuck的数据库my_db.

在会话页面中编辑

-- 设置oss ak id, ak secret, endpoint. 这个设置只能在一个会话中有效, 无法持久化, 如果需要持久化存储请使用create secret语法.    
set s3_access_key_id='xxxx';
set s3_secret_access_key='xxxx';
set s3_endpoint='s3.oss-cn-shanghai.aliyuncs.com';

-- 将数据导入oss
COPY (select id, md5(random()::text) as info, now() as ts from range(0,1000000) as t(id)) TO 's3://famrhe20240102121144/test/test_duckdb1.parquet';

-- 查询存储在OSS中的数据
select count(*),avg(id) from 's3://famrhe20240102121144/test/test_duckdb2.parquet';

-- 将oss中的数据写入到matherduck服务器
create table test as select * from 's3://famrhe20240102121144/test/test_duckdb2.parquet';

Run 正常执行, 表示MotherDuck支持阿里云oss.

或者使用secret管理oss访问密钥.

CREATE SECRET (  
TYPE S3,
S3_ACCESS_KEY_ID 'xxxx',
S3_SECRET_ACCESS_KEY 'xxxx',
S3_REGION 's3.oss-cn-shanghai.aliyuncs.com'
);

-- DROP SECRET (TYPE S3);

参考

https://motherduck.com/docs/getting-started/e2e-tutorial/

https://motherduck.com/docs/integrations/amazon-s3/

《MotherDuck: DuckDB 的ServerLess/NoServer+Shareable data marketing版云服务》

欢迎来参加1.6号上海举办的《国产数据库共话未来趋势》-数据库实践哪家强的沙龙, 现场和大师畅聊技术与人生, 奖品拿到手软, 提前祝大家春节快乐! 

Image

Image

欢迎关注我的github (https://github.com/digoal/blog) , 学习数据库不迷路.  

近期正在写公开课材料, 未来将通过视频号推出, 欢迎关注视频号:

Image