在C中,为什么首选的RDBMS驱动程序实现不同的API,而不是统一的API?

问题描述 投票:1回答:1

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

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

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

谢谢。

c rdbms libpq mysql-connector-c
1个回答
4
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.