使用 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