Páginas

sábado, 13 de dezembro de 2014

NoSQL Databases

NoSQL Databases 

NoSQL é um padrão de armazenamento de dados alternativo ao SQL, oferecendo uma robustez e escalabilidade melhores. Os bancos de dados NoSQL não podem exigir esquemas de tabela fixa e, geralmente, não suportam instruções e operações de junção SQL e  não possuem propriedades ACID.
NoSQL tem diferentes sistemas de armazenamento que tenta suprir necessidades onde o o sistema de banco de dados relacional e ineficaz, o NoSQL tem características interessantes como alta performance, escalabilidade, replicação, suporte a dados estruturados, grafos e sub-colunas.
O NoSQL tem uma grande facilidade na distribuição horizontal, ou seja, mais dados, mais servidores, não necessariamente de alta performance. Um grande utilizador desse conceito é o Google, que usa computadores de pequeno e médio porte para a distribuição dos dados. Essa forma de utilização é muito mais eficiente e econômica. Além disso, os bancos de dados NoSQL são muito tolerantes a erros.
No caso dos bancos NoSQL, toda a informação necessária estará agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento entre várias tabelas para formar uma informação, ela estará em sua totalidade no mesmo registro.

História 

Carlo Strozzi em 1998 usou pela primeira vez o termo NoSQL como o nome de um banco de dados relacional de código aberto que não possuía uma interface SQL. 
Com o aumento de dados gerados a partir da popularização da internet diversos novos dados foram surgindo e tratá-los foi se tornando gradualmente mais complexo e sua manutenção cada vez mais cara.
Em 2006, o artigo: BigTable: A Distributed Storage System for Structured Data, publicado pelo Google em 2006, traz novamente à tona o conceito NoSQL.
Em 2009 por um funcionário do Rackspace, Eric Evans, quando Johan Oskarsson da Last.fm queria organizar um evento para discutir bancos de dados open source distribuídos.

Diferença entre banco de dados relacional e NoSQL

Banco de dados Relacional: Todos os dados estão agrupados em tabelas, pelo conceito de entidade e relacionamento, Os dados são separados em forma única, assim diminuindo o máximo de redundância, pois a informação é criada pelo conjunto dos dados, onde os dados são unidos pelas relações.
Banco de dados NoSQL: Alternativa para bancos de dados relacionais que possuem uma alta escalabilidade e desempenho.




Uso de NoSQL

O NoSQL não resolve todos os problemas relacionado com banco de dados, existe ainda muitos casos que os banco de dados relacionais ainda são mais indicados, pois eles possuem propriedades ACID, por isso em situaçoões onde os dados são muito importantes e que não pode haver nenhuma quebra de referência é recomendado o uso de bancos de dados relacionais.
Um sistema que necessita de alta disponibilidade ou escalabilidade como uma rede social, o mais indicado e o uso de banco NoSQL.

Tipo de armazenamento

Existem quatro tipos de categorias mais comuns de bancos de dados NoSQL. Cada uma dessas categorias tem seus próprios atributos e limitações específicas. Não há uma única solução que é melhor do que todos os outros, no entanto, existem alguns bancos de dados que são melhores para resolver problemas específicos.

1. Key-value stores: Esse é o tipo de banco de dados NoSQL mais simples, o conceito dele é uma chave e um valor para essa chave. Mas ele é o que aguenta mais carga de dados. Esses tipos de bancos de dados são o que tem a maior escalabilidade. 
Exemplos: Redis, Dynamo, Riak.


2. Column-oriented: Armazenam dados como seções de colunas de dados, em vez de linhas. 
Exemplos: BigTable, Cassandra, SimpleDB.


3. Graph: É uma coleção de nós e arestas. Cada nó representa uma entidade e cada aresta representa uma ligação ou relação entre dois nós. Além disso, eles normalmente suportam propriedades de transação ACID.
Exemplos: OrientDB, Neo4J, Titan.

4. Document oriented: Baseado em documentos XML ou JSON, podem ser localizados pelo seu id único ou por qualquer registro que tenha no documento. 
Exemplos: MongoDB, CouchDB

Casos/aplicações Reais

Exemplo de caso real de uso de NoSQL é a Netflix que atualmente usa 3 bancos o SimpleDB, HBase e Cassandra.
O SimpleDB é uma implementação NoSQL da Amazon, e por isso foi escolhido, já que a empresa utiliza o serviço AWS da Amazon. Ele escreve réplicas automáticas nas zonas disponíveis dentro de uma região. É altamente durável e também possui características, além de uma interface de chave-valor simples, como: vários atributos chave de linha, operações em lote, as leituras consistentes etc.
O HBase é profundamente ligado ao Hadoop e pode escrever consultas em tempo real, apesar de sacrificar um pouco a disponibilidade pela consistência dos dados.
Cassandra foi a escolhida pela escalabilidade e pelo poder de replicar dados assincronamente através de múltiplas regiões geográficas. Pode escalar dinamicamente adicionando mais servidores sem a necessidade de re-shard ou reiniciar.




Nenhum comentário:

Postar um comentário