编写新驱动程序

目前,可以使用 C#、C/C++、Go 和 Java 编写新驱动程序。使用 C/C++ 或 Go 编写的驱动程序不仅可以在这两种语言中使用,还可以供 C#、Python、R 和 Ruby 使用。(C# 也可以通过实验性方式将驱动程序导出到上述语言中。)ADBC 的 Rust API 定义尚在开发中,但我们计划使其在这方面与 C#、C/C++ 和 Go 达到同等水平。

目前更推荐使用 Go 语言来编写新驱动程序。C/C++ 在依赖项方面存在一些问题,特别是该生态系统中一些常见的依赖项在加载到 Python 进程或其他环境时往往会引起冲突。(例如,ADBC Flight SQL 驱动程序最初是用 C++ 编写的,但它会与 grpcio 和 pyarrow Python 包发生冲突。)此外,相比 C/C++,打包和分发额外的 Go 库对我们来说也往往更容易。

在 Go 中,有一些可供驱动程序作者使用的框架。go/adbc/driver/internal/driverbase 管理了驱动程序中大部分的样板代码和基础状态管理。go/adbc/pkg 可以为 Go 驱动程序生成 C ABI 包装器的模板。特别是如果计划将驱动程序提交到上游,我们建议驱动程序作者考虑使用这些框架。