В начале Delphi люди хвалили поддержку нескольких СУБД в Delphi. Всем нравился BDE (потому что это был единственный способ сделать это).
Но, глядя на клиентов более чем за последнее десятилетие, я заметил неуклонное уменьшение поддержки нескольких СУБД в их приложениях.
Стоимость поддержки нескольких СУБД из одного приложения высока.
Не только потому, что вы должны знать каждую СУБД, но и потому, что каждая СУБД имеет свой собственный набор особенностей, к которым вам нужно адаптироваться на своем уровне доступа к данным. К ним относятся не только различия в синтаксисе и базовых типах данных, но и стратегии оптимизации.
Кроме того, некоторые СУБД лучше работают с ADO, некоторые - с прямым подключением (например, полностью пропускать клиент Oracle).
Наконец, очень интенсивно тестировать все комбинации вашего программного обеспечения с несколькими системами СУБД.
Я участвовал в нескольких проектах, в которых нам приходилось менять серверную часть СУБД и / или технологию доступа к данным (например, с BDE на DBX или с DBX на прямое соединение). Смена серверной части всегда была гораздо более болезненной, чем изменение технологии доступа к данным. Многоуровневые подходы сделали их несколько проще, но увеличили степень свободы и, следовательно, усилия по тестированию.
Некоторые из продуктов, которые, как я вижу, поддерживают несколько СУБД, находятся на вертикальном рынке приложений, где конечный заказчик уже имеет собственную инфраструктуру СУБД, и приложение должно адаптироваться к ней. Например, в правительственных областях Нидерландов Oracle была действительно сильной, но SQL Server также создал довольно большую пользовательскую базу.
Поэтому вам нужно подумать о том, какие комбинации СУБД вы хотите поддерживать, не только с точки зрения функциональности, но и с точки зрения стоимости.
Если вы придерживаетесь одной СУБД, тогда нет смысла использовать общий уровень доступа к данным, такой как BDE, DBX или ADO: это окупается, если установить соединение как можно более прямым. Мой опыт научил меня, что эти комбинации действительно работают:
Надеюсь, это даст вам некоторое представление о возможностях и ограничениях поддержки нескольких СУБД из ваших приложений Delphi.
- Джерун
person
Jeroen Wiert Pluimers
schedule
21.08.2009