O Que É NoSQL? (conceito, definição e exemplos)

0
2609

Última Atualização 22 de fevereiro de 2022

NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais (PORCELLI, 2011).

Bancos de dados NoSQL são criados para modelos de dados específicos e têm esquemas flexíveis para a criação de aplicativos modernos. Os bancos de dados NoSQL são amplamente reconhecidos por sua facilidade de desenvolvimento, funcionalidade e performance em escala. Eles usam vários modelos de dados, incluindo documento, gráfico, chave-valor, memória e pesquisa.

QUESTÃO CERTA: Bancos de dados do modelo NoSQL são considerados orientados a objetos, pois armazenam os dados em formatos distintos dos utilizados em bancos de dados relacionais. 

◈Bancos de dados NoSQL

➭Os bancos de dados NoSQL (não-relacionais) utilizam um padrão diferente de armazenamento em relação ao SQL. O grande diferencial dessa tecnologia é a capacidade de escalabilidade para as operações das empresas de uma forma mais simples e econômica do que no banco relacional.

➭São orientados a objetos.

QUESTÃO CERTA: Os bancos de dados NoSQL usam diversos modelos para acessar e gerenciar dados, como documento, gráfico, chave-valor, em memória e, pesquisa.

Para uma empresa que necessite implantar uma base de dados altamente escalável, com grande desempenho e cujo esquema de dados seja flexível, de modo que suporte constantes mudanças de campos e valores armazenados, a melhor opção é uma base de dados NoSQL.

QUESTÃO CERTA: Analise as afirmativas a respeito da classe de gerenciadores de bancos de dados, surgida em anos recentes, conhecida como NoSQL.

I. Mesmo sem suportar tabelas relacionais, baseiam-se em esquemas de dados previamente definidos;

ERRADO: Ausência de esquema (Schema-free) ou esquema flexível

II. Suas estruturas não permitem o uso de linguagens do tipo do SQL para recuperação de dados;

ERRADO: NoSQL permite sim o uso de SQL em alguns tipos de bancos.

III. Garantem operações com as propriedades conhecidas pela sigla ACID;

ERRADO: NoSQL NÃO garantem operações com as propriedades conhecidas pela sigla ACID e sim pela BASE;

IV. Privilegiam a rapidez de acesso e a disponibilidade dos dados em detrimento das regras de consistência das transações.

CERTO: NoSQL privilegia a rapidez e disponibilidade em detrimento de consistência. Não quer dizer que ele não tem consistência em alguns momentos, e sim que privilegiam as outras propriedades.

QUESTÃO ERRADA: Devido à escalabilidade esperada para os bancos de dados NOSQL, a implementação desses bancos utiliza modelos de armazenamento de dados totalmente distintos dos utilizados em sistemas relacionais.

Como já dizia um professor meu, “Nada é criado, mas sim copiado e aprimorado”.

Embora NoSQL apresentes diferentes sistemas de armazenamento que vieram para suprir necessidades em demandas onde os bancos de dados tradicionais (relacionais) são ineficazes. Muitas dessas bases tradicionais apresentam características muito interessantes como alta performance, escalabilidade, replicação, suporte à dados estruturados e sub colunas. Essas características são utilizadas pelas bases de dados NoSQL.

QUESTÃO ERRADA: A escalabilidade dos bancos de dados NoSQL é garantida pela ausência de um esquema (scheme free).

A escalabilidade dos bancos NoSQL não tem a ver com a ausência de esquema. Esses sistemas são escaláveis pois costumam atuar em cluster, ou seja, em conjuntos de nós em um sistema distribuído. Assim, existe a possibilidade de se realizar a escalabilidade horizontal, adicionando mais nós conforme necessário. Modelos de contratação de soluções de nuvem facilitam esse tipo de atividade. Note ainda que os sistemas NoSQL não necessariamente não têm esquema, mas sim costumam possuir um esquema flexível, ou seja, que pode variar conforme o tipo de registro. Isso é interessante até mesmo pela propriedade da variedade de Big Data.

A escalabilidade é garantida através da característica nativa de clusterização do banco de dados.

Uma característica comum dos BD NoSQL, segundo Martin Fowler, é a escalabilidade horizontal, isto é, são projetados para executarem em cluster.  A escalabilidade horizontal pode ser feita de duas formas, por meio da replicação ou da fragmentação. Na replicação os dados são copiados para vários servidores, ou seja, o mesmo dado existe em mais de um servidor. Na fragmentação, os dados são distribuídos entre os servidores, ou seja, um determinado dado só existe em um dos servidores.  A replicação facilita a leitura e aumenta a disponibilidade da aplicação, porém dificulta a manutenção da consistência dos dados porque uma alteração deve ser refletida em todos os servidores que possuem cópia dos dados alterados. A fragmentação ajuda na garantia da consistência dos dados, porém diminui a disponibilidade. Essas técnicas podem ser usadas em conjunto, assim um subconjunto de dados pode ser replicado para alguns servidores da rede. Isto aumenta muito a complexidade do ambiente, porém aumenta também a sua disponibilidade.

