Tengo una aplicación WCF que actualmente utiliza el almacenamiento de archivos basado en XML para almacenar datos que se utilizan para generar informes. Además de este proceso, las decisiones se toman en base a la información almacenada en estos archivos XML.¿Alguna consideración antes de saltar a SQLite?
Ahora estoy alcanzando volúmenes de alrededor de 30 000 archivos de texto. Esto es increíblemente agotador, y la aplicación a veces se detiene.
Siempre he querido cambiar XML DAL a favor de un RDBMS, pero los gerentes de proyecto simplemente no lo permitirán. Pero estarían dispuestos a ver una solución sin servidor, por ejemplo, SQLLite. Estoy realmente tentado de sumergirme y comenzar a usarlo como un DAL de reemplazo (Data Access Layer).
No necesitaría más de 20 tablas en toda la solución, y esperaría obtener no más de alrededor de 20 000 - 100 000 transacciones por día, sin embargo, esto es extremo, los volúmenes reales serían menores que este en la mayoría de los casos.
actualización
No estoy esperando una gran cantidad de conexiones simultáneas, cuando digo transacciones, que en esencia significa 1 o 2 clientes que realizan llamadas y ejecutar contra la base de datos en orden. En ocasiones puede haber una posibilidad de que los clientes externos realicen llamadas rápidas al DB. Pero la mayor parte de las conexiones de bases de datos se realizarán por mi servicio WCF, que es una tarea programada de respaldo, que no atiende a 100 personas en una organización.
Otro buen punto es que solo necesito retener los datos durante 90 días, por lo que la base de datos no debería crecer demasiado.
Mis principales preocupaciones son:
¿Qué tan confiable es SQLLite? ¿Qué sucede si el archivo de base de datos se corrompe, perderá todos los datos de procesamiento? ¿Qué tan fácil es la base de datos para hacer una copia de seguridad? ¿Manejará mis volúmenes? Y, por último, qué tan bien funciona el proveedor de .net (ubicado aquí: http://sourceforge.net/projects/sqlite-dotnet2/).
Si tiene alguna experiencia con SQLLite, publique sus experiencias para que pueda tomar una decisión informada de cambiar o no.
Gracias de antemano ...
Permítanme reformular mi pregunta. –
Correcto, sqlite no maneja múltiples usuarios que intentan acceder a él simultáneamente, pero siempre que sea simplemente un almacén de datos monolítico utilizado por una aplicación a la vez, funciona muy bien. – Karl
@Karl, maneja el acceso simultáneo por diferentes procesos, incluso desde diferentes sistemas, y admite transacciones, que es la mejor manera de administrar el bloqueo. Cumple con ACID. Sin embargo, dado que toda la base de datos está contenida en un archivo y se bloquea en el nivel de archivo, los lectores bloquean las escrituras pendientes y el bloque de escrituras hasta que terminan las lecturas. –