1

在 Java 中,大多数不同的 RDBMS 驱动程序都实现了 JDBC API。

在 Python 中,大多数不同的 RDBMS 驱动程序都实现了 DB-API2。

在 C 中,虽然我们将 ODBC 作为不同 RDBMS 的统一 API,但人们通常更喜欢 RDBMS 特定的 API,例如libpqC 连接器提供的那些(我不确定 sqlite3 与它的 ODBC 对应物)。为什么首选 RDBMS 的驱动程序实现不同的 API,而不是 C 中的统一 API?这样做有什么固有的困难吗?

谢谢。

4

1 回答 1

4

Java 和 Python 等语言在数据库之上提供了更高级别的抽象层,因此可以使用通用接口,并且可以根据需要更改底层数据库。这种灵活性是以不公开供应商特定功能为代价的。

每个供应商提供的 C API 允许使用特定于每个数据库的功能。这意味着供应商锁定,但它也允许您利用这些供应商特定的功能并执行供应商特定的优化。

Java 和 Python 运行时最有可能在内部使用底层 C API。

于 2018-08-30T15:19:47.790 回答