O documento apresenta uma introdução sobre Fernando Cunha e sua experiência profissional. Em seguida, fornece uma classificação dos principais tipos de bancos de dados NoSQL, exemplos e quais empresas os utilizam, abordando questões como suporte a queries e linguagens. Por fim, discute sobre as oportunidades do mercado NoSQL.
2. 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:
3.
4. 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
5. 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
6. 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
7. 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
8. 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
9. Classificação de SGBD NOSQL
Key Value
12343
5
Joao da Silva
33454
5
Name=Fernando, age=29
Key - Value Column
Graph Document
10. 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
12. 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
13. 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
14. 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
15. 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
17. 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
18. Dá pra fazer query?
MongoDB - Document
SQL Query
Operation Find
19. Dá pra fazer query?
Neo4j- Graph
SQL Query
Cyber query
20. Dá pra fazer query?
Cassandra - Column
SQL Query
CQL – Cassandra Query Language
Comandos CRUD
(Create, Read, Update, Delete)
são iguais
21. 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
24. 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
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?
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.
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
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
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
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
Gráfico de pizza
Gráfico de pizza
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
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
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
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
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