Tipos de Banco de Dados NoSQL

Fonte: http://artedosdados.blogspot.com.br/2013/08/o-que-e-nosql.html

NoSQL é uma abreviação de Not only SQL, (não somente SQL). Esse termo define os novos modelos de armazenamento de dados, criados para atenderem às necessidades de flexibilidade, disponibilidade, escalabilidade e desempenho das aplicações inseridas no contexto de Big Data (Marquesone, 2017).

De acordo com Marquesone (2017), Sistemas de Gerenciamento de Bancos de Dados Relacionais (SGBDR) usam a Structured Query Language (SQL) para operações de criação e manipulação dos dados. Suportam transações ACID (acrônimo de Atomicidade, Consistência, Isolamento e Durabilidade), que oferecem alta integridade aos dados armazenados.
  • Atomicidade: Significa "tudo ou nada", ou seja, uma transação é concluída integralmente ou não.
  • Constância: Significa que quando uma transação é realizada, os dados devem estar em conformidade com o schema do banco de dados.
  • Isolamento: Exige que as transações simultâneas sejam executadas separadas uma da outra.
  • Durabilidade: É a capacidade de se recuperar de uma falha do sistema ou falta de energia inesperada para o último estado conhecido.
Diferente do banco de dados relacional, em que o foco principal é voltado à integridade dos dados, os modelos existentes em NoSQL tendem a sacrificar uma ou mais propriedades ACID, para assim oferecer maior desempenho e escalabilidade às soluções que lidam com grande volume de dados (Marquesone, 2017).

Assim como não existe um padrão único para criação de aplicações de Big Data, o termo one-size-fits-all também não se enquadra em NoSQL. Ou seja, não existe um modelo de armazenamento único que seja adequado para todos os cenários de aplicações, uma vez que cada solução requer necessidades específicas. Enquanto uma solução pode ter como requisito a gravação de informações em fluxos constantes ao banco, outra pode necessitar de leituras periódicas em sua base. Para que cada uma dessas soluções tivessem recursos capazes de atender seus requisitos, diferentes modelos de armazenamento passaram a ser criados no contexto de NoSQL (Marquesone, 2017).

Comparação entre Bancos de Dados SQL e NoSQL

Item
SQL
NoSQL
Modelo de dados
Normaliza dados em estruturas tabulares conhecidas como tabelas, que consistem em linhas e colunas. Um schema define estritamente as tabelas, colunas, índices, relações entre tabelas e outros elementos do banco de dados.
Normalmente não aplicam um schema. Geralmente, uma chave de partição é usada para recuperar valores, conjuntos de colunas ou documentos semiestruturados JSON, XML ou outros que contenham atributos de itens relacionados.
Propriedades ACID
Conjunto de propriedades ACID: Atomicidade, Constância, Isolamento e Durabilidade.
Modelo de dados mais flexível que escala horizontalmente. Essas características fazem dos bancos de dados NoSQL uma excelente opção em situações em que os RDBMS deparam com desafios de arquitetura e precisam solucionar uma combinação de gargalos de desempenho, escalabilidade, complexidade operacional e custos crescentes de administração e suporte.
Desempenho
O desempenho normalmente depende do subsistema do disco. A otimização de consultas, índices e estrutura de tabela é necessária para alcançar máximo desempenho.
Desempenho geralmente é uma função do tamanho do cluster do hardware subjacente, da latência de rede e da aplicação que faz a chamada.
Escala
Mais fácil de aumentar a escala "verticalmente" com hardware mais rápido.  Outros investimentos são necessários para tabelas relacionais para abranger um sistema distribuído.
Projetado para aumentar a escala "horizontalmente" usando clusters distribuídos de hardware de baixo custo para aumentar a transferência sem aumentar a latência.
APIs
As solicitações para armazenar e recuperar dados são comunicadas usando consultas compatíveis com structured query language (SQL). Essas consultas são analisadas e executadas por sistemas de gerenciamento de bancos de dados relacionais (RDBMS).
APIs baseadas em objetos permitem que desenvolvedores de aplicações armazenem e restaurem facilmente estruturas de dados na memória. As chaves de partição permitem que os aplicativos procurem pares de chave-valor, conjuntos de colunas ou documentos semiestruturados contendo objetos e atributos de aplicativos serializados.
Ferramentas
Os bancos de dados SQL normalmente oferecem um rico conjunto de ferramentas para simplificar o desenvolvimento de aplicações orientadas ao banco de dados.
Os bancos de dados NoSQL normalmente oferecem ferramentas para gerenciar clusters e escalabilidade. As aplicações são a interface principal com os dados subjacentes.
Fonte: https://aws.amazon.com/pt/nosql/