QUESTÃO CERTA: Uma característica de bancos de dados NoSQL é o suporte à replicação de dados. Entre as abordagens utilizadas para replicação, inclui-se a mestre-escravo.

Elmasri & Navathe apontam que a replicação nos ambientes NoSQL costuma ser de um de dois tipos: master-slave ou master-master (mestre-escravo ou mestre-mestre). O modelo mestre-escravo facilita a manutenção da consistência ao concentrar todas as atualizações de dados no nó mestre.

QUESTÃO ERRADA: Apesar de implementarem tecnologias distintas, todos os bancos de dados NoSQL apresentam em comum a implementação da tecnologia chave-valor.

Nesta seção apresentamos os principais tipos de modelos de dados NoSQL, enfatizando suas diferenças, bem como vantagens e desvantagens. Os modelos apresentados são: chave-valor, orientado a documentos, orientado a colunas e orientado a grafos.

Cada solução NoSQL possui um modelo de armazenamento diferente, os quais dividimos em quatro categorias amplamente utilizadas no ecossistema NoSQL: chave-valor, documento, família de colunas ou colunar e grafos.

Chave-valor: hash distribuídas; armazenam objetos indexados por chaves

Orientado a documentos: hash simples; sem um modelo definido; boa opção para dados semiestruturados

Grafos: estrutura definida; aplicado a situações de interconectividade e topologia de dados

Colunar: dados contíguos por coluna; interessantes para processamento analítico online (OLAP)

QUESTÃO CERTA: Bancos de Dados não relacionais, também conhecidos como NoSQL, surgiram para armazenar dados não estruturados, usando modelos de armazenamento específicos para os tipos de dados que são armazenados, usualmente, fugindo do padrão de armazenamento de linhas e colunas dos bancos de dados tradicionais. Em relação ao Banco de Dados NoSQL, quais são as categorias consideradas para esse tipo de armazenamento? Armazéns chave-valor; Banco de dados orientados a documentos; Banco de dados de grafos.

QUESTÃO CERTA: Sistemas de bancos de dados classificados como NoSQL permitem a inserção de dados sem que haja um esquema predefinido.

Comentário: Uma das características de NoSQL é ser livre de esquema. Como não sabemos exatamente qual a estrutura das informações que vamos guardar no podemos fixar um modelo padrão sobre o risco de termos uma incompatibilidade de tipo ou tamanho. Alternativa correta.

QUESTÃO ERRADA: Em um banco de dados NoSQL do tipo grafo, cada arco é definido por um identificador único e expresso como uma par chave/valor.

Em um banco de dados NoSQL do tipo grafo, cada arco (deveria ser vertice/nó) é definido por um identificador único e expresso como uma par chave/valor.

Exemplo: ArangoDB, utiliza grafo como estrutura de dados e indexação do tipo Chave-Valor.

Resumo de BD – Grafos

* Armazenam entidades e relacionamento entre essas entidades.

* Entidades são nós que possuem propriedades.

* Relacionamento são arestas que podem possuir várias propriedades.

* As arestas possuem significado direcional.

* Uma consulta é conhecida como travessia do grafo.

* Não há limites para o número e tipos de relacionamento que um nodo pode ter.

* Não são orientados a agregados.

* Operam em nodos conectados, então, a maioria dos BDs, geralmente, não suporta a distribuição de nodos em servidores diferentes.

* Há algumas soluções que suportam a distribuição de nodos em um cluster de servidores.

* Podem ser compatíveis com as propriedades ACID (Neo4J).

* Por serem orientados a relacionamentos, sua fragmentação é difícil.

** Muito utilizados para armazenar:

– Redes sociais;

– Roteamento, envio e serviços baseados em localização;

– Mecanismos de recomendação;

** Não deve ser utilizado:

– Quando é comum se alterar propriedades em todas as entidades do domínio modelado.

QUESTÃO CERTA: Bancos de dados NOSQL orientados a documentos são apropriados para o armazenamento de dados semiestruturados.

Correto – NOSQL é mais indicado para consultas em big data, o qual exige métodos para análise de dados não-estruturados e semiestruturados, algo que data mining tradicional não consegue;

Sistemas de bancos de dados orientados a documento

