Você está na página 1de 18

Banco de Dados Tópicos

• Introdução
• Modelos de Dados de BD NoSQL
Sistemas NoSQL • Modelos de Distribuição
(BD de Agregados) • Consistência
• Map-reduce
Valéria Cesário Times
vct@cin.ufpe.br
• BD Chave-valor
• BD de Família de Colunas
• BD de Documentos

CIn/UFPE - DW  1 CIn/UFPE - DW  2

Tópicos Introdução a Sistemas NoSQL


• Por que BD relacionais se tornaram dominantes?
• Introdução
Capacidade de armazenar grandes quantidades de dados
• Modelos de Dados de BD NoSQL persistentes
• Permite acessar partes do BD de maneira rápida e fácil
• Modelos de Distribuição
Controle de concorrência por meio de transações
• Consistência • Provê acesso concorrente de múltiplas aplicações ou vários
usuários
• Map-reduce Recuperação após falhas
• BD Chave-valor • Restaura o BD para um estado anterior ao estado da falha
Integração compartilhada de BD
• BD de Família de Colunas • Aplicações armazenam seus dados em uma única BD

• BD de Documentos Uso de um modelo de dados padrão


• Dialetos SQL usados por diversos fornecedores são similares

CIn/UFPE - DW  3 CIn/UFPE - DW  4

Introdução a Sistemas NoSQL Introdução a Sistemas NoSQL


• Por que existe uma ascensão de BD NoSQL? • Exemplo de Incompatibilidade de Impedância
Incompatibilidade de impedância entre o modelo relacional Um pedido que aparenta ser uma estrutura única na GUI é
e as estruturas de dados na memória principal dividido em muitas linhas de muitas tabelas relacionais
Pedidos
Modelo Relacional
ID: 1066
Clientes
Relações (Tabelas) : conjunto de tuplas Cliente: Marta
Itens Pedido:
Tuplas (Linhas): conjunto de pares nome-valor 03467889 2 110,00 220,00
Álgebra Relacional: operações SQL consomem e retornam relações 03452231 1 38,00 38,00 Itens de Pedido
03266232 1 51,00 51,00
• Valores de uma tupla relacional têm de ser simples Detalhes do Pagamento
• Para armazenar dados em disco, é preciso traduzir a Cartão: VISA
estrutura de dados não atômica da memória para a Número: 1234567890
representação relacional Vencimento: 07/2021 Cartões de Credito
• Incompatibilidade de impedância: duas representações
diferentes que requerem tradução
CIn/UFPE - DW  5 CIn/UFPE - DW  6

1
Introdução a Sistemas NoSQL Introdução a Sistemas NoSQL
• Incompatibilidade de Impedância • BD de integração x BD de aplicativos
Na década de 1990, houve o crescimento de LP OO e com
elas, surgiram os SGBD OO Por que SGBDR prevaleceram sobre SGBDOO?
• Mas enquanto o uso de LP OO cresceu, os SGBD OO • Uso de SQL como mecanismo de integração entre as
caíram na obscuridade aplicações
Frameworks de mapeamento objeto-relacional facilitaram
a convivência com a incompatibilidade de impedância
BD de integração: várias aplicações desenvolvidas por
• Exemplo: Hibernate e iBATIS equipes distintas armazenam seus dados num único local
• Implementam padrões de mapeamento conhecidos e • Melhora a comunicação porque as aplicações operam sobre
poupam as pessoas de trabalho mas seu uso incorreto pode um conjunto consistente de dados persistentes
comprometer o desempenho do sistema
• Possui algumas desvantagens....
SGBD relacionais dominaram o mercado na década de
2000, mas alguns problemas começaram a surgir em seu
domínio
CIn/UFPE - DW  7 CIn/UFPE - DW  8

Introdução a Sistemas NoSQL Introdução a Sistemas NoSQL


• Desvantagens do BD de integração • BD de integração x BD de aplicativos
Uma estrutura projetada para integrar muitas aplicações BD de aplicativos: só é acessado diretamente por uma
acaba se tornando mais complexa do que qualquer única aplicação que é gerenciada por apenas uma equipe
necessidade de uma única aplicação • Facilidade de manutenção e desenvolvimento de esquema porque
Se uma aplicação precisar modificar seu armazenamento apenas uma equipe precisará conhecer sua estrutura
de dados precisará coordenar essa modificação com as • Uma vez que essa equipe controla o BD e o código da aplicação, a
responsabilidade pela integridade do BD é dada a esse código
demais que usam o BD
Há um movimento na direção ao uso de BD de aplicativos
Aplicações diferentes possuem requisitos estruturais e de
• Defende-se o encapsulamento de BD em aplicativos e a
desempenho diferentes integração por meio de serviços
• Um índice requerido por uma aplicação pode causar
Uso de serviços web como mecanismo de integração:
problemas nas inserções da outra
• Desacopla o BD e os serviços responsáveis pela comunicação
Como cada aplicação pertence a uma equipe diferente com o mundo exterior
significa que o SGBD precisa assumir a responsabilidade • Não importa aos serviços como os dados são armazenados,
de manutenção da integridade dos dados permitindo que opções não relacionais sejam consideradas

CIn/UFPE - DW  9 CIn/UFPE - DW  10

Introdução a Sistemas NoSQL Introdução a Sistemas NoSQL


• Aspectos BD de aplicativos • Qual o fator vital para mudança no armazenamento
de dados?
Necessidade de suporte a grandes volumes de dados por
Provê mais flexibilidade na estrutura dos dados trocados
meio da execução em clusters
• Por meio de um serviço, pode-se usar estruturas de dados mais
ricas: registros aninhados ou listas (documentos XML ou JSON) • BDR não foram projetados para serem executados em clusters
• O uso de uma estrutura rica de informações em uma única O termo NoSQL é um neologismo acidental
solicitação ou resposta reduz o custo de comunicações remotas • Não há uma descrição oficial
• Representa características comuns de BD NoSQL
Porém, a maioria das equipes que optou pela abordagem Não usam o modelo relacional nem SQL
Executam eficientemente em clusters, mas nem todos os BD NoSQL
de BD de aplicativos permaneceu com BD relacionais:
almejam a execução em clusters
• SGBDR possuem familiaridade, estabilidade e vários recursos Possuem código aberto
• Não está claro que BD de aplicativos tenha influenciado formas Não têm esquema de dados
alternativas de armazenamento de dados. Foram criados para propriedades na web do século XXI
• O resultado mais importante do surgimento de NoSQL é a
persistência poliglota
CIn/UFPE - DW  11 CIn/UFPE - DW  12