Tipos de Bancos de Dados NoSQL

Podemos classificar os modelos existentes em NoSQL de acordo com a estrutura que os dados são armazenados. Atualmente, existem 4 modelos principais: o modelo orientado a chave-valor, orientado a documentos, orientado a colunas e orientado a grafos.

 Banco de dados orientado a Chave-Valor 

De todos os modelos de banco de dados NoSQL, o orientado a chave-valor é o que possui a estrutura mais simples. Ele utiliza chaves como identificadores das informações gravadas em um campo identificado como valor. A chave é composta normalmente de um campo do tipo String. Já o campo valor pode conter diferentes tipos de dados, sem necessitar de um esquema predefinido, como acontece em bancos de dados relacionais. Bancos de dados orientados a chave-valor são adequados para aplicações que realizam leituras frequentes. Existem atualmente diversas opções de banco de dados orientado a chave-valor. Embora cada um possua suas próprias características, todas as opções disponíveis são criadas com foco em oferecer flexibilidade, desempenho e escalabilidade no gerenciamento dos dados. Por esse motivo, esse modelo de banco de dados pode ser uma solução ideal para resolver questões de lentidão para leitura e escrita de dados em grande variedade e volume. Com sua estrutura simples, ele é capaz de otimizar o desempenho da consulta e realizar operações com alta vazão. Embora a estrutura simples do banco de dados orientado a chave-valor ofereça benefícios, ela também possui algumas limitações. Nesse tipo de banco, o conteúdo do campo valor é "opaco", não sendo possível fazer uma indexação com esse campo e uma consulta mais complexa (Marquesone, 2017). Seguem exemplos de bancos de dados orientados a Chave-Valor:
  •         DynamoDB: https://aws.amazon.com/pt/dynamodb/
  •         Redis (open source): http://redis.io/
  •         Riak (open source): http://basho.com/
  •         Memcached (open source): https://memcached.org/

Bancos de dados orientado a Documentos

Considerado uma extensão do banco de dados orientado a chave-valor, este tipo de banco de dados é provavelmente a categoria NoSQL mais popular atualmente. Ele oferece meios de criação de índices sobre os valores dos dados armazenados, enriquecendo as possibilidades de consultas, além de permitir normalização de dados e muitos outros conceitos oriundos do banco de dados relacional, tais como a criação de joins e definição de esquemas rígidos. No entanto, esses recursos não são obrigatórios como nos bancos de dados relacionais. Podemos definir documentos como sendo estruturas flexíveis que podem ser obtidas por meio de dados semiestruturados, como o formato XML e JSON. Pense em um documento como sendo uma linha de uma tabela, e um conjunto de documentos como sendo a tabela com todos os registros. A diferença é que cada documento (ou seja, cada linha da tabela) pode conter variações em sua estrutura. Isso é possível pelo fato de que você não precisa definir um esquema antes de adicionar os registros. Diferente do modelo chave-valor, o banco de dados orientado a documentos permite a criação de consultas e filtros sobre os valores armazenados, e não somente pelo campo chave. Permite trabalhar com a replicação dos dados em um cluster, e assim garantir que o dado ficará disponível mesmo com a ocorrência de falha em um dos servidores. Esse modelo é indicado para realizar o armazenamento de conteúdo de páginas Web, na catalogação de documentos de uma empresa e no gerenciamento de inventário de um e-commerce, pois são aplicações que trabalham diretamente com coleções de documentos (Marquesone, 2017). Seguem exemplos de bancos de dados orientados a Documentos:
  •         Couchbase: http://www.couchbase.com/
  •         CouchDB (open source): http://couchdb.apache.org/
  •         MarkLogic: http://www.marklogic.com/
  •         MongoDB: https://www.mongodb.com/

