2016-03-22 6 views
2

私はCライブラリを使用してPostgreSQLデータベースに接続して使用するつもりですが、ODBCとLibpqの長所と短所は何ですか?私が知ることから、libpqの方が速いようですが、明確な答えやベンチマークは得られませんでした。ODBC v Libpq:PostgreSQLのCライブラリ

さらに、ODBC/Libpqより優れたライブラリがあります。

+0

libpqが動作しますが、ODBCは動作しません。 –

答えて

2

ODBCは、異なるデータベースに対して同様のAPIを使用する標準のアダプタを使用する場合に便利です。私は個人的にはひどいAPIだと思っていますが、広く理解されており、十分に文書化されています。

libpqはPostgreSQLに直接話しています。より良いパフォーマンスを得ることはできますが、クライアントライブラリではなく、クエリ実行やネットワーク遅延などに時間を費やすほとんどのアプリケーションではそれほどの違いはありません。

新しいバージョンのpsqlODBCはlibpq上にビルドされ、libpqのODBCラッパーとして機能します。

libdbiもあります。これは、ODBCよりもあまり重大ではないAPIを提供します。

完全性のために、Cで書かれPostgreSQLサーバにロードされたユーザ定義関数によって使用できるサーババックエンドSPIもあります。サーバーの拡張機能や機能の外部では役に立ちません。

ああ、ecpgがあります。 ecpgは使用しないでください。主に特定の他のデータベースエンジンからの移植を容易にするために存在する、超レガシーの言語統合SQLツールです。 ecpgは使用しないでください。本当に。

C++の場合、QtSQLインターフェイス(Qtには異常ですが、ひどく辛い制限があり、使用しないでください)とlibpq ++(大丈夫ですが、ほとんど維持されません)があります。

私は個人的にlibpqコードを直接書くが、それは通常PostgreSQL自体に入っているコードに取り組んでいるからだ。 PostgreSQL以外のものをターゲットにしたくないと想像できない場合は、libpqコードを書いておきたいかもしれません。それ以外の場合は、おそらくpsqlODBCでODBCを使用します。

0

ODBCはほとんどMS Windowsデータベースアクセスインターフェイスです。 Libpqは、PostgreSQLのネイティブなクライアントインタフェースです。汎用インターフェースが必要ない場合は、ODBCを使用しないでください。それは、高複雑さの古い学校の不親切なデザインの図書館です。 libpqには何の利点もありません。