XML vs SQL para pequenos projetos?

10

Estou trabalhando em um pequeno projeto que terá apenas um usuário por vez, já que é um aplicativo local (desenvolvido em WPF e C #). Para armazenar dados, eu estava pensando em usar um arquivo XML, mas estou pensando se essa seria a melhor abordagem.

Para que servem os dados:

  • Horários
  • Biblioteca de arquivos em pastas (com Nome do artista, Título, Localização no disco rígido)
  • Possivelmente estatísticas baseadas nos dados do shedule
  • ...

As informações sobre a biblioteca ficariam bem em XML, imagino, mas sobre todo o resto não tenho tanta certeza. Além disso, o LINQ to SQL parece ser muito mais lucrativo em termos de velocidade de desenvolvimento do que o LINQ to XML. Isso está correto ou estou errado? Eu não tinha certeza se deveria postar isso no SO ou aqui, mas parecia mais apropriado aqui!

Agradeço antecipadamente

Citroenfris
fonte
2
"Um usuário de cada vez" é o código de fala por "em seis meses será nosso único fluxo de receita e precisará suportar 4.000 usuários simultâneos". Planeje de acordo :) #
21911 Bryan Boettcher
Você nem precisa executar um serviço de servidor sql; você pode apenas torná-lo um banco de dados anexado a arquivos se estiver preocupado com a migração de uma máquina para outra.
Peter Smith
2
Não importa o que você escolhe fazer uma camada de abstração para que você possa facilmente trocar para outro regime quando se torna necessário
catraca aberração

Respostas:

13

Se você fará muito IO, o SQL é sua melhor escolha. O SQL foi projetado para funcionar bem para obter / armazenar dados, e é por isso que o usamos para armazenar dados em algo como um site em vez de XML.

XML é bom para dados legíveis por humanos que podem ser compartilhados e interpretados entre aplicativos, como era sua intenção. A análise de XML envolve MUITAS manipulações de strings, que podem custar caro à medida que o tamanho do conjunto de dados aumenta.


fonte
3
Não esqueça a edição compacta.
Jeffo
2

Parece que seus dados podem potencialmente crescer infinitamente (a menos que eu não entenda sua aplicação). Nesse caso, eu diria que é melhor deixar o armazenamento persistente até um mecanismo de banco de dados para obter eficiência e desempenho.


fonte
1

Vá com a abordagem de banco de dados. É a tecnologia comprovada para lidar com dados.

Sobre a questão do desempenho, você pode acelerar o acesso acessando índices onde, em XML, esses meios não existem.

Em um banco de dados, você pode calcular dados estatísticos usando funções agregadas; em XML, você deve codificar isso.

Usando um banco de dados, você pode alterar a estrutura do banco de dados com relativa facilidade (adicionar coluna, tabela etc.) e existem ferramentas para ajudá-lo a mover os dados entre os bancos de dados, onde, como no XML, você mesmo deve fazer isso.

Em um banco de dados, você pode aplicar regras de integridade e permitir que os usuários escrevam suas próprias seleções, se necessário, o que não é muito fácil em XML.

No banco de dados, você pode classificar os dados com muita facilidade, além de adicionar segurança. Usando um banco de dados, você pode esquecer o tamanho e a simultaneidade; assim, no futuro, seu aplicativo poderá crescer sem alterações de código.

Para o exposto, use um banco de dados! EK

NoChance
fonte