2010-08-27 7 views
9

¿Cómo diseñar y gestionar el desarrollo de una aplicación web que debe ser compatible con el sistema de gestión de bases de datos múltiples tales como Oracle y MS SQL Server?Cómo desarrollar una aplicación web compatible con los sistemas de gestión de bases de datos múltiples

Si no se puede usar ORM como NHibernate o EF, ¿cómo se mantienen los esquemas de la base de datos durante el desarrollo?

Mi enfoque ahora es tener una base de datos de desarrollo en SQL Server y portarlo a Oracle (con una herramienta) justo antes de la liberación de un parche de prueba, para probar el software en ambos RDBMS. (La herramienta también genera un archivo utilizado por la aplicación para actualizar la base de datos)

¿Es un buen enfoque? ¿Qué tal un proyecto de base de datos de Visual Studio, podría ser una mejor manera de mantener mi esquema db?

EDIT: Esta pregunta es no sobre el diseño de la arquitectura de la aplicación (ya tengo una capa de acceso de datos abstracto), pero la forma de mantener esquemas de base para diferentes tipos de RDBMS durante el desarrollo.

Respuesta

5

arquitectura basada en modelos (MDA): utilizar un genérico Database modelling tool para diseñar el esquema de base de datos. Usted define las tablas/relaciones/claves primarias/etc. de una manera genérica y luego haga que el diseñador genere la secuencia de comandos SQL necesaria (la mayoría admite resultados en una variedad de bases de datos). Al cambiar el modelo de DB, la herramienta generará el código SQL necesario para actualizar la base de datos o generarla desde cero. Las herramientas también ayudan a generar documentación y ayudar con el control de versiones de la base de datos, entre muchas otras cosas ...

Uso Context Database Designer y estoy excepcionalmente satisfecho con la herramienta y el precio. Enterprise Architect también se ve como una excelente herramienta, con la capacidad de generar y el código de ingeniería inversa.

+0

1 Gracias por su respuesta y los enlaces muy útiles – onof

2

manera realista la única manera de manejar esto es para desacoplar el acceso a la base de que la aplicación principal para que pueda personalizar el código de acceso para cada base de datos. En otras palabras, exactamente qué hacen Nhibernate y EF. Si no puede usar una de estas herramientas, terminará escribiendo de alguna manera. Lo cual puede ser divertido e interesante, pero también tomará una gran cantidad de tiempo. Por lo tanto, haré algunas preguntas serias sobre por qué no puedes usar un ORM.

+0

Mi pregunta no se trata de desarrollo de código C#, pero la forma de mantener el esquema de la base de diferentes tipos de RDBMS – onof

7

Creo que la clave para esto es asegurarse de que se adhieren a la sintaxis SQL estándar. MS SQL Server se envía con Transact SQL (T-SQL) que es un superconjunto de ISO standard SQL, lo que significa que tiene una sintaxis adicional que oficialmente no forma parte del SQL estándar.

SQLZoo es un buen sitio que le permite comparar el soporte de sintaxis de diferentes bases de datos. Descubrirá que la mayoría de la sintaxis que usa día a día será la misma entre la mayoría de las bases de datos, pero existen algunos detalles. La mejor manera de encontrarlos es verificar cada una de sus consultas en cada entorno y luego verificarlas en el control de la fuente.

Su idea utilizar un proyecto de base de datos es una buena. Le permitirá implementar sus cambios en múltiples bases de datos rápidamente y probarlos automáticamente.

Cuestiones relacionadas