Você está na página 1de 14

SQL

NoSQL Banco de Dados em Grafos

Era do SGBDR

nica soluo do mercado para banco de dados;

Baixo desempenho para determinados tipos de armazenamento;

Dificuldade na escalabilidade horizontal;

Limitao nos relacionamentos;

Baseado em schematas.

NoSQL

Sem significado oficial, porm aceito como Not Only SQL;

Linguagem de Programao de tipagem fraca;

Sem schematas (Schemaless);

Escalabilidade horizontal (Clusters);

Dados organizados em agregados;

Criados para trabalhar com enormes volumes de dados com grande


eficincia

Banco de Dados em Grafos

Desenvolvidos para gerenciar relacionamentos complexos;

Escalabilidade vertical;

No recomendado para ambientes clusterizados;

Retorno eficiente de pesquisa;

No trabalha com agregados, e sim com grafos;

Relacionamento a nodos, no a tabelas.

Essa apresentao ser


baseada no Neo4j em conjunto
com Cypher, por isso possvel
que o que seja apresentado no
seja encontrado em outros
Bancos de Dados em Grafos.

O que o Neo4j?

Banco de dados em Grafos;

Desenvolvido e mantido pela


Neo Technology;

Licenciado atravs da
Licena Pblica Geral GNU
(GPL) e da Licena Pblica
Geral Affero (AGPL);

Atualmente na verso 2.1.5;

Funes do Neo4j

Compatvel com as propriedades ACID (Atomicidade, Consistncia,


Isolamento e Durabilidade);

Capacidade de trabalhar com mltiplos nveis de profundidade de


relacionamento;

Gerenciamento das transaes com Apache ZooKeeper;

Utiliza a Linguagem Cypher para pesquisa, porm compatvel


tambm com Gremlin;

Banco de dados de alta disponibilidade;

Utiliza o Apache Lucene como servio de indexao;

Escalabilidade horizontal atravs de fragmentao.

Quem utiliza Neo4j?

Aonde se utiliza o Neo4j

Redes sociais ou qualquer outro tipo de dados relacionados;

Servios baseados em localidade;

Mecanismos de recomendao;

Relacionamentos muitos complexos para serem representados pelo


SGBDR;

Aonde no se utiliza o Neo4j

Operaes que envolvam todo o grafo;

Relacionamentos entre tabelas que possam ser representados pelo


SGBDR;

Cypher Query Language -CQL

Linguagem de programao desenvolvido pela Neo Technology


para uso exclusivo no Neo4j;

Uso para pesquisas de nodes em banco de dados de grafos;

Para pesquisa necessrio familiaridade com os algoritmos de


pesquisa;

Linguagem de tipagem fraca;

CQL vs SQL
SQL

CQL

Select 'campo' from 'tabela'

Match ('variavel':'padro')

Delete 'contedo' from 'tabela'

Remove 'contedo'

Create 'objeto' 'nome do objeto'

Create ('variavel':'label do nodo')

Drop 'tabela'

Delete 'resultado'

---------------------------------------------------

Start 'padro'

Order by

Order by

Inner Join

Union All

Primary/Foreigner Key

---------------------------------------------------

Exemplo de Cdigos em CQL

MATCH (n) RETURN (n)


Retorne todos os nodos de seu banco de dados;

CREATE (n:celular{type:Smartphone,androidVersion:5.0})
Cria um novo nodo cuja label celular, e seu tipo Smartphone
e a verso do android 5.0

CREATE (n:Smartphone{type:5,androidVersion:Lollipop})
Cria um novo nodo cuja label Smartphone, o tipo 5, e a verso
do android Lollipop

MATCH (n:celular) SET n.type=5 RETURN n;


Busca um nodo cuja label celular e atualiza o campo type para o
valor 5, depois retorna o contedo deste nodo;

Exemplo de Cdigos em CQL

CREATE (n) [r:RELTYPE{}]->(p) return r;


Cria um relacionamento do nodo n para o nodo p. Caso queira que
ambos os lados se relacionem, ser necessrio tambm fazer o
relacionamento inverso, substituindo o nodo n pelo p no cdigo
acima, e vice-versa;

MATCH (n) -[r]->(p) return r;


Retorna todos os relacionamentos aonde o nodo (n) est ligado ao
nodo (p);

MATCH (n:celular) DELETE n;


Remove todos os nodos que possuem a label celular;

Bibliografia

Livros:
NoSQL Essencial Um Guia Conciso para o Mundo Emergente
da Persistncia Poliglota, Pramond J. Sadalage e Martin Fowler,
Editora Novatec (Cap. 11 Pg. 161-175);
Fundamentals of Database Systems, E.N;
Graphs Database, I. Robinson, J. Webber e E. Eifrem, O'reilly;
Banco de Dados Relacionais, E.R da Costa;

Sites:
http://neo4j.com/docs/stable/preface.html

Você também pode gostar