首页 > 数据库 >数据库和对象存储_DuckDB 访问 Minio

数据库和对象存储_DuckDB 访问 Minio

时间:2024-07-15 16:08:57浏览次数:10  
标签:SET Minio httpfs s3 数据库 DuckDB duckdb https

使用 DuckDB 访问 Minio

  以对象存储为中心的世界的数据库
     数据库一直是基于 SAN 的块存储和基于 NAS 的文件存储的主要工作负载,OLAP 数据库领域将在未来几年内转向对象存储优先的定位

在 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()

参考

 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

标签:SET,Minio,httpfs,s3,数据库,DuckDB,duckdb,https
From: https://www.cnblogs.com/ytwang/p/18303358

相关文章

  • 【电商API】缓存数据与数据库保持一致如何实现呢?
    2024年,电商真正跨入了新时代。在这个新时代,工具、方法、体系……都在升级,堪称一日千里。商家如何更好地顺应时代的变化?2024年,我给大家的建议总结为两句话。第一句是借平台的红利;第二句是建立自己的体系。如何利用电商API数据采集接口,完成自己的主流电商数据采集?前言如果项......
  • TimescaleDB时间序列数据库
    TimescaleDB:这是一款支持完整sql开源的时间序列数据库。用处1、数据量庞大2、只做时间索引类的插入3、很少更新数据TimescaleDB的好处:基于时序优化自动分片(自动按时间、空间分片(chunk))全SQL接口支持垂直于横向扩展支持时间维度、空间维度自动分区。空间维度指属性字......
  • MySQL高级应用指南:从数据库设计到高可用架构
    引言欢迎阅读这篇MySQL文章本文旨在帮助你更深入地了解和掌握MySQL数据库的高级应用技术通过一些实际的开发案例和代码示例你将能够更好地运用MySQL进行复杂的数据操作和管理分类教程一数据库设计与优化在设计和优化数据库时需要考虑到表结构(TableStructure)索引(I......
  • sysbench压测数据库
    版本号:sysbench1.1        简介  sysbench是一个基于LuaJIT的可脚本多线程基准测试工具,最常用于数据库基准测试,支持单点读写、随机读写、混合读写等各种测试类型。  sysbench并非通过JDBC的方式连接数据库,而是通过专门的客户端依赖进行。比如MySQL通......
  • JuiceFS、Ceph 和 MinIO 结合使用
    1.流程图将JuiceFS、Ceph和MinIO结合使用,可以充分利用Ceph的分布式存储能力、JuiceFS的高性能文件系统特性,以及MinIO提供的对象存储接口。以下是一个方案,介绍如何配置和部署JuiceFS使用Ceph作为其底层存储,并通过MinIO提供对象存储接口。2.前提条件部署......
  • Python数据库应用
      通过文件操作可以实现简单的数据操作功能,如果要处理的数据量巨大,则需要将数据存储在数据库中。Python支持多种数据库。  本章主要介绍数据库概念以及结构化数据库查询语言SQL,分析并理解Python自带的轻量级关系数据库SQLlite的使用方法(同样用于MySQL数据库)  文......
  • 基于mycat实现数据库的读写分离
    一、mycat分布式存储服务部署1.安装java运行环境(db01)[root@db01~]#yuminstall-yjava2.下载、解压mycat包#上传解压mycat程序包[root@db01~]#tarxfMycat-server-1.6.7.4-release-20200105164103-linux_.tar.gz -C/usr/local/[root@db01~]#ll/usr/local/......
  • java连接Oracle数据库
    第一步引用ojdbc.jar 详见https://www.cnblogs.com/hailexuexi/p/15062168.html注:项目代码换路径后要重新引用 注:编译项目时也要把ojdbc6.jar打到包里 完整的java代码OracleUtil.javapackagecom.JavaRabbitMQToDataBase.dbOracle;importjava.sql.Connectio......
  • 深度解析:分库分表策略在数据库性能优化中的核心作用
        目录分库分表的核心原理分库(Sharding)分表(Partitioning)综合运用与挑战在探讨分库分表的深度理解之前,先回顾一下为什么数据库系统会面临性能瓶颈。随着互联网业务的飞速发展,数据量呈指数级增长,同时高并发的访问需求对数据库的读写性能提出了更高要求。传统的......
  • java 连接 oracle数据库时报错 Oracle JDBC驱动未找到! No suitable driver found for
    在用IDEA编写java连接Oracle时,报错:OracleJDBC驱动未找到!可这部分之前测试是好用。想来想去。哦,我把这个项目代码换过路径,问题就出在这。需要重新引用下  ojdbc6.jar架包 下面是java连接oracle的部分代码ClassNotFoundException可以捕获OracleJDBC驱动未找到的异......