ODBC v Libpq:PostgreSQL 的 C 库

ODBC v Libpq: C library for PostgreSQL

我将使用 C 库连接和使用 PostgreSQL 数据库,我想知道 ODBC 和 Libpq 的优缺点。据我所知,libpq 似乎更快,但我无法获得任何明确的答案或基准。

此外,是否还有其他库可能比 ODBC/Libpq 更好。

ODBC 如果您想要一个标准适配器对不同的数据库使用类似 API 的话,ODBC 很有用。我个人认为这是一个糟糕的 API,但它已被广泛理解并有据可查。

libpq 更直接地与 PostgreSQL 对话。您可以获得更好的性能,但可能不足以对大多数应用程序产生任何影响,这些应用程序将时间花在查询执行、网络延迟等方面,而不是在客户端库中。

较新版本的 psqlODBC 构建于 libpq 之上,并用作 libpq 的 ODBC 包装器。

还有 libdbi,它提供的 API 没有 ODBC 那么可怕。

为了完整起见,还有服务器后端 SPI,它可以供用 C 编写并加载到 PostgreSQL 服务器的用户定义函数使用。它在服务器扩展和功能之外没有用。

哦,还有 ecpg。不要使用 ecpg。它是一种超级传统语言集成的 SQL 工具,主要用于更轻松地从某些其他数据库引擎移植。不要使用 ecpg。真的。

对于 C++,有 QtSQL 接口(对于 Qt 来说很不寻常,它很糟糕,限制很痛苦,不要使用它)和 libpq++(好的,但基本上没有维护)。

我个人直接编写 libpq 代码,但那是因为我正在处理通常进入 PostgreSQL 自身的代码。如果您无法想象除了 PostgreSQL 以外的任何目标,您可能想要编写 libpq 代码;否则可能将 ODBC 与 psqlODBC 一起使用。

ODBC 是通用的,主要是 MS Windows 数据库访问接口。 Libpq 是本机 PostgreSQL 客户端接口。如果不需要通用接口,请不要使用 ODBC。这是一个老式的不友好设计的库,具有很高的复杂性。与 libpq 相比没有任何优势。