Por Fernando Cunha
Uma Breve Introdução
Fernando Cunha – fecunhainfo@gmail.com
• Bacharel em Informática
• Pós graduado Engenharia de Software UFPR
• Pós graduando em Gestão de TI
• ITIL V3 Foundation Certificate
• Gerente de Projetos
Contatos:
http://br.linkedin.com/pub/fernando-cunha/26/67a/827/
Palestrante:
 NOSQL é um termo genérico que define bancos de
dados não-relacionais.
 Termo introduzido por Carlos Strozzi em um evento de
banco de dados open-source em 1998
 Em 2009 Eric Evans reintroduziu o termo em outro
evento de banco de dados open-source
 Pronuncia-se - noseequel
O que significa?
Quem?
Porque?
 Suprir as necessidades introduzidas pelo o fenômeno
BIG DATA
Classificação de SGBD NOSQL
 Coleção de chaves únicas associada a um valor, que pode ser de
qualquer tipo (binário, string)
Exemplo:
Key: 1234 Value: “Fernando”
Key: 2343 Value: “Name=Fernando, age=29”
KEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL
 Famílias de colunas (um repositório para colunas,
 análogo a uma tabela do Modelo Relacional) e super-colunas
(compostas por arrays de colunas)
Exemplo:
Column family, Key, Column name e value
Pessoas ; 4564 ; nome : Ana ; idade : 30;
KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL
 Banco de dados baseado em grafos, nele temos as entidades
chamadas de vértices (ou node) que são ligadas entre elas pelas
arestas (ou relationships) cada um podendo guardar dados
entre os relacionamentos e cada relacionamento pode ter uma
direção.
Exemplo:
- Vértice: Chave->Valor representa entidade. Nome:Priscila
- Aresta: relacionamentos
Ex: Vertice “Priscila” segue o vertice “Lucas” desde 2012, o
relacionamento é igual a “segue”
KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL
 Os documentos são as unidades básicas
de armazenamento e estes não utilizam necessariamente
qualquer tipo de estruturação pré-definida
 São baseados em JSON. (JavaScript Object Notation)
