Contents - Arrow 中文 Menu - Arrow 中文 Expand - Arrow 中文 Light mode - Arrow 中文 Dark mode - Arrow 中文 Auto light/dark, in light mode - Arrow 中文 Auto light/dark, in dark mode - Arrow 中文 跳到内容
    ADBC 20 文档
    Light Logo Dark Logo
    ADBC 20 文档
    • 常见问题 (FAQ)
    • 词汇表
    • 索引

    支持的环境

    • C/C++
      • 快速入门
      • 驱动程序管理器
      • 并发和线程安全
      • 驱动程序示例
      • 静态链接
      • C/C++ API 参考
    • C#/.NET
    • Go
    • Java
      • 快速入门
      • 驱动程序管理器
      • Java API 参考
    • Python
      • 快速入门
      • 驱动程序管理器
      • Python API参考
        • adbc_driver_manager
        • adbc_driver_bigquery
        • adbc_driver_flightsql
        • adbc_driver_postgresql
        • adbc_driver_snowflake
        • adbc_driver_sqlite
      • Python 指南
        • DBAPI/驱动程序管理器食谱
        • Flight SQL 食谱
        • PostgreSQL 食谱
        • SQLite 食谱
    • R
    • Rust
      • 快速入门
      • 驱动程序管理器
      • Rust API 参考

    驱动程序

    • 安装
    • 驱动程序实现状态
    • DuckDB 支持
    • Flight SQL 驱动程序
    • JDBC 适配器
    • PostgreSQL 驱动程序
    • Snowflake 驱动程序
    • SQLite 驱动程序
    • 编写新驱动程序

    规范

    • ADBC API 标准
    • 版本控制和兼容性
    • 与其他 API 的比较
    • 驱动程序和驱动程序管理器如何协同工作
    • ADBC 驱动程序管理器和清单
    • 相关工作

    开发

    • 贡献
    • 每晚发布的包
    • 版本控制
    • 发布管理指南
    返回顶部
    查看此页面
    编辑此页面

    相关工作¶

    最初的提案中包含一份对现有解决方案和系统的调查,下文部分重现了该调查以供参考,但请注意,描述仅尽力保持最新。

    现有的数据库客户端 API¶

    Arrow Flight SQL

    一个基于 Arrow Flight 构建的标准,定义了如何使用 Flight 与数据库通信、检索元数据、执行查询等。它提供了 C++ 和 Java 语言的单一客户端,可与任何实现该协议的数据库服务器通信。它的 API 表面(而非 API 设计)以 JDBC 和 ODBC 为蓝本。

    R 的 DBI

    一个用于数据库访问的 R 包/生态系统。它为特定数据库提供了一个带有“后端”的单一接口。虽然是面向行的,但与 Arrow 的集成正在考虑中,包括与 ADBC 几乎相同的想法的草图。

    JDBC

    一个用于数据库访问的 Java 库,提供基于行的 API。它为特定数据库提供了一个带有驱动程序的单一接口。

    ODBC

    ISO/IEC 发布的一个与语言无关的数据库访问标准,与 Microsoft 相关。在功能上,它与 JDBC 相似(实际上 JDBC 可以包装 ODBC 驱动程序),但它通过获取列值缓冲区(有一些注意事项)提供列式数据支持。它为特定数据库提供了一个带有驱动程序的单一 C 接口。

    PEP 249 (DBAPI 2.0)

    一个用于数据库访问的 Python 标准,提供基于行的 API。它不是一个单独的包,而是一组由包实现的接口。

    现有库¶

    这些库要么 1) 为特定系统实现列式数据访问;要么 2) 可以用于实现此类访问。

    Arrow Flight

    一个 RPC 框架,针对传输 Arrow 记录批次进行了优化,具有特定于应用程序的扩展点,但没有任何更高级别的语义。

    Arrow JDBC

    Arrow/Java 的一个 Java 子模块,它使用 JDBC API 生成 Arrow 数据。在内部,它一次只能读取一行数据。

    arrow-odbc

    一个 Rust 社区项目,它使用 ODBC API 生成 Arrow 数据,通过 ODBC 基于缓冲区的 API 执行批量复制。(另请参阅:Turbodbc。)

    Arrowdantic

    Rust 中 ODBC<>Arrow 实现的 Python 绑定。

    pgeon

    一个客户端,它手动解析 Postgres 线缆格式并生成 Arrow 数据,绕过 JDBC/ODBC。虽然它试图优化这种情况,但 Postgres 线缆协议仍然是面向行的。

    Turbodbc

    一套 Python ODBC 绑定,实现 PEP 249,它还提供 API 以 Arrow 批次的形式获取数据,并在内部优化转换。

    论文¶

    Raasveldt, Mark 和 Hannes Mühleisen。“Don’t Hold My Data Hostage - A Case for Client Protocol Redesign”。收录于 Proceedings of the VLDB Endowment,第 1022–1033 页,2017 年。

    下一页
    贡献
    上一页
    ADBC 驱动管理器和清单
    版权所有 © 2022–2025 Apache 软件基金会。Apache Arrow、Arrow、Apache、Apache 羽毛徽标和 Apache Arrow 项目徽标是 Apache 软件基金会在美国和其他国家/地区的注册商标或商标。
    使用 Sphinx 和 @pradyunsg 的 Furo 制作
    在此页面上
    • 相关工作
      • 现有的数据库客户端 API
      • 现有库
      • 论文