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) , 学习数据库不迷路. 近期正在写公开课材料, 未来将通过视频号推出, 欢迎关注视频号: