Se você quiser criar aplicativos bem-sucedidos, escolha o tipo de banco de dados!
De acordo com uma pesquisa do Standish Group, cerca de 88% dos projetos de TI no mundo excederam o prazo, orçamento ou ambos, e 31% são cancelados antes do prazo. Você quer fazer excelentes aplicativos? Sim, você precisa escolher o tipo de banco de dados!
Este artigo é o segundo de uma serie de quatro artigos onde eu quero te alertar sobre 3 erros que impedem os aplicativos de desenvolvedores iniciantes de ter sucesso.
Dois grandes grupos de tipos BD
Não subestime o poder dos dados! Os dados são o bem mais valioso da empresa! São tão importantes que podem ser roubados por hackers e há pesquisadores afirmando que, no futuro próximo, os dados serão contabilizados como parte do patrimônio corporativo. Mas qual é o baú apropriado para manter um tesouro? Em outras palavras… Qual tipo de banco de dados é adequado para armazenar os dados?
Temos dois grandes grupos de bancos de dados: bancos de dados relacionais e NoSQL. Eles são totalmente diferentes e também devem ser usados em diferentes situações. É por isso que eu afirmo que um dos maiores erros na construção de grandes aplicativos não é escolher o tipo de banco de dados correto.
Bancos de Dados Relacionais (BDR)
Em 1970, Edgar Frank Codd, um brilhante matemático da IBM, publicou um artigo onde definiu formalmente o modelo relacional. No começo dos anos 80 a IBM começou a comercializar estes bancos de dados. Ou seja, há mais de 30 anos, os bancos de dados relacionais estão sendo usados e, em muitos casos, eles são usados com sucesso.
Em bancos de dados relacionais, os dados são armazenados em tabelas, ou seja, têm linhas e colunas, têm um esquema fixo e bem definido, e também possuem suporte de transações. Um dos recursos legais dos BDRs é que eles têm suporte a linguagem SQL.
Mas finalmente, quando você deve usar bases de dados relacionais?
Mas finalmente, quando você deve usar bases de dados relacionais?
- Quando o suporte à transações é necessário; (veja neste link um post sobre este assunto)
- Quando a equipe não tem conhecimento em bancos de dados NoSQL e o projeto é crítico para a empresa;
- Quando os dados têm um formato tabular.
Banco de Dados NoSQL
O NoSQL é o nome dado a uma reunião realizada em San Francisco, Califórnia, em 2009 para discutir projetos de bancos de dados de código aberto, não-relacionais, sem esquema e distribuídos. Também podemos salientar que eles têm seus próprios idiomas de consulta, embora alguns sejam baseados em SQL, como o HQL do Hive e o CQL do Cassandra. O modelo de dados é usado para categorizar os bancos de dados NoSQL para que eles possam ser divididos em Chave-valor, Documentos, Família de Colunas e Grafos.
Bancos de Dados Chave-Valor
Como o nome diz, armazena uma chave (usada na consulta) e um valor (o qual na maioria dos bancos de dados não é usado para consultas).
É amplamente utilizado como cache de aplicativos porque pode armazenar dados críticos na memória para acesso de baixa latência.
Os exemplos de bancos de dados nesta categoria são:
- Redis;
- Voldemort;
- Memcahe;
- Riak;
Bancos de Dados orientados a documentos
É um tipo de banco de dados semelhante aos bancos de dados de chave-valor, porque ele possui uma chave (que identifica de maneira exclusiva o registro e pode ser usada para consultas) e um valor que armazena dados e também podem ser usados em consultas.
Nesta categoria, os valores de dados geralmente são armazenados no formato JSON, portanto, eles devem ser usados quando os dados estão em formato semi-estruturado.
Alguns exemplos de bancos de dados desta categoria são:
- CouchDB
- OrientDB
- RavenDB
- TerraStore
Bancos de Dados orientados a famílias de colunas
Pense nessa categoria como uma estrutura agregada de duas camadas, onde existe um identificador de linha e um mapa com valores mais detalhados. Os bancos de dados orientados por coluna devem ser usados quando os dados são desnormalizados, amplamente consultados e um alto desempenho é necessário nessas consultas.
A figura abaixo compara a forma de armazenamento orientado a linhas com o armazenamento orientado a colunas.
São exemplos de bancos de dados orientados a colunas:
- Cassandra
- HBase
- Hipertable
- Amazon SimpleDB
Bancos de Dados orientados a Grafos
São bancos de dados onde pequenos registros têm relações complexas. As consultas neste tipo banco de dados têm excelente desempenho, mas a inclusão dos dados não é tão eficiente. A Figura 3 mostra um exemplo de um banco de dados orientado por grafos.
São bancos de dados orientados a grafos
• FlockDB
• Neo4J
• OrientDB
• Infinit Graph
Conclusão
Chega usar os bancos de dados relacionais apenas porque “todos” usam! Se seus dados são formatados como linhas e colunas e o suporte à transações é necessário, use um banco de dados relacional!
Se seus dados permanecerem na memória para acesso rápido por aplicativos, use um banco de dados chave-valor.
Se seus dados forem semi-estruturados, use um banco de dados orientado a documentos.
Se seus dados são desnormalizados, precisam de alta disponibilidade e alto desempenho em consultas, use um banco de dados orientado a colunas.
Se os seus dados forem pequenos e tiverem relações complexas, use um banco de dados orientado a grafos.
Sim, estou certa de que você é capaz e suas aplicações terão muito sucesso!
Se você gostou, compartilhe este post! Se você tiver dúvidas, fale comigo.