資料庫-SQL_DuckDB 訪問 Minio-阿里oss-華為obs等物件儲存

辰令發表於2024-07-15

使用 DuckDB 訪問 Minio

  以物件儲存為中心的世界的資料庫
     資料庫一直是基於 SAN 的塊儲存和基於 NAS 的檔案儲存的主要工作負載,OLAP 資料庫領域將在未來幾年內轉向物件儲存優先的定位
      s3:://  替換了myminio//  myminio// 等價於host的配置endpoints
在 DuckDB 例項的生命週期記憶體儲在記憶體中。持久密碼以未加密的二進位制格式儲存在 ~/.duckdb/stored_secrets目錄中。
  在啟動 DuckDB 時,會從該目錄讀取持久密碼並自動載入。

 SELECT extension_name, installed, description FROM duckdb_extensions();
 
 The httpfs filesystem is tested with AWS S3, Minio, Google Cloud
 
 1.安裝 Installing DuckDB 
 2.安裝 Installing httpfs 擴充套件
       
	   https://extensions.duckdb.org/v1.0.0/linux_amd64_gcc4/httpfs.duckdb_extension.gz
	   gzip -dk httpfs.duckdb_extension.gz
	   INSTALL 'path/to/httpfs.duckdb_extension';
 3.安裝 Installing MinIO
     設定 s3_use_ssl  true的話是https false 是http
 4.執行命令
 INSTALL httpfs;
 LOAD httpfs;
 SET s3_region='us-east-1';
 SET s3_url_style='path';
 SET s3_endpoint='play.min.io:9000';
 SET s3_access_key_id='***' ;
 SET s3_secret_access_key='***';
 
CREATE TABLE bookings AS SELECT * FROM read_csv_auto('s3://bookings/hotel_bookings.csv', all_varchar=1); 
SELECT COUNT(*) AS TotalRows from bookings;

python執行

import pandas as pd
import duckdb

query = """
    INSTALL httpfs;
    LOAD httpfs;
    SET s3_region='us-west-2';
    SET s3_access_key_id='key';
    SET s3_secret_access_key='secret';
	#SET s3_use_ssl = false;
    SELECT   FROM read_parquet('s3://bucket/folder/file.parquet') 
	""" 
cursor = duckdb.connect()
cursor.execute(query).df()

Secrets manager

從0.10.0版本, DuckDB有了 a Secrets manager.
CREATE SECRET secret1 (
 TYPE S3,
 URL_STYLE 'path',
 KEY_ID 'AKIAIOSFODNN7EXAMPLE',
 SECRET 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
 USE_SSL 'false',
 REGION 'us-east-1'
 ENDPOINT ,
 ); 

 CredentialProviderChain().
 
 支援的資料格式
  CSV and Parquet  

國內物件儲存

   騰訊雲物件儲存 COS(Cloud Object Storage) 
   華為的obs   把URL中的obs:// 替換為 s3:
   阿里的oss 
   百度雲BOS	  

ATTACH 語句

可用於將新資料庫附加到系統中。預設情況下,將附加一個本地 DuckDB 檔案
 也可以把 Secrets manager 附加到一個本地duckdb檔案中

參考

 https://blog.minio.org.cn/databases-for-object-storage/
 https://duckdb.org/docs/extensions/httpfs/s3api.html
 https://blog.min.io/duckdb-and-minio-for-a-modern-data-stack/
 https://github.com/duckdb/duckdb/tree/main/extension
 https://duckdb.org/docs/extensions/working_with_extensions.html
 https://www.modb.pro/db/1759396805863362560
 https://www.cnblogs.com/ytwang/p/18233176
 資料庫_duckdb_本地訪問遠端資料_ aws s3 https://www.cnblogs.com/ytwang/p/17359906.html
 DuckDB and MinIO for a Modern Data Stack

相關文章