ADO или DBX с использованием Delphi
Что лучше (и по каким причинам) использовать для подключения к MS SQL, Oracle или Firebird из приложения Delphi Win32 -- ADO или DBX (Database Express)?
оба позволяют подключаться к основным базам данных. Мне нравится, как ADO делает все это с изменением строки подключения и тот факт, что ADO и драйверы включены в Windows, поэтому ничего лишнего для развертывания (кажется, поправьте меня, если я ошибаюсь).
DBX также гибок, и я могу скомпилировать драйверы в мое приложение, не так ли?
Я действительно очень хочу иметь один источник, если это возможно, с возможностью варьировать базы данных в зависимости от ИТ-отдела/предпочтений клиента.
но что легче программировать, работает лучше, использует память наиболее эффективно? Есть еще что-то, что их отличает?
Спасибо, Ричард
3 ответов
ADO прост в использовании и есть, вы должны только убедиться, что установить драйвер клиента correponding на стороне клиента.
Я нашел DBX более гибким, и он лучше интегрирован в IDE и другие технологии, такие как DataSnap.
для той же цели, что и вы, я использовал DBX со сторонними драйверами из компания. Вы можете скомпилировать драйверы с вашим приложением, Если вы покупаете источники драйверов.
в начале Delphi люди хвалили поддержку мульти-СУБД в Delphi. Все любили BDE (потому что это был единственный способ сделать это).
но, глядя на клиентов более чем за последнее десятилетие, я видел устойчивое снижение поддержки нескольких СУБД в своих приложениях.
стоимость поддержки нескольких СУБД из одного приложения высока.
не только потому, что вы должны иметь знания о каждой СУБД, но и потому, что каждая СУБД имеет свой собственный набор особенностей, где вы должны адаптироваться для вашего уровня доступа к данным. Они включают не только различия в синтаксисе и базовых типах данных, но и стратегии оптимизации.
кроме того, некоторые СУБД лучше работают с ADO, некоторые лучше с прямым подключением (например, пропуская ваш клиент Oracle все вместе).
наконец, тестирование всех комбинаций вашего программного обеспечения с несколькими системами СУБД очень интенсивно.
Я участвовал в нескольких проекты, в которых мы должны были изменить бэкэнд СУБД и / или технологию доступа к данным (от BDE до DBX или от DBX до прямого подключения). Изменение бэкэнда всегда было намного более болезненным, чем изменение технологии доступа к данным. Многоуровневые подходы сделали их несколько проще, но увеличили степень свободы и тем самым усилия по тестированию.
некоторые из продуктов, которые я вижу, что поддержка мульти-СУБД находятся в вертикальных рыночных приложениях, где конечный клиент уже имеет собственную инфраструктуру СУБД, и приложение должно адаптироваться к этому. Например, в голландских правительственных областях Oracle была действительно сильной, но SQL Server также создал довольно пользовательскую базу.
поэтому вам нужно подумать о том, какие комбинации СУБД вы хотите поддерживать, не только с точки зрения функциональности, но и с точки зрения стоимости.
Если вы придерживаетесь одной СУБД, то нет смысла идти на общий уровень доступа к данным, такой как BDE, DBX или ADO: он платит выключите соединение как можно более прямым. Мой опыт научил меня, что эти комбинации работают хорошо:
- Interbase или Firebird с FIBPlus, AnyDAC, ибо или IBX*
- Oracle с AnyDAC, DOA или ODAC
-
Microsoft SQL Server с ADO
- IBX не нравится Жар-птица очень.
надеюсь, это даст вам некоторое представление о возможностях и ограничениях поддержки нескольких СУБД из ваших приложений Delphi.
--jeroen