Как разработать веб-приложение, совместимое с несколькими системами управления базами данных - PullRequest
9 голосов
/ 27 августа 2010

Как вы проектируете и управляете разработкой веб-приложения, которое должно быть совместимо с несколькими системами управления базами данных, такими как Oracle и MS SQL Server?

Если вы не можете использовать ORM, например, NHibernate или EF, как вы поддерживаете схемы базы данных во время разработки?

Мой подход сейчас заключается в том, чтобы иметь базу данных разработки на SQL Server и перенести ее в Oracle (с помощью инструмента) непосредственно перед выпуском тестового патча, чтобы протестировать программное обеспечение на обеих rdbms. (Инструмент также генерирует файл, используемый приложением для обновления базы данных)

Это хороший подход? Как насчет проекта базы данных Visual Studio, может ли это быть лучшим способом сохранить мою схему БД?

EDIT: Этот вопрос не о проектировании архитектуры приложения (у меня уже есть абстрактный уровень доступа к данным), а о том, как поддерживать схемы базы данных для различных видов rdbms во время разработки.

Ответы [ 3 ]

7 голосов
/ 01 сентября 2010

Я думаю, что ключ к этому - убедиться, что вы придерживаетесь стандартного синтаксиса SQL . MS SQL Server поставляется с Transact SQL (T-SQL), который является расширенным набором стандарта ISO SQL , что означает, что он имеет дополнительный синтаксис, который официально не является частью стандартного SQL.

SQLZoo - хороший сайт, который позволяет сравнивать синтаксическую поддержку различных баз данных. Вы обнаружите, что большая часть синтаксиса, который вы используете изо дня в день, будет одинаковой между большинством БД, но есть несколько причуд. Лучший способ найти их - проверить каждый из ваших запросов в каждой среде, а затем включить их в систему контроля версий.

Ваша идея использовать проект базы данных хороша. Это позволит вам быстро развернуть изменения в нескольких базах данных и автоматически их протестировать.

5 голосов
/ 27 августа 2010

Модельно-управляемая архитектура (MDA): используйте универсальный Инструмент моделирования базы данных для разработки схемы базы данных.Вы определяете таблицы / отношения / первичные ключи / и т. Д.в общем, а затем попросите дизайнера сгенерировать необходимый сценарий SQL (большинство из них поддерживают вывод в различные базы данных).При изменении модели БД инструмент будет генерировать необходимый код SQL для обновления базы данных или с нуля.Инструменты также помогают в создании документации и помогают в управлении версиями базы данных, среди прочего ...

Я использую Context Database Designer и исключительно доволен инструментом и ценой. Enterprise Architect также выглядит как отличный инструмент, с возможностью генерировать и анализировать код.

2 голосов
/ 27 августа 2010

Реально единственный способ справиться с этим - отделить доступ к вашей базе данных от вашего основного приложения, чтобы вы могли настроить код доступа для каждой базы данных.Другими словами, именно то, что делают Nhibernate и EF.Если вы не можете использовать один из этих инструментов, вы все равно будете эффективно его писать.Это может быть весело и интересно, но также займет много времени.Поэтому я хотел бы задать несколько серьезных вопросов о том, почему вы не можете использовать ORM.

...