Loading…

Banco de Dados NoSQL

Autor: Neyvá Conceição de Lucas Junior

Banco de Dados NoSQL

Olá, hoje vamos aprender um pouco sobre Banco de Dados NoSQL. O termo NoSQL (do inglês Not Only SQL) foi utilizado pela primeira vez em 1998 para designar um banco de dados não relacional de código aberto. É um termo genérico para uma classe definida de banco de dados não-relacionais e ainda faz referência aos bancos de dados relacionais mais populares do mercado: MySQL, PostgreSQL, etc.

Com a popularização da internet e das redes sociais, a geração de conteúdo por dispositivos móveis e o número cada vez maior de pessoas e dispositivos conectados, faz com que o trabalho de armazenamento de dados com o objetivo de utilizá-los em ferramentas analíticas, comece a esbarrar nas questões de escalabilidade e custos de manutenção desses dados. Bancos de dados relacionais escalam, mas quanto maior o seu tamanho mais caro se torna essa escalabilidade, seja pelo custo de novas máquinas, ou pelo aumento de especialistas nos bancos de dados utilizados. Os não relacionais, permitem uma escalabilidade mais barata e menos trabalhosa, pois não exigem máquinas extremamente poderosas, e como sua manutenção é fácil permite que seja necessário um número menor de profissionais.

Existem quatro principais tipos de banco de dados NoSQL, que são:

Chave/valor (Key/Value): conhecidos como tabelas de hash distribuídas, armazenam objetos indexados por chaves, e facilita a busca por esses objetos a partir de suas chaves.
Vantagens: Gerência bem o tamanho, processa uma quantidade constante de leituras e escritas, é rápido e é amigo do programador.
Alguns bancos que utilizam esse padrão são: DynamoDb, Couchbase, Riak, Azure, Table Storage, Redis, Tokyo Cabinet, Berkeley DB, etc…

Orientados a Documentos: os documentos dos bancos dessa categoria, são coleções de atributos e valores, onde um atributo pode ser multi-valorado.
Em geral, os bancos de dados orientados a documento não possuem esquema, ou seja, os documentos armazenados não precisam possuir estrutura em comum.
Essa característica faz deles boas opções para o armazenamento de dados semi estruturados.
Vantagens: Modelagem de dados natural, amigo do programador, desenvolvimento rápido e amigo da web(CRUD).
Alguns bancos que utilizam esse padrão são: MongoDB, CouchDB, RavenDB, etc.

Famílias de Colunas: Bancos relacionais normalmente guardam os registros das tabelas contiguamente no disco. Por exemplo, caso se queira guardar id, nome e endereço de usuários em um banco de dados relacional, os registros seriam:

Id1, Nome1, Endereço1;
Id2, Nome2, Endereço2.

Essa estrutura torna a escrita muito rápida, pois todos os dados de um registro são colocados no disco com uma única escrita no banco. Essa estrutura também é eficiente caso se queira ler registros inteiros. Mas para situações onde se quer ler algumas poucas colunas de muitos registros, essa estrutura é pouco eficiente, pois muitos blocos do disco terão de ser lidos.
Para esses casos onde se quer otimizar a leitura de dados estruturados, bancos de dados de famílias de colunas são mais interessantes, pois eles guardam os dados contiguamente por coluna.
O exemplo anterior em um banco de dados dessa categoria ficaria: Id1, Id2; Nome1, Nome2; Endereço1, Endereço2. Os bancos de dados de famílias de colunas são mais interessantes para processamento analítico online (OLAP). O Bigtable é uma implementação da Google dessa categoria de bancos de dados.
Vantagens: Gerência bem o tamanho, processa uma grande quantidade de carga via fluxos, alta disponibilidade, múltiplos data-centers e MapReduce.
Outros bancos de dados que são orientados a coluna: Cassandra, Hypertable, Amazon SimpleDB, etc.

Orientado a Grafos: diferente de outros bancos de dados NoSQL, esse está diretamente relacionado a um modelo de dados estabelecido, o modelo de grafos. A ideia desse modelo é representar os dados e / ou o esquema dos dados como grafos dirigidos, ou como estruturas que generalizem a noção de grafos .
O modelo de grafos é aplicável quando “informações sobre a inter-conectividade ou a topologia dos dados são mais importantes, ou tão importante quanto os dados propriamente ditos” .
O modelo orientado a grafos possui três componentes básicos: os nós (são os vértices do grafo), os relacionamentos (são as arestas) e as propriedades (ou atributos) dos nós e relacionamentos.
Vantagens: Auxilia em problemas complicados com grafos e é rápido.
Alguns bancos que utilizam esse padrão são: Neo4J, Infinite Graph, InforGrid, HyperGraphDB, etc.

Como podemos ver, os bancos de dados NoSQL, abrangem uma ampla gama de possibilidades de armazenamento da informação, espero que tenham gostado e até a próxima.