2016-03-22 2 views
2

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

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

+0

Работы libpq, ODBC нет? –

ответ

2

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

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

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

Существует также libdbi, который предлагает менее страшный API, чем ODBC.

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

О, и есть ecpg. Не используйте ecpg. Это супер-устаревший язык-интегрированный SQL-инструмент, который существует в основном для упрощения переноса с некоторых других движков баз данных. Не используйте ecpg. В самом деле.

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

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

0

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