nosql e bd orientados a documentos
TRANSCRIPT
O Movimento NOSQL e os Bancos de Dados Orientados à Documentos
[email protected]@yuriadams
yuriadamsmaia.wordpress.com
#whoami
• Yuri Adams Chaves Maia• Cursando Ciências da Computação – UECE• Estagiário da TriadWorks Agile Software
Development.
#whoami
#whoami
DesenvolvimentoMentoring
Treinamentos
#tecnologias
Networking
Eles vão ti conhecer!
Tietagem
Followers!!!
#whoami
• @yuriadams• [email protected] /
Me tucutem!!
#merchan
#motivacao
Tópicos
• NOSQL?• Breve Histórico• Movimento NOSQL• Características• Modelos de Dados (Famílias de BDs)
NOSQL?
NOSQL?
NOSQL?
Histórico
• “Aqueles que não podem lembrar o passado, estão condenados a repetí-lo”
Histórico
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?
Histórico
Histórico
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.
Movimento NOSQL
NOSQL não é bala de prata!
Características + Propriedades
• ACID X BASE• A = Atomicidade• C = Consistência• I = Isolamento• D = Durabilidade
• Sempre é possível? Seria bom se fosse.
Características + Propriedades
• ACID X BASE• Simplificar a arquitetura• Performance• BA = Basically Available• S = Soft-state• E = Eventual consistency *
*Eventual = Uma hora irá ocorrer.
BASE
• Transação Bancária
Cliente transfere Banco
Conta Destino
Estará incosistente até o banco autorizar
Características + Propriedades
• Abrir mão da consistência em favor da disponibilidade e escalabilidade
Escalabilidade
• Big Data
Escalabilidade
• Big Data
Escalabilidade
• Big Data
7 TB diários
Escalabilidade
• Big Data• Clusters
Escalabilidade
• Escalabilidade Horizontal X Escalabilidade Vertical
• Escalabilidade Vertical
APPSERVER
upgrades
Escalabilidade
• Escalabilidade Horizontal X Escalabilidade Vertical
• Escalabilidade Horizontal
Persistência
• Relacionais => Disco => Durabilidade• - Confiabilidade ---- Desempenho• Memory-mapped => Memória/Arquivo• - Ganho em desempenho -- Memória
Volátil
Persistência
Persistência
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.
Modelo de Dados
Modelo de Dados
• Chave-Valor• Grafo• Orientados à Documentos• Família de Colunas
Chave-Valor
• Semelhante a estrutura HashMap
Chave-Valor
• Semelhante a estrutura HashMap• • Simplicidade• Consultas O(1) – independente do volume de
dados
Chave-Valor
• Semelhante a estrutura HashMap• • Complexidade no momento de formular as
chaves• Obter apenas um valor por chave
Chave-Valor
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
Grafo
• Possui Propriedades ACID • Perca de Rendimento
Grafo
Neo4J
• Desenvolvido em 2003 – Neo Technology• Possui beneficios dos modelos baseados em
grafos.• JAVA
Orientados `a Documentos
• Documentos?
Orientados `a Documentos
• Documentos?• Estrutura de Dados de tipos variáveis podendo
haver sub-documentos.
Orientados `a Documentos
Orientados `a Documentos
• Documentos?• Estrutura de Dados de tipos variáveis podendo
haver sub-documentos.• JSON• Desnormalização
Orientados `a Documentos
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
Família de Colunas
• BigTable e seus Derivados => Paper de 2006• Escalabilidade + Volume de Dados
Família de Colunas
Família de Colunas
• Keyspaces => Databases/Schema• Família de Colunas => Tabelas• Colunas => Registros
• * Chave-valor Turbo POWER!!
Família de Colunas
Família de Colunas
• • Adequação de velocidade x escalabilidade• • Complexidade na forma de armazenar
Família de Colunas
Cassandra
• Nasceu dentro do Facebook(2008)• Licença Apache (2009)• JAVA – Executa em qualquer plataforma• Não possui uma interface amigável
Banco de Dados Orientados à 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
Banco de Dados Orientados à Documentos
CouchDB
• Schema Free
CouchDB
• Schema Free• WEB
CouchDB
• Schema Free• WEB• API REST• JSON
CouchDB
• Schema Free• WEB• API REST• JSON• Futon(APP Admin)
Documentos
• Como são formatados?
JSON
JSON
• JSON JAVASCRIPT OBJECT NOTATION
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.
JSON
JSON
Propriedades Transacionais
Propriedades Transacionais
Propriedades Transacionais
Propriedades Transacionais
Administração
• Futon
Administração
• Futon• APIS com implementação em
Ruby(couchrest_model), Python, Java(jcouchdb)
Administração
Administração
• Futon• APIS com implementação em
Ruby(couchrest_model), Python, Java(jcouchdb)
• Browsers que interpretem funções javascript.• AJAX (chamadas assícronas)
BDOD X SGBDRs
Modelagem de Dados
Modelagem de Dados
Estado Global
• Sequences
Estado Global
Estado Global
• UUID (Identificadores únicos globais)
Arquitetura
• RESTful
• Cliente/Servidor
Arquitetura
.Stateless (like WEB)
Qual a vantagem?
Arquitetura
• Cacheable (Já embutido no HTTP)
Cacheable
CLIENTEREQUEST
RESPONSE
BDOD SERVIDOR
Cacheable
CLIENTEREQUEST
RESPONSE
BDOD SERVIDOR
Interface Uniforme
REST + URI
JOINS
• FOREIGN KEYS
JOIN
• FOREIGN KEYS
JOIN
Map/Reduce
Map/Reduce
Map/Reduce
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”
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”
REST
• REPRESENTATIONAL STATE TRANSFER• Por Yuri:• “Sei o que é, só não sei explicar”
Recurso
• A WEB como um conjunto de Recursos.
Recurso?
Recurso
• “link” para uma informação específica
• URI (Universal Resource Identifier)
Recurso
• “link” para uma informação específica
• URI (Universal Resource Identifier)
URI
URI
URI
HTTP
Interface de Consultas
• Verbos HTTP + URI
• Seleção• Inserção• Atualização• Remoção
SELECT
SELECT
Insert
Insert
Update
Update
Delete
Delete
Views
Views