2
Introdução a Sistemas NoSQL Introdução a Sistemas NoSQL
• O que é a persistência poliglota? • Motivos principais para adotar BD NoSQL:
Consiste em usar diferentes armazenamentos de dados Simplifica o acesso ao BD, mesmo que não haja a
em diferentes circunstâncias necessidade de escalar para além de uma única máquina
• Corresponde a uma mistura de tecnologias de armazenamentos
de dados para diferentes situações
Melhora a produtividade de desenvolvimento de
aplicativos usando um estilo de interação de dados mais
É preciso entender a natureza dos dados a serem conveniente
armazenados e como serão manipulados

Permite lidar eficientemente com o acesso a dados cujo


Para fazer o mundo poliglota funcionar, é preciso migrar tamanho e desempenho demandam um cluster
de BD de integração para BD de aplicativos

CIn/UFPE - DW  13 CIn/UFPE - DW  14

Tópicos Modelos de Dados de BD NoSQL


• Cada solução NoSQL possui um modelo diferente:
• Introdução Sistemas NoSQL

• Modelos de Dados de BD NoSQL Chave-valor


Modelos de
• Modelos de Distribuição Documento
Dados Agregados
Famílias de Colunas
• Consistência
Grafo
• Map-reduce
• A orientação agregada reconhece que frequentemente
• BD Chave-valor deseja-se trabalhar com dados na forma de unidades
Tais unidades possuem uma estrutura mais complexa do que
• BD de Família de Colunas um conjunto de tuplas
• BD de Documentos • Apesar de não existir um termo comum que identifique tais
unidades, BD dos tipos chave-valor, documentos e famílias
de colunas fazem uso da unidade de agregados
CIn/UFPE - DW  15 CIn/UFPE - DW  16

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• O que é um agregado? • Agregado é a base para BI em tempo real
É um conjunto de objetos relacionados que desejamos Agregados também podem ser usados para obter
tratar como uma unidade estatísticas
É uma unidade de manipulação de dados e de Exemplo: Agregado pode conter informações sobre quais
gerenciamento de consistência pedidos possuem um dado produto
• Comunicação com o gerenciador de armazenamento de dados do • Sempre que o pedido for realizado pelo cliente a estatística
sistema é feita em termos de agregados mantida no agregado é atualizada
• Agregados são atualizados com operações atômicas
Essa desnormalização permite o acesso rápido aos dados
Lidar com agregados facilita a execução de BD NoSQL Empresas tornam-se independentes da execução em
em clusters, já que o agregado constitui uma unidade lotes ao final do dia para povoar DW e gerar análises
natural para replicação e fragmentação
Agregados também são mais simples de serem
manipulados por programadores de aplicativos

CIn/UFPE - DW  17 CIn/UFPE - DW  18

3
Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL
• Exemplo de Relações x Agregados • Exemplo de Relações x Agregados
Considere uma aplicação de comércio eletrônico Alguns dados da aplicação de comércio eletrônico
1 1 Cliente Pagto
Cliente * 1
Pedido
1 ID Nome ID NPedido Cartao Vencimento EndCobran
Nome
1 Ana 33 99 4595-1 10/10/2021 55
1

*
Pagamento
*
ItemPedido Produto Pedido Endereco

EndCobranca
* 1
* NumCartao Preco ID Nome ID Cliente EndEnvio ID Cidade
Vencimento
* * 27 GoPro H4 99 1 77 77 Rec

1 ItemPed EndCobranca
1
Endereço ID NPedido ProdID Preco ID Cliente Endereco
Produto
Rua 100 99 27 500,00 55 1 77
Nome
Cidade
1
Estado
Endereço de Envio
CIn/UFPE - DW  19 CIn/UFPE - DW  20

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• Exemplo de Relações x Agregados • Exemplo de Relações x Agregados
Considere uma aplicação de comércio eletrônico Alguns dados da aplicação de comércio eletrônico
1 1 // em Clientes
Cliente
* Pedido
Nome {
“ID” : 1,
Endereço de Cobrança
* *
ItemPedido
*
Pagamento
“Nome” : “Ana”,
Endereço
1 Preco NumCartao “EndCobranca” : [ { “Cidade”: “Rec” } ]
Rua Endereço de Envio Vencimento
Cidade
Estado
* }
1
1 Endereço de Cobrança Produto
Nome

CIn/UFPE - DW  21 CIn/UFPE - DW  22

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• Exemplo de Relações x Agregados • Exemplo de Relações x Agregados
Alguns dados da aplicação de comércio eletrônico Alguns dados da aplicação de comércio eletrônico

// em Pedidos { “EndEnvio”: [ { “Cidade” : “Rec” } ]


“ID” : 99, “Pagto”: [
“ClienteID” : 1, {
“ItemPed” : [ “Cartao”: “4595-1” ,
{ “ProdutoID”: 27, “Vencimento”: “10/10/2021” ,
“Preco”: 500,00 , “EndCobran”: { “Cidade” : “Rec” } }
“Nome”: “GoPro H4” } ],
], }

CIn/UFPE - DW  23 CIn/UFPE - DW  24

4
Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL
• Consequências da orientação a agregados: • Quando volumes de dados aumentam, torna-se
Sistema de BD pode usar o seu conhecimento sobre a mais difícil e custoso fazer uma expansão
estrutura agregada para armazenar e distribuir os dados • Uma opção interessante é a execução do BD em um
Auxilia na execução de um cluster cluster de servidores
• Minimiza o número de nós a serem lidos quando dados Orientação a agregados é útil porque o agregado é uma
estiverem sendo processados unidade natural para ser usada de forma distribuída
BD não possui transações ACID que executem por A execução do BD em um cluster introduz complexidade
múltiplos agregados
• Não é algo para ser feito a menos que os benefícios
• Garantem a manipulação atômica em um único sejam muitos
agregado por vez
• Existem sistemas de BD NoSQL que não executam
• Se vários agregados precisarem ser manipulados de
forma atômica, o código do aplicativo precisará em clusters ou não são orientados a agregados
gerenciar isso BD orientados a grafos: Neo4J

CIn/UFPE - DW  25 CIn/UFPE - DW  26

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• BD de grafos são não agregados: • Modelo de BD de grafos representam registros
Isto não é uma desvantagem pequenos com conexões complexas:
Muitas vezes é difícil definir corretamente o limite de • Encontre os tópicos de BD que meus amigos gostam ou cujos
autores são conhecidos de meus amigos
agregados
Amigo Julia
• Isto ocorre principalmente quando os mesmos dados UFPE
Empregado
Davi
são usados em muitos contextos diferentes Empregado Amigo Amigo
Empregado Carol
Uma estrutura de agregado pode ser útil em algumas Amigo
Elisa
Ana Amigo
interações de dados, mas um obstáculo em outras Amigo Gosta Gosta
Bianca Gosta
Um modelo de dados não agregado permite o acesso a Gosta
Gosta Gosta DB
qualquer tipo de organização de dados
Tópico
NoSQL
• É a melhor escolha quando não há uma forma primária GIS Tópico
Autor
de manipulação de dados Autor Autor
DW
Gerenciam transações ACID de forma semelhante aos Maria Amigo Autor
SGBDR Pedro
CIn/UFPE - DW  27 CIn/UFPE - DW  28

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• Modelo de dados de um BD de grafos é simples: nós • Modelos Chave-valor x Orientados a Documentos:
conectados por arestas. Mas há variações: Ambos são orientados a agregados
FlockDB é composto por nós e arestas (sem atributos) Cada agregado tem um ID ou chave de acesso
Neo4J armazena objetos Java como propriedades de nós e Diferem no fato de que:
arestas • No BD chave-valor, o agregado é um grande
• SGBR podem implementar relacionamentos por meio amontoado de bits sem significado
de chaves estrangeiras, mas: A vantagem é que é possível armazenar qualquer coisa
Junções necessárias para navegar por eles podem ser • Um BD de documentos impõe limites sobre o que pode
muito custosas. Por isso: ser inserido, definindo estruturas e tipos permitidos
A vantagem é a flexibilidade de acesso
• BD de grafos transferem a maior parte do trabalho do
No entanto, alguns sistemas chave-valor permitem:
momento da consulta para o momento de inserção
• Uso de metadados para indexação de agregados: Riak
Útil em situações onde o desempenho da consulta é mais
importante que a velocidade de inserção • Agregado seja dividido em listas ou conjuntos: Redis
CIn/UFPE - DW  29 CIn/UFPE - DW  30

5
Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL
• Modelos de Famílias de Colunas: • Modelos de Famílias de Colunas:
Voltados para cenários onde gravações são raras e é Cada coluna pertence a uma única família de colunas
preciso ler colunas de muitas linhas de uma só vez Cada coluna atua como uma unidade de acesso
Armazena grupos de colunas para todas as linhas como a • Assume-se que dados de uma família de colunas são
unidade básica de armazenamento geralmente acessados juntos
• São chamados de BD colunar ou de família de colunas chave da coluna valor da coluna
família de colunas
• Ex: BigTable e seus descendentes (Cassandra, Hbase) perfil
NOME Ana
ENDCOBRANCA .........
É uma estrutura agregada de dois níveis
PAGTO .........
• Cada linha é um agregado (cliente 1234) de famílias chave da linha
de colunas - representando partes úteis de dados
1234
(perfil, histórico de pedidos) dentro do agregado PED1001 .........
• Cada família de colunas define um tipo de registro PED1002 .........
(perfil de clientes) PED1003 .........
pedidos PED1004 .........
CIn/UFPE - DW  31 CIn/UFPE - DW  32

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• Mais detalhes: • BD sem esquema:armazena dados informalmente
BD de agregados tornam os relacionamentos entre BD do tipo chave-valor permite manter quaisquer dados
agregados mais difíceis de modelar do que sob uma chave
relacionamentos intra-agregados BD de documentos faz o mesmo já que não restringe a
BD de grafos organizam os dados em grafos com nós e estrutura de documentos armazenados
arestas BD de família de colunas armazena quaisquer dados na
• Funcionam melhor com dados que tenham estruturas de coluna escolhida
relacionamento complexas
BD de grafos adiciona livremente novos nós, novas
BD sem esquema permitem que campos sejam arestas e novas propriedades aos nós e às arestas
adicionados livremente aos registros
BD de agregados frequentemente criam visões
• Vantagens:
materializadas para disponibilizar dados organizados de Facilita o tratamento de dados não uniformes
um modo diferente de seus agregados primários Flexibiliza a alteração de esquemas
• Isso é frequentemente feito por computações map-reduce • Mas novos problemas surgem.....
CIn/UFPE - DW  33 CIn/UFPE - DW  34

Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL


• O que é um esquema implícito? • Possíveis soluções para o esquema implícito:
Todo programa que acessa dados quase sempre baseia-
se em alguma forma de esquema implícito, pois assume:
• Determinados nomes de campos existem
• Acesso ao BD por meio de um único aplicativo
• Determinados campos possuem certos tipos de dados Encapsular toda a interação do BD em um único aplicativo
É um conjunto de suposições sobre a estrutura dos dados e integrá-lo com outros aplicativos usando webservices
feitas pelos códigos de programa que a manipula
BD sem esquema transfere a definição do esquema para • Controlar o acesso aos agregados por aplicativos
o código do aplicativo que o acessa Delinear áreas distintas de um agregado para acesso por
Torna-se um problema quando múltiplos aplicativos, diferentes aplicativos
desenvolvidos por pessoas diferentes, acessam o BD • Em um BD de documentos: seções diferentes
• Quais são as soluções? Existem várias abordagens • Em um BD colunar: diferentes famílias de colunas

CIn/UFPE - DW  35 CIn/UFPE - DW  36

6
Modelos de Dados de BD NoSQL Modelos de Dados de BD NoSQL
• Visões materializadas em BD NoSQL: • Abordagem adiada:
São consultas pré-computadas por computações do tipo Evita a sobrecarga acrescida a cada atualização do BD
map-reduce e mantidas em cache para atualização da visão
Visões são atualizadas em lotes e intervalos regulares
• Abordagem antecipada: É preciso entender os requisitos de dados do usuário para
A visão materializada e os dados básicos relacionados a avaliar o quão desatualizadas as visões podem ficar
ela são atualizados ao mesmo tempo
Por exemplo, adicionar um pedido também atualiza o
histórico de compras do agregado para cada produto
Boa abordagem quando há mais leituras da visão
materializada do que gravações e visões precisarem estar
o mais atualizadas possível

CIn/UFPE - DW  37 CIn/UFPE - DW  38

Tópicos Modelos de Distribuição


