2009-12-13 9 views
6

Estoy escribiendo una aplicación que hace un seguimiento de una biblioteca de música, y necesito una manera de almacenar la lista de pistas, álbumes y otros datos. Por lo general, para algo como esto, usaría un archivo XML para guardar los datos. Y luego usaría ADO.NET DataTable para manipular los datos. Pero este programa potencialmente podría guardar una gran cantidad de elementos de datos. También voy a querer poder buscar, ordenar y filtrar rápidamente la tabla de canciones.¿Cuánto son demasiados datos para el archivo XML y cuáles son algunas alternativas de bases de datos basadas en archivos?

Así que mi primera pregunta ¿existe una mejor límite de las prácticas de la cantidad de datos se deben almacenar en un único archivo XML antes de que sea una mejor idea de estar usando una base de datos relacional? En segundo lugar, ¿cuáles son algunas opciones alternativas de cómo almacenar estos datos en un solo archivo? Tenga en cuenta que no quiero que el programa confíe en que haya un servidor (MS SQL, MySQL, etc.) que funcione en algún lugar al que se pueda conectar. Quiero que los datos se almacenen en un solo archivo. Además, no soy un gran admirador de MS Access. Entonces, si bien ADO.NET tiene formas de acceder a un archivo MDB, estoy buscando otras opciones.

Otra opción que estoy considerando es la pervivencia de la serialización/serialización de mi colección de objetos "pistas" a/desde XML. Sin embargo, hacer cualquier tipo de base de datos cosas como buscar, clasificar, filtrar utilizando Linq en la colección. Todavía no he usado Linq, así que no estoy seguro de los detalles de cómo se haría esto, o si sería la mejor opción.

+0

VTD-XML es una tecnología que convierte los archivos XML en una base de datos más rápida –

Respuesta

8

Aunque no puedo responder a sus preguntas acerca de XML, creo que la solución a sus problemas es SQLite. Es un db SQL extremadamente rápido y liviano basado en archivos que no requiere un servidor. También puede usar algo como System.Data.SQLite para interactuar con él desde .NET.

2

mira esto: http://www.sqlite.org/. Creo que si clasificar y filtrar es importante para ti, vas a querer una base de datos relacional sobre XML.

0

Como se sugiere por otros, SQLite es una buena base de datos basado en archivos de poco peso. También puede usar SQL Server Compact

2

SQL Server Express es gratis.

Además, XML no es una tecnología de base de datos. Por ejemplo, ¿qué sucede si el sistema falla mientras está en proceso de escribir una actualización? Obtendrás un archivo corrupto que no se puede recuperar.

+0

XML * es * una tecnología de base de datos, pero carece de características que algunas bases de datos tienen (rendimiento, consulta incorporada operaciones y confiabilidad) pero tiene características propias (amplia disponibilidad legible por humanos, fácil de implementar, generalmente gratuita). –

+2

XML es un formato para representar datos. Período. No tengo idea de por qué lo llamarías una tecnología de base de datos. –

1

Parece que mucha gente sabe acerca de SQLite, pero para la primera parte de su pregunta -

Hay demasiados datos en el archivo XML cuando no se puede manipular con rapidez suficiente para sus necesidades.

Ah ... y otras bases de datos de archivos planos: Berkeley DB y Berkeley DB XML

Si está acostumbrado a trabajar con XQuery, BDB-XML podrían ser más fáciles de convertir a que SQL.

0

Otra opción útil, aunque no es libre, es VistaDB.
Tiene buena compatibilidad con T-SQL (si el servidor SQL puede ser un problema para usted en la pista), y está escrito en un código .net completamente administrado, por lo que no requiere plena confianza como sqlite.

1

Puede que esté interesado en una solución en el dominio .NET. Hay múltiples soluciones:

*.almacenar datos relacional

MS SQL Compact Edition (sólo tiene que hacer referencia a la DLL en su proyecto y almacenar los datos en un solo archivo o SQL Lite

*. almacén de objetos

Si bien los datos relacional es bueno para una gran cantidad de datos y tenemos que realizar muchos cálculos numéricos (como agregaciones, etc.), las estructuras de tablas y las consultas se vuelven demasiado complicadas en términos de objetos complejos. Usted puede evaluar algunos de los Object Objects Store más conocidos y de código abierto. soluciones que son bastante efectivas y seguras. Una de las soluciones es Db4O. Tienen un cliente .Net nativo y se desempeñan se dice que es muy bueno.

*. Almacén de datos XML

Aunque no estoy al tanto de esto y sería bueno conocer algunas buenas soluciones basadas en .NET. Berkeley DB supongo que está en Java desde Oracle

Cuestiones relacionadas