Cada vez com maior protagonismo, o NoSQL (Not Only SQL) que está relacionado com bases de dados não relacionais, modelo que todos conhecemos e que é um padrão utilizado nos maiores fabricantes atuais, como Oracle, IBM, MIcrosoft e etc.
Porém com a explosão da internet e dos serviços web associado com o extermínio das limitações de armazenamento e trafego culminou numa nova gama de problemas, como processar grandes volumes de dados e com performance. Por exemplo:
imagina uma solução para o e-commerce da Amazon que possui mais de 10 milhões de clientes em horário de pico distribuídos em mais de 10 mil webservers (vamos assim assumir). E para servir todos esta carga um funil que seria uma base de dados relacional.
Um big problema né 🙂 🙂 para complicar um pouco mais, a plataforma tem que ser escalável.
Falando um pouquinho de história:
Isto é um problema na qual o Edgar Codd, criador do conceito de modelo relacional em 1970 não previu. O modelo relacional é baseado na teoria de conjuntos e na lógica de predicados. O NoSQL rompe um outro conceito relacional que é o da transação ou ACID (Atomicidade, Consistência, Isolamento e Durabilidade).
Bem, numa base de dados relacional, temos dois principais custos para a elaboração de uma plataforma que atenda a tal demanda:
1º Grande Custo: Plano de disaster recovery.
2º Grande Custo: Infra-estrutura para atender a exigência de processamento. No caso do Oracle temos o RAC em que se consegue fazer um crescimento horizontal (pelo menos do serviço de instância), e em algumas outras bases de dados o crescimento têm que ser vertical (ou seja substituição total do hardware).
Uma solução que poderia-se imaginar era em dividir a informação em várias bases de dados e assim dividir os serviços, mas por outro lado, será que com a adição de mais uma camada necessária de integração traria agilidade de resposta para a necessidade do negócio?
Para este tipo de problemas as BDs NoSQL permitem soluções robustas e escaláveis, e com custos bem inferiores.
No nosso exemplo, a Amazon, foi criada a solução Amazon’s Dynamo. Em geral, neste tipo de base de dados, a integridade deve ser garantida por uma camada acima do motor de BD NoSQL.
Atualmente existem várias tecnologias e que atendem a diferentes tipos de problemas, vale a pena conferir algumas, como:
Bancos de dados NoSQL em dois tipos : distribuídos e não distribuídos.
Distribuidos: Amazon Dynamo, Scalaris, Voldemort, CouchDb, Riak, MongoDb, BigTable, Cassandra, HyperTable e HBase
Não distribuídos: Redis, Tokyo Tyrant, MemcacheDb e Amazon SimpleDb
Existem aqueles que armazenam dados em disco ou em memória:
Memória: Scalaris e Redis
Disco: CouchDb, MongoDb, Riak e Voldemort
Permite os dois tipos: BigTable, Cassandra, Hbase eHyperTable
Na corrida em defesa do modelo relacional a empresa VoltDB, promete encarar de frente. Este consegue ser 50x mais rápido que outros concorrentes relacionais, graças a utilização de processamento in-memory que elimina tarefas burocráticas (gerenciamento de buffer, logging e etc). Em testes, uma máquina foi capaz de processar 56.000 TPS e em um cluster com 12 máquinas 560.000 TPS o que permite uma escalabilidade linear. A grande vantagem é garantir a facilidade para os desenvolvedores e as demais vantagens que o modelo relacional permite.
Saudações Vascaínas….