Nesse artigo será abordado sobre os tipos de bancos NoSQL além de sua classificação serão mostrados também alguns exemplos. Esses bancos por serem bastante novos ainda não existem padrões ou seja por mais que dois bancos possuam exatamente as mesma classificações não é absoluto afirmar que eles possuem os mesmo recursos e que fazem as mesmas coisas sem falar no alto trabalhar que haverá na mudança de um banco NoSQL para o outro mesmo sendo semelhantes. Existem hoje diversos SGBDs que se encaixam como NoSQL eles são classificados por: Arquitetura, Armazenamento, modelo dedados:

Arquitetura

Na arquitetura se pode dividir em dois tipos: distribuídos e não distribuídos. Os distribuídos tomam a responsabilidade pela partição dos dados e pela sua replicação.

Distribuídos:

  • AmazonDynamo
  • Scalaris
  • Voldemort
  • CouchDb
  • Riak
  • MongoDb
  • BigTable
  • Cassandra
  • HyperTable
  • HBase

Não distribuídos:

  • Redis
  • TokyoTyrant
  • MemcacheDb
  • AmazonSimpleDb

Armazenamento:

Se defini por aqueles que armazenam dados em disco e os que armazenam na memória. Esta diferenciação é importante por que no caso da gravação em disco você vai precisar de um cache explicito. Já os dados armazenados em memória não são duráveis. Um ponto interessante a ser avaliado é que no disco os dados tem menos possibilidade de ser perdidos no entanto o custo de I/O é altíssimo já com memória apesar de ser mais rápido o acesso deve-se levar em conta o fato dos dados ficarem em regiões voláteis.

Memória:

  • Scalaris
  • Redis

Disco:

  • CouchDb
  • MongoDb
  • Riak
  • Voldemort

Configurável

  • BigTable
  • Cassandra
  • Hbase
  • HyperTable

Modelo de dados

No modelo de dados é definido como a informação é armazenada e estruturada dentro do banco.

  • Chave/Valor Possuiuma estrutura muito semelhante a do java.util.Map, onde podemos armazenar uma chave e seu valor. Esse valor pode ser qualquer informação.
  • AmazonDynamo
  • AmazonS3
  • Redis
  • Scalaris
  • Voldemort

Documento

Estemodelo permite armazenar qualquer documento, sem ter a necessidade de definir previamente sua estrutura. O documento e composto por uma inúmeros campos, com tipos de dados diversos, inclusive um campo pode conter um outro, possui uma estrutura semelhante a um arquivo XML.

  • AmazonSimpleDb
  • ApacheCouchdb
  • MongoDb
  • Riak

Colunas Essemodelo se tornou popular através do paper BigTable do Google, com o objetivo de montar um sistema de armazenamento de dados distribuído, projetado para ter um alto grau de escalabilidade e de volume de dados é composto por três componentes.

Keyspace tem como função agrupar um conjunto de Famílias de Colunas. Semelhante a um banco de dados relacional.

Família de Colunas organizas as colunas. faz o uso de uma chave única, que traz flexibilidade ao modelo sem poluir as linhas com colunas nulas. Semelhante a uma tabela no modelo relacional.

Coluna, que é uma tupla composta por nome,timestamp e valor, onde os dados são realmente armazenados.

Duas características adicionais e importantes deste modelo são a forma de consulta, que pode ser executada apenas através da chave das linhas de uma família de colunas, e a necessidade de definir previamente o conjunto de colunas que podem ser armazenadas em cada família.

  • Cassandra
  • GoogleBigTable
  • HBase
  • Hyperbase

Grafo (whiteboardfriendly) é uma estrutura de dados que conecta um conjunto de vértices através de um conjunto de arestas. Os bancos de dados de grafo modernos suportam estruturas de grafo multi-relacionais, onde existem tipos diferentes devértices (representando pessoas, lugares, itens) e diferentes tipos de arestas(como por exemplo amigo de, mora em, comprado por.

  • Neo4j
  • InfoGrid
  • Sones
  • HyperGraphDB

Conclusão:

Neste artigo foi falado sobre os diversos tipos de bancos NoSQL, além de classificá-los por arquitetura, armazenamento e modelo dados. Com isso conclui-se que com o grande número de aplicações e suas diversidade se fez necessário a criação de algumas forma de armazenamento para atender melhor um requisito específico. Finalizado uma breve introdução sobre o NoSQL no próximo artigo será falado sobre o Cassandra e suas características.