Uma das principais, sem sombra de dúvidas, é o banco de dados. Aonde vou armazenar os dados desse novo sistema? Uma decisão errada no início do projeto pode custar muito caro, e costuma acontecer. A resposta correta é: depende! Não pode existir uma resposta certeira, uma fórmula mágica, um banco de dados que seja considerado ideal para qualquer tipo de aplicação, e de fato não existe. Cada aplicação possui as suas particularidades, seu orçamento, sua equipe técnica, suas expectativas.
Há uma infinidade de produtos no mercado, desde soluções open source, passando pelos consagrados e bem sucedidos líderes do mercado e chegando finalmente nas soluções de banco de dados como serviço, tanto relacionais quanto NoSQL. Existem os tradicionais “casamentos”, como os aplicativos web desenvolvidos em PHP com banco de dados MySQL, a tecnologia Microsoft com C# ou VB .Net com o SQL Server e ainda se ouve que para grandes volumes de dados a única solução é o bom e velho Oracle.
Eu já atuei como DBA em projetos que mesclavam muito as tecnologias, e conseguimos obter excelentes resultados quando aproveitamos o que há de melhor em cada produto, fugindo um pouco desses agrupamentos tradicionais. Para citar um exemplo, desenvolvemos um e-commerce que comercializa cursos online, bem como um e-learning que consome esse conteúdo, em PHP com banco de dados principal em SQL Server 2012 e utilizando outros serviços na cloud da Amazon – AWS, como NoSQL e tecnologias de cache.
Mesmo com a grande quantidade de novas tecnologias e produtos que surgem quase diariamente, quando se fala em bancos de dados a evolução não se dá de uma maneira tão rápida como as linguagens de programação e demais serviços em cloud, um sistema web desenvolvido a 10 anos e um desenvolvido hoje tem a arquitetura muito diferente, mas o banco de dados ainda é muito parecido.
A AWS, líder mundial em cloud computing, costuma recomendar o uso regular de bancos de dados relacionais para sistemas até 1.000.000 de usuários, acima disso o uso de NoSQL e demais tecnologias começa a se fazer necessário. A própria Amazon oferece diversos serviços proprietários, nas mais variadas plataformas. O serviço de banco de dados RDS oferece desde os tradicionais MySQL, PostgreSQL, Oracle e SQL Server além do MariaDB e uma implementação própria do MySQL com foco em performance chamada Aurora, vale a pena conhecer. Há também os serviços especializados, criados para DataWarehousing ou Big Data, a AWS possui o RedShift baseado no PostgreSQL e a sua solução própria de Hadoop, o EMR.
Outros gigantes da tecnologia também ofercem as suas soluções de banco de dados como a Microsoft com a implementação do SQL Server no Windows Azure além de bases especializadas para Hadoop, DataWarehouse e NoSQL. O SQL Server é uma suite de aplicativos e possui uma solução integrada para Business Intelligence (BI).
O sistema que está sendo desenvolvido possui determinadas características, orçamento, arquitetura, estimativa de número de usuários, tamanho inicial e expectativa de crescimento, necessidade de replicação, alta disponibilidade e escalabilidade, utilização de outros serviços que vão além das capacidades de um database engine tradicional, entre tantas outras variáveis que devem ser levadas em conta ao escolher a tecnologia a ser utilizada.
Quanto maior o sistema, número de usuários e tamanho da base, maior a probabilidade de utilização de diferentes produtos simultaneamente, via de regra a base principal continua sendo relacional, com a utilização de bases NoSQL e mecanismos de cache em memória, replicação, réplicas secundárias para rotinas de backup e relatórios, integração com sistemas legados e eventualmente aplicações secundárias, inclusive com acessos offline. Nos próximos artigos pretendo me deter de maneira mais profunda nos pontos mais importantes, fazer comparações entre alguns produtos e dar algumas sugestões baseadas em casos reais.
Seja qual for a opção escolhida, a qualidade dos profissionais envolvidos no projeto é que vai determinar a qualidade do produto final. Instalações next -> next -> finish ou a utilização dos melhores produtos do mercado, mas sem a aplicação das melhores práticas em relação a performance, segurança, integridade e demais características será causa certeira de fracasso. No final das contas, as pessoas são sempre a melhor tecnologia a serviço de qualquer tipo de projeto. Profissionais qualificados, treinados e motivados, esse é o segredo do sucesso das mais bem sucedidas empresas ao redor do mundo. Até a próxima.
MSSQL is the best.