Entre os diversos sistemas NoSQL recentes, uma subcategoria nos parece a mais apropriada para lidar com registros de dados semiestruturados, incluindo registros ISIS: são os sistemas de bancos de dados orientados a documento.

Documentos representam a unidade básica neste tipo de tecnologia, sendo possível comparar os mesmos aos registros das tabelas convencionais.

Embora exista um paralelo com as linhas do modelo relacional, um documento possui uma estrutura flexível e que não está presa à existência de colunas pré-definidas. Do ponto de vista prático, isto significa que inúmeros documentos vinculados a uma mesma coleção podem contar com formatos variáveis.

Muitas das soluções orientadas a documento fazem uso do padrão JSON (JavaScript Object Notation) para o armazenamento de dados. 

Dentre os diversos bancos orientados a documento, é possível citar como exemplos o MongoDB, o DynamoDB (alternativa oferecida na nuvem pela Amazon) e o DocumentDB (este último um serviço que integra o Microsoft Azure).

QUESTÃO CERTA: A coluna da esquerda apresenta tipos de modelos de dados relacionados com Banco de Dados NoSQL e a da direita, suas propriedades. Numere a coluna da direita de acordo com a da esquerda.

1 – Chave-Valor

2 – Documento

3 – Grafo

4 – Coluna

(2) O conteúdo do dado é organizado em codificações semelhantes à YAML.

Advertisement

(3) Tem enfoque principal no relacionamento entre os dados, com valores sendo armazenados em nós e suas ligações.

(1) Para cada identificador único tem-se associado um valor que pode ser de qualquer tipo.

(4) Organizado em tabelas com foco nos campos das tuplas.

QUESTÃO ERRADA: Em um banco de dados NoSQL orientado a documentos, a inexistência de um esquema impossibilita a definição de índices.

Bancos de dados NoSQL geralmente não possuem esquema, mas possuem funcionalidades especiais como: capacidade de consulta de dados geoespaciais, índices específicos, replicação automática de dados, APIs restful, funcionalidades para sincronização.

QUESTÃO CERTA: Com base nos sistemas de banco de dados NoSQL, assinale a alternativa que correlaciona corretamente os SGBD’s no NoSQL e seus modelos estruturais: Cassandra: Modelo Orientado a Colunas – Neo4J: Modelo Baseado em Grafos – MongoDB: Modelo Orientado a Documentos – Redis: Modelo Chave-Valor.

NoSQL modelo Colunar.E xemplos:são os bancos Hbase e Cassandra;

NoSQL representado por Grafos.Alguns exemplos são: Neo4J, OrientedDB, GraphBase e InfiniteGraph.

NoSQL orientado a documento.Exemplos destes são o MongoDB e CouchBase.

NoSQL Key-Value (chave-valor). Alguns exemplos são: Oracle NoSQL, Riak, Azure Table Storage, BerkeleyDB e Redis.

QUESTÃO CERTA: O termo NoSQL refere-se: ao aumento da escalabilidade das bases de dados neles armazenados, aliado a um desempenho mais satisfatório no seu acesso.

NoSQL (Not Only SQL – Não Somente SQL)

 – Armazenamento e recuperação de dados diferentes das relações tabulares usadas nos bancos de dados relacionais.

 – Usados em big data e aplicações web de tempo real.

 – Podem suportar linguagens de consulta semelhantes à SQL.

 – Simplicidade de projeto

 – Controle mais refinado sobre a disponibilidade.

QUESTÃO ERRADA: NoSQL são bancos de dados que não aceitam expressões SQL e devem ser armazenados na nuvem.

NoSQL significa que ele não usa formatos relacionais para o banco de dados. Entretanto, eles aceitam comandos SQL.

Banco de Dados NoSQL podem ser armazenados na nuvem, mas não há essa obrigatoriedade. Um BD NoSQL pode ser armazenado no ambiente da própria empresa, o que torna a afirmativa falsa.

QUESTÃO CERTA: Bancos de dados conhecidos como NoSQL podem ser particionados em diferentes servidores, o que introduz o problema de processar consultas que envolvem múltiplos nós de processamento. Um modelo usualmente empregado nessas circunstâncias é conhecido como: Map/Reduce.

MapReduce é um modelo de programação proposto pelo Google para para facilitar o processamento de grandes volumes de dados (Big Data). A partir de um paradigma inspirado em primitivas de programação funcional, foi criado um framework que permitisse a manipulação de grande volume de dados de forma paralela e distribuída, além de prover tolerância a falha, escalonamento de I/O e monitoramento. Um grande número de aplicações reais pode ser expresso nesse modelo de programação.