Bancos de dados orientado a Colunas 

De todos os modelos de armazenamento NoSQL, provavelmente o orientado a colunas seja o mais complexo. Esse modelo também é considerado uma extensão do armazenamento orientado a chave-valor e possui conceitos similares ao do modelo relacional, como a criação de linhas e colunas. Entretanto, é preciso ficar atento, pois existem diferenças fundamentais no modo como essas estruturas são criadas. Como o banco de dados orientado a colunas se diferencia do banco de dados relacional nesse cenário? Esse tipo de banco busca resolver principalmente o problema de escalabilidade e flexibilidade no armazenamento de dados. No que se refere à flexibilidade, ao invés de definir antecipadamente as colunas necessárias para armazenar um registro, o responsável pela modelagem de dados define o que é chamado de "famílias de colunas". As famílias de colunas são organizadas em grupos de itens de dados que são frequentemente usados em conjunto em uma aplicação. A partir das "famílias de colunas" definidas, o desenvolvedor possui a flexibilidade de inserir as colunas que considerar necessárias em cada registro armazenado, sem precisar alterar a estrutura dos dados já armazenados. Outra informação armazenada no banco de dados orientado a colunas é o timestamp de cada item gravado. Essa abordagem é utilizada para prover o versionamento das colunas. Com essa estratégia de armazenamento por famílias de colunas, além de fornecer flexibilidade, esse modelo oferece também grande escalabilidade. O registro de um item pode ter informações gravadas em diversas famílias de colunas, que podem estar armazenadas em diferentes servidores. Isso é possível pelo fato de que os dados são armazenados fisicamente em uma sequência orientada a colunas e não por linhas. Dessa forma, mesmo em um ambiente distribuído, com milhões de colunas, o banco de dados orientado a colunas pode distribuir as consultas em um grande número de nós de processamento sem realizar operações de join. Se sua aplicação trabalha com volumes imensos de dados, se ela necessita de alto desempenho e de alta disponibilidade na leitura e escrita dos dados, ou se você necessita de inclusão de campos dinâmicos e sua solução tolera eventuais inconsistências, provavelmente o banco de dados orientado a colunas é a solução mais adequada. Por atender tais necessidades, esse modelo é muito utilizado por aplicações de larga escala, como ocorre com o serviço de mensagens do Facebook (Marquesone, 2017). Seguem exemplos de bancos de dados orientados a Colunas:
  •         BigTable do Google: https://cloud.google.com/bigtable/
  •        Accumulo (open source): https://accumulo.apache.org/
  •         Cassandra (open source): http://cassandra.apache.org/
  •         HBase:  https://hbase.apache.org/
  •         Hypertable: http://www.hypertable.org/

Bancos de dados orientado a Grafos

Em situações como essa, com foco no relacionamento dos dados, é que o banco de dados orientado a grafos é recomendado. Em situações como essa, com foco no relacionamento dos dados, é que o banco de dados orientado a grafos é recomendado. Entre os quatro tipos de armazenamento NoSQL apresentados, o orientado a grafos é provavelmente o mais especializado. Diferente dos outros modelos, em vez dos dados serem modelados utilizando um formato de linhas e colunas, eles possuem uma estrutura definida na teoria dos grafos, usando vértices e arestas para armazenar os dados dos itens coletados e os relacionamentos entre esses dados, respectivamente. Esse modelo oferece maior desempenho nas aplicações que precisam traçar os caminhos existentes nos relacionamentos entre os dados, como por exemplo, as que precisam identificar como um conjunto de amigos está conectado em uma rede, ou descobrir a melhor rota para se chegar a um local em menor tempo (Marquesone, 2017). Seguem exemplos de bancos de dados orientados a gráficos:
REFERÊNCIAS:

Bibliográfica:
MARQUESONE, Big Data: Técnicas e Tecnologias para extração de valor de dados. São Paulo: Casa do Código, 2017.

Internet:
https://aws.amazon.com/pt/nosql/
Postar um comentário

Postagens mais visitadas