湖仓一体_DuckDB-extension_ducklake_数据湖仓

数据湖

 Lakehouse(数据湖仓)是一种融合了数据湖(Data Lake)与数据仓库(Data Warehouse)优势的新型数据架构 
       数据湖的灵活存储能力与数据仓库的高效分析功能的现代数据架构
	湖仓一体
	   附加事务层 有时也称为元数据层,因为为了保持一致性, 它提供与事务相关的元数据
	
       存储层 主要由三个组件组成——云存储、开放的文件格式(open file format)和开放的表格式(open table format)。
            原始数据以文件的形式存储在像阿里云OSS、AWS S3 和 Azure blob storage 等对象存储系统上 		   
湖仓一体 主要需要具备汇、存、算、管、服五种核心能力
         湖仓 集成能力-统一管理外部数据源
		       处理不同数据源的异构性等问题
         湖仓 存储能力	计算能力	
         湖仓 管理能力  服务能力  
		      如何实现数据的高效存储和访问、如何保障数据的安全性和隐私性、如何实现数据质量的提升和管理			 

数据仓库

	 数据仓库的高效分析功能
	    结构化的数据可以通过ETL来导入数据仓库,用户可以方便地接入报表系统以及BI系统

数据湖

数据湖 Lakehouse
   Data Lake 三剑客——Delta、Hudi、Iceberg
01.数据存储中间层,其数据管理的功能均是基于一系列的 meta 文件。
        meta 文件的角色类似于数据库的 catalog/wal,起到 schema 管理、事务管理和数据管理的功能
        Meta 文件包含有表的 schema 信息。因此系统可以自己掌握 Schema 的变动,提供 Schema 演化的支持。Meta 文件也有事务(transaction) transaction log 的功能(需要文件系统有原子性和一致性的支持)。所有对表的变更都会生成一份新的 meta 文件,于是系统就有了 ACID 和多版本的支持

计算存储分离
    BigQuery  Snowflake
数据存储在对象存储
 	Apache Iceberg and Linux Foundation Delta Lake
      Iceberg是一种开放的数据湖表格式 是大型分析型数据集上的一个开放式表格式
	  Delta 的定位是流批一体的 Data Lake 存储层,支持 update/delete/merge
存储格式开放性	
    blob stores  
ACID
 计算与存储的解耦
    1.上层计算引擎(Flink、Spark、Presto、Hive等)
    2. Data Lake 数据存储中间层
    3.下层的存储介质(HDFS、S3、OSS等)、文件格式(Parquet、Avro、ORC等)
Base 数据(即存量数据)和 Change 数据(即增量数据或实时数据)     
DuckLake 实际上将数据架构中的关注点进一步分离为三个部分:存储、计算和元数据管理。

数据系统 围绕着基于 Parquet 和 S3 构建的原始数据湖

ducklake

  数据底座

    不依赖对象存储的元数据,而是由自己独立的元数据存储来承担所有的元数据请求
    存算分离的场景下。存算分离的架构要考虑缓存功能,不管是元数据的缓存,还是数据的缓存都是有必要的
  iceberg	Adds support for Apache Iceberg
  delta	 	Adds support for Delta Lake
下载duckdb  
    https://github.com/duckdb/duckdb/releases/download/v1.3.0/duckdb_cli-linux-amd64.zip
	https://github.com/duckdb/duckdb/releases/download/v1.3.0/duckdb_cli-linux-arm64.zip
	
下载拓展库
    https://extensions.duckdb.org/v1.3.0/linux_amd64/httpfs.duckdb_extension.gz	
    ~/.duckdb/extensions/v1.3.0/linux_arm64_gcc4/ 
	~/.duckdb/extensions/duckdb_version/platform_name/
	 https://extensions.duckdb.org/v1.3.0/linux_amd64/spatial.duckdb_extension.gz
	 
打开duckdb
 在duckdb的界面
   INSTALL '/opt/data/spatial.duckdb_extension';
   LOAD spatial;

加载扩展库
    DuckDB扩展是使用gzip格式压缩的,如果你想手动下载它们,你需要先解压缩它们,然后才能加载它们
	   gzip -dk spatial.duckdb_extension.gz
	   
	安装后可以直接加载
     不安装需要给出加载的地址: Loading Extension from a Path

windows 中的duckdb

	  .\.duckdb\extensions\v1.3.0\windows_amd64
	                              osx_arm64
                                  linux_amd64_gcc4
                                   linux_amd64								  
        ~/.duckdb/extensions/v1.3.0/linux_amd64

使用ducklake

基于纯 SQL 构建的全新 Lakehouse 格式的原理和设计
 ATTACH DuckDB 中的命令来初始化一个 DuckLake。例如:
    ##  DuckDB 中创建一个名为 的新附加数据库my_ducklake
	## 元数据表存储在 metadata.ducklake 文件
    ATTACH 'ducklake:metadata.ducklake' AS my_ducklake;	
	
	或者
	 ATTACH 'ducklake:metadata.ducklake' AS my_ducklake2 (DATA_PATH '/opt/duckdb/data_sets');
     USE my_ducklake2;

    ##增删
	CREATE TABLE my_ducklake.demo (i INTEGER);
    INSERT INTO  my_ducklake.demo VALUES (42), (43);
    DELETE FROM  my_ducklake.demo WHERE i = 43;		
	 

    ## 包含数据的 Parquet 文件存储在 data_files 当前工作目录下的 文件夹中 Parquet 文件
	 FROM glob('metadata.ducklake.files/*');

    ##duckLake支持时间旅行,我们可以使用该ducklake_snapshots()功能查询可用的快照。
	## 快照时间戳 版本号:只需使用TIMESTAMP而不是VERSION。  snapshot_id  snapshot_time  schema_version  changes
	## 函数查看版本之间发生了什么变化ducklake_table_changes()

     FROM ducklake_snapshots('my_ducklake');
	 
	 FROM my_ducklake.demo AT (VERSION => 2);
	 
	 FROM ducklake_table_changes('my_ducklake', 'main', 'demo', 2, 3);
     		 
	##隐式事务
    ##显式事务  用BEGIN TRANSACTION /  dCOMMIT  / ROLLBACK/	


数据库管理的快照在内的所有元数据,存储在Parquet文件
         Parquet files on storage, with all metadata including Snapshots managed by the database	   

参考

https://extensions.duckdb.org/v1.2.0/linux_amd64_gcc4/ducklake.duckdb_extension.gz
https://duckdb.org/docs/stable/core_extensions/ducklake.html
https://github.com/duckdb/ducklake
duckdb 历史版本 https://duckdb.org/release_calendar
https://dev.to/sagara/ducklake-first-impressions-getting-started-with-duckdbs-database-managed-lakehouse-4j3a
posted @ 2025-05-28 18:03  辰令  阅读(411)  评论(0)    收藏  举报