• Introdução • Há dois estilos de distribuição de dados:
Fragmentação: distribui dados diferentes em múltiplos
• Modelos de Dados de BD NoSQL servidores, de modo que cada servidor atua como a única
fonte de um subconjunto de dados
• Modelos de Distribuição
• Consistência Replicação: copia os dados para múltiplos servidores de
modo que cada parte dos dados possa ser encontrada em
• Map-reduce vários lugares ao mesmo tempo
• BD Chave-valor • São ortogonais: Um sistema de BD pode usar uma
delas ou ambas técnicas de distribuição de dados
• BD de Família de Colunas
• Replicação tem duas formas:
• BD de Documentos Mestre-escravo
Ponto a ponto
CIn/UFPE - DW  39 CIn/UFPE - DW  40

Modelos de Distribuição Modelos de Distribuição


• Um único servidor: • Fragmentação (Data Sharding):
Opção mais simples e recomendada com mais frequência Acessos concorrentes ao BD feitos por vários usuários
é: não usar distribuição alguma pode degradar o desempenho do sistema
BD é executado em uma única máquina que lida com • Colocar partes diferentes dos dados em servidores diferentes
promove a escalabilidade horizontal
todas leituras e gravações
• Cada fragmento lê e grava seu próprio dado
Vantagens:
• Elimina a complexidade das demais opções FRAGMENTAÇÃO COM TRÊS NODOS

• É mais facilmente gerenciada por DBAs


• É melhor compreendida por desenvolvedores de aplicativos
BD de Grafos é a melhor opção aqui pois trabalham
melhor em uma configuração com servidor único
Se o objetivo maior da aplicação for processar agregados:
• Armazenamento de documentos ou chave-valor em um único
servidor pode valer a pena pois facilita o desenvolvimento
CIn/UFPE - DW  41 CIn/UFPE - DW  42

7
Modelos de Distribuição Modelos de Distribuição
• Fragmentação (Data Sharding): • Replicação com cache melhora o desempenho de
Agrupar os dados de modo que um usuário obtenha a leituras, mas pouco faz para otimizar muitas
maior parte de seus dados de um único servidor gravações
• Agregados unidades de distribuição
• Fragmentação (Data Sharding):
Pode melhorar o desempenho de leituras e gravações
Manter a carga distribuída igualmente entre os nós
• Agregados tenham quantidades iguais de carga • Provê uma forma de escalar horizontalmente as
gravações
Juntar agregados se eles forem lidos em sequência Faz pouco para melhorar a tolerância a falhas quando
usada isoladamente
• Embora os dados estejam em nós diferentes, a falha em um nó
Sistemas de BD NoSQL oferecem a auto-fragmentação: torna indisponíveis os dados do fragmento
• Sistema é responsável por alocar os dados nos fragmentos e por • O único benefício é que apenas os usuários dos dados do nó que
garantir que o acesso aos dados seja feito no fragmento correto sofreu a falha serão prejudicados
• Mas não é bom ter um BD com partes de seus dados faltando
CIn/UFPE - DW  43 CIn/UFPE - DW  44

Modelos de Distribuição Modelos de Distribuição


• Fragmentação (Data Sharding): • Replicação Mestre-Escravo:
Clusters geralmente usam máquinas menos confiáveis, Torna um nó a cópia oficial, a qual lida com gravações,
aumentando as chances de falha por nó enquanto os escravos sincronizam-se com o mestre e
• Quando se tem um único servidor é mais fácil bancar o esforço e o podem lidar com as leituras
custo para mantê-lo funcionando Reduz a chance de conflitos de atualização
Todas as atualizações são feitas apenas no mestre
É melhor iniciar com um servidor único e apenas usar a Leituras podem ser feitas no mestre ou nos escravos
fragmentação quando as projeções de carga indicarem
Alterações são propagadas para os escravos
que os recursos estão terminando
MESTRE
ESCRAVO ESCRAVO
Por outro lado, é importante usar a fragmentação bem
antes de precisar dela quando os recursos forem
suficientes para executá-la

CIn/UFPE - DW  45 CIn/UFPE - DW  46

Modelos de Distribuição Modelos de Distribuição


• Replicação Mestre-Escravo: • Replicação Mestre-Escravo:
É mais últil para a escalabilidade quando há um número A falha no mestre elimina a capacidade de lidar com
maior de operações de leitura gravações até que ele seja restaurado ou um novo mestre
É possível escalar horizontalmente para lidar com mais seja escolhido
leituras por meio da: Ter escravos como replicações do mestre acelera a
• Adição de mais nós escravos recuperação após falhas, já que um escravo pode ser
• Envio de todas as solicitações de leitura apenas para os escravos designado como um novo mestre muito rapidamente
Mas existe a limitação da capacidade do mestre de A capacidade de escolher um escravo para substituir um
processar as atualizações e transmiti-las adiante mestre que falhou indica que a replicação mestre-escravo
Não é adequado quando existem muitas gravações é útil mesmo que não haja necessidade da escalabilidade
• Toda solicitação de leitura e gravação pode ir para o mestre,
Possui tolerância a falhas de operações de leitura:
enquanto o escravo atua como uma cópia de segurança ativa
• Se o mestre falhar, os escravos lidam com as leituras
• Assemelha-se a um sistema com armazenamento de servidor
único com backup ativo útil para lidar com falhas no servidor

CIn/UFPE - DW  47 CIn/UFPE - DW  48

8
Modelos de Distribuição Modelos de Distribuição
• Replicação Mestre-Escravo: • Replicação Mestre-Escravo:
Mestres podem ser designados manual ou A replicação traz alguns benefícios interessantes, mas:
automaticamente • Tem um lado negativo inevitável inconsistência
• Manual: usuário escolhe um nó como mestre na • O risco é que usuários diferentes, lendo diferentes
configuração do cluster escravos, vejam valores diferentes, se todas as
• Automática:usuário cria um cluster de nós os quais alterações não tiverem sido propagadas aos escravos
elegem um deles como mestre • Mesmo que a replicação mestre-escravo use uma
cópia de segurança ativa, o problema persiste:
Vantagens da configuração automática: Se o mestre falhar, quaisquer atualizações, que não
• Simplifica a configuração do cluster por si só tenham sido enviadas para a cópia de segurança,
estarão perdidas
• Cluster pode escolher automaticamente um novo
mestre na ocorrência da falha reduzindo o tempo
fora do ar

CIn/UFPE - DW  49 CIn/UFPE - DW  50

Modelos de Distribuição Modelos de Distribuição


