В Си, почему драйверы предпочитаемых СУБД реализуют разные API вместо единого API? - PullRequest
0 голосов
/ 30 августа 2018

В Java в большинстве разных драйверов СУБД реализован JDBC API.

В Python DB-API2 в основном используют разные драйверы СУБД.

В C, хотя у нас есть ODBC как унифицированный API для разных RDBMS ', люди обычно предпочитают API, специфичные для RDBMS, такие как предоставляемые libpq и C коннектором ( Я не уверен насчет sqlite3 против ODBC). Почему драйверы предпочитаемой СУБД реализуют другой API, а не унифицированный API в C? Есть ли какая-то внутренняя сложность сделать это?

Спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

Такие языки, как Java и Python, обеспечивают уровень абстракции более высокого уровня по сравнению с базами данных, так что можно использовать общий интерфейс и при необходимости изменить базовую базу данных. Такая гибкость достигается за счет того, что функциональность конкретного поставщика не раскрывается.

API C, предоставляемые каждым поставщиком, позволяют использовать функциональные возможности, специфичные для каждой базы данных. Это означает, что поставщик заблокирован, но он также позволяет вам использовать эти специфичные для поставщика функции и выполнять оптимизацию для конкретного поставщика.

Среды выполнения Java и Python, скорее всего, используют внутренние API-интерфейсы C для внутреннего использования.

...