#iceberg #catalog #rest #specification #axum #server

iceberg-catalog

基于 axum 和 iceberg-rust 的 Iceberg Catalog REST API 服务器实现

1 个不稳定版本

0.0.0 2024年6月13日

#14#iceberg

Apache-2.0

5KB

Iceberg 目录 - 冰山之尖

License

这是 TIP:基于 Apache Iceberg REST 目录规范的 Rust 原生实现,基于 apache/iceberg-rust

范围和特性

The Iceberg Protocol (TIP) 基于 REST 已成为开放 Lakehouses 中目录的标准。它原生支持多表提交、服务器端去冲突等功能。它可以说是冰山之尖。

我们开始这个实现,因为我们缺少自定义性、对本地部署的支持以及对我们来说在现有的 Iceberg 目录中很重要的其他功能。以下是我们在这个实现中的一些重点:

  • 可定制:我们的实现旨在扩展。我们公开了数据库实现、秘密、授权、事件发布和合同验证作为接口(特质)。这允许您利用您公司的任何访问管理系统,或者将更改事件流式传输到任何您了解 API 的系统 - 只需实现少量方法。请参阅自定义指南以获取更多详细信息。
  • 更改事件:内置支持发出更改事件(CloudEvents),这使您能够对表中发生的任何更改做出反应。
  • 更改审批:更改也可以由外部系统禁止。这可以用来禁止更改那些会破坏数据合同、质量 SLO 等的表。只需通过我们的 ContractVerification 特质与您自己的更改审批集成即可。
  • 多租户能力:我们的目录的单次部署可以为多个项目提供服务 - 所有这些都使用单个入口点。所有 Iceberg 和 Warehouse 配置在仓库之间完全分离。
  • 用 Rust 编写:单个 18Mb 的全功能二进制文件 - 不需要 JVM 或 Python 环境。
  • 存储访问管理:内置 S3-Signing,支持自托管以及 AWS S3 而无需与客户端共享 S3 凭据。我们还在开发 vended-credentials
  • 经过良好测试:与 sparkpyiceberg(从 pyiceberg 0.7.0 开始支持与这个目录的 S3 支持)进行了集成测试。
  • 高可用性和水平可扩展性:没有本地状态 - 目录可以水平扩展且无需停机即可更新。
  • 细粒度访问控制 (FGA)(即将推出):简单的基于角色的访问控制对于许多快速发展的数据与分析项目来说是不够的。我们正在利用基于谷歌的Zanzibar 论文OpenFGA来实现授权。如果您的公司已经实施了不同的系统,您可以通过在AuthZHandler特质中实现一些方法来与之集成。

请查看以下当前支持的特性的概述。如果您缺少某些内容,也请检查问题。

正在进行中

我们正在努力发布这个crate。在此期间,您可以直接从GitHub获取代码。

无运行时依赖