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

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

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

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

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

РЕДАКТИРОВАТЬ: Этот вопрос не о о разработке архитектуры приложения (у меня уже есть абстрактный уровень доступа к данным), а о том, как поддерживать схемы базы данных для разных видов rdbms во время разработки.

9
задан onof 31 August 2010 в 07:50
поделиться

3 ответа

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

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

5
ответ дан 4 December 2019 в 14:26
поделиться

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

2
ответ дан 4 December 2019 в 14:26
поделиться

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

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

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

7
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: