用于 DuckDB 的 Airport 扩展
[正文内容]
用于 DuckDB 的 Airport 扩展
这是一个预发布文档,可能会发生更改。 Airport 将在 DuckDB 1.3.0 发布后发布。
- Extension API
- Catalog Integration
- Server Development
- Basics
- Catalog Integration
- Predicate Pushdown
- Authentication
- Row and Column Level Filtering
- Time Travel
- Client Versioning
- Data Types
- Request Headers
- RPC Actions
- add_column
- add_constraint
- add_field
- catalog_version
- change_column_type
- column_statistics
- create_schema
- create_table
- create_transaction
- drop_not_null
- drop_schema
- drop_table
- endpoints
- flight_info
- list_schemas
- remove_column
- remove_field
- rename_column
- rename_field
- rename_table
- set_default
- set_not_null
- table_function_flight_info
- FAQ
页面内容
用于 DuckDB 的 Airport 扩展
Airport 扩展为 DuckDB 带来了 Arrow Flight 支持,使 DuckDB 能够通过 Arrow Flight 服务器查询、修改和存储数据。 DuckDB 扩展是一个插件,通过添加新功能来扩展 DuckDB 的核心功能。
要了解开发此扩展的理由,请查看创建扩展的动机。
Getting started
Airport 扩展是一个 DuckDB community extension。 要安装它,请在 DuckDB 中运行以下 SQL:
INSTALL airport FROM community;
要加载扩展,您可以执行:
LOAD airport;
如果您希望从源代码构建扩展,请参阅这些说明。
Airport 扩展可以做什么而 DuckDB 现在做不到的?
通过 Airport 扩展,您可以:
- 查询 DuckDB 通常无法访问的数据——要么因为它不是表格的,要么是因为它采用不受支持的格式。 甚至外部 API。 这完全取决于服务器允许什么。
- 添加 DuckDB 中没有的自定义 scalar 或 table returning SQL 函数。
- 为 DuckDB 提供远程执行的用户定义函数 (UDF)。
- 提供具有细粒度访问控制的数据服务,根据用户权限过滤行和列。
- 访问和提供 Data-as-a-Service。
什么是 Arrow Flight?
来自 Apache Arrow 文档:
Arrow Flight 是一个基于 Apache Arrow 的高性能数据服务的 RPC 框架,构建在 gRPC 和 Arrow IPC format 之上。
Flight 围绕 Arrow 记录批处理流进行组织,这些批处理可以从另一个服务下载或上传到另一个服务。 一组元数据方法提供流的发现和自省,以及实现特定于应用程序的方法的能力。
方法和消息线路格式由 Protobuf 定义,从而可以与可能单独支持 gRPC 和 Arrow 但不支持 Flight 的客户端进行互操作。 但是,Flight 实现包括进一步的优化,以避免 Protobuf 使用中的开销(主要围绕避免过多的内存复制)。
什么是 Apache Arrow “Flight”?
Apache Arrow flight(以下简称“flight”)是可以通过 Apache Arrow Flight RPC 框架访问的数据源或目标。 每个 flight 都有一个模式和一个或多个端点,这些端点可以提供一个或多个位置。
您可以将 flight 视为共享相同模式的文件集合,甚至更适合于存储在远程服务器上的数据库表。 Apache Arrow Flight 服务器通常提供许多不同的 flight。
Airport 如何与 DuckDB 配合使用?
Airport 是一个用 C++ 编写的 DuckDB 1.3.0 或更高版本的扩展,它使用 Apache Arrow 库。
如何构建 Arrow Flight Server?
首先阅读实现 Arrow Flight Server 的基础知识。
会议演讲
Rusty Conover 在 DuckCon #6 上发表的题为 “Airport For DuckDB: Letting DuckDB take flight.” 的演讲中介绍了 Airport 扩展。
脚注
- 记录批处理是与模式匹配的等长数组的集合。↩︎