O modelo de programação MapReduce consiste na construção de um programa formado por duas operações basicas: map e reduce. A operação de map recebe um par chave/valor e gera um conjunto intermediário de dados, também no formato chave/valor. A operação de reduce é executada para cada chave intermediária, com todos os conjuntos de valores intermediários associados àquela chave combinados. Em geral a operação de map é usada para encontrar algo, e a operação de reduce é usada para fazer a sumarização do resultado.

 – Map-reduce é um padrão que permite que computações sejam paralelizadas em um cluster.

– A tarefa de mapeamento lê dados de um agregado e os agrupam pares de chave-valor relevantes. Mapeamentos somente leem um único registro de cada vez e podem, assim, ser paralelizados e executados no nodo que armazena o registro.

– A tarefa (reduce) recebe muitos valores de uma única chave de saída, a partir da tarefa de mapeamento, e os resume em uma única saída. Cada redutora trabalha sobre o resultado de uma única chave, de modo que podem ser paralelizados por chave.

– Operações de map-reduce podem ser compostas em pipelines, nas quais a saída de uma redução é a entrada do mapeamento de outra operação.

– Se o resultado de uma computação map-reduce for amplamente utilizado, pode ser armazenado como uma visão materializada.

– Visões materializadas podem ser atualizadas por meio de operações map-reduce que apenas computem alterações na visão, em vez de computar novamente tudo desde o início.

Fonte: livro NoSQL Essencial – Pramod J.Sadalage/Martin Fowler

QUESTÃO CERTA: Bancos de Dados NoSQL podem armazenar dados em diversos formatos não relacionais, como documentos compostos por pares de campo-e-valor (field-and-value), conforme a estrutura exemplificada a seguir.

QUESTÃO CERTA: Bancos de Dados NoSQL podem armazenar dados em diversos formatos não relacionais, como documentos compostos por pares de campo-e-valor (field-and-value), conforme a estrutura exemplificada a seguir.

O Banco de Dados NoSQL utilizado para armazenar documentos compostos por pares campo-e-valor, no formato BSON (JSON-like), é o: MongoDB;

MongoDB é um banco de dados de código aberto, gratuito, de alta performance, sem esquemas e orientado à documentos, lançado em fevereiro de 2009 pela empresa 10gen. Foi escrito na linguagem de programação C++ (o que o torna portável para diferentes sistemas operacionais) e seu desenvolvimento durou quase 2 anos, tendo iniciado em 2007.

Orientado à Documentos

Por ser orientado à documentos JSON (armazenados em modo binário, apelidado de JSON), muitas aplicações podem modelar informações de modo muito mais natural, pois os dados podem ser aninhados em hierarquias complexas e ainda serem indexáveis e fáceis de buscar, igual ao que já é feito em JavaScri

QUESTÃO CERTA: Como não existe um modelo de armazenamento de dados único adequado para atender a todos os cenários e necessidades das aplicações de Big Data, em complemento ao modelo relacional, foram criados quatro novos tipos de armazenamento NoSQL (Not only SQL). Dentre esses, aqueles que modelam os dados usando o formato de linhas e colunas são APENAS os tipos de bancos de dados orientados a colunas: chave-valor e documentos.

Conforme citado pelo enunciado, são quatro os tipos de banco de dados NoSQL:

a) orientado a documentos;

b) orientado a grafos;

c) orientado a chave/valor;

d) orientado a colunas.

Desses aí, o único que não tem nenhuma possibilidade de ser representado utilizando o tradicional modelo de linhas e colunas típicos dos modelos relacionais é o modelo orientado a grafos que utiliza o conceito de vértices e arestas para representar a distribuição dos dados.

A própria questão nos diz que modelam os dados usando o formato de linhas e colunas APENAS os tipos de banco de dados orientados a colunas (já respondeu um tipo) e pede para que escolhamos o resto. Dessa forma, sobram três modelos, considerando que o tipo orientado a grafos (pela característica exposta acima) não pode ser representado utilizando o tradicional modelo de linhas e colunas, restam apenas os modelos chaves/valor e documentos. Portanto, gabarito letra B.

QUESTÃO ERRADA: Como forma de permitir as buscas em documentos semiestruturados, um banco de dados NoSQL do tipo orientado a documentos armazena objetos indexados por chaves utilizando tabelas de hash distribuídas.

Errado! Segundo Martin Fowler, em “NoSQL Essencial”, o NoSQL orientado a documentos armazena os documentos de forma semelhante ao modelo chave-valor (com o documento no lugar do valor), utilizando tabelas de hash simples. Assunto novo, sendo cobrado “no detalhe”.

…objetos indexados por chaves utilizando tabelas de hash distribuídas.

Essa é uma característica típica de banco de dados que trabalham no esquema chave/valor (key/value).

Portanto, gabarito: ERRADO.