nosql e bd orientados a documentos

126
O Movimento NOSQL e os Bancos de Dados Orientados à Documentos [email protected] m.br @yuriadams yuriadamsmaia.wordpress .com

Upload: yuri-adams

Post on 25-May-2015

2.153 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Nosql e BD Orientados a Documentos

O Movimento NOSQL e os Bancos de Dados Orientados à Documentos

[email protected]@yuriadams

yuriadamsmaia.wordpress.com

Page 2: Nosql e BD Orientados a Documentos

#whoami

• Yuri Adams Chaves Maia• Cursando Ciências da Computação – UECE• Estagiário da TriadWorks Agile Software

Development.

Page 3: Nosql e BD Orientados a Documentos

#whoami

Page 4: Nosql e BD Orientados a Documentos

#whoami

DesenvolvimentoMentoring

Treinamentos

Page 5: Nosql e BD Orientados a Documentos

#tecnologias

Page 6: Nosql e BD Orientados a Documentos

Networking

Page 7: Nosql e BD Orientados a Documentos

Eles vão ti conhecer!

Page 8: Nosql e BD Orientados a Documentos

Tietagem

Page 9: Nosql e BD Orientados a Documentos

Followers!!!

Page 11: Nosql e BD Orientados a Documentos

Me tucutem!!

Page 12: Nosql e BD Orientados a Documentos

#merchan

Page 13: Nosql e BD Orientados a Documentos

#motivacao

Page 14: Nosql e BD Orientados a Documentos

Tópicos

• NOSQL?• Breve Histórico• Movimento NOSQL• Características• Modelos de Dados (Famílias de BDs)

Page 15: Nosql e BD Orientados a Documentos

NOSQL?

Page 16: Nosql e BD Orientados a Documentos

NOSQL?

Page 17: Nosql e BD Orientados a Documentos

NOSQL?

Page 18: Nosql e BD Orientados a Documentos

Histórico

• “Aqueles que não podem lembrar o passado, estão condenados a repetí-lo”

Page 19: Nosql e BD Orientados a Documentos

Histórico

Page 20: Nosql e BD Orientados a Documentos

Histórico

• IMS-DB – Modelo Hierárquico – Década de 60• CODASYL - anos 1970 – Grafo• Bancos Relacionais – Década de 80 - *• Nada de novo? Nenhuma alternativa?

Page 21: Nosql e BD Orientados a Documentos

Histórico

Page 22: Nosql e BD Orientados a Documentos

Histórico

Page 23: Nosql e BD Orientados a Documentos

Movimento NOSQL

• O movimento noSQL teve sua origem em junho de 2009, para nomear um encontro promovido por Johan Oskarsson e Eric Evans, que teve como objetivo discutir o crescente surgimento de soluções open source de armazenamento de dados distribuídos não relacionais

• not only SQL – termo para descrever soluções de armazenamento de dados não relacionais.

Page 24: Nosql e BD Orientados a Documentos

Movimento NOSQL

Page 25: Nosql e BD Orientados a Documentos

NOSQL não é bala de prata!

Page 26: Nosql e BD Orientados a Documentos

Características + Propriedades

• ACID X BASE• A = Atomicidade• C = Consistência• I = Isolamento• D = Durabilidade

• Sempre é possível? Seria bom se fosse.

Page 27: Nosql e BD Orientados a Documentos

Características + Propriedades

• ACID X BASE• Simplificar a arquitetura• Performance• BA = Basically Available• S = Soft-state• E = Eventual consistency *

*Eventual = Uma hora irá ocorrer.

Page 28: Nosql e BD Orientados a Documentos

BASE

• Transação Bancária

Cliente transfere Banco

Conta Destino

Estará incosistente até o banco autorizar

Page 29: Nosql e BD Orientados a Documentos

Características + Propriedades

• Abrir mão da consistência em favor da disponibilidade e escalabilidade

Page 30: Nosql e BD Orientados a Documentos

Escalabilidade

• Big Data

