Es una base de datos la opción correcta para el almacenamiento de datos para mi aplicación C #?

StackOverflow https://stackoverflow.com/questions/3514284

  •  29-09-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una aplicación C # y quiero estar seguro de que elegir la mejor opción para el almacenamiento de datos que se ajuste a estas especificaciones.

El programa puede tener una cantidad infinita de datos, pero que los datos sólo serán utilizados por un solo usuario que está utilizando la aplicación. Cada vez que se cierra la aplicación, necesito para guardar los datos, y tiene que ser cargado en cuando se inicia la aplicación.

He mirado en las bases de datos, pero estoy seguro de qué sería el más adecuado para mis necesidades. Además, me pregunto si necesito una base de datos en absoluto teniendo en cuenta las especificaciones anteriores, quizás debería utilizar un archivo binario archivo / XML implementar la serialización y deserialización.

Punto de mí en la dirección correcta por favor!

Gracias, OC

EDIT: Un factor importante que olvidó incluir es la necesidad de permitir que un usuario guardar todas las entradas que él / ella entró y exportarlo a un archivo externo que puede ser fácilmente compartida entre aplicaciones / usuarios .

¿Fue útil?

Solución

Sin saber más sobre lo que hace su aplicación específica, es difícil (para nosotros) para decir si una base de datos es la elección correcta. Sin embargo, hay algunas reglas básicas que se pueden utilizar para ayudar a dirigir su decisión.

Una base de datos puede ser una buena opción cuando:

  • Los datos puede ser utilizado por múltiples usuarios.
  • Cuando la actividad concurrente es posible que deben ser almacenados correctamente.
  • Cuando los datos recogidos no todos tenemos que ser cargado en la memoria a la vez.
  • Cuando se desea ser capaz de consulta o informe sobre los datos de manera compleja.
  • Cuando usted quiere tener la transparencia en los datos que se almacenan utilizando herramientas estándar.
  • Cuando los cambios son en su mayoría localizadas en lugar de requerir la totalidad del almacén de datos a ser reconstruido.
  • Cuando los datos se presta a una relacional (en lugar de decir una representación jerárquica).

Una base de datos puede no ser la mejor opción cuando:

  • Sólo el servicio de un solo usuario.
  • Hay poca actividad simultánea, y el modelo de datos debe volver a crear al guardar los cambios.
  • Cuando habrá muy pocos datos, y le será cargado en la memoria a la vez.
  • Cuando los datos es jerárquica o difíciles de modelar relacional.
  • Cuando su aplicación es el documento orientado, y los documentos (archivos) será enviado a otros usuarios.
  • Cuando hay una cantidad significativa de datos binarios intercalados en los datos de su almacenamiento.
  • Cuando se quiere evitar dependencias a las herramientas o servicios de terceros.
  • Cuando es probable que la estructura de su modelo de datos para cambiar con frecuencia.

Estas son todas las reglas de oro ... ninguna condición solo se va a dictar si desea utilizar una base de datos o no. Debe examinar todas las consideraciones, y decidir si el uso de una base de datos le dará un beneficio suficiente -. O no

En muchos entornos, (tales como iPhone, por ejemplo) hay una incorporado en la capa de base de datos disponible directamente en la plataforma. También existen herramientas (como NSCoreData) que le ayudan a superar la impedancia desajuste Objeto-Relacional Modelado (ORM). En tales casos, puede hacer mucho sentido utilizar una base de datos nunca para el almacenamiento de datos muy simple.

También hay una serie de datos de código abierto persistencia capas (NHiberante, DB4O, y otros) que ayudan a simplificar el uso de una base de datos como una tienda de persistencia ... que, si se las puede utilizar, puede cambiar la ecuación en favor de utilizando una base de datos.

Una base de datos puede simplificar sustancialmente el desarrollo de su aplicación cuando se necesita para admitir las consultas o funciones de búsqueda. bases de datos relacionales soportan un lenguaje de consulta (SQL), que se mueve el esfuerzo de identificar y recuperar los resultados de la base de datos mucho más fácil. Dejar que la base de datos do el trabajo pesado puede ser un ahorro de tiempo significativo - como bases de datos están diseñados específicamente para realizar operaciones de consulta de forma correcta y eficiente. Sin embargo, esto viene a costa de una estructura de datos relacional bien diseñado -., Que debe crear

Una consideración importante, es si los usuarios compartir los datos que crean / consumen mediante su aplicación. Si su aplicación es más documento orientado (piensa en Word, Excel, Powerpoint), a continuación, un modelo de serialización basada en archivos puede ser más apropiado. Si no se compartirán datos de la aplicación -. A continuación, una base de datos puede tener sentido

Otro factor importante es el grado de apertura desea que sus datos sean. Bases de datos almacenan información en estructuras bien definidas (tablas), y esto hace que sea más fácil para usted (y sus usuarios) para acceder directamente e inspeccionar los datos. formatos de almacenamiento como XML, también permiten esto, pero en un grado algo menor.

Otros consejos

Una base de datos cliente / servidor en toda regla como MySQL o SQL Server probablemente sería excesivo para un solo usuario. Pero lo que probablemente obtener un cierto uso de un motor incorporado / basada en archivos como SQLite o SQL Server CE , sobre todo si quieres hacer más con los datos que acaba de buscar registros individuales por ID. Si lo hizo el almacenamiento de datos usted mismo, usted tendría que escribir un montón de código para obtener los registros que satisfacen ciertos criterios, y todos, pero garantizo que no va a hacer, así como a que las personas que lo hacen para ganarse la vida.

En lo personal para mí es más acerca de los datos que el número de usuarios que utilizan la aplicación.

Piense en sus datos, que es complejo? Si se va a crear una base de datos realmente qué tan grande sería sea en términos de objetos, no la cantidad de filas ... cuántas mesas, etc ...

pienso en el futuro, aunque su único usuario, los datos son todavía va a aumentar supongo, y la cantidad de datos que se guardarán cada vez?

El enfoque de base de datos acelerará su desarrollo, sin duda - y sus datos tendrá una mejor integridad de un archivo XML. No me gusta el uso de archivos personalmente ... He tenido experiencias en el pasado donde los datos han desaparecido etc., del fichero.

Recuerde, siempre hay SQL Compact Edition en caso de que desee mantener sus recursos limitados.

Si implementa sus funciones de almacenamiento en un depósito 1) 2), se puede comenzar con el almacenamiento de archivos, y luego pasar a una base de datos de almacenamiento si más adelante se identifica una necesidad de hacerlo

1) http://martinfowler.com/eaaCatalog/repository.html
2) https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top