2016-03-22 17 views
2

Ich werde eine C-Bibliothek verwenden, um eine PostgreSQL-Datenbank zu verbinden und zu verwenden, ich fragte mich, was sind die Vor- und Nachteile zu ODBC und Libpq. Soweit ich das beurteilen kann, scheint libpq schneller zu sein, aber ich konnte keine klaren Antworten oder Benchmarks erhalten.ODBC v Libpq: C-Bibliothek für PostgreSQL

Gibt es auch eine andere Bibliothek, die besser als ODBC/Libpq sein könnte.

+0

libpq funktioniert, ODBC nicht? –

Antwort

2

ODBC ist nützlich, wenn Sie einen Standardadapter wünschen, der eine ähnliche API für verschiedene Datenbanken spricht. Ich persönlich denke, es ist eine schreckliche API, aber es ist weithin verstanden und gut dokumentiert.

libpq spricht direkter mit PostgreSQL. Sie können damit eine bessere Leistung erzielen, aber wahrscheinlich nicht mehr genug, dass es für die meisten Apps einen Unterschied macht, da sie Zeit für die Ausführung von Abfragen, Netzwerklatenz usw. und nicht für die Clientbibliothek benötigen.

Neuere Versionen von psqlODBC basieren auf libpq und dienen als ODBC-Wrapper für libpq.

Es gibt auch libdbi, die eine weniger grässliche API als ODBC bietet.

Der Vollständigkeit halber gibt es auch die Server-Backend-SPI, die von benutzerdefinierten Funktionen in C geschrieben und in den PostgreSQL-Server geladen werden kann. Außerhalb von Servererweiterungen und -funktionen ist es nicht sinnvoll.

Oh, und es gibt ecpg. Verwenden Sie nicht ecpg. Es ist ein Super-Legacy-Tool mit integrierten SQL-Funktionen, das hauptsächlich für die leichtere Portierung von bestimmten anderen Datenbank-Engines entwickelt wurde. Verwenden Sie nicht ecpg. Ja wirklich.

Für C++ gibt es die QtSQL-Schnittstelle (ungewöhnlich für Qt, es ist schrecklich und schmerzlich begrenzt, verwende es nicht) und libpq ++ (OK, aber weitgehend nicht gepflegt).

Persönlich schreibe ich libpq Code direkt, aber das ist, weil ich an Code arbeite, der normalerweise in PostgreSQL selbst geht. Wenn Sie sich nicht vorstellen können, jemals etwas außer PostgreSQL anvisieren zu wollen, sollten Sie libpq code schreiben; Ansonsten verwende wahrscheinlich ODBC mit psqlODBC.

0

ODBC ist generisch meist MS Windows Datenbankzugriffsschnittstelle. Libpq ist eine native PostgreSQL-Client-Schnittstelle. Wenn Sie keine generische Schnittstelle benötigen, verwenden Sie nicht ODBC. Es ist Old School unfreundlich gestaltete Bibliothek mit hoher Komplexität. Es gibt keinen Vorteil gegenüber libpq.