• Replicação Mestre-Escravo: • Replicação Ponto a Ponto (p2p):
Em resumo: Permite gravações em qualquer nó
• Ajuda com a escalabilidade de leitura, mas não com a Nós são coordenados para sincronizar suas cópias de
escalabilidade de gravação dados nós comunicam suas garvações
• Provê tolerância a falhas de um escravo, mas não de Evita manter todas as gravações em um único ponto de
um mestre falha
• O mestre é um gargalo e um ponto único de falhas Todos os nós lêm e gravam todos os dados

Por isso, a replicação ponto a ponto, vista a seguir,


resolve estes problemas pois não tem um mestre:
• Todos os nós têm peso igual
• Todos os nós podem receber gravações
• A perda de um deles não impede o acesso aos dados
CIn/UFPE - DW  51 CIn/UFPE - DW  52

Modelos de Distribuição Tópicos


• Replicação Ponto a Ponto (p2p): • Introdução
É possível contornar falhas nos nós sem perder o acesso
aos dados • Modelos de Dados de BD NoSQL
É possível adicionar novos nós para melhorar o
• Modelos de Distribuição
desempenho
Mas existe a possibilidade de geração de inconsistência • Consistência
de dados:
• Ao permitir a gravação em dois lugares diferentes, existe o risco • Map-reduce
de que dois usuários tentem atualizar o mesmo registro ao mesmo
tempo gerando um conflito de gravação • BD Chave-valor
É possível garantir que sempre que dados são gravados,
• BD de Família de Colunas
as réplicas sejam atualizadas para evitar conflitos
• Há um custo de tráfego de rede para coordenar as gravações • BD de Documentos
• Não há necessidade de todas as réplicas concordarem com a
gravação apenas uma maioria pode ser considerada
CIn/UFPE - DW  53 CIn/UFPE - DW  54

9
Consistência Consistência
• Tipos de Conflitos: • Abordagem Pessimista :
Gravação: ocorrem quando dois usuários tentam gravar Bloqueios: para alterar um valor é necessário obter um
os mesmos dados ao mesmo tempo bloqueio de gravação e o sistema assegura que apenas
• Gera o problema da atualização perdida um usuário por vez pode obtê-lo
Leitura-gravação (ou leitura incopnsistente): ocorrem Pode produzir conflitos de bloqueio (deadlocks) difíceis de
quando um usuário lê dados inconsistentes durante a evitar e identificar
gravação feita por outro usuário • Abordagem Otimista:
Atualização condicional: qualquer usuário que execute
• Abordagens de controle de concorrência: uma atualização testa o valor antes de atualizá-lo para ver
Pessimista:Evita que os conflitos ocorram se ele foi alterado desde sua última leitura
Otimista:Permite que os conflitos ocorram, mas os detecta Atualização dupla: gravar ambas as atualizações, registrar
e depois os corrige as que estão em conflito e conciliá-las
• Mostrando ambos valores ao usuário para que ele decida
• Concilia automaticamente, com base em informações de domínio
CIn/UFPE - DW  55 CIn/UFPE - DW  56

Consistência Consistência
• Tanto a Pessimista quanto a Otimista baseiam-se na • Janela de Inconsistência:
serialização consistente das atualizações Nem todos os dados podem ser colocados em um único
Se existir mais de um servidor (como na p2p): dois nós agregado
podem atualizar dados em uma ordem diferente Qualquer alteração que afete múltiplos agregados deixa
resultando em um valor diferente para cada nó aberto um tempo no qual usuários podem realizar leituras
• Replicação contribui para ocorrência de inconsistentes chamado de janela de inconsistência

conflitos de gravação • Sistemas distribuídos:


Se diferentes nós tiverem cópias diferentes dos mesmos Geram conflitos do tipo leitura-gravação porque alguns
dados e forem atualizados independentemente haverá nodos recebem atualizações e outros não
conflitos de gravação se não forem evitados Consistência eventual: em algum momento, o sistema se
Usar um único nó como responsável por todas as gravações tornará consistente, assim que as gravações tiverem sido
facilita a manutenção da consistência de atualização propagadas para todos os nós
• Dos modelos de distribuição vistos, todos fazem isso – menos a Para obter boa consistência, muitos nós devem ser
replicação p2p envolvidos em operações de dados aumenta latência
CIn/UFPE - DW  57 CIn/UFPE - DW  58

Consistência Consistência
• Teorema CAP: • Relaxando a durabilidade:
No mundo NoSQL, o teorema CAP corresponde ao motivo É possível trocar um pouco da durabilidade por um
pelo qual pode-se precisar relaxar a consistência desempenho melhor
Baseia-se em três propriedades: Consistência, A durabilidade pode ser balanceada com a latência
Disponibilidade e Tolerância a partições Se um BD puder ser executado em sua maior parte na
Definição: Dadas as 3 propriedades, somente é possível memória e mover periodicamente as alterações para o
obter duas delas. disco, um desempenho melhor pode ser obtido
• Um sistema com um único servidor é um exemplo de CA O custo é que se o servidor falhar, quaisquer atualizações
Como clusters têm de ser tolerantes a partições de rede, feitas desde a última transferência dos dados para o disco
então o teorema CAP na prática diz que: serão perdidas.
• Como um sistema distribuído pode sofrer partições, é preciso
balancear a consistência com a disponibilidade
O sistema resultante não é perfeitamente consistente nem
perfeitamente disponível
CIn/UFPE - DW  59 CIn/UFPE - DW  60

10
Consistência Consistência
• Quóruns: • Quóruns:
Quanto mais nós forem envolvidos em uma solicitação, Lista de parâmetros de configuração de consistência:
maior a chance de evitar uma inconsistência. • N é o número de nós usados para armazenar as
Quantos nós precisam ser envolvidos para produzir uma réplicas do BD chave-valor
alta consistência? • R é o número de nós cujos dados devem ser
• Se as gravações forem conflitantes, apenas uma delas recuperados antes da leitura ser considerada bem
pode obter a maioria quórum de gravação (QG) sucedida
• QG é expresso pela desigualdade: W > N/2 • W é o número de nós nos quais a gravação deve ser
• Significa que o número de nós participantes da executada antes dela ser considerada bem sucedida
gravação (W) deve ser maior que a metade do número Estas configurações nos permite gerenciar a ocorrência
de nós replicados (N) de falhas nos nós em operações de leitura ou gravação
Quantos nós devem ser acessados para garantir que se É possível alterar os valores dos parâmetros para obter
tem a alteração mais atualizada? mais disponibilidade de leitura ou gravação
• Quórum de leitura (QL): R + W > N
CIn/UFPE - DW  61 CIn/UFPE - DW  62

