26 de novembro de 2014

Evolução dos Bancos de Dados

    Toda mudança gera incomodo e resistência, afinal algo que já está em vigor vai perder sua estabilidade, sua comodidade será desfeita, mesmo que isso tenha demandado bastante tempo e investimento.

    As primeiras bases de dados foram as hierárquicas IMS (Sistemas de Gerenciamento de Informação). Eram bem aceitas no mercado, muitos programas e empresas faziam uso dessas ferramentas por disporem de uma solução prática. A IBM tinha uma ferramenta já difundida para garantir isso, o DB2, até que, poucos anos depois, um outro cientista da própria IBM, Dr. Edgar F. Codd, elaborou um novo trabalho fundamentado na teoria relacional (Veja aqui). Era o início dos bancos de dados relacionais, tais como são conhecidos hoje.

Fonte: http://upload.wikimedia.org/wikipedia/en/5/58/Edgar_F_Codd.jpg


    Essa mudança gerou uma enorme resistência, agora os desenvolvedores teriam que aprender uma nova linguagem, uma linguagem específica, o SQL. Era preciso mudar a maneira como se pensavam as soluções, além de contabilizar todo o desperdício do que foi investido nas soluções já existentes. Mas todos os esforços se justificavam, ele tinha elaborado o aplicativo mais bem sucedido da história.

    Na atualidade essa solução já não resolve mais totalmente os problemas do mundo. Com o aumento das informações geradas diariamente as bases de dados vem crescendo muito. Essas bases de dados fazem uso dos Join's, que é um recurso de uso comum e por isso pode tornar as consultas lentas. Já os SGBDs fazem uso de bloqueios (Locks) para manter sua característica ACID (Atomicidade, Consistência, Isolamento e Durabilidade) e permitir o uso concorrente, deixando-o indisponível por um momento, com isso, cargas pesadas, como as que temos hoje em dia, deixam os locks insustentáveis, por gerarem filas para leitura e escrita em uma base de dados.

    Uma solução para este problema seria em primeiro momento melhorar o hardware, mas com o passar do tempo o mesmo problema voltaria, então, mais que mudar o hardware seria necessário rever a solução de banco de dados para diminuir o uso de join's e remover qualquer processamento de XML e estruturas semelhantes, nas Stored Procedures. Com o resultado pouco expressivo, como uma última tentativa poderia ser feito uma desnormalização e violação dos 12 mandamentos de Codd para dados relacionas, numa esperança de se conseguir níveis toleráveis de desempenho, mesmo tendo uma solução não "pura".

    Assim sendo, fez-se necessário uma nova solução, não mais apenas uma base de dados relacional, e sim uma base de dados com facilidade para alcançar tolerância a falhas, com disponibilidade em vários data-centers, consistente e escalável, mesmo para centenas de terabytes. Foram essas características que fizeram surgir um novo conceito, o NoSQL, um conceito que não menosprezou as soluções existentes, mas sim ajudou a solucionar falhas que elas tinham.

   É importante salientar que os três modelos - hierárquico, relacional e não relacional - coexistem na atualidade, podendo derivar soluções a partir dos três.

"Se eu perguntasse a meus compradores o que eles queriam, teriam dito que era um cavalo mais rápido" (Henry Ford)

Fonte: HEWITT, EBEN Título: Cassandra: The Definitive Guide, Primera Edição, Editora: O'Reilly Media Novembro de 2010.

Nenhum comentário:

Postar um comentário