Pergunta

Estamos vivendo uma era de ouro dos bancos de dados, com numerosos bancos de dados comerciais e gratuitos de alta qualidade.Isso é ótimo, mas a desvantagem é que não há uma escolha simples e óbvia para alguém que precisa de um banco de dados para seu próximo projeto.

  • Quais são as restrições/critérios que você usa para selecionar um banco de dados?
  • Até que ponto os vários bancos de dados que você usou atendem a essas restrições/critérios?
  • Quais recursos especiais os bancos de dados possuem?
  • Quais bancos de dados você se sente confortável em recomendar a outras pessoas?

etc...

Foi útil?

Solução

Eu pensaria primeiro em quais são os requisitos do sistema para acesso a dados, segurança de dados, escalabilidade, desempenho, cenários desconectados, transformação de dados, dimensionamento de dados.

Por outro lado, considere também a experiência e o histórico de desenvolvedores, operadores e administradores de plataforma.

Você também deve pensar nas restrições que possui em relação a linguagens de programação, sistemas operacionais, consumo de memória, largura de banda da rede e hardware.

Por último, mas não menos importante, você deve pensar em questões comerciais como orçamento para licenças, suporte e operação.

Depois de todas essas considerações, você deverá ter apenas algumas opções e a seleção deverá ser mais fácil.

Ou seja, selecione a tecnologia que melhor se adapta às restrições e necessidades da sua organização e projeto.

Certamente acho que você está certo ao dizer que não é uma escolha óbvia dada a grande quantidade de alternativas, mas esta é a única maneira que acho que você pode restringi-las àquelas que são realmente viáveis ​​para o seu projeto.

Outras dicas

Meus critérios de seleção (principalmente centrados na programação):

  • Manutenção:Como as atualizações/hotfixes são instaladas?
  • Controle de transação:Como é implementado
  • Os procedimentos armazenados são suportados?
  • Você pode usar o tratamento de exceções em procedimentos armazenados?
  • Custos
  • Como benefício:Você pode usar recursão em procedimentos armazenados?(Por exemplo.no SQL Server 2000 a recursão para após 32 passagens IIRC)

Para a maioria das pessoas num ambiente corporativo a escolha se resume a “aquele que temos”.

Como você parece ter a sorte de poder escolher, analisarei rapidamente as perguntas e talvez coloque mais algumas no final.

O maior critério pode ser o custo.Você quer/está preparado para pagar pela sua plataforma DBMS?Caso contrário, Oracle, MS SQL Server, Sybase e outros provavelmente estarão fora de questão, embora se você não estiver criando um aplicativo comercial, poderá haver alguma margem de manobra.Além disso, plataforma – você pode executar o software no seu hardware?

Outras dimensões a serem consideradas podem incluir o número esperado de conexões simultâneas, leituras transacionais versus principalmente leituras, tamanho, disponibilidade e acho que muitas outras.

Os "recursos especiais" devem, em geral, ser evitados - na minha visão de mundo cínica, eles têm como objetivo prendê-lo a uma plataforma.Portanto, algo como o PL/SQL da Oracle é um recurso que, embora poderoso (e provavelmente significando a necessidade de energia extra de CPU com maior custo de licenciamento), não é portátil.Se você espera volumes extremamente altos, então o particionamento pode ser útil, suponho.

Já trabalhei com Oracle, MS SQL Server, MySQL, PostreSQL, SQLite e Sybase que consigo imaginar.Eu recomendaria alegremente todos, exceto o Sybase, sobre o qual tenho algumas preocupações atualmente (posso facilmente estar errado, mas pessoalmente acho que o dinheiro poderia ser melhor gasto em outro lugar), mas não todos para as mesmas aplicações.

Idealmente, gosto de ter a sensação calorosa de que realmente não importa qual plataforma de banco de dados estou usando, porque posso portar facilmente.Com uma boa camada de abstração entre dados e lógica de negócios, devo ser capaz de desenvolver localmente em, digamos, o excelente SQLite e implementar sem problemas, por exemplo, no Postgres.Com algo como o ActiveRecord do Rails juntamente com um pouco de consciência de coisas como diferenças em palavras reservadas, isso é quase totalmente gratuito.

Certamente o fator mais atraente é a experiência sua ou de sua equipe... ou o conjunto de recursos que você provavelmente contratará no futuro.Eu tenderia a seguir o padrão na maioria das vezes, usando MySQL em uma equipe LAMP e SQL Server em uma equipe MS, já que qualquer um desses produtos é capaz de fazer tudo o que é necessário, mesmo em um ambiente de alta carga.

Os benefícios de qualquer outro banco de dados serão marginais em comparação com a dor de aprender como usá-lo bem.A única exceção a isto, na minha opinião, seria num ambiente de alta demanda onde:

a.a escolha óbvia foi tentada e está falhando

b.os benefícios da expansão multiplicam o benefício marginal a tal ponto que valerá a pena o custo de usar algo inesperado.

Eu presumiria a necessidade de contratar pelo menos dois e de preferência três DBAs excelentes com familiaridade de longo prazo com o novo banco de dados.

E primeiro eu tentaria contratá-los pela tecnologia que está falhando, porque é mais provável que seja a forma como ela é usada do que a tecnologia em si que está causando o problema.

As respostas existentes são ótimas.Vale lembrar que a Oracle agora possui uma versão XE de seu banco de dados 10g que está disponível gratuitamente e vem com o Application Express, um ótimo ambiente de desenvolvimento baseado na web.

É limitado, 4 GB de HD, 1 GB de Ram e usa apenas uma CPU.Isso é suficiente para executar um sistema menor e pode ser facilmente atualizado posteriormente, se necessário.Oracle pode ser um dos mais difíceis de aprender, mas também é um dos melhores para ter no seu currículo :-)

Acho que o SQLServer da Microsoft também possui um banco de dados do tipo 'inicial'.Não descarte os produtos comerciais - se você vai apostar sua empresa em uma tecnologia de banco de dados, eu preferiria usar pessoalmente um produto da Oracle ou da Microsoft.Isso não quer dizer que haja algo errado com o código aberto.

Passe um tempo avaliando-os :-)

  • Linux, hospedado na Web - MySQL (talvez PostreSQL)
  • PME convencional - MS SQL
  • Big Iron (bancário, etc.) - Oracle

Pensar em qualquer coisa além desses três é masturbação - qualquer um dos outros bancos de dados se torna uma discussão sobre produtos de nicho para resolver problemas específicos que você provavelmente ainda não encontrou.Se você escolher qualquer coisa diferente dos três acima, você irá -

  1. Luta para encontrar pessoas para trabalhar no projeto ou manter o banco de dados funcionando
  2. Lute para motivar sua decisão sem uma discussão acadêmica
  3. Alguém irá amaldiçoar você, seus ancestrais e sua linhagem daqui a alguns anos - e substituirá sua escolha de qualquer maneira.

Os bancos de dados de nicho não são onde os avanços arquitetônicos são feitos - são tecnologias como middleware, mensagens, serviços em nuvem, etc., onde você pode (e deve) se esforçar para encontrar bons produtos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top