ducklake+minio 系列1

ducklake是duckdb1.3.0提供的新功能,功能类似于apache iceberg以及snowflake产品。

具体介绍可以查看

ducklake 简介

以duckdb的ducklake extension形式提供。

主要包括两部分,元数据和数据(catalog和data)

catalog以关系型数据库提供,现在支持存储在duckdb,sqlite,postgres,mysql中

数据以parquet格式存储,支持放在本地目录,网络目录以及oss(blob storage)中(S3)

具体帮助可以查看官方文档

ducklake帮助

下面测试是将catalog放到postgresql中,数据放到minio中

1. 下载minio,启动后在控制台中创建名字为testbucket的bucket. 并在该桶中创建data_folder的目录,用来存储数据。具体操作不在此详细说明,可以查看minio的帮助文档

2. 在控制台中创建 Access Key

3. duckdb中安装postgres,httpfs,ducklake并加载

4. 在postgresql中创建一个名字为duckdb_catalog的数据库

4. duckdb中创建s3的secret用来链接minio

D CREATE SECRET (
      TYPE s3,
      KEY_ID '2bdJFd2NxgUT7sHk',
      SECRET 'bexDKzaOA3Y6Yh17LA6FD9ADwTMzANtm',
      ENDPOINT '192.168.100.138:9000',
      url_style 'path'
  );
┌─────────┐
│ Success │
│ boolean │
├─────────┤
│ true    │
└─────────┘

5. duckdb中创建ducklake

attach 'ducklake:postgres:dbname=ducklake_catalog port=15432 user=postgres' as my_ducklake  (data_path 's3://testbucket/data_folder');

6. 创建成功后,在postgresql 的ducklake_catalog库中创建了很多ducklake相关的catalog表,这些表就是用来管理后台数据存储中的数据,每个表具体什么作用可以查看

catalog表介绍

7. duckdb中也可以查看到该库的内容

以及现有的所有数据库

my_ducklake就是用户库,__ducklake_metadata_my_ducklake库用来存放catalog表

8. 测试

没有建表的时候,minio中是没有parquet文件的。

通过外部的文件创建一张表,如下

删除一部分记录

原始数据文件并不变,但是会增加一个文件,记录了那些记录被删除了,所以ducklake属于append only类型的数据库

再删除一部分记录

又增加了一个删除文件,但是新增的删除文件中的记录包括了上一次删除的记录,这主要是为了支持删除snapshot的功能,在此不在介绍。

更新一部分记录

新增加了一个包含更新内容的parquet和一个删除文件,也就是update操作转换成append only就是先 删除数据(增加删除文件),再增加数据(数据文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值