Escolar Documentos
Profissional Documentos
Cultura Documentos
Os bancos de dados NoSQL não seguem a notação ACID como os bancos relacionais.
Os bancos NoSQL suportam consistência atômica na manipulação de cada agregado
unitariamente, mas não de forma transacional para vários objetos agregados em uma
única transação. Logo, mesmo sendo um objeto com várias estruturas complexas em seu
interior, a garantia de atomicidade se limita às fronteiras deste mesmo objeto
unitariamente. Em outras palavras, bancos NoSQL empregam o teorema ACID limitado
ao agregado em si.
Costuma-se dizer que os bancos NoSQL não possuem modelo (schema) explícito (e
gerenciado pelo SGBD), mas na verdade eles possuem um schema implícito que é
controlado/gerenciado pela aplicação principal. Logo, pode haver uma validação lógica
das condições na persistência e manipulação dos objetos.
Uma visão é como uma tabela relacional (é uma relação), mas é definida pela
computação sobre as tabelas básicas. Quando acessamos uma visão, o banco de
dados computa os dados nela – uma forma útil de encapsulamento.
(Sadalage, Pramod J.; Fowler, Martin. NoSQL Essencial, p. 56, Novatec Editora)
Nos bancos NoSQL, as visões deverão ser gerenciadas e orquestradas pela aplicação
ou por plataformas de processamento de dados externos à aplicação, como funções de
redução e mapeamento (map-reduce). É possível adotar diferentes abordagens para
implementação das visões, materializadas ou não. Estas podem ser incrementais, onde
cada estágio de consulta, aglomeração e redução dos dados é persistido e servirá como
base para os próximos estágios de processamento e para outras funcionalidades de
consulta que se beneficiarão dessa estruturação intermediária.
Considerados um banco de dados de tabela hash simples onde os agregados são objetos
de negócio geralmente em formato JSON (Javascript object notation), e podem ser
acessados pela sua chave ou pelo conteúdo de algum atributo em sua estrutura.
Naturalmente possuem modelo (schema) flexível, onde o SGBD não fará a validação do
modelo ou estrutura. Por definição, não existem ou não deveriam existir atributos em
branco (ou nulo) dentro de um objeto agregado num banco de Documentos, visto que ele
foi projetado para eficiência e flexibilidade – e para endereçar a incompatibilidade de
impedância dos bancos relacionais tradicionais.
Todavia, não são recomendados quando: modelos de negócio complexos e com forte
dependência de transações e consistência entre objetos/entidades, consultas a
agregados com dependência de relacionamento com outros objetos, consultas em
agregados muito distintos.
É um dos bancos NoSQL com maior facilidade de escalar e também é considerado sem
modelo (schema) – geralmente a escalabilidade é feita através de partições no
namespace. Similar ao banco de Documentos, a atomicidade/consistência da transação
é garantida no nível do objeto agregado, mas não há funcionalidade de transação multi-
objetos. Além de sua fácil escalabilidade também é resistente a falhas, onde estas são
consideradas como isoladas quando acontecem em somente um ou poucos nós do
cluster.
Na ótica das aplicações, os dados são acessados através de API’s específicas de cada
fornecedor/implementador de bancos chave-valor.
Tido como um dos mais complexos tipo de bancos NoSQL, os bancos de famílias de
colunas organizam seus registros em chaves de valores, mas os atributos agrupados em
famílias de colunas. A unidade básica de armazenamento é a coluna, pois ela é um par
de chave-valor (a chave é o nome da coluna) e seus valores são sempre armazenados
com um carimbo de tempo (timestamp).
São bancos muito recomendados quando há uma necessidade por escala gigantesca
com muito I/O (input/output).
O mais diferente dos tipos de bancos NoSQL e só se encaixa neste universo pois é ainda
menos parecido com os bancos relacionais. Se diferencia também por geralmente ser
single instance ao invés de ser executado em cluster. Não obstante, seu maior diferencial
é a forma como organiza os objetos: atributos e arestas, onde o que mais importa no
momento da consulta é a aresta (relacionamento entre um objeto e outro).
Os registros (nós) costumam ser pequenos, na maioria dos casos somente um atributo
texto simples e todas as arestas (relacionamentos), são montados em tempos de
persistência. Logo, suas consultas complexas são extremamente eficientes, pois o
relacionamento entre os objetos já está persistido e não precisa ser resolvido pelo SGBD.
Referências
SADALAGE, Pramod J.; FOWLER, Martin. NoSQL Essencial: Um guia conciso para o
Mundo emergente da persistência poliglota. Novatec Editora, 2013.
CUNHA, José Pedro; PEREIRA, José Luís. Column-based databases: estudo
exploratório no âmbito das Bases de Dados NoSQL. In: Atas de conferência da
Associação Portuguesa de Sistemas de Informação. 2016. p. 440-459.
MELO, Tiézer Costa de. Estudo de Caso de Bancos NoSQL no contexto de big data.
2017.
PEREIRA, Felipe S. et. Al. Utilização de Bancos de Dados NoSQL em Ambientes
Corporativos. E-RAV, v.3, v.1, 2013.
OLIVEIRA, Matheus Moreira Marques de. NoSQL Cassandra: um estudo de caso com
workflows de bioinformática. 2017.
RIBEIRO SECCO, Ricardo et al. Análise Comparativa Entre o banco de dados
Cassandra (modelo NoSQL) e o PostgreSQL (Modelo Relacional) em duas
diferentes organizações empresariais. In: Colloquium Exactarum. 2016
GARTNER. What Is Big Data? - Gartner IT Glossary - Big Data. 2015. Disponível em:
http://www.gartner.com/it-glossary/big-data
EVANS, Eric; FOWLER, Martin. Domain Driven Design. 2003