Page 31: Nosql e BD Orientados a Documentos

Escalabilidade

• Big Data

Page 32: Nosql e BD Orientados a Documentos

Escalabilidade

• Big Data

7 TB diários

Page 33: Nosql e BD Orientados a Documentos

Escalabilidade

• Big Data• Clusters

Page 34: Nosql e BD Orientados a Documentos

Escalabilidade

• Escalabilidade Horizontal X Escalabilidade Vertical

• Escalabilidade Vertical

APPSERVER

upgrades

Page 35: Nosql e BD Orientados a Documentos

Escalabilidade

• Escalabilidade Horizontal X Escalabilidade Vertical

• Escalabilidade Horizontal

Page 36: Nosql e BD Orientados a Documentos

Persistência

• Relacionais => Disco => Durabilidade• - Confiabilidade ---- Desempenho• Memory-mapped => Memória/Arquivo• - Ganho em desempenho -- Memória

Volátil

Page 37: Nosql e BD Orientados a Documentos

Persistência

Page 38: Nosql e BD Orientados a Documentos

Persistência

Page 39: Nosql e BD Orientados a Documentos

Distribuição

• Caminha com a escabilidade horizontal• PARTICIONAMENTO:• Evitar Perda de Informação – distribuir os

dados em mais de um servidor

*Nosql Relacional *Modelos baseados em grafos também há perda.

Page 40: Nosql e BD Orientados a Documentos

Modelo de Dados

Page 41: Nosql e BD Orientados a Documentos

Modelo de Dados

• Chave-Valor• Grafo• Orientados à Documentos• Família de Colunas

Page 42: Nosql e BD Orientados a Documentos

Chave-Valor

• Semelhante a estrutura HashMap

Page 43: Nosql e BD Orientados a Documentos

Chave-Valor

• Semelhante a estrutura HashMap• • Simplicidade• Consultas O(1) – independente do volume de

dados

Page 44: Nosql e BD Orientados a Documentos

Chave-Valor

• Semelhante a estrutura HashMap• • Complexidade no momento de formular as

chaves• Obter apenas um valor por chave

Page 45: Nosql e BD Orientados a Documentos

Chave-Valor

Page 46: Nosql e BD Orientados a Documentos

Redis

• Desenvolvido por: Salvatore Sanfilippo -2009• ANSI-C• Utiliza a memória RAM como meio de

Alocação de Dados• Não está desenvolvido o recurso de cluster

Page 47: Nosql e BD Orientados a Documentos

Grafo

• Possui Propriedades ACID • Perca de Rendimento

Page 48: Nosql e BD Orientados a Documentos

Grafo

Page 49: Nosql e BD Orientados a Documentos

Neo4J

• Desenvolvido em 2003 – Neo Technology• Possui beneficios dos modelos baseados em

grafos.• JAVA

Page 50: Nosql e BD Orientados a Documentos

Orientados `a Documentos

• Documentos?

Page 51: Nosql e BD Orientados a Documentos

Orientados `a Documentos

• Documentos?• Estrutura de Dados de tipos variáveis podendo

haver sub-documentos.

Page 52: Nosql e BD Orientados a Documentos

Orientados `a Documentos

Page 53: Nosql e BD Orientados a Documentos

Orientados `a Documentos

• Documentos?• Estrutura de Dados de tipos variáveis podendo

haver sub-documentos.• JSON• Desnormalização

Page 54: Nosql e BD Orientados a Documentos

Orientados `a Documentos

Page 55: Nosql e BD Orientados a Documentos

Orientados `a Documentos

Page 56: Nosql e BD Orientados a Documentos

CouchDB

• “Cluster of Unreliable Commodity Hardware”• Inicialmente em C++ Erlang (2008)• Tolerância a falhas e facilidade com

programação distribuída.• Liceça Apache v2.0

Page 57: Nosql e BD Orientados a Documentos

Família de Colunas

• BigTable e seus Derivados => Paper de 2006• Escalabilidade + Volume de Dados

