2009-12-22 26 views
6

Pregunta: Hemos iniciado un proyecto para un cliente, que incluye lo que normalmente se haría con una base de datos.XML vs. SQlite vs. Acceso

Sin embargo, el cliente no desea tener ninguna base de datos instalada, ya que es solo una pequeña aplicación. Sin embargo, tenemos la intención de volver a utilizar el código para un proyecto más grande, que utilizará una base de datos.

El problema es que todo el código del lado del servidor será diferente si estoy usando XML o SQlite o Access.

Estoy atendiendo a SQlite, pero no sé. ¿Sería una mejor solución agregar la base de datos en un archivo MS-Access? Si quisiera ponerlo en una base de datos de acceso, ¿necesita el cliente instalar MS-Access o solo MSFT MDAC? Si uso Access DB, ¿eso se ejecutará bajo Linux con Mono, también, o no habrá reemplazo de MDAC?

+0

Espero que tenga la intención de cobrar al cliente por todo el trabajo extra en el que incurra ... y sabe que es porque no quiere ninguna base de datos. –

Respuesta

9

Consideraría usar NHibernate, puede conectarlo a SQLite, pero puede actualizarlo más adelante a una base de datos completa sin necesidad de cambiar mucho código. Si no está interesado en esto, usaría SQLite directamente sobre archivos XML.

+1

+1 para SQLite. Además, no tiene que usar un ORM para tener una implementación correcta de 3 niveles. Solo asegúrese de que su DAL pueda ser reemplazado fácilmente (usando una interfaz por ejemplo), y no existe lógica DAL en su BLL (no hace falta decir presentación). – synhershko

+0

+1 para NHibernate. No * necesita * un ORM, pero hace que sea más ligero en años. –

3

Usaría SQLite sobre Access - para SQLite solo necesita enviar los archivos DLL, para Access necesita un instalador (aunque creo que está integrado en versiones recientes de Windows). También SQLite es una mejor base de datos.

¿O podría, por supuesto, abstraer el mecanismo de almacenaje de datos usando el patrón Repositorio o similar? Si tuviera que almacenar los datos en un archivo, cárguelo y exhíbalo desde su repositorio utilizando Linq-To-Objects, luego podría simplemente reemplazarlo con Linq-to-SQL sin cambiar el código de su cliente .

+0

Ya tengo un instalador para el proyecto, y creo que agregar una dependencia al Access MDAC no sería un gran problema. –

+1

Aún así, iría por SQLite; sido quemado demasiadas veces con Access. Aunque si es un proyecto pequeño como usted dice, puede que no tenga nada que perder. Si vas a usar el código en un proyecto más grande, sugeriría que la sobrecarga de la capa de repositorio valdrá la pena. – Grokys

4

No es necesario instalar Access para utilizar el motor a reacción. Jet está instalado con todas las versiones recientes de Windows, por lo que recuerdo. Puede usar Jet (Access) with Linux. Jet requiere muy poco en el manejo de la base de datos en comparación con las alternativas, incluido SQLite.

1

Todas las versiones recientes de windows hasta Windows 7 se han enviado con una copia de JET (el motor de datos ms-access). Por lo tanto, no necesita mdac ni instalar ms-access en absoluto.

Incluso puede escribir un script de Windows en un cuadro de Windows limpio sin ningún software instalado y así puede leer datos de un archivo mdb (ms-access).

Por lo tanto, el problema aquí no es la instalación, ya que "JET" (el motor de base de datos que usa ms-access) se envía con Windows de todos modos.

Creo que la única excepción o consideración aquí es si planea trabajar en ediciones de 64 bits del sistema operativo y usar aplicaciones en proceso de 64 bits.

Hay una edición de 64 bits de ms-access para office 2010, y hasta donde yo sé, también habrá una descarga por separado para instalar el motor JET (ahora llamado ACE) en 64 cajas.

I planeas trabajar solo en máquinas de 32 bits (o usar ediciones de 32 bits de tu software en una caja de 64 bits), entonces no necesitas ms-access ni necesitarás instalar nada para leer y usar mdb (archivos ms-access).

Como JET se envía con todas las versiones recientes de Windows, las decisiones que tome no estarán basadas en la instalación de JET (no es necesario), sus decisiones serán otras cuestiones y si JET cumple con sus requisitos.

+1

Desarrollo en una máquina Hasta-la-Vista de 64 bits. Cuando instalé 64 Bit Office 2010, tuve que instalar MDAC, no funcionó de la caja. Tal vez sea porque desinstalé Office 2007, tal vez porque es porque es una máquina de 64 bits, o porque el JET/ACE preinstalado está desactualizado. Entonces creo que debería incluirse en el instalador. –

+0

La versión de Jet incluida con Windows es Jet de 32 bits, por lo que debe compilar para i386, ya que las bibliotecas de 32 bits no se pueden usar en un ejecutable puro de 64 bits. Instalar A2010 o desinstalar A2007 (o instalar/desinstalar cualquier versión de Access) no tiene ningún efecto en Jet, ya que es un componente del sistema operativo y no se puede eliminar. –

2

Puede tener problemas al usar sqlite en entornos de confianza mediana (en el alojamiento compartido, por ejemplo). Si está abierto a otras soluciones, puede considerar dar VistaDB una oportunidad. Es compatible con todos los principales orm (nhibernate, openaccess, entityspaces, subsónicos y muchos más ...).

+0

No usaré una solución solo para Windows. Ya es bastante malo si mis colegas lo hacen. –

+3

No estoy seguro, pero creo que VistaDB puede ejecutarse en mono. – elpipo

+0

Jet es una solución solo de Windows, ¿quieres editarla de tu pregunta original? –