Consistência Tópicos
• Quóruns:
• Introdução
Considere um cluster Riak com cinco nós:
• Se N = 3 significa que todos os dados serão replicados • Modelos de Dados de BD NoSQL
em pelo menos 3 nós
• Modelos de Distribuição
• Se R = 2 indica que dois nós quaisquer devem • Consistência
responder a uma solicitação GET para que esta seja
considerada bem sucedida • Map-reduce
• BD Chave-valor
• Se W = 2 garante que a solicitação PUT seja gravada
em 2 nós antes da gravação ser considerada bem • BD de Família de Colunas
sucedida
• BD de Documentos

CIn/UFPE - DW  63 CIn/UFPE - DW  64

Map-reduce Map-reduce
• Motivação • Objetivos
A ascensão de BD orientados a agregados deve-se em Organizar o processamento para usar as várias máquinas
grande parte ao crescimento dos clusters de um cluster e ao mesmo tempo,
Executar em clusters implica em equilibrar o Manter o processamento dos dados na mesma máquina
armazenamento de dados de maneira diferente da que contém os dados
execução feita em uma única máquina • Definição
Clusters mudam regras de armazenamento de dados e É um padrão que permite que computações sejam
regras de computação paralelizadas em um cluster
• Distribuir os dados entre os vários nodos do cluster • Uma implementação de código aberto faz parte do
• Reduzir a quantidade de dados que deve ser projeto Hadoop
transferida pela rede, processando tanto quanto for • Apache Pig é uma linguagem criada especificamente
possível no nodo onde estiverem os dados necessários para facilitar a escrita de programas map-reduce
• Diversos sistemas de BD NoSQL têm suas próprias
implementações
CIn/UFPE - DW  65 CIn/UFPE - DW  66

11
Map-reduce Map-reduce
• Possui duas tarefas principais: • Exemplo de Aplicação – Cenário:
Mapeamento Suponha que pedidos de clientes formem um agregado,
• Lê dados de um agregado e os agrupa em pares de onde pedidos inteiros são recuperados em um só acesso
chave-valor relevantes Cada pedido possui itens do pedido
• Somente lê um único registro de cada vez e pode, Cada item de pedido possui um ID do produto, a
assim, ser paralelizado e executado no nodo que quantidade e o preço
armazena o registro Como existem muitos pedidos, eles são fragmentados em
várias máquinas
Redução Porém, deseja-se ver os dados do produto e sua receita
• Recebe muitos valores de uma única chave de saída, total nos últimos 7 dias!!
a partir do mapeamento, e os resume em uma única • Esta análise não se adapta à estrutura do agregado existente
saída isto é uma desvantagem do uso de agregados

• Cada redutor trabalha sobre o resultado de uma única Para obter a receita dos produtos, será preciso recuperar
chave, de modo que pode ser paralelizado por chave vários registros de cada máquina do cluster
CIn/UFPE - DW  67 CIn/UFPE - DW  68

Map-reduce Map-reduce
• Etapa de Mapeamento (Função MAP): • Etapa de Mapeamento:
Função cuja entrada é um único agregado e cuja saída Lê registros do BD e gera pares de chave-valor
são alguns pares de chave-valor Refrigerante:
No exemplo, a entrada seria um pedido e a saída seria ID: 1066 Preço: 68,00
pares de chave-valor correspondendo aos itens Cliente: Marta Quantidade: 8
Cada par teria o ID do produto como chave, e a Itens Pedido:
quantidade e o preço como valores Refrigerante 8 8,50 68,00 Suco:
MAP
Cada aplicação da função é independente de todas as Suco 4 37,50 150,00 Preço: 150,00
outras Água Mineral 10 1,99 19,90 Quantidade: 4
• Isto permite que elas sejam paralelizáveis com segurança Endereço de Entrega .....
Cria tarefas de mapeamento em cada nodo e aloca cada Detalhes do Pagamento ..... Água Mineral:
pedido a uma tarefa de mapeamento Preço: 19,90
• Isto produz bastante paralelelismo e localidade no acesso aos Quantidade: 10
dados
CIn/UFPE - DW  69 CIn/UFPE - DW  70

Map-reduce Map-reduce
• Etapa de Redução (Função REDUCE): • Aspectos importantes
Recebe múltiplos resultados do mapeamento com a Funções redutoras que tenham o mesmo formato de
mesma chave e combina seus valores entrada e saída podem ser combinadas em pipelines
Utiliza todos os valores enviados para uma única chave • Isto melhora o paralelelismo e reduz a quantidade de
Recebe diversos pares de chave-valor com a mesma dados a serem transferidos
chave e os agrega Operações de map-reduce podem ser compostas em
pipelines, nas quais a saída de uma redução é a entrada
Preço: 187,50 do mapeamento de outra operação
Quantidade: 5
Se o resultado de uma computação map-reduce for
Preço: 712,50
Preço: 150,00 REDUCE amplamente utilizado, ele pode ser armazenado como
SUCO Quantidade: 19
Quantidade: 4 uma visão materializada
Visões materializadas podem ser atualizadas por meio de
Preço: 375,00
operações map-reduce que apenas computem alterações
Quantidade: 10
na visão, em vez de computar tudo desde o início
CIn/UFPE - DW  71 CIn/UFPE - DW  72

12
Tópicos BD Chave-valor
• Introdução • Características:
É o tipo de BD NoSQL mais simples de usar a partir da
• Modelos de Dados de BD NoSQL perspectiva de uma API. O usuário pode:
• Obter o valor de uma determinada chave
• Modelos de Distribuição
• Inserir um valor para uma dada chave
• Consistência • Remover uma chave do BD
• Map-reduce Valor é um blob ou texto ou JSON ou XML que o BD
guarda sem se preocupar ou saber o que há dentro dele
• BD Chave-valor • É responsabilidade da aplicação entender o que está
armazenado
• BD de Família de Colunas
Já que o acesso é sempre feito pela chave primária:
• BD de Documentos • Um bom desempenho pode ser alcançado
• Podem ser escaláveis facilmente
CIn/UFPE - DW  73 CIn/UFPE - DW  74

BD Chave-valor BD Chave-valor
• Baseia-se em uma hash table contendo uma chave • Consistência no Riak
única e um apontador para um item particular de Modelo de consistência eventual é implementado
dado Quando o valor é replicado em outros nós, conflitos de
• Exemplos: atualização podem ser resolvidos de duas maneiras:
• Gravação mais recente prevalece sobre as mais antigas
Riak
• Todos os valores são retornados para o usuário resolver o conflito
Redis
Estas opções podem ser configuradas na criação do
HamsterDB bucket valores padrões podem ser fornecidos
Amazon DynamoDB (que não é open-source) Por exemplo: uma gravação pode ser efetivada apenas
Project Voldemort (versão open-source do DynamoDB) quando os dados forem consistentes para todos nós que
• Riak: mantiverem estes dados
Permite associar chaves a namespaces ou buckets
Buckets de domínio são usados para guardar dados
específicos
CIn/UFPE - DW  75 CIn/UFPE - DW  76

