Pregunta

Necesito una base de datos que pueda almacenarse en una unidad de red y que permita que varios usuarios (hasta 20) la utilicen sin ningún software de servidor.

Estoy considerando MS Access o Berkeley DB.

¿Puedes compartir tu experiencia con las bases de datos de archivos?
¿Cuál usaste? ¿Tuviste algún problema con él?

¿Fue útil?

Solución

Yo sugeriría SQLite porque toda la base de datos se almacena en un solo archivo y maneja con bastante seguridad que varios usuarios accedan a ella al mismo tiempo.Hay varias bibliotecas diferentes que puede utilizar para su aplicación cliente y no se necesita ningún software de servidor.

Uno de los puntos fuertes es que imita tan fielmente a los servidores SQL que si necesita pasar de un archivo de base de datos a un servidor SQL completo, no será necesario cambiar la mayoría de sus consultas en su cliente.Sólo necesitarás migrar los datos a la nueva base de datos del servidor (lo cual no me sorprendería si hubiera programas para convertir bases de datos SQLite a bases de datos MySQL, por ejemplo).

Otros consejos

Realmente no creo que las bases de datos basadas en archivos puedan superar la media docena de usuarios.La última vez que tuve una base de datos de Access (es cierto que esto fue hace bastante tiempo) tuve que trabajar muy duro para que funcionara para 8 o 9 personas.

Realmente es mucho más fácil instalar Ubuntu en una vieja computadora basura con PostgreSQL o MySQL.Eso es lo que tuve que hacer incluso cuando conservé mi interfaz de Access.

Tenga cuidado con cualquier base de datos basada en archivos, es probable que todas tengan los mismos problemas.Su situación realmente requiere una solución Cliente/Servidor.

De las preguntas frecuentes de SQLite

Una buena regla general es que debe evitar el uso de SQLite en situaciones en las que se accederá a la misma base de datos simultáneamente desde muchas computadoras a través de un sistema de archivos de red.

http://www.sqlite.org/whentouse.html

El acceso puede ser una putada.He estado en una posición en la que tenía que ir y decirle a entre 20 y 50 personas que cerraran el acceso para poder ir al "modo de diseño" para cambiar el diseño de los formularios y tal vez de una columna.Nada divertido.(Acceso antiguo y podría ser simplemente una mala configuración)

Ayende Recientemente intenté tomar una decisión similar y probé un montón de las llamadas bases de datos integradas.Ojalá su observaciones puedo ayudarte.

He estado usando Access durante algún tiempo y en una variedad de situaciones, incluso en línea.He descubierto que Access funciona bien si está configurado correctamente de acuerdo con las pautas.Una ventaja de Access es que incluye todo en un solo paquete:Formularios, creación de consultas, informes, gestión de bases de datos y VBA.Además, funciona bien con todas las demás aplicaciones de Office.El tiempo de ejecución de Access 2007 se puede obtener de forma gratuita desde aquí, lo que abarata la distribución.El acceso ciertamente no es adecuado para grandes operaciones, pero debería ser bastante adecuado para veinte usuarios.EDITAR: microsoft sitúa el número de usuarios simultáneos en 255.

¿Se puede configurar Access para admitir entre 10 y 20 usuarios?Sí.Sin embargo, al igual que todas las bases de datos basadas en archivos, utiliza el sistema de archivos para el bloqueo y el control de concurrencia.Además, los archivos de datos de Access son más susceptibles a la corrupción de la base de datos que los servidores de bases de datos.Y, si bien puede configurarlo para esto, DEBE, como menciona David Fenton anteriormente, seguir las mejores prácticas si desea obtener un sistema confiable.

Personalmente, considero que, dados los obstáculos que hay que superar para garantizar que una solución de Access esté razonablemente libre de problemas, es mucho menos problemático implementar una instancia de MSDE/SQL Server Express o postgreSql.

Berkeley DB admite un alto grado de concurrencia (mucho más de 20), pero lo hace principalmente mediante el uso de memoria compartida y mutex (posiblemente incluso replicación): funciones que no funcionan bien cuando BDB se implementa como una archivo almacenado en una unidad de red.

Para aprovechar las capacidades de concurrencia de DBD, deberá crear una aplicación a su alrededor.

La pregunta original no tiene sentido para mí, ya que las opciones no van juntas.BerkeleyDB es únicamente un motor de base de datos, mientras que Access es una herramienta de desarrollo de aplicaciones que se entrega con un motor de base de datos predeterminado basado en archivos (es decir, sin servidor) (Jet).En virtud de poner Access con Berkeley, parece obvio que lo que se necesita es solo un motor de base de datos y ninguna aplicación, pero no sé cómo los usuarios finales usan Berkeley DB sin una interfaz (solo lo he usado desde la línea de comandos).

Aquellos que no pueden ejecutar un Jet MDB con 20 usuarios simultáneos simplemente no son competentes para dar consejos sobre el uso de Jet como almacén de datos.Es completamente factible siempre que se sigan las mejores prácticas.Recomendaría, además de la página web de Mejores Prácticas de Microsoft, Las mejores prácticas de Tony Toews, y Preguntas frecuentes sobre la corrupción de Tony (es decir, cosas que desea evitar hacer para tener una aplicación estable).

Dudo mucho que el autor de la pregunta original no esté creando una aplicación de front-end, pero como no indica qué tipo de front-end está involucrado, es difícil recomendar un back-end que la acompañe.Access tiene la ventaja de brindarle ambas partes de la ecuación y, cuando se usa correctamente, es perfectamente confiable para múltiples usuarios.

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