Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 Java 中,大多数不同的 RDBMS 驱动程序都实现了 JDBC API。
在 Python 中,大多数不同的 RDBMS 驱动程序都实现了 DB-API2。
在 C 中,虽然我们将 ODBC 作为不同 RDBMS 的统一 API,但人们通常更喜欢 RDBMS 特定的 API,例如libpq和C 连接器提供的那些(我不确定 sqlite3 与它的 ODBC 对应物)。为什么首选 RDBMS 的驱动程序实现不同的 API,而不是 C 中的统一 API?这样做有什么固有的困难吗?
谢谢。
Java 和 Python 等语言在数据库之上提供了更高级别的抽象层,因此可以使用通用接口,并且可以根据需要更改底层数据库。这种灵活性是以不公开供应商特定功能为代价的。
每个供应商提供的 C API 允许使用特定于每个数据库的功能。这意味着供应商锁定,但它也允许您利用这些供应商特定的功能并执行供应商特定的优化。
Java 和 Python 运行时最有可能在内部使用底层 C API。