BD Chave-valor BD Chave-valor
• Consistência no Riak • Consultas
Exemplo de configuração de parâmetros de consistência Todos BD chave-valor podem ser consultados pela chave
na criação do bucket: Se for preciso consultar algum atributo da coluna de
Bucket bucket = connection valores, o sistema NoSQL não disponibiliza o recurso
.createBucket (bucketName) • Aplicação do usuário se encarregará de fazer esta busca
.withRetrier (attempts(3)) Realizar consultas por chave também causa problemas se
.allowSiblings (siblingsAllowed) a chave não for conhecida
.nVal (numberOfReplicasOfTheData) • A maioria dos sistemas NoSQL não fornece uma lista de todas as
.w (numberOfNodesToRespondToWrite) chaves primárias
.r (numberOfNodesToRespondToRead) O projeto da chave primária é importante:
.execute(); • Pode ser gerada por meio de algum algoritmo?
• Pode ser fornecida pelo usuário?
• Pode ser derivada do relógio do sistema?

CIn/UFPE - DW  77 CIn/UFPE - DW  78

13
BD Chave-valor BD Chave-valor
• Casos de uso apropriados • Quando não usar:
Armazenando informações de sessão Relacionamentos entre dados
• Toda sessão web é única e recebe um valor único de sessionId • Modelar relacionamentos entre diferentes conjuntos de dados ou
• Tudo sobre a sessão pode ser inserido por um único PUT ou correlacionar dados entre diferentes conjuntos de chaves
recuperado usando GET
Perfis de usuário, preferências Transações com múltiplas operações
• Quase todos os usuários têm um único userId (ID do usuário), um • Gravar múltiplas chaves e ocorrer uma falha na gravação de
único username (nome de usuário) ou algum outro atributo único, alguma delas, e for preciso reverter ou desfazer
além de preferências, cor, idioma, etc
• Tudo isso pode ser colocado em um objeto e obtido pelo GET Consulta por dados
Carrinhos de compra • Pesquisar chaves com base no valor de pares chave-valor
• Websites de comércio eletrônico possuem carrinhos de compras
associados ao usuário
Operações de conjuntos
• Todas as informações de compras podem ser colocadas no valor
onde a chave é userId • Executar operações sobre múltiplas chaves por vez

CIn/UFPE - DW  79 CIn/UFPE - DW  80

Tópicos BD de Família de Colunas


• Introdução • Armazena chaves mapeadas para valores onde:
Valores são agrupados em múltiplas famílias de colunas
• Modelos de Dados de BD NoSQL • Famílias de Colunas:
• Modelos de Distribuição São grupos de dados relacionados que frequentemente
são acessados juntos
• Consistência
• Exemplos:
• Map-reduce Cassandra, Hbase, Hypertable

• BD Chave-valor SGBDR Cassandra


Instância do BD Cluster
• BD de Família de Colunas BD Keyspace
Tabela Família de Colunas
• BD de Documentos Linha Linha
Coluna Coluna
CIn/UFPE - DW  81 CIn/UFPE - DW  82

BD de Família de Colunas BD de Família de Colunas


• Cassandra: • Modelo de Dados do Cassandra
É rápido e de fácil crescimento escalar FAMÍLIA DE COLUNAS
Não possui um nó mestre de modo que tanto a leitura LINHA
quanto a gravação podem ser feitas em qualquer nó
Coluna 1 Coluna 2 Coluna N
Coluna: Unidade básica de armazenamento que consiste Chave de
Linha X Nome1: Valor1 Nome2: Valor2 NomeN: ValorN
em um par chave-valor
• Cada coluna tem um valor de timestamp usado para:
Expirar dados
LINHA
Resolver conflitos de gravação
Lidar com dados desatualizados Coluna 1 Coluna 2 Coluna N
Chave de
Linha: coleção de colunas associadas a uma chave Linha Y Nome1: Valor1 Nome9: Valor9 NomeN: ValorN

Família de colunas: coleção de linhas semelhantes

CIn/UFPE - DW  83 CIn/UFPE - DW  84

14
BD de Família de Colunas BD de Família de Colunas
• O que é uma coluna? • O que é uma linha?
// família de colunas
{ Nome : “PrimeiroNome”, CHAVE
{
Valor : “Mateus”, VALOR
// linha
Timestamp : 1234567890
“pedro-souza” : { Nome : “Pedro”,
}
Sobrenome : “Souza”,
UltimaVisita : “12/12/2012” }
// linha
“marta-alves” : { Nome : “Marta”,
Sobrenome : “Alves”,
Local : “Recife” } }
CIn/UFPE - DW  85 CIn/UFPE - DW  86

BD de Família de Colunas BD de Família de Colunas


• O que é uma supercoluna? • O que é uma família de supercolunas?
Consiste em uma coluna cujo valor é um conjunto de // família de supercolunas
colunas
{ // linha
{
Nome : “conta:pedro-souza”,
Nome : “livro:978-0767905923”,
Valor : {
Valor : {
Endereço: {
Autor: “Joel da Silva”,
Nome : “endereço:default”,
Titulo : “ A Linguagem GeoMDQL”,
Valor: { nomeCompleto : “ Pedro Souza”,
Isbn : “978-0767905923” }
rua : “Av. Boa Viagem 4200” ,
}
complemento: “ Apto 301” }
},
CIn/UFPE - DW  87 CIn/UFPE - DW  88

BD de Família de Colunas BD de Família de Colunas


// linha
Nome : “conta:marta-alves”,
Conta : {
Valor : {
Nome : “conta:default”,
Endereço: {
Valor: {
Nome : “endereço:default”,
numeroCartao : “ 8888-4444-2222-1111”,
Valor: {
vencimento: “12/2018”
nomeCompleto : “ Marta Alves”,
}
rua : “Rua Serinhaem 44” ,
}
complemento: “ Apto 1801”
}
}
},
CIn/UFPE - DW  89 CIn/UFPE - DW  90

15
BD de Família de Colunas BD de Família de Colunas
• Consultas e Manipulação de Dados usando CQL:
Conta : { Para criar uma família de colunas:
Nome : “conta:default”,
CREATE COLUMNFAMILY Cliente (
Valor: {
KEY varchar PRIMARY KEY,
numeroCartao : “ 9999-7777-5555-1111”,
nome varchar,
vencimento: “12/2020”
cidade varchar,
}
web varchar ) ;
} Para inserir os mesmos dados:
} INSERT INTO Cliente (KEY, nome, cidade, web)
} VALUES ( ‘pedro-souza’, ‘Pedro Souza’, ‘Recife’,
‘www.pedrosouza.com’);
CIn/UFPE - DW  91 CIn/UFPE - DW  92

BD de Família de Colunas Tópicos


• Consultas e Manipulação de Dados usando CQL: • Introdução
Para ler todas as colunas:
SELECT * FROM Cliente ; • Modelos de Dados de BD NoSQL
Para selecionar apenas as colunas desejadas: • Modelos de Distribuição
SELECT nome, web FROM Cliente; • Consistência
SELECT nome, web FROM Cliente
• Map-reduce
WHERE cidade = ‘Recife’ ;
• BD Chave-valor
• Escalabilidade:
Para fazer um cluster crescer em escala é preciso apenas • BD de Família de Colunas
adicionar mais nós
Como nenhum nó é mestre, a adição de nós aumenta
• BD de Documentos
a capacidade de execução de mais leituras/gravações
CIn/UFPE - DW  93 CIn/UFPE - DW  94

BD de Documentos BD de Documentos
• Documentos: armazenados na parte do valor • O que é um BD de documentos?
São o conceito principal pois armazenam e recuperam
documentos (XML, JSON, BSON, etc) { “Nome” : “Marta”,
São árvores hierárquicas e autodescritivas contendo “Gosta” : [ “Ciclismo”, “Fotografia” ] ,
coleções de valores e valores escalares “UltimaCidade” : “Recife”
São semelhantes entre si mas não têm de ter exatamente
}
a mesma estrutura
ORACLE MongoBD
Instância do BD Instância MongoDB
Esquema Banco de Dados
Tabela Coleção
Linha Documento
Rowid _id
Junção DBRef
CIn/UFPE - DW  95 CIn/UFPE - DW  96

16
BD de Documentos BD de Documentos
• O que é um BD de documentos? • Documentos podem ter:
{ “Nome” : “Pedro”, Atributos diferentes entre si
“CidadesVisitadas” : [ “Recife”, “Olinda” , “Natal”, “Fortaleza” ] , • Campos que aparecem em um documento mas não
aparecem em outro
“Enderecos” : [
• Campos com nomes diferentes
{ “Estado” : “PB”, Atributos compostos (por exemplo, listas e arrays)
“Cidade” : “Patos”, Diferentes representações de dados e pertencerem à
“Tipo” : “R” } , mesma coleção de documentos
Objetos complexos: vários documentos dentro de um
{ “Estado” : “SP”,
outro documento
“Cidade” : “Campinas”,
• Documentos não possuem atributos vazios
“Tipo” : “R” } ] , Se um dado atributo não for encontrado, supõe-se que ele
“UltimaCidade” : “Recife” } não é relevante para o documento
CIn/UFPE - DW  97 CIn/UFPE - DW  98

BD de Documentos BD de Documentos
• Documentos permitem que novos atributos sejam • Características:
criados sem a necessidade de: Cada instância do MongoDB possui zero ou mais BD
Definição prévia Cada BD pode ter zero ou mais coleções de documentos
Alteração nos documentos já existentes Coleções são compostas de zero ou mais documentos e
• Exemplos de sistemas que usam armazenamento podem ser indexadas
de documentos: Um documento possui um ou mais campos
MongoDB Ao armazenar um documento, é preciso escolher em qual
BD e em qual coleção ele ficará
CouchDB
Quando dados são solicitados, MongoDB retorna um
Terrastore
ponteiro para um result set (chamado de cursor)
OrientDB
• Por que usar uma terminologia diferente?
RavenDB
SGBDR define colunas ao nível de tabelas
Lotus Notes
MongoDB define seus campos ao nível de documentos
CIn/UFPE - DW  99 CIn/UFPE - DW  100

BD de Documentos BD de Documentos
• Consistência • Consistência
É configurada usando as réplicas e esperando que as Parâmetros de gravação/leitura podem ser configurados:
gravações sejam replicadas: • Na conexão ou
• Em todos os escravos ou • Na criação do BD ou
• Em um determinado número de escravos • Na criação da coleção de documentos ou
Cada gravação define o número de escravos cuja • Individualmente, para cada operação
atualização deve ser propagada antes dela ser Por padrão, uma gravação é informada como bem-
considerada bem-sucedida sucedida assim que o BD é atualizado
É possível informar ao sistema o quão alta é a • Por padrão, todas as gravações são reportadas como bem-
consistência desejada. Por exemplo: sucedidas
• Isso pode ser alterado para que se espere até as gravações serem
• Único servidor com W = “majority”: gravação será concluída
sincronizadas em disco ou propagadas para 2 ou mais escravos
imediatamente já que há apenas um nó
• Três nós no conjunto de réplicas com W = “majority”: a gravação DBCollection shopping = database.getCollection (“shopping”);
terá de se completar em pelo menos dois nós antes de ser
informada como bem-sucedida shopping.setWriteConcern (REPLICAS_SAFE);
CIn/UFPE - DW  101 CIn/UFPE - DW  102

17
BD de Documentos BD de Documentos
• Consistência • Consistência
É também possível configurar a consistência desejada por Transações no nível de um único documento são
operação de gravação: conhecidas como atômicas
DBCollection shopping = database.getCollection (“shopping”); Transações não têm mais de uma operação
• Porém, o RavenDB processa transações com múltiplas operações
WriteResult resultado =
Níveis diferentes de consistência/segurança nas
shopping.insert (pedido, REPLICAS_SAFE); gravações e leituras podem ser escolhidos
• Menor nível de segurança: WriteConcern.NONE
É também possível indicar que leituras poderão ser feitas
Existe um equilíbrio que precisa ser cuidadosamente
nos nós escravos:
pensado com base nos requisitos de negócio da aplicação
• Na conexão com o BD:
• Identificar quais configurações fazem sentido na leitura
Mongo mongo = new Mongo (“localhost:27017”); • Definir o nível de segurança desejado durante a gravação

mongo.slaveOK();

CIn/UFPE - DW  103 CIn/UFPE - DW  104

18

Você também pode gostar