He visto algunas aplicaciones que son básicamente software de aplicación que se ejecutan localmente en el sistema (por lo que no tienen mucha comunicación a través de la red). Estas aplicaciones parecen depender de servidores de bases de datos para almacenar sus datos.
Un ejemplo de una aplicación es Amarok (un reproductor de música popular en Linux). No sé si todavía lo hacen, pero recuerdo que hubo un momento en que instalar Amarok significaba que tenía que instalar un servidor MySQL y tenerlo funcionando en segundo plano todo el tiempo.
¿Cuál es la ventaja de usar un servidor para almacenamiento local en comparación con el uso de una solución SQL incrustada más pequeña como sqlite? Estoy hablando del software de aplicación en general, no necesariamente de amarok (eso fue solo un ejemplo). ¿Hay alguna situación en la que el uso de un servidor de bases de datos tenga sentido en comparación con una base de datos integrada?
fuente
Respuestas:
SQLite ofrece un resumen bastante bueno de cuándo usarlo o no frente a las alternativas:
https://www.sqlite.org/whentouse.html
Esta línea de resumen captura el caso de uso de SQLite extremadamente bien en mi experiencia:
El artículo se expande extensamente sobre este punto. También tiene una sección titulada "Situaciones donde un cliente / servidor RDBMS puede funcionar mejor". En pocas palabras, son:
fuente
Incluso para un solo sistema con un solo usuario, un servidor de base de datos "real" tiene sentido:
El principal inconveniente es la necesidad de instalar y mantener el software del servidor de la base de datos, que es un poco complejo para usuarios no técnicos (e incluso muchos usuarios técnicos). Los sistemas operativos como Linux lo hacen más fácil: tengo PostgreSQL y MySQL ejecutándose en mi sistema Linux. He instalado aplicaciones que se engancharon a ellas con poca o ninguna interacción de mi parte.
fuente
Creo que tiene que ver con la inercia.
Amarok se basa en XMMS, que es de 1997. Para tener buenas capacidades de base de datos, tenía que usar un servidor, porque era mucho más potente que las soluciones basadas en archivos, que de ninguna manera tenían buenas capacidades de base de datos.
La popularidad próxima y creciente de buenas bases de datos integradas locales como SQLlite es algo bastante reciente.
fuente
La característica discriminante más importante es la concurrencia .
Si solo tiene una aplicación que se ejecuta en una instancia para el usuario, la solución integrada (ya sea sqlite o algún almacenamiento de objetos) generalmente está bien.
Sin embargo, si tiene varias instancias que necesitan manipular la base de datos al mismo tiempo, necesita tener un servidor para sincronizarla. SQLite solo permite una escritura a la vez, en toda la base de datos, y también lo hacen la mayoría de las otras soluciones integradas. Y si incluso tiene múltiples aplicaciones, es probable que necesite una especificación de restricción más detallada que las soluciones integradas generalmente tampoco permiten.
fuente
Muchas de las otras respuestas hablan de la concurrencia como una ventaja, pero también dado que la base de datos se está ejecutando como un servidor, la base de datos puede ejecutar tareas sin la necesidad de ejecutar la aplicación. Esto podría ser mantenimiento, copias de seguridad, sincronización con otro servidor o cualquiera de las tareas programadas.
Si cree que su aplicación podría convertirse en una aplicación cliente / servidor, es posible que desee comenzar a usar un RDBMS desde el principio en lugar de portarlo más tarde.
No tengo idea si el ejemplo dado se aprovecha de esto o no.
fuente
A menos que esté ejecutando un sistema integrado con poca memoria y CPU, no creo que ejecutar un servidor en segundo plano le esté causando ningún daño.
Ejecutar un servidor de base de datos localmente está bien. La base de datos está destinada a acceder y manipular datos. El acceso a la red es una ventaja, que puede o no ser necesaria. Hay algunas herramientas de ingeniería y científicas que hacen esto.
Digamos que está utilizando datos, en una aplicación local. ¿Por qué no deberías usar una base de datos? a diferencia de qué?
fuente
Depende de la extracción de datos y el espacio general de la aplicación, los requisitos de administración de acceso, la inversión que está planeando en el mantenimiento de datos, la urgencia del prototipo requerido, dónde se encuentra en la curva de aprendizaje, etc.
Si desea garantizar una base de datos estrechamente integrada a una aplicación que no requiere acceso desde otras aplicaciones, cree islas de bases de datos integradas. La implementación de Mozilla Firefox Web Storage con SQLite podría ser un ejemplo.
Si necesita aún más eficiencia con datos limitados, es preferible una selección de diseño de bases de datos en memoria.
Por otro lado, si tiene muchas aplicaciones que ejecutan múltiples consultas en los mismos datos y requiere una mejor estructuración del almacenamiento de datos para optimizar el rendimiento, se requiere un DBMS centralizado. Lo preferiré absolutamente para la investigación científica, cuando requiera una gran cantidad de datos y donde el tiempo de respuesta de la consulta afecte drásticamente la experiencia general del usuario.
Para el caso de Amarok, supongo que era una selección de DBMS de código abierto en ese momento, antes de que elijan el camino de las bases de datos incrustadas.
Si hay una definición específica del sistema a la mano, será más fácil evaluar los pros y los contras.
V / r, Umut
fuente