Как объяснить, почему ODBC требует драйвер базы данных - PullRequest
2 голосов
/ 11 января 2010

Месяц назад я показывал собеседнику, как использовать .NET для запроса MySQL. Это работало просто отлично, но он не понимал, зачем нам нужен «драйвер» для MySQL в сочетании с ODBC. Ему хоть ODBC будет достаточно.

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

Какое правильное объяснение этого вопроса?

Ответы [ 3 ]

10 голосов
/ 11 января 2010

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

По сути, это слой адаптера , предназначенный для того, чтобы все базы данных выглядели одинаково для клиентского приложения: вы обращаетесь к библиотеке ODBC, и она просит диспетчера драйверов выполнить ваш запрос, используя правильную базу данных ( на основе вашей строки подключения).

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

4 голосов
/ 13 января 2010

Как уже было сказано, ODBC - это API и уровень абстракции, а не часть программного обеспечения как таковая.

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

Некоторые поставщики баз данных включают драйверы ODBC со своими механизмами в качестве «элементов-флажков», поэтому они могут требовать поддержки ODBC, но эти встроенные драйверы являются минимальными реализациями и / или каким-то образом поврежденными, чтобы поощрять разработку «родных» приложений как «улучшенный» вариант. Действительно, драйверы ODBC от поставщиков баз данных часто работают намного хуже, чем драйверы ODBC от сторонних производителей, причем оба намеренно (поскольку, если клиентские приложения базы данных записываются в собственный API базы данных, их пользователи привязываются к этому ядру базы данных) и без него (многие поставщики баз данных просто недостаточно понимают нюансы API ODBC, не зависящего от базы данных, чтобы правильно сопоставить его со своим «родным» API для конкретной базы данных). Такая блокировка на самом деле не отвечает долгосрочным интересам поставщика баз данных (на самом деле они были основными участниками первоначальной разработки ODBC), но краткосрочные бизнес-цели иногда имеют приоритет над долгосрочным видением.

Мой работодатель, OpenLink Software, давно осознал необходимость сравнения производительности различных баз данных, драйверов ODBC, операционных систем и атрибутов подключения DSN и создал утилиту тестирования с открытым исходным кодом OpenLink ODBC Bench. Этот инструмент является кроссплатформенным и имитирует тестирование TPC-A и TPC-C в вашей среде, чтобы определить, какие компоненты лучше всего соответствуют вашим потребностям. Как проект с открытым исходным кодом, все тесты могут быть проверены на предмет отсутствия перекосов в любом направлении, а также могут быть расширены и адаптированы по мере необходимости для вашего конкретного развертывания.

Конечно, все это игнорирует вопрос о том, почему вы бы использовали драйвер ODBC из .NET (который требует использования мостового провайдера ADO.NET для источников данных ODBC и, следовательно, дополнительного перевода API для двойной абстракции). вместо прямого доступа к провайдеру ADO.NET для MySQL ...

0 голосов
/ 03 апреля 2013

Я вижу, что поток немного староват, но я хотел получить какой-либо ответ на представление стандартного драйвера odbc для всех СУБД. Я знаю, что нам нужны отдельные драйверы для каждой СУБД. Можно ли иметь стандартный драйвер ODBC, который может использоваться без каких-либо проблем в любых движках баз данных. Я не вижу большой разницы между разными драйверами с точки зрения их способности делать что-то совсем другое, чем другие

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...