ODBC v Libpq: библиотека C для PostgreSQL

Я собираюсь использовать библиотеку C для подключения и использования базы данных PostgreSQL, мне было интересно, каковы плюсы и минусы ODBC и Libpq. Насколько я могу судить, libpq кажется быстрее, но я не смог получить четких ответов или тестов.

Кроме того, есть ли какая-либо другая библиотека, которая может быть лучше, чем ODBC/Libpq.


person RMT    schedule 22.03.2016    source источник
comment
libpq работает, а ODBC нет?   -  person Antti Haapala    schedule 22.07.2017


Ответы (2)


ODBC удобен, если вам нужен стандартный адаптер, поддерживающий одинаковый API для разных баз данных. Лично я считаю, что это ужасный API, но он широко известен и хорошо задокументирован.

libpq напрямую взаимодействует с PostgreSQL. Вы можете повысить производительность с его помощью, но, вероятно, недостаточно, чтобы это имело какое-либо значение для большинства приложений, которые тратят время на выполнение запросов, задержку в сети и т. д., а не в клиентской библиотеке.

Более новые версии psqlODBC построены на libpq и служат оболочкой ODBC для libpq.

Есть также libdbi, предлагающий менее ужасный API, чем ODBC.

Для полноты картины есть также серверный SPI, который может использоваться определяемыми пользователем функциями, написанными на C и загружаемыми на сервер PostgreSQL. Это бесполезно вне расширений и функций сервера.

О, и есть ЭКПГ. Не используйте ЭКПГ. Это сверхустаревший инструмент с интегрированным языком SQL, который существует в основном для упрощения переноса с некоторых других механизмов баз данных. Не используйте ЭКПГ. Действительно.

Для C++ есть интерфейс QtSQL (необычно для Qt, он ужасен и болезненно ограничен, не используйте его) и libpq++ (хорошо, но в значительной степени не поддерживается).

Лично я пишу код libpq напрямую, но это потому, что я работаю над кодом, который обычно сам входит в PostgreSQL. Если вы не можете себе представить, что когда-либо захотите использовать что-либо, кроме PostgreSQL, вы можете написать код libpq; в противном случае, возможно, используйте ODBC с psqlODBC.

person Craig Ringer    schedule 22.03.2016

ODBC — это универсальный интерфейс доступа к базе данных MS Windows. Libpq — это собственный клиентский интерфейс PostgreSQL. Если вам не нужен универсальный интерфейс, не используйте ODBC. Это старая школьная недружественная библиотека с высокой сложностью. Нет никакого преимущества перед libpq.

person Pavel Stehule    schedule 22.03.2016