2010-08-27 2 views
9

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

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

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

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

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

ответ

5

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

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

+0

+1 Благодарим вас за ответ и очень полезные ссылки – onof

2

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

+0

Мой вопрос не о разработке кода на C#, а о том, как поддерживать схему базы данных разных типов rdbms – onof

7

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

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

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