Exemplo:
{"user":{
"id": "123",
"name": "Emmanuel",
"addresses":[
{"city":"Paris"},
{"city":"Sao Paulo"}]}
KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL
Key Value
12343
5
Joao da Silva
33454
5
Name=Fernando, age=29
Key - Value Column
Graph Document
Classificação de SGBD NOSQL
150 tipos de banco de dados NOSQL
Fonte: http://nosql-database.org/
Dados compilados manualmente
30%
13% 13%
7%
37%
0%
5%
10%
15%
20%
25%
30%
35%
40%
Key Value Document Store Graph Databases Column Não categorizado
Classificação de SGBD NOSQL e quem
está utilizando
KEY VALUE COLUMN GRAPH DOCUMENT
Amazon DynamoDB (Key-value)
Desenvolvido em: Java
Quem Usa?
– Washingtonpost.com
– Elsevier (Editora)
Classificação de SGBD NOSQL e quem
está utilizando
KEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL e quem
está utilizando
Cassandra (column)
Desenvolvido em: Java
Quem Usa?
– Twitter
– NetFlix
– Facebook
BigTable(column) Google
Desenvolvido em: C++
Quem Usa:
Gmail
Google Maps,
YouTube
KEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL e quem
está utilizando
Neo4j (graph)
– Desenvolvido em: Java
Quem Usa?
– WalMart
– National Geographic
– Ebay
KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT
Classificação de SGBD NOSQL e quem
está utilizando
MongoDB (Document)
Desenvolvido em: C
Quem Usa:
– Globo.com
– Apontador
– Forbes
– New York Times
KEY VALUE COLUMN GRAPH DOCUMENT
Dá pra fazer query?
I
SQL
Dá pra fazer query?
Amazon DynamoDB– Key-Value
SQL Query
AWS Query
AWS SDK for Java
AWS SDK for .NET
AWS SDK for PHP
JSON Data Format
API Reference
Dá pra fazer query?
MongoDB - Document
SQL Query
Operation Find
Dá pra fazer query?
Neo4j- Graph
SQL Query
Cyber query
Dá pra fazer query?
Cassandra - Column
SQL Query
CQL – Cassandra Query Language
Comandos CRUD
(Create, Read, Update, Delete)
são iguais
Quais linguagens suportam
NOSQL?
Amazon Dynamo Neo4j Cassandra MongoDB
C x
C# x
C++ x x
Go x x
Java x x x x
Javascript x x
Node.js x x x x
Perl x x
PHP x x x x
Python x x x
Ruby x x x x
Scala x x x
Os banco de dados
relacionais irão morrer?
Posição NOSQL
Fonte: Gartner
Quando e qual utilizar?
Fonte: Martin Fowler
Fonte: http://www.martinfowler.com/bliki/PolyglotPersistence.html
Sessões de
usuários
Key - Value
Dados
Financeiros
Relacional
Blog ou Socia
Media
Graph
Catálogo
Produtos
Document
Relatórios
Relacional
Atividades e
logs de usuário
Column
Cases
SGBD:
sistema de processamento de faturas mensais
NOSQL:
Sistema focado em recomendações de melhores filmes.
Cases
SGBD:
Sistemas de processamento de ordem de venda
NOSQL:
Sistema de pesquisa, recomendações e
adaptações de preços em tempo real
Cases
SGBD:
Dados de clientes, produtos e RH
NOSQL:
Explorar, analisar e virtualização de dados
Existem oportunidades
no mercado?
Tem profissional no
mercado?
Perguntas
Referencias
http://nosql-database.org/
http://neo4j.com/customers/
http://aws.amazon.com/dynamodb/
http://www.nosqlfordummies.com/
http://technorati.com/is-there-a-sequel-to-nosql-bigdata-analytics-scifi-has-already-foreshadowed-
it/
NoSQL Now 2013 conference. Tomer Shiran, VP of Product Management at MapR Technologies. Jeff
Kelly from Wikibon.
http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/NoSQL/Home%20Page
http://blog.parityresearch.com/21-nosql-innovators-to-look-for-in-2020/
http://blogs.the451group.com/information_management/2014/07/01/nosql-linkedin-skills-index-
june-2014/
http://www.gartner.com/technology/reprints.do?id=1-1M9YEHW&ct=131028&st=sb
http://www.tomsitpro.com/articles/rdbms-sql-cassandra-dba-developer,2-547-2.html
http://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010
http://www.slideshare.net/thobe/nosql-for-dummies
Referencias
http://www.mongodb.com/events/
http://docs.mongodb.org/manual/core/read-operations-introduction/
http://data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_min_01.pdf
https://cassandra.apache.org/doc/cql/CQL.html
http://www.indeed.com/jobtrends?q=nosql+developer&l=
http://blog.nahurst.com/visual-guide-to-nosql-systems
http://revistaopara.facape.br/index.php/opara/article/download/121/72
http://stackoverflow.com/questions/12346326/nosql-cap-theorem-availability-and-partition-
tolerance
http://www.martinfowler.com/bliki/PolyglotPersistence.html
http://www.infoq.com/br/news/2014/06/oracle-nosql-database-3.0
http://www.infoq.com/br/news/2014/06/splunk-hunk-6.1
http://docs.neo4j.org/chunked/stable/query-predicates.html
http://pt.splunk.com/view/db-connect/SP-CAAAHR6

NOSQL uma breve introdução

Notas do Editor

  • #4 Processamento análitico de grandes volumes de dados complexos produzidos por aplicações. Esses dados podem ser aplicações cientifica e de engenharia, redes sociais, rede sensores, dados médicos, transações de comercio eletronicos e na maioria da vezes não estruturados Como suportar o crescimento maciço de volume, velocidade e variedade de informações? Como suportar mudanças inesperadas nas aplicações e pico de usuários simultâneos? Como armazenar diferentes formatos de dados, sejam eles não-estruturados, semi-estruturados ou estruturados?
  • #5 Criar um comparativo de NOSQL com SQL A base de dados NoSQL foi criada para suportar o crescimento maciço de volume, velocidade e variedade de informações. Em comparação com a base de dados tradicional, conhecida como relacional e que utiliza uma abordagem rígida baseada em esquematização, a tecnologia NoSQL pode suportar mudanças inesperadas na aplicação, pico de usuários simultâneos e armazenamento de diferentes formatos de dados, sejam eles não estruturados, semi estruturados ou estruturados.
  • #6 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Melhorar lay-out Key Value: coleção de chaves únicas e de valores, os quais são associados com as chaves Document: os documentos são as unidades básicas de armazenamento e estes não utilizam necessariamente qualquer tipo de estruturação pré-definida e são basedos em JSON. (JavaScript Object Notation) Column: muda-se o paradigma de orientação a registros (ou tuplas) para orientação a atributos (ou colunas). O Cassandra possui colunas (tuplas que contém nome, valor e timestamp), famílias de colunas (um repositó rio para colunas, análogo a uma tabela do Modelo Relacional) e super-colunas (compostas por arrays de colunas) Graph: os dados são armazenados em nó s de um grafo cujas arestas representam o tipo de associação entre esses nós. NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido Apesar de possuírem certas características em comum, tais como serem livres de esquema, promoverem alta disponibilidade e maior escalabilidade, os sistemas de bancos de dados NoSQL existentes possuem diversas singularidades
  • #7 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Melhorar lay-out Key Value: coleção de chaves únicas e de valores, os quais são associados com as chaves Document: os documentos são as unidades básicas de armazenamento e estes não utilizam necessariamente qualquer tipo de estruturação pré-definida e são basedos em JSON. (JavaScript Object Notation) Column: muda-se o paradigma de orientação a registros (ou tuplas) para orientação a atributos (ou colunas). O Cassandra possui colunas (tuplas que contém nome, valor e timestamp), famílias de colunas (um repositó rio para colunas, análogo a uma tabela do Modelo Relacional) e super-colunas (compostas por arrays de colunas) Graph: os dados são armazenados em nó s de um grafo cujas arestas representam o tipo de associação entre esses nós. NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido Apesar de possuírem certas características em comum, tais como serem livres de esquema, promoverem alta disponibilidade e maior escalabilidade, os sistemas de bancos de dados NoSQL existentes possuem diversas singularidades
  • #8 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Melhorar lay-out Key Value: coleção de chaves únicas e de valores, os quais são associados com as chaves Document: os documentos são as unidades básicas de armazenamento e estes não utilizam necessariamente qualquer tipo de estruturação pré-definida e são basedos em JSON. (JavaScript Object Notation) Column: muda-se o paradigma de orientação a registros (ou tuplas) para orientação a atributos (ou colunas). O Cassandra possui colunas (tuplas que contém nome, valor e timestamp), famílias de colunas (um repositó rio para colunas, análogo a uma tabela do Modelo Relacional) e super-colunas (compostas por arrays de colunas) Graph: os dados são armazenados em nó s de um grafo cujas arestas representam o tipo de associação entre esses nós. NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido Apesar de possuírem certas características em comum, tais como serem livres de esquema, promoverem alta disponibilidade e maior escalabilidade, os sistemas de bancos de dados NoSQL existentes possuem diversas singularidades
  • #9 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Melhorar lay-out Key Value: coleção de chaves únicas e de valores, os quais são associados com as chaves Document: os documentos são as unidades básicas de armazenamento e estes não utilizam necessariamente qualquer tipo de estruturação pré-definida e são basedos em JSON. (JavaScript Object Notation) Column: muda-se o paradigma de orientação a registros (ou tuplas) para orientação a atributos (ou colunas). O Cassandra possui colunas (tuplas que contém nome, valor e timestamp), famílias de colunas (um repositó rio para colunas, análogo a uma tabela do Modelo Relacional) e super-colunas (compostas por arrays de colunas) Graph: os dados são armazenados em nó s de um grafo cujas arestas representam o tipo de associação entre esses nós. NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido Apesar de possuírem certas características em comum, tais como serem livres de esquema, promoverem alta disponibilidade e maior escalabilidade, os sistemas de bancos de dados NoSQL existentes possuem diversas singularidades
  • #10 Gráfico de pizza
  • #11 Gráfico de pizza
  • #12 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Indicado para em todos Key Value: Distribuição em hash table Document: basedos em JSON documentos Graph Sistema baseado em graficos Utilizando em: rede sociais NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido
  • #13 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Indicado para em todos Key Value: Distribuição em hash table Document: basedos em JSON documentos Graph Sistema baseado em graficos Utilizando em: rede sociais NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido
  • #14 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Indicado para em todos Key Value: Distribuição em hash table Document: basedos em JSON documentos Graph Sistema baseado em graficos Utilizando em: rede sociais NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido
  • #15 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Indicado para em todos Key Value: Distribuição em hash table Document: basedos em JSON documentos Graph Sistema baseado em graficos Utilizando em: rede sociais NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido
  • #16 Antes desse slide adicionar comparativo NOSQL e SQL Fazer slide separado de exemplos reais Somente explicar as categorias Indicado para em todos Key Value: Distribuição em hash table Document: basedos em JSON documentos Graph Sistema baseado em graficos Utilizando em: rede sociais NOSQL: Schema-free Non-Relacional Denormalizado Column storage Distribuido
  • #20 http://docs.neo4j.org/chunked/stable/query-predicates.html http://console.neo4j.org/?init=create%20(_0%20%7B%60age%60%3A25%2C%20%60name%60%3A%22Tobias%22%7D)%0Acreate%20(_1%20%7B%60age%60%3A34%2C%20%60name%60%3A%22Peter%22%7D)%0Acreate%20(_2%3A%60Swedish%60%20%7B%60age%60%3A36%2C%20%60belt%60%3A%22white%22%2C%20%60name%60%3A%22Andres%22%7D)%0Acreate%20_2-%5B%3A%60KNOWS%60%5D-%3E_0%0Acreate%20_2-%5B%3A%60KNOWS%60%5D-%3E_1&query=match%20(n)%20where%20n.name%20%3D%20%27Peter%27%20xor%20(n.age%20%3C%2030%20and%20n.name%20%3D%20%22Tobias%22)%20or%20not%20(n.name%20%3D%20%22Tobias%22%20or%20n.name%3D%22Peter%22)%20return%20n&version=2.1.3&no_root=true
  • #22 Melhorar lay-out
  • #25 Deixar bonito e em portugues as app e o tipos em ingles
  • #26 Splunk- usa cassandra Netflix – No momento do cadastro é adiciona a preferencia de filmes e o NetFlix recomenda o filmes baseado no seu perfil
  • #27 Splunk- usa cassandra Netflix – No momento do cadastro é adiciona a preferencia de filmes e o NetFlix recomenda o filmes baseado no seu perfil
  • #28 Splunk- usa cassandra Netflix – No momento do cadastro é adiciona a preferencia de filmes e o NetFlix recomenda o filmes baseado no seu perfil
  • #29 Tamanho da amostra - EUA
  • #30 para o nosso Índice de Competências NoSQL LinkedIn, que monitora menções de banco de dados NoSQL em perfis de usuários NoSQL Melhorar gráfico