Приложение C libmysqlclient по сравнению с ODBC

Я пишу приложение, которое должно взаимодействовать с базой данных MySQL. Должен ли я использовать libmysql или соединитель ODBC? Есть ли какие-либо плюсы/минусы помимо того факта, что использование ODBC позволит мне в будущем изменять БД без особого изменения кода?


person nc3b    schedule 30.12.2011    source источник


Ответы (2)


Я постоянно меняю свою БД и использую C-коннектор, который работает безупречно и без особых изменений кода. Это был лучший выбор для меня и, возможно, для вас (конечно, только имхо).

Я не могу поверить, что изменения кода будут сильно отличаться между двумя интерфейсами, если вы собираетесь придерживаться MySQL.

РЕДАКТИРОВАНИЕ: изначально я выбрал разъем C, потому что он был интуитивно понятным и естественным для меня; и потому что я не был слишком уверен, что существует рабочий, защищенный ODBC для Linux: мой код должен работать как под Windows, так и под Linux. Теперь вижу, что такое действительно есть. Это делает ODBC более привлекательным: возможно, я бы выбрал другой вариант, если бы знал об этом.

person Pete Wilson    schedule 30.12.2011
comment
+1 Всегда приятно слышать от людей, которые действительно его использовали. - person nc3b; 30.12.2011

На мой взгляд, это вопрос личных предпочтений.

При использовании libmysql хорошим подходом было бы сначала написать набор общих функций-оболочек libmysqlclient (уровень A), а затем набор функций, реализующих функциональность базы данных, которую вы собираетесь использовать в своей программе (уровень B), и выше вашей фактической программы (уровень C).

Переход с libmysql на ODBC требует лишь незначительных изменений на уровне B без изменения API уровня B. Следовательно, если вы собираетесь использовать свою программу только с MySQL, я бы посоветовал вам придерживаться libmysql, пока кто-нибудь не предоставит вам патч для ODBC.


С технической точки зрения вам придется найти компромисс между подключением к базе данных и переносимостью. Использование libmysql позволяет компилировать ваш код без изменений на различных платформах, таких как Unix, MacOS и Windows. Библиотеки ODBC обычно пишутся либо для Windows, либо для Unix/MacOS.

person Philip    schedule 30.12.2011
comment
Согласно Википедии, ODBC является неотъемлемой частью операционной системы Windows. ВТФ? - person Philip; 30.12.2011
comment
@Philip, так вы говорите, что для переносимости мы должны использовать ODBC или libmysql? - person Pacerier; 18.10.2014
comment
@Pacerier: я говорю, что если вы собираетесь использовать MySQL (или MariaDB), вам следует придерживаться libmysql и вышеупомянутой архитектуры. Если позже вы почувствуете потребность в поддержке других систем баз данных, вы можете легко переключиться на ODBC. Обратите внимание, что ODBC поддерживает только общее подмножество поддерживаемых систем баз данных. Для простых утверждений этого будет достаточно. Для мелкозернистого управления, такого как различные механизмы блокировки, ODBC не подойдет. - person Philip; 20.10.2014