NoSQL

Já ouviu falar de bancos de dados NoSQL? Sabe qual a diferença deles para os bancos de dados relacionais?

Primeiro, vamos entender que a maioria dos bancos de dados usados atualmente são chamados de bancos de dados relacionais (pois uma tabela se relaciona com outra tabela). Eles possuem as características ACID [1]:

  • Atomicidade: toda transação deve ser atômica, isto é, só pode ser considerada efetivada se executada completamente;
  • Consistência: todas as regras aplicadas ao banco de dados devem ser seguidas;
  • Isolamento: nenhuma transação pode interferir em outra que esteja em andamento ao mesmo tempo;
  • Durabilidade: uma vez que a transação esteja concluída, os dados consequentes não podem ser perdidos.

Quando falamos em Big Data (muitos dados que precisam ser distruibuídos para que sejam processados simultaneamente) entra em cena os bancos de dados NoSQL.

Alguns dizem que NoSQL significa “Not only SQL” [2]. Esse termo se refere aos bancos que não são relacionais, são distribuídos, open-source e horizontalmente escaláveis. Por trabalharem principalmente com computação distribuída, o sistema fica mais disponível, mas pode não ser tão consistente.
Ex: Como existem várias máquinas que processam os mesmos dados, se uma delas falhar, não será tão perceptível. No entanto, são necessários mecanismos para garantir que 2 pessoas não reservem o último quarto disponível em um hotel, mesmo processando em máquinas diferentes.

Ao invés de usar tabelas, um banco NoSQL se organiza em objetos e pares de chave/valor [3].

Além disso, há mais de uma categoria de banco de dados NoSQL, cada um atendendo à uma determinada necessidade. Os principais são [4]:

  • bancos de dados chave/valor: Redis, DynamoDB
  • bancos de dados orientados a documentos: MongoDB
  • bancos de dados de famílias de colunas: Cassandra, HBase
  • bancos de dados de grafos: Neo4J

Você pode encontrar todos eles neste site: http://nosql-database.org/

Exemplo

Em um banco de dados relacional, se eu preciso armazenar uma nota fiscal e seus itens, vou criar pelo menos 2 tabelas: uma para a nota fiscal e outra para os itens. Na tabela de itens eu referencio via chave estrangeira (FK) o número da nota fiscal à qual aquele item pertence.

Quando falamos em bancos não relacionais (NoSQL), a nota fiscal é um objeto (por exemplo: JSON). Podemos armazenar em um banco de dados de chave/valor, por exemplo [4]:

chave = número da nota fiscal
valor = JSON que representa a nota fiscal completa, incluindo os seus itens. Veja um exemplo de JSON na figura 1:

Exmplo de JSON para NoSQL
Figura 1 – Exemplo de JSON de nota fiscal

Agora você já conhece um pouco sobre os bancos não relacionais (NoSQL). Em breve, falaremos mais sobre eles.

Referências

[1] http://www.infowester.com/big-data.php
[2] http://nosql-database.org/
[3] http://searchdatamanagement.techtarget.com/definition/NoSQL-Not-Only-SQL
[4] FOWLER, Martin; SADALAGE, Pramod. NoSQL Essencial. Editora Novatec. 1a ed. São Paulo:2013.

Por RONALDO CHICARELI

Arquiteto de software e também apaixonado por novas culturas e idiomas, pois a vida é muito curta pra ser vivida em um só lugar.

Postado em: 30 de dezembro de 2016

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário