nosql e bd orientados a documentos

Post on 25-May-2015

2.153 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

O Movimento NOSQL e os Bancos de Dados Orientados à Documentos

yuriadams@triadworks.com.br@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• yuriadams@gmail.com /

yuriadams@triadworks.com.br• yuriadamsmaia@wordpress.com

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

Até que enfim!!!

• OBRIGADO!!

• @yuriadams• yuriadams@gmail.com

top related