Page 58: Nosql e BD Orientados a Documentos

Família de Colunas

Page 59: Nosql e BD Orientados a Documentos

Família de Colunas

• Keyspaces => Databases/Schema• Família de Colunas => Tabelas• Colunas => Registros

• * Chave-valor Turbo POWER!!

Page 60: Nosql e BD Orientados a Documentos

Família de Colunas

Page 61: Nosql e BD Orientados a Documentos

Família de Colunas

• • Adequação de velocidade x escalabilidade• • Complexidade na forma de armazenar

Page 62: Nosql e BD Orientados a Documentos

Família de Colunas

Page 63: Nosql e BD Orientados a Documentos

Cassandra

• Nasceu dentro do Facebook(2008)• Licença Apache (2009)• JAVA – Executa em qualquer plataforma• Não possui uma interface amigável

Page 64: Nosql e BD Orientados a Documentos

Banco de Dados Orientados à Documentos

Page 65: Nosql e BD Orientados a Documentos

Banco de Dados Orientados à Documentos

• Entender o modelo de dados, a forma como são representados e armazenados os registros

• Compreender como os dados são recuperados e consultados

Page 66: Nosql e BD Orientados a Documentos

Banco de Dados Orientados à Documentos

Page 67: Nosql e BD Orientados a Documentos

CouchDB

• Schema Free

Page 68: Nosql e BD Orientados a Documentos

CouchDB

• Schema Free• WEB

Page 69: Nosql e BD Orientados a Documentos

CouchDB

• Schema Free• WEB• API REST• JSON

Page 70: Nosql e BD Orientados a Documentos

CouchDB

• Schema Free• WEB• API REST• JSON• Futon(APP Admin)

Page 71: Nosql e BD Orientados a Documentos

Documentos

• Como são formatados?

Page 72: Nosql e BD Orientados a Documentos

JSON

Page 73: Nosql e BD Orientados a Documentos

JSON

• JSON JAVASCRIPT OBJECT NOTATION

Page 74: Nosql e BD Orientados a Documentos

JSON - Estrutura

• Objeto: sua representação é feita através de chaves. Exemplo: {} ou { membros };

• Pares: são os pares chave/valor, definidos como uma string e um valor. Exemplo de uma expressão: “nome” : “Yuri Adams”;

• Membros: Um ou mais pares de chave/valor;• Array: são listas de elementos, podem ser

multidimensionais. Exemplo: [ { “chave”: “valor” }, 1234 ] array de um par e um valor, ambos são elementos;

• Valor: são os tipos de dados que o JSON pode assumir: string, numérico, objeto, array, true, false ou null.

Page 75: Nosql e BD Orientados a Documentos

JSON

Page 76: Nosql e BD Orientados a Documentos

JSON

Page 77: Nosql e BD Orientados a Documentos

Propriedades Transacionais

Page 78: Nosql e BD Orientados a Documentos

Propriedades Transacionais

Page 79: Nosql e BD Orientados a Documentos

Propriedades Transacionais

Page 80: Nosql e BD Orientados a Documentos

Propriedades Transacionais

Page 81: Nosql e BD Orientados a Documentos

Administração

• Futon

Page 82: Nosql e BD Orientados a Documentos

Administração

• Futon• APIS com implementação em

Ruby(couchrest_model), Python, Java(jcouchdb)

Page 83: Nosql e BD Orientados a Documentos

Administração

Page 84: Nosql e BD Orientados a Documentos

Administração

• Futon• APIS com implementação em

Ruby(couchrest_model), Python, Java(jcouchdb)

• Browsers que interpretem funções javascript.• AJAX (chamadas assícronas)

Page 85: Nosql e BD Orientados a Documentos

BDOD X SGBDRs

Page 86: Nosql e BD Orientados a Documentos

Modelagem de Dados

Page 87: Nosql e BD Orientados a Documentos

Modelagem de Dados

Page 88: Nosql e BD Orientados a Documentos

Estado Global

• Sequences

Page 89: Nosql e BD Orientados a Documentos

Estado Global

Page 90: Nosql e BD Orientados a Documentos

Estado Global

• UUID (Identificadores únicos globais)

Page 91: Nosql e BD Orientados a Documentos

Arquitetura

• RESTful

• Cliente/Servidor

Page 92: Nosql e BD Orientados a Documentos

Arquitetura

.Stateless (like WEB)

Page 93: Nosql e BD Orientados a Documentos

Qual a vantagem?

Page 94: Nosql e BD Orientados a Documentos

Arquitetura

• Cacheable (Já embutido no HTTP)

Page 95: Nosql e BD Orientados a Documentos

Cacheable

CLIENTEREQUEST

RESPONSE

BDOD SERVIDOR

Page 96: Nosql e BD Orientados a Documentos

Cacheable

CLIENTEREQUEST

RESPONSE

BDOD SERVIDOR

Page 97: Nosql e BD Orientados a Documentos

Interface Uniforme

REST + URI

Page 98: Nosql e BD Orientados a Documentos

JOINS

• FOREIGN KEYS

Page 99: Nosql e BD Orientados a Documentos

JOIN

• FOREIGN KEYS

Page 100: Nosql e BD Orientados a Documentos

JOIN

Page 101: Nosql e BD Orientados a Documentos

Map/Reduce

Page 102: Nosql e BD Orientados a Documentos

Map/Reduce

Page 103: Nosql e BD Orientados a Documentos

Map/Reduce

Page 104: Nosql e BD Orientados a Documentos

REST

• REPRESENTATIONAL STATE TRANSFER• Por Fielding:• “um conjunto de princípios arquiteturais que

quando aplicadas como um todo, enfatiza a escalabilidade da interação entre componentes para reduzir a latência de interação, garantir segurança e encapsular sistemas legados”

Page 105: Nosql e BD Orientados a Documentos

REST

• REPRESENTATIONAL STATE TRANSFER• Por Tilkov:• “um conjunto de princípios que definem como

os padrões Web, como o HTTP e URIs devem ser utilizados”

Page 106: Nosql e BD Orientados a Documentos

REST

• REPRESENTATIONAL STATE TRANSFER• Por Yuri:• “Sei o que é, só não sei explicar”

Page 107: Nosql e BD Orientados a Documentos

Recurso

• A WEB como um conjunto de Recursos.

Page 108: Nosql e BD Orientados a Documentos

Recurso?

Page 109: Nosql e BD Orientados a Documentos

Recurso

• “link” para uma informação específica

• URI (Universal Resource Identifier)

Page 110: Nosql e BD Orientados a Documentos

Recurso

• “link” para uma informação específica

• URI (Universal Resource Identifier)

Page 111: Nosql e BD Orientados a Documentos

URI

Page 112: Nosql e BD Orientados a Documentos

URI

Page 113: Nosql e BD Orientados a Documentos

URI

Page 114: Nosql e BD Orientados a Documentos

HTTP

Page 115: Nosql e BD Orientados a Documentos

Interface de Consultas

• Verbos HTTP + URI

• Seleção• Inserção• Atualização• Remoção

Page 116: Nosql e BD Orientados a Documentos

SELECT

Page 117: Nosql e BD Orientados a Documentos

SELECT

Page 118: Nosql e BD Orientados a Documentos

Insert

Page 119: Nosql e BD Orientados a Documentos

Insert

Page 120: Nosql e BD Orientados a Documentos

Update

Page 121: Nosql e BD Orientados a Documentos

Update

Page 122: Nosql e BD Orientados a Documentos

Delete

Page 123: Nosql e BD Orientados a Documentos

Delete

Page 124: Nosql e BD Orientados a Documentos

Views

Page 125: Nosql e BD Orientados a Documentos

Views

Page 126: Nosql e BD Orientados a Documentos

Até que enfim!!!

• OBRIGADO!!

• @yuriadams• [email protected]