Eu já vi alguns aplicativos que são basicamente softwares aplicativos executados localmente no sistema (para que eles não se comuniquem muito pela rede). Esses aplicativos parecem depender dos servidores de banco de dados para armazenar seus dados.
Um exemplo de aplicativo é o Amarok (um popular tocador de música no Linux). Não sei se eles ainda fazem isso, mas lembro que houve um tempo em que instalar o Amarok significava que era necessário instalar um servidor MySQL e executá-lo em segundo plano o tempo todo.
Qual é a vantagem de usar um servidor para armazenamento local em comparação com o uso de uma solução SQL incorporada menor, como o sqlite? Estou falando de software de aplicativo em geral, não necessariamente amarok (isso foi apenas um exemplo). Existem situações em que o uso de um servidor de banco de dados faz sentido em comparação com um banco de dados incorporado?
fonte
Respostas:
O SQLite oferece um bom resumo de quando usá-lo ou não versus alternativas:
https://www.sqlite.org/whentouse.html
Esta linha de resumo captura muito bem o caso de uso do SQLite na minha experiência:
O artigo se expande bastante neste ponto. Ele também possui uma seção intitulada "Situações em que um RDBMS de cliente / servidor pode funcionar melhor". Em poucas palavras, são eles:
fonte
Mesmo para um único sistema com um único usuário, um servidor de banco de dados "real" faz sentido:
A principal desvantagem é a necessidade de instalar e manter o software do servidor de banco de dados, um pouco complexo para usuários não técnicos (e até muitos usuários técnicos). Sistemas operacionais como o Linux facilitam isso: Eu tenho o PostgreSQL e o MySQL em execução no meu sistema Linux. Instalei aplicativos que se ligavam a eles com pouca ou nenhuma interação da minha parte.
fonte
Eu acho que tem a ver com inércia.
O Amarok é baseado no XMMS, que é de 1997. Para ter boas capacidades de banco de dados, era necessário usar um servidor, porque era muito mais poderoso do que as soluções baseadas em arquivos, que de modo algum tinham boas capacidades de banco de dados.
A crescente e crescente popularidade de bons bancos de dados locais incorporados, como o SQLlite, é algo bastante recente.
fonte
O recurso discriminante mais importante é a simultaneidade .
Se você tiver apenas um aplicativo que é executado em uma instância para o usuário, a solução incorporada (seja sqlite ou algum armazenamento de objeto) normalmente está OK.
No entanto, se você tiver várias instâncias que precisem manipular o banco de dados simultaneamente, precisará de um servidor para sincronizá-lo. O SQLite permite apenas uma gravação de cada vez, em todo o banco de dados, assim como a maioria das outras soluções incorporadas. E se você tiver vários aplicativos, provavelmente precisará de especificações de restrições mais detalhadas que as soluções incorporadas geralmente não permitem.
fonte
Muitas das outras respostas falam sobre simultaneidade como uma vantagem, mas também como o banco de dados está sendo executado como servidor, o banco de dados pode executar tarefas sem a necessidade do aplicativo em execução. Isso pode ser manutenção, backups, sincronização com outro servidor ou qualquer tarefa agendada.
Se você acha que seu aplicativo pode se transformar em um aplicativo cliente / servidor, convém começar usando um RDBMS desde o início, em vez de transferi-lo mais tarde.
Não faço ideia se o exemplo dado tira proveito disso ou não.
fonte
A menos que você esteja executando um sistema incorporado com pouca memória e CPU, não acho que executar um servidor em segundo plano esteja causando algum dano.
Executar um servidor de banco de dados localmente é bom. O banco de dados tem como objetivo acessar e manipular dados. O acesso à rede é uma vantagem, que pode ou não ser necessário. Existem algumas ferramentas científicas e de engenharia que fazem isso.
Digamos que você esteja usando dados em um aplicativo local. Por que você não deveria usar um banco de dados? em oposição a quê?
fonte
Depende da abstração dos dados e do espaço geral do aplicativo, dos requisitos de gerenciamento de acesso, do investimento que você planeja manter, da urgência do protótipo necessário, da localização da curva de aprendizado etc.
Se você deseja garantir um banco de dados totalmente integrado a um aplicativo que não exija acesso de outros aplicativos, crie ilhas de banco de dados incorporado. A implementação do Mozilla Firefox Web Storage com SQLite pode ser dada como exemplo.
Se você precisar de ainda mais eficiência com dados limitados, é preferível uma seleção de design de bancos de dados na memória.
Por outro lado, se você tiver muitos aplicativos executando várias consultas nos mesmos dados, e isso exigir uma melhor estruturação do armazenamento de dados para otimizar o desempenho, será necessário um DBMS centralizado. Eu o prefiro absolutamente para pesquisas científicas, quando exigir uma quantidade enorme de dados e onde o tempo de resposta da consulta impactará drasticamente a experiência geral do usuário.
Para o caso do Amarok, acho que era uma seleção de DBMS de código aberto na época, antes de escolherem o caminho dos bancos de dados incorporados.
Se houver uma definição específica do sistema na sua mão, será mais fácil ponderar os contras e os profissionais.
V / r, Umut
fonte