PostgreSQL码农集散地

DuckDB官方推出"社区扩展插件市场", 未来可期

文中参考文档点击 阅读原文 打开, 同时推荐2个学习环境:

1、懒人Docker镜像, 已打包200+插件: 《最好的PostgreSQL学习镜像 》

2、有web浏览器就能用的云起实验室: 《免费体验PolarDB开源数据库 》 3、PolarDB开源数据库内核、最佳实践等学习图谱:  https://www.aliyun.com/database/openpolardb/activity 关注公众号, 持续发布PostgreSQL、PolarDB、DuckDB等相关文章.

DuckDB官方推出"社区扩展插件市场", 未来可期

背景

原文: https://duckdb.org/2024/07/05/community-extensions.html

PostgreSQL也是一个扩展能力非常强的数据库, 有很多开源或商业插件, 但是没有一个官方集中的插件市场, 使得找插件非常的麻烦, 例如有pgxn.org, github, 有的插件则放在自己独立的官网.

  • 《DB吐槽大会,第36期 - PG 没有官方插件市场》

没有官方认可的插件市场可能带来哪些问题?

  • 找插件比较麻烦
  • 插件的代码、文档等可能不够规范
  • 容易出现重复功能的插件
  • 插件难以吸引更多开发者一起贡献, 导致一些插件慢慢死去
  • 插件下载等统计数据没有, 很难做热度排名
  • 没有官方市场背书, 用户不一定敢使用. (不对插件的代码负责, 但可以定义一些规则, 对于违反规则的插件有权利下线等.)
  • 插件不够集中, 导致流量要自己去挣, 导致插件开发者变现能力弱

DuckDB 官方推出社区扩展市场, 是非常明智的决定

  • https://community-extensions.duckdb.org/index.html

DuckDB安装官方插件比较简单

INSTALL spatial; -- once  
LOAD    spatial; -- on each use  
安装非官方插件则需要设置一个参数 allow_unsigned_extensions ;

对于用户来说,这个社区插件存储库可以直接从 DuckDB SQL 提示符轻松发现、安装和维护社区扩展。对于开发人员来说,它大大简化了扩展的发布过程。

用户体验

以h3扩展作为示例。此扩展实现了地理空间数据的分层六边形索引。

使用 DuckDB 社区扩展存储库,您现在可以h3按如下方式安装和加载扩展:

INSTALL h3 FROM community;  
LOAD h3;  

然后,您就可以立即开始使用它。请注意,示例数据为 500 MB:

SELECT  
    h3_latlng_to_cell(pickup_latitude, pickup_longitude, 9) AS cell_id,  
    h3_cell_to_boundary_wkt(cell_id) AS boundary,  
    count() AS cnt  
FROM read_parquet('https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet')  
GROUP BY cell_id  
HAVING cnt > 10;  

加载时,会检查扩展的签名,以确保平台和版本兼容,并验证二进制文件的来源是否是社区扩展存储库。扩展针对 Linux、macOS、Windows 和 WebAssembly 进行构建、签名和分发。这使得使用版本 1.0.0 和即将推出的版本的任何 DuckDB 客户端都可以使用扩展。

该h3扩展的文档可在: https://community-extensions.duckdb.org/extensions/h3.html 找到。

开发人员体验

从开发人员的角度来看,社区扩展插件存储库执行发布扩展所需的步骤,包括为所有相关平台构建扩展、签署扩展二进制文件并从存储库提供它们。

对于的维护者h3来说,发布过程需要执行以下步骤:

发送一个带有元数据文件的 PR,description.yml其中包含扩展的描述:

extension:  
  name: h3  
  description: Hierarchical hexagonal indexing for geospatial data  
  version: 1.0.0  
  language: C++  
  build: cmake  
  license: Apache-2.0  
  maintainers:  
    - isaacbrodsky  
  
repo:  
  github: isaacbrodsky/h3-duckdb  
  ref: 3c8a5358e42ab8d11e0253c70f7cc7d37781b2ef  
CI 将构建并测试扩展。CI 执行的检查与 extension-template 存储库一致,因此可以独立进行迭代。

等待 DuckDB 社区扩展存储库维护人员的批准并等待构建过程完成。

已发布的扩展

为了证明发布扩展是可行的,我们联系了几位关键扩展的开发人员。在发布这篇博文时,DuckDB 社区扩展存储库已经包含以下扩展。

Name Description
chsql ClickHouse SQL Macros for DuckDB
crypto Cryptographic hash functions and HMAC
duckpgq Extension that adds support for SQL/PGQ and graph algorithms
evalexpr_rhai Evaluate the Rhai scripting language in DuckDB
h3 Hierarchical hexagonal indexing for geospatial data
lindel Linearization/Delinearization, Z-Order, Hilbert and Morton Curves
prql Support for PRQL, the Pipelined Relational Query Language
quack Provides a hello world example demo
scrooge Provides functionality for financial data-analysis, including data scanners for the Ethereum Blockchain and Yahoo Finance
shellfs Allow shell commands to be used for input and output
ulid ULID data type for DuckDB

DuckDB Labs 和 DuckDB Foundation 不会审查社区扩展中的代码,因此无法保证 DuckDB 社区扩展可以安全使用。可以使用以下单向配置选项明确禁用社区扩展的加载:

SET allow_community_extensions = false;  

有关更多详细信息,请参阅文档的“安全 DuckDB”页面 https://duckdb.org/docs/operations_manual/securing_duckdb/securing_extensions.html#community-extension



本期彩蛋-招商中,有需要的小伙伴可联系嵌入...


文章中的参考文档请点击 阅读原文 获得.
欢迎关注我的github (https://github.com/digoal/blog) , 学习数据库不迷路.  近期正在写公开课材料, 未来将通过视频号推出, 欢迎关注视频号: