sexta-feira, 10 de agosto de 2012

Conceito do banco de dados NoSQL

NoSQL é um termo utilizado para definir um tipo de banco de dados que não segue normas de tabelas (schemas) determinadas previamente. Seu significado é (Not only SQL - Não só SQL) e vem do conceito de que o banco de dados não necessita de normalização e relacionamentos.

A computação na nuvem , análises sociais, performance na consulta/escrita, replicação e a necessidade cada vez maior de prover serviços escaláveis, estão fazendo com que sejam pensadas em soluções onde se necessitem oferecer escalabilidade horizontal. Bancos de dados NoSQL armazenam os dados com técnicas que visam atender a essa necessidade.

O NoSQL surgiu dessa necessidade, ou seja, oferecer performance superior e de uma alta escalabilidade. Os bancos de dados relacionais existentes atualmente, possuem restrições a isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto mais dados, mais memória e mais disco. O NoSQL oferece a facilidade na distribuição horizontal, que em resumo é, 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 sendo essa forma muito mais eficiente e econômica.

No entanto, o banco de dados NoSQL não têm como objetivo substituir os bancos de dados relacionais, mas apenas propor algumas soluções que em determinados cenários são mais adequadas ou quanto as ferramentas de banco de dados tradicionais não são suficientes ou adequados às necessidades específicas, tais como: baixa latência, grandes volumes de dados, escalabilidade ou estruturas em que as conexões entre os dados são tão importantes quanto o próprio dado.

NoSql é um banco de dados não normalizado, que se refere ao banco de dados não seguir uma estrutura de colunas, chaves e tipos definidos previamente. No caso dos bancos NoSQL, toda a 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.

Tipos de banco de dados NoSql

  • Key/Value Store - Esse é o tipo de banco de dados NoSQL fornecem uma chave eficiente para mapear os valores existentes, o conceito dele é uma chave e um valor para essa chave. Ele é o que aguenta mais carga de dados. Esses tipos de bancos de dados são o que tem a maior escalabilidade.
  • Wide Columns Store - Estes são também chamados de bancos de dados orientados a registro. Similar aos bancos de dados relacionais, é um banco de dados grande constituído por várias tabelas, cada uma contendo um conjunto de linhas endereçáveis. Cada linha consiste de um conjunto de valores que são considerados colunas. Fortemente inspirados pelo BigTable, do Google, eles suportam várias linhas e colunas, além de permitir subcolunas.
  • Document Store - Esses bancos de dados se concentram em armazenamento e acesso otimizado em documentos em vez de linhas ou registros, são Baseado em documentos XML ou JSON, podem ser localizados pelo seu id único ou por qualquer registro que tenha no documento. Alguns bancos de dados de documentos fornecem RDBMS.
  • Graph Store - Com uma complexibilidade maior, esses bancos de dados guardam objetos, e não registros como os outros tipos de NoSQL. A busca desses itens é feita pela navegação desses objetos.Além disso, eles enfatizam alto desempenho para acesso a dados associativo, evitando a necessidade de junção.Uma característica que o Graph DBs possuem é a capacidade de um valor do campo armazenar o ID de outra entidade.
  • Column Oriented Store - Esses são bancos de dados relacionais, porém apresentam características do NoSQL. A principal diferença deles é que os dados são armazenados em colunas, ajudando na escalabilidade.

Fontes: http://imasters.com.br - http://www.devmedia.com.br - http://www.fxplabs.com.br - http://www.nosqlbr.com.br

[]s