Professional Documents
Culture Documents
Escalveis
Pedro Henrique dos Santos Lemos
Pedro Soares Figueiredo
Orientador:
Rio de Janeiro
Maro de 2014
PARA
OBTENO
DO
GRAU
DE
ENGENHEIRO
DE
COMPUTAO E INFORMAO.
Examinada por:
______________________________________________
Prof. Alexandre de Assis Bento Lima, D.Sc.
______________________________________________
Profa. Marta Lima de Queirs Mattoso, D.Sc.
______________________________________________
Prof. Ricardo Cordeiro de Farias, Ph.D.
Pedro Henrique
Figueiredo,
Pedro
dos
Soares
Santos Lemos
Pedro Soares
Lemos,
Pedro Figueiredo
Henrique dos Santos
UmaUma
Anlise
Anlise
dosdos
Novos
Novos
Sistemas
SistemasdedeBancos
Bancos de
de Dados
Relacionais Escalveis/Pedro Henrique dos Santos Lemos e
Pedro Soares Figueiredo. Rio de Janeiro: UFRJ/ Escola
Politcnica, 2014.
VIII, XII,
58 p.:
71il.;
p.:29,7
il.; 29,7
cm. cm.
Orientador:
Orientador:
Alexandre
Alexandre
de de
Assis
Assis
Bento
Bento
Lima
Lima
Projeto
Projeto
de Graduao
de Graduao
UFRJ/Escola
UFRJ/Escola
Politcnica/
Politcnica/
Curso de
Engenharia
Curso
de Engenharia
de Computao
de Computao
e Informao,
e Informao,
2014.
2014.
Referncias
Referncias
Bibliogrficas:
Bibliogrficas:
pxx p. 66-69
1. Banco
1. Banco
de de
Dados
Dados
2. 2.Modelo
ModeloRelacional
Relacional3.3. NoSQL
NoSQL 4.
NewSQL. I.Universidade
Lima, Alexandre
Federal
de Assis
do Rio
Bento
de Janeiro,
II. Universidade
Escola
Politcnica,
Federal
do Rio
Curso
de Janeiro,
de Engenharia
Escola Politcnica,
de Computao
Curso de
e
Informao. de
III. Computao
Ttulo.
Engenharia
e Informao. III. Titulo.
iii
AGRADECIMENTOS
Por Pedro Lemos:
Chegar em um momento como esse no algo fcil. Foram 6 intensos anos,
nos quais inmeras dificuldades surgiram, muitas coisas foram deixadas de lado, para
que esse momento chegasse, mas principalmente, muitas coisas foram conquistadas
ao longo desses anos, que hoje me fazem ter a certeza que esse tempo no foi em
vo, e sim muito proveitoso. Mas para enfrentar todos os obstculos e mesmo assim
sentir o prazer dessa conquista, foi necessrio uma comunho de foras, as quais
agradeo aqui nesse momento.
minha famlia, principalmente meus pai, Artur e Wania, minhas irms,
Larissa e Renata e minha namorada Anlia, por todo o apoio e dado durante esse
longo perodo. No teria sido fcil, sem a ajuda de vocs, sem o suporte emocional
necessrio, para aguentar viradas de noites de estudos, estgios durante o fim de
semana, viagens a trabalho e passar 1 ano morando longe de casa. Obrigado por todo
o amor e carinho que vocs sempre me deram.
Aos amigos de ECI, que fizeram cada dia de faculdade, ser um dia diferente.
Sem vocs, esses anos no seriam os mesmos, e teriam passado muito mais
devagar. Obrigado por me ajudar a levar a faculdade com a seriedade, mas tambm
com a alegria necessria.
Fluxo e seus membros, por ter me feito aprender muito mais que
Engenharia. Por me deixar conhecer esse imenso mundo que o Empreendedorismo.
Sem todos os EMPIs, PAMEs, reunies de fim de semana, sem ter conhecido todos
vocs, essa faculdade no teria a menor graa. Obrigado por ser minha 2 casa.
Aos amigo feitos no Porto, obrigado pela grande experincia de ter morado
fora de casa durante 1 ano. Vocs tornaram esse momento, mais incrvel do que eu
poderia imaginar.
iv
AGRADECIMENTOS
Por Pedro Figueiredo:
Primeiramente, tenho que agradecer meus pais, Srgio e Mnica, pelas
primeiras orientaes que recebi na vida. O amor, o carinho, o apoio incondicional, a
educao dada e os valores que me passaram fizeram com que tudo o que aconteceu
at aqui fosse possvel. Obrigado por me ensinarem a acreditar. meus irmos, Lucas
e Joo Felipe, obrigado por serem os melhores irmos possveis.
Aos queridos amigos da turma de 2008 da ECI, agradeo por terem tornado
essa jornada prazerosa, mesmo nos momentos mais difceis. As salas de estudo,
virtuais e reais, sero lembradas. Todas as outras reunies, mais ainda! Obrigado por
terem se tornado amigos de verdade. Um agradecimento especial ao Pedro Lemos
pela parceria inestimvel na realizao deste projeto.
Aos amigos da poca de colgio, vocs me ensinaram o significado real da
palavra amizade. Essa foi uma lio incrvel! Obrigado pelo apoio de sempre.
Aos companheiros da Plannera, obrigado por terem feito parte da minha vida
profissional. E obrigado por terem me ensinado a aprender a errar melhor.
Por ambos:
Ao professor Alexandre Assis, agradecemos pelas aulas que eventualmente
levaram escolha deste tema, pela orientao neste trabalho, pela dedicao em
todas as revises do texto. E aos demais professores, obrigado por todos os
momentos igualmente inspiradores.
Maro/2014
March/2014
vii
SUMRIO
Captulo 1 -
Introduo ................................................................................................ 1
1.1
Tema...................................................................................................................... 1
1.2
Justificativa ............................................................................................................ 1
1.3
Objetivo.................................................................................................................. 2
1.4
Metodologia ........................................................................................................... 2
1.5
Organizao do Texto ........................................................................................... 3
Captulo 2 -
Fundamentao Terica .......................................................................... 4
2.1
Estratgias tradicionais para implementao de SGBD ........................................ 4
2.2
Novo Ambiente ...................................................................................................... 5
2.3
Bancos de Dados Distribudos .............................................................................. 7
2.4
NoSQL ................................................................................................................. 14
2.4.1
Motivao ......................................................................................................... 14
2.4.2
Principais Caractersticas ................................................................................. 14
2.4.3
Classificao..................................................................................................... 15
2.4.4
Problemas......................................................................................................... 17
2.5
Avaliao de Desempenho em Sistemas de Bancos de Dados.......................... 18
Captulo 3 -
NewSQL ................................................................................................. 21
3.1
NuoDB ................................................................................................................. 22
3.1.1
Viso Geral ....................................................................................................... 22
3.1.2
Arquitetura ........................................................................................................ 23
3.1.2.1
Estrutura em nveis ........................................................................................ 23
3.1.2.2
Os tomos ..................................................................................................... 25
3.1.2.3
Controle de Concorrncia .............................................................................. 26
3.2
VoltDB.................................................................................................................. 27
3.2.1
Viso Geral ....................................................................................................... 27
3.2.2
Arquitetura ........................................................................................................ 28
3.3
MemSQL.............................................................................................................. 31
viii
LISTA DE FIGURAS
Figura 1 Um sistema de banco de dados distribudo. Adaptado de (ZSU,
VALDURIEZ, 2010). ..................................................................................................... 10
Figura 2 - Arquitetura do NuoDB. Adaptado de www.nuodb.com ................................ 25
Figura 3 - Arquitetura do MemSQL. Adaptado de www.memsql.com .......................... 32
Figura 4 - Execuo de Consultas no MemSQL. Adaptado de www.memsql.com ...... 35
Figura 5 - Esquema do TPC-C ..................................................................................... 41
Figura 6 - Esquema do TATP ....................................................................................... 43
Figura 7 - Esquema do YCSB ...................................................................................... 45
Figura 8 Esquema do Twitter .................................................................................... 46
Figura 9 - Resultados TATP - 2 Ns ............................................................................ 53
Figura 10 - Resultados TATP - 4 Ns .......................................................................... 53
Figura 11 - Resultados TATP - 128 Usurios Virtuais .................................................. 54
Figura 12 - Resultados Twitter - 2 Ns ......................................................................... 55
Figura 13 - Resultados Twitter - 4 Ns ......................................................................... 55
Figura 14 - Resultados Twitter - 128 Usurios Virtuais ................................................ 56
Figura 15 - Resultados YCSB - 2 Ns .......................................................................... 57
Figura 16 - Resultados YCSB - 4 Ns .......................................................................... 57
Figura 17 - Resultados YCSB - 128 Usurios Virtuais ................................................. 58
Figura 18 - Resultados TPCC - 2 Ns .......................................................................... 58
Figura 19 - Resultados TPCC - 4 Ns .......................................................................... 59
Figura 20 - Resultados TPCC - 128 Usurios Virtuais ................................................. 59
xi
LISTA DE SIGLAS
ACID Atomicidade, Consistncia, Isolamento e Durabilidade
BASE Basically Available, Soft-state services with Eventual-Consistency
JDBC Java Database Connectivity
LDD Linguagem de Definio de Dados
MV Mquina Virtual
MVCC Multi Version Concurrency Control
OLTP Processamento de Transaes em Tempo Real (do ingls, Online Transaction
Processing)
SBD Sistemas de Bancos de Dados
SBDD Sistemas de Bancos de Dados Distribudos
SBDR Sistemas de Bancos de Dados Relacionais
SGBD Sistema de Gerncia de Banco de Dados
SM Gerenciador de Armazenamento (do ingls, Storage Manager)
SQL Linguagem de Consulta Estruturada (do ingls, Structured Query Language)
SSD Solid State Drives
TE Motor de Transaes (do ingls, Transaction Engine)
TPC Transaction Processing Performance Council
XML eXtended Markup Language
YCSB Yahoo! Cloud Serving Benchmark
xii
Captulo 1 - Introduo
1.1 Tema
Este projeto traz os resultados de um estudo sobre as novas tecnologias utilizadas
para implementao de Sistemas de Gerncia de Bancos de Dados Relacionais
(SGBDR), conjuntamente denominadas NewSQL.
1.2 Justificativa
SGBDR tradicionalmente so usados como parte da soluo de aplicaes com
grande nmero de transaes. Nos ltimos anos, porm, surgiram uma variedade de
novas aplicaes, geralmente baseadas na Web: redes sociais online, jogos
multijogadores, comrcio eletrnico a nvel global, mensageiros instantneos, etc.
Aplicaes bem sucedidas desses tipos so caracterizadas por um alto volume de
interaes por segundo e, normalmente, espera-se que o tempo de resposta seja
muito baixo, o que demanda requisitos de escalabilidade e desempenho melhorados
dos SGBD (STONEBRAKER,2011). As estratgias de implementao dos SGBDR
atuais (armazenamento baseado em disco, arquitetura centralizada, entre outros) so
um empecilho para atender a esses requisitos. Uma abordagem do tipo dividir para
conquistar para o problema da escalabilidade, como fragmentar os dados em uma
arquitetura distribuda, por exemplo, tem um custo elevado de manuteno em um
SGBDR. O aprimoramento de tecnologias de hardware, como processadores mais
rpidos, memrias com mais capacidade (e que ficaram, ao mesmo tempo, mais
baratas), e novas formas de armazenamento no-voltil, como os Solid State Drives
(SSD), tambm devem ser consideradas. Bases de dados residentes unicamente em
memria passam a ser uma opo, por exemplo.
Por isso, surgiu o movimento NoSQL. Sistemas NoSQL visam atender a
problemas especficos, atravs de modelos de dados distintos, como: orientados a
1
mantenham
Modelo
Relacional,
as
transaes
ACID
(Atomicidade,
1.3 Objetivo
O objetivo principal deste projeto realizar um estudo sobre as novas tecnologias para
SGBDR denominadas NewSQL, mostrando desde os motivos da sua concepo at
os detalhes de funcionamento de algumas dessas ferramentas, passando pelas
principais diferenas entre o NewSQL e os SGBDR tradicionais. Um outro objetivo
verificar, atravs de experimentos, o desempenho de alguns dos novos SGBDR. Para
tanto, uma ferramenta (NuoDB) foi analisada com a utilizao de quatro benchmarks
com caractersticas bastante distintas.
1.4 Metodologia
As seguintes etapas foram realizadas para a concluso deste estudo:
2
I.
II.
III.
IV.
V.
VI.
outra, permitindo que o resultado da execuo paralela das transaes seja o mesmo
obtido caso as mesmas tivessem sido executadas sequencialmente; e durveis, pois,
em caso de sucesso, as alteraes causadas pela transao so persistidas mesmo
em caso de falhas. Esse tipo de garantia crucial para o bom funcionamento de
sistemas OLTP como, por exemplo, sistemas bancrios e de compras de passagens
areas. Por isso, nestes sistemas, o benefcio de garantir a consistncia dos dados
por muitas vezes acaba sendo superior perda de desempenho induzida pela
sobrecarga causada por alguns mecanismos de controle de concorrncia.
Devido, em grande parte, estas caractersticas, os SGBDR ainda so
amplamente utilizados. Esta ampla utilizao, nos ltimos 40 anos, levou seus
desenvolvedores a desenvolv-los como ferramentas que podem ser utilizadas por
qualquer tipo de aplicao que necessite de persistncia de dados (one size fits all (STONEBRAKER, CENTINTEMEL, 2005)). O cenrio, no entanto, vem mudando
desde a dcada de 2000, conforme mostra a prxima seo.
profissionais
especializados,
contatados
por
telefone,
que
ento
Apesar de parecer que ter um sistema nico para todas as aplicaes possa
ser fantstico, do ponto de vista financeiro e operacional, a perspectiva sobre os
SGBDR vem mudando (STONEBRAKER et al., 2007).
Nos ltimos anos uma enorme quantidade de outros mercados surgiu,
incluindo motores de busca na Web, redes sociais e o mercado de comunicao
mvel, entre outras aplicaes em tempo real, fazendo com que o cenrio OLTP dos
dias atuais seja claramente distinto: existem dispositivos, em escala global,
constantemente conectados Internet, como smartphones e tablets, que so
potenciais geradores de transaes. Considerando o exemplo da reserva de
passagens de avio mencionado anteriormente, por exemplo: hoje esse objetivo pode
ser alcanado enquanto se toma um caf. Basta que se disponha de um dispositivo
mvel conectado a Internet. Essa comodidade, associada a um mundo dinmico em
que as pessoas desejam a todo momento que suas solicitaes sejam atendidas com
rapidez, levanta duas demandas em relao aos SGBDR: maior vazo (em nmero de
transaes por unidade de tempo) e alta disponibilidade, normalmente alcanada na
forma de replicao (STONEBRAKER, 2011).
Alm das mudanas nas aplicaes que utilizam SGBD e no contexto
informacional que estamos, podemos citar tambm uma grande mudana no cenrio
dos hardwares utilizados. Segundo STONEBRAKER et al. (2007) os processadores
modernos so bem mais rpidos, e executam transaes em microssegundos, os
discos rgidos aumentaram significativamente de tamanho, e novas tecnologias de
armazenamento no-voltil foram desenvolvidas, como os SSD (do ingls, Solid State
Drive ), que possuem tempos de resposta bastante reduzidos. Alm disso, o custo da
memria principal diminuiu, e j possvel ter servidores com capacidade suficiente
para tornar possvel a implantao de bases de dados residentes unicamente em
memria principal (STONEBRAKER, WEISBERG, 2013). Some-se a isso o fato de
que aglomerados (do ingls clusters) de computadores, constitudos de dezenas ou
at mesmo milhares de computadores comuns interconectados, ganharam grande
6
1
2
Com respeito segunda questo, existe um limite fsico para acomodar bases
de dados muito grandes, a prpria capacidade de armazenamento do servidor. Uma
possvel soluo para esse problema seria migrar a base de dados para um servidor
com maior capacidade de armazenamento, o que conhecido como escalabilidade
vertical (STONEBRAKER
10
pontos de uso reais. Os potenciais benefcios da localizao dos dados so: como
cada local responsvel apenas por uma poro dos dados, isso ocasiona um uso
menos intensivo dos recursos computacionais, como da CPU, no servidor; alm disso,
a localizao reduz o tempo de acesso remoto normalmente envolvido em redes de
longa distncia (WAN, do ingls Wide Area Network), permitindo que requisies
sejam servidas com um menor tempo de resposta. Alm disso, em sistemas
distribudos, se torna possvel explorar tcnicas de processamento paralelo nas formas
inter-consulta e intra-consulta. Paralelismo inter-consulta diz respeito execuo de
mltiplas consultas simultaneamente, enquanto o paralelismo intra-consulta envolve
reescrita de uma consulta feita em um esquema de dados global em um certo nmero
de subconsultas, cada uma podendo ser executada em locais diferentes (ZSU,
VALDURIEZ, 2010).
A ltima caracterstica apresentada a maior facilidade com relao
expanso do sistema, o que torna mais fcil acomodar bases de dados de tamanhos
crescentes. Tambm existe uma implicao econmica: normalmente mais barato
acrescentar computadores com configurao mais modesta a um aglomerado de
computadores que tenham o mesmo poder computacional que um nico computador
com um nvel muito elevado de recursos. (ZSU, VALDURIEZ, 2010)
Embora tragam importantes benefcios, o desenvolvimento de SBDD possui
uma srie de desafios (ZSU, VALDURIEZ, 2010):
O primeiro deles o prprio projeto do banco de dados, ou seja, determinar
como os dados devem ser divididos entre as possveis localidades. Existem duas
alternativas neste caso: replicao e fragmentao. A replicao pode ser total (toda a
base replicada em mais de um local) ou parcial (alguns fragmentos so replicados).
Quanto fragmentao, as decises mais importantes so: como realizar a
fragmentao em si e qual a melhor alocao destes fragmentos. Alm disso, deve
existir uma forma de mapear itens de dados em fragmentos atravs de uma espcie
12
concorrncia
distribudo
foi
estudado
por
(BERNSTEIN,GOODMAN,1981b)
2.4 NoSQL
2.4.1 Motivao
SGBDR no atendem satisfatoriamente aplicaes que poderiam se beneficiar de
escalabilidade horizontal, como as que precisam de capacidade analtica em tempo
real, para citar um exemplo. Para buscar atender esta demanda, surge o NoSQL. Com
a inteno original de se criar sistemas distribudos escalveis, com modelos mais
simples que o relacional e com alta disponibilidade, o movimento NoSQL (mais
conhecido hoje em dia como Not only SQL) iniciado no final da dcada de 2000
(STONEBRAKER, 2010) vem crescendo rapidamente e j conta com o mais de 1503
SGBD desenvolvidos.
14
2.
3.
4.
5.
6.
2.4.3 Classificao
Como sistemas NoSQL no so regulados por nenhum modelo em especfico,
partilhando apenas algumas caractersticas em comum, foram propostas algumas
classificaes para os mesmos, dos quais as principais so (LEAVITT, 2010,
CATTELL, 2010):
Armazm de Pares Chave-Valor. um sistema que armazena valores
indexados para posterior recuperao atravs de chaves. Esses sistemas podem
15
16
2.4.4 Problemas
As solues NoSQL chegaram ao mercado como uma alternativa para atender s
necessidades das aplicaes que os SGBDR tradicionais tm dificuldade em suprir,
devido aos problemas de escalabilidade e disponibilidade. No entanto, estas solues
j enfrentam alguns problemas (LEAVITT, 2010), que devem ser bem analisados por
qualquer futuro utilizador, para que seja avaliada a viabilidade de sua utilizao.
Complexidade e Sobrecarga
Como os bancos NoSQL no possuem uma linguagem unificada de consulta,
como o SQL, eles necessitam de uma programao manual das consultas, o que pode
no ser uma tarefa vivel para aqueles que no saibam ou no desejem codific-las.
Mais do que isso, ao longo dos anos, tempo de pesquisa e desenvolvimento foi
investido em aprimorar compiladores SQL para gerar planos de execuo de
consultas otimizados. Ao desenvolver novos mtodos de acesso, perde-se esta
experincia adquirida, e novos trabalhos precisam ser desenvolvidos.
Consistncia
Os sistemas NoSQL do suporte apenas a consistncia tardia de dados. Os
usurios devem estar cientes de que h uma troca envolvida. No caso de aplicaes
cuja exatido dos dados crtica, no ter garantias de consistncia pode no ser uma
opo.
8
9
17
18
2.
grupos
de
usurios
distintos
(administradores
de
banco
de
dados,
dados reais. Embora utilizar cargas de trabalho reais sejam o teste ideal para um
sistema, os custos de implementao do ambiente podem ser maiores que os
benefcios obtidos. Por isso, normalmente, a utilizao de benchmarks sintticos so
solues preferidas (SENG et al., 2004).
Um dos desafios apresentados por benchmarks sintticos a reprodutibilidade
dos testes realizados. Os resultados podem variar de acordo com configuraes de
usurio, por exemplo. Assim, resultados alcanados em um ambiente no
necessariamente sero reproduzidos em outro e, por isso, devem ser utilizados como
estimativa, normalmente com o propsito de comparao relativa (SENG et al., 2004).
20
Captulo 3 - NewSQL
Os SGBD NoSQL buscam alternativas para melhorar a escalabilidade e o
desempenho dos SBD atuais. No entando, isto conseguido, em detrimento da
utilizao da SQL e das propriedades ACID para as transaes. Para muitos, houve
uma grande perda nessa troca, pois no apresentar garantias integrais para a
consistncia dos dados, assim como ter que recodificar mtodos de acesso, no
interessante.
Por isso novas pesquisas foram e continuam sendo feitas para conseguir
encontrar uma combinao perfeita entre escalabilidade e consistncia. Para sistemas
empresariais que lidam com dados de alto nvel, como instituies financeiras,
companhias areas e outras mais, essa no uma questo simples. Apesar de existir
hoje a necessidade de aumentar a escalabilidade de seus sistemas, e, principalmente,
a velocidade de respostas aos clientes, garantir a consistncia e a durabilidade das
informaes essencial. E para continuar com essas propriedades, usando os
SGBDR tradicionais, existem algumas possibilidades. Uma delas adquirir um
servidor com maior capacidade de processamento (escalabilidade vertical). Outra
possibilidade fragmentar a base manualmente, o que, alm de um processo de difcil
manuteno (j que eventualmente ser necessrio redistribuir os fragmentos), pode
demandar que alguma lgica de acesso aos dados seja includo no cdigo da
aplicao, por exemplo, o que exatamente uma prtica que se deseja evitar ao
utilizar um SGBD.
Nesse contexto, surgiram os sistemas NewSQL (ASLETT, 2011) que designa
uma nova classe de SGBD que buscam promover a mesma melhoria de desempenho
e escalabilidade dos sistemas NoSQL enquanto mantm o suporte linguagem SQL e
s propriedades ACID, que tem ampla adoo com os SGBDR tradicionais.
21
2.
3.
4.
5.
3.1 NuoDB
3.1.1 Viso Geral
NuoDB um SGBD NewSQL em memria que tem como foco a utilizao em
ambientes de dados geo-distribudos, sendo direcionado para empresas que precisam
expandir suas bases de dados para mltiplos servidores mas no querem perder os
benefcios da lgebra relacional e das propriedades ACID.
22
3.1.2 Arquitetura
O
distribudo e durvel (do ingls, durable distributed cache), baseada em replicao sob
demanda (NuoDB Bloor Report, 2013). Para o NuoDB, s existe o suporte ao modo
replicao total dos dados armazenados. Alm disso, o NuoDB no realiza
fragmentao da base de dados entre os ns de um aglomerado. Os ns de
processamento formam um cache distribudo em uma rede ponto-a-ponto. Portanto,
em um dado momento, mltiplas cpias de um item de dados podem estar disponveis
em memria (o que permite balanceamento de carga nas requisies realizadas),
assim como no estar em nenhum n, devendo ser trazido do disco. Esses conceitos
so mais detalhados nas prximas sees.
24
3.1.2.2 Os tomos
Tendo explicado o que so cada um dos nveis da arquitetura, necessrio ir mais a
fundo e explicar como eles so constitudos de fato. E para isso um novo conceito
precisa ser definido, o de tomos. Mesmo parecendo uma base de dados SQL, o mais
certo ao definir o NuoDB seria cham-lo de uma base de dados de objetos distribuda,
com uma camada SQL no topo (NuoDB Technical WhitePaper, 2013). Por trs dessa
camada toda a lgica opera em objetos denominados tomos, que so objetos autocoordenados que podem representar qualquer tipo de informao como por exemplo,
dados, metadados, esquemas, ndices e outras mais. Esses objetos facilitam a
comunicao interna e a implementao do cache. O nvel de processamento
transacional responsvel por fazer o mapeamento entre o contedo SQL e os
devidos tomos.
Alm do contedo da base de dados, existe outro tipo de tomo, o chamado
tomo de Catlogo, que utilizado para buscar os demais tomos entre os
processos correntes. Quando da criao da base de dados, e da ativao do primeiro
TE, um objeto diretamente colocado no seu cache, o Catlogo Mestre. O Catlogo
Mestre indica onde todos os elementos da base de dados podem ser descobertos.
25
atravs desses catlogos que qualquer TE sabe onde um tomo est disponvel.
Quando um tomo de dados requisitado a um TE, ele buscado na seguinte ordem:
no cache do prprio TE (informao do catlogo local), no cache de outros TE e,
finalmente, se no estiver em nenhum destes, requisitado a um SM para que o mesmo
busque no disco.
Essa abstrao de todos os dados em tomos serve para simplificar o modelo
de durabilidade do NuoDB. Todo os acessos na arquitetura so feitos atravs dos
tomos, e todos eles so guardados como pares de chave-valor.
26
3.2 VoltDB
3.2.1 Viso Geral
VoltDB um SGBDD com armazenamento em memria principal, em conformidade
com as propriedades ACID e que utiliza uma arquitetura de memria distribuda.
VoltDB implementa um projeto similar ao do H-Store (KALLMAN et al.,2008), seu
predecessor, que foi utilizado como prottipo em pesquisa acadmica. Uma restrio
imposta pelo VoltDB: a necessidade da base de dados caber integralmente em
memria. Os benefcios originrios desta deciso so: garantir que no haja
sobrecargas, evitando inserir recursos para gerncia de acesso a armazenamentos
baseados em disco, e um menor tempo de busca aos dados (justamente por ser em
memria, em comparao a armazenamento em disco). Em compensao,
necessrio que a capacidade de memria principal do servidor seja suficientemente
grande para acomodar os dados da aplicao a qualquer momento.
27
se
baseia
(HARIZOPOULOS
em
et
al.,
eliminar
2008),
as
a
fontes
saber:
de
sobrecarga
sobrecargas
com
mostradas
gerncias
em
de
3.2.2 Arquitetura
O ambiente de utilizao adequado para o VoltDB proporcionado por um
aglomerado de computadores (STONEBRAKER,WEISBERG, 2013). Nesse ambiente,
o VoltDB pode realizar fragmentaes horizontais para cada tabela, alocando os
fragmentos para diferentes ns do aglomerado. A fragmentao apropriada para
tabelas grandes que so acessadas ou atualizadas frequentemente. Para tabelas
menores e que sofrem poucas atualizaes, tambm suportada a opo de repliclas integralmente em todos os ns, o que mais apropriado.
Quando fragmentada, a definio da localizao dos fragmentos de uma tabela
dada por uma funo hash aplicada a um dos seus atributo da tabela o que
indicado em um catlogo. Um catlogo no VoltDB um conjunto pr-compilado de
instrues SQL utilizado para criar ou recuperar uma base de dados. Nele, geralmente
constam instrues LDD (Linguagem de Definio de Dados) com as definies dos
esquemas e dos fragmentos, alm de procedimentos armazenados, que podem ser
escritos em SQL ou Java (no momento da escrita deste projeto, estas so as
linguagens suportadas) e compilados junto com o catlogo. Alm disso, cada
fragmento replicado K+1 vezes, de acordo com o conceito de K-safety (indica a
quantidade de rplicas redundantes que podem falhar e o sistema continuar ativo). O
28
ii.
Transaes
tiro-nico:
so
transaes
compostas
de
diversas
29
problema com algum deles, este seja desconectado: at K rplicas podem falhar antes
de um aglomerado parar de operar totalmente.
3.3 MemSQL
3.3.1 Viso Geral
O SGBD MemSQL comeou a ser desenvolvido em Janeiro de 2011 por dois exfuncionrios do Facebook, que imaginavam existir uma nova possvel maneira de dar
ao SQL escalabilidade e velocidade. O resultado foi um SGBD distribudo em
memria, que consultado atravs de uma interface SQL, tendo como foco aplicaes
transacionais, e que tambm apresenta capacidade para execuo de anlises de
dados em tempo real. Os setores que esto se destacando na utilizao do MemSQL
so os servios financeiros, as telecomunicaes e os servios de propaganda
(ASLETT, 2012).
3.3.2 Arquitetura
O MemSQL possui uma arquitetura distribuda organizada em dois nveis de ns,
Agregadores e Folhas:
Agregadores trabalham como gerentes de consultas, recebendo-as e
distribuindo-as entre os ns folhas. Aps as consultas serem executadas pelos ns
folhas, os agregadores combinam os resultados e os retornam para o usurio. Alm
disso, a fragmentao dos dados entre os ns folhas tambm controlada pelo
agregador. Os agregadores armazenam apenas metadados.
Agregador Mestre (MA) responsvel pelo monitoramento do aglomerado.
Todo aglomerado precisa ter no mnimo um MA para poder ser iniciado. O agregador
mestre trata de todas as operaes LDD a serem feitas no banco de dados. Todas as
bases de dados, tabelas, adio e remoo de ns e rebalanceamento
dos
fazendo com que registros com valores iguais para o atributo de fragmentao estejam
sempre no mesmo fragmento, o que facilita a execuo de operaes de juno. O
resultado da criao padro de uma tabela no MemSQL (ou seja, se a expresso
CREATE TABLE for utilizada sem nenhum modificador) : criar uma tabela
fragmentada, dividida em um total de fragmentos igual a oito vezes o nmero de ns
folhas ativos no aglomerado. Esse valor pode ser modificado ao incluir o modificador
PARTITIONS N na expresso, onde N o nmero de fragmentos total desejado.
As definies das chaves de fragmentao so guardadas pelos Agregadores,
que as utilizam na hora de alocar as consultas, enviadas pelo cliente, aos ns folhas.
Para fragmentar uma tabela, o MemSQL tem suporte s fragmentaes
primria e derivada. A fragmentao primria pode ser realizada por qualquer atributo
da tabela que seja especificado como chave de fragmentao (se nenhum for atribudo,
a chave de fragmentao padro a chave primria). A fragmentao derivada uma
estratgia para tentar alocar, em um mesmo n, fragmentos que possuam o mesmo
valor de chave estrangeira, e definida usando a chave estrangeira de fragmentao.
Para qualquer tabela, somente um modo pode ser usado. Alm disso, quando so
utilizadas chaves estrangeiras de fragmentao, para qualquer operao de juno
(entre as tabelas A e B, onde B referencia A, por exemplo), a condio de juno deve
ser que a chave estrangeira de fragmentao de B seja igual a chave de fragmentao
de A, para quaisquer pares de tabelas.
33
34
10
35
36
3.4.2 Arquitetura
Spanner organizado em um conjunto de zonas, que representam o conjunto de
locais em que os dados podem ser replicados. Zonas podem ser adicionadas ou
removidas conforme um centro de dados colocado em servio ou desligado,
respectivamente. Uma zona tem um zonemaster e diversos spanservers (variando
tipicamente de cem a diversos milhares). O zonemaster atribui dados aos spanservers,
que servem dados aos clientes(CORBETT et al., 2012).
Cada spanserver responsvel por cerca de cem a mil instncias de uma
estrutura de dados chamada tablet. O estado de um tablet armazenado em um
sistema de arquivos distribudo chamado Colossus.
Suporte a replicao alcanado ao implementar uma mquina de estados
Paxos sobre um tablet. Cada mquina de estados armazena metadados e o log do
37
38
4.1 OLTP-Bench
OLTP-Bench uma sute de testes, para execuo de benchmarks de SGBDs
relacionais com cargas de trabalho focadas em aplicaes OLTP e processamento
Web (DIFALLAH et al., 2013). Neste caso, uma carga de trabalho a implementao
de um benchmark existente ou criado pela equipe. O OLTP-Bench rene 15
benchmarks, com cargas de trabalho diferenciadas e agrupadas em 4 tipos de
domnios de aplicaes. Entre esses benchmarks o TPC-C, TATP, YCSB e Twitter
foram utilizados nesse trabalho por representarem uma gama bem diferenciada de
aplicaes.
O OLTP-Bench, alm de agrupar vrios benchmarks j muito utilizados, conta
com algumas facilidades para sua utilizao (DIFALLAH, et al., 2013) como
extensibilidade, suporte para controle da distribuio das transaes, definio de
taxas de desempenho alvo, e suporte para vrios SGBDs, atravs da interface JDBC
(Java Database Connectivity).
39
ii.
benchmarks
levam
em
considerao
dados
disponveis
4.1.1 TPC-C
O benchmark TPC-C (TPC, 2010), publicado pelo TPC (Transaction Processing
Performance Council) o padro atual para avaliao de desempenho de sistemas
OLTP tradicionais. O benchmark simula um ambiente onde uma srie de usurios
virtuais, ou terminais na nomenclatura do benchmark, executam mltiplas transaes
em uma base de dados, simulando uma aplicao de processamento de pedidos em
um armazm.
Este um benchmark com caractersticas de cargas de trabalho intensivas em
escrita e muitas transaes concorrentes.
O tamanho da base de dados do TPC-C varia de acordo com o nmero de
armazns. Todas as tabelas (com exceo da tabela Item), tem sua cardinalidade
influenciadas pela quantidade de armazns. O esquema da base de dados do TPC-C
mostrada na Figura 5:
40
ii.
iii.
iv.
Transaes Stock Level (~4%): Consulta para saber quais itens possuem
um baixo nvel de estoque.
41
v.
4.1.2 TATP
O benchmark TATP (Telecommunication Application Transaction Processing) simula
uma tpica aplicao de telecomunicaes (IBM Software Group, 2009). O esquema
da sua base de dados foi modelado de maneira semelhante a um banco de dados
central que contm dados sobre os assinantes de telefonia mvel que esto
autorizados a usar as tecnologias GSM (Global System for Mobile Communications) e
o WCDMA (Wide Band Code Division Multiple Access).
42
43
ii.
iii.
v.
vi.
vii.
O processo de carga dos dados para este benchmark foi realizado utilizando
fator de carga 10, o que equivalente a inserir um milho de assinantes. A base de
dados resultante tem 740 MB.
4.1.3 YCSB
O Yahoo! Cloud Serving Benchmark (YCSB) contm um conjunto de cargas de
trabalho simples, micro benchmarks, que representam aplicaes com operaes
simples mas que necessitam de grande escalabilidade. Esse benchmark foi
desenvolvido para comparar o PNUTS (COOPER et al.,2008), um SGBD prprio do
Yahoo!, com outros SGBD em nuvem, principalmente os NoSQL (SILBERSTEIN et al.,
2010). Seu desenvolvimento foi iniciado pois os bancos NoSQL que estavam surgindo
tinham modelos de dados diferentes entre si (j explicados na seo 2.4), o que
44
45
4.1.4 Twitter
Inspirado pelo micro-blog de mesmo nome, este benchmark parte integrante do
OLTP-Bench, e no uma implementao da especificao de um benchmark
preexistente. Foi criado com base em um instantneo, annimo, do grafo social do
Twitter de agosto de 2009, contendo 51 milhes de usurios e quase dois bilhes de
relacionamentos do tipo X segue Y (DIFALLAH et al.,2013).
O benchmark possui um gerador de cargas de trabalho sintticos que
baseado em uma aproximao das consultas e transaes necessrias para
representar as funcionalidades da aplicao original. O esquema da base do Twitter
mostrado na Figura 8 :
46
Uma breve explicao sobre o que representam as entidades acima pode ser
necessria:
O Twitter 11 um sistema em que usurios postam mensagens de curta
extenso (limitados a 140 caracteres), chamados tweets. Usurios podem formar uma
rede social entre si seguindo uns aos outros. Essa uma relao assimtrica no
grafo, pois usurio X seguir Y no garante que Y siga X. Um tweet postado por um
usurio visto por seus seguidores em seus feeds, uma listagem de publicaes em
ordem decrescente quanto ao tempo de publicao, da mais recente para a mais
antiga. Existem outras caractersticas, mas obviamente este benchmark no se prope
a ser uma representao exata do sistema, e sim uma aproximao relativamente
precisa do tipo de carga de trabalho que o mesmo suporta regularmente.
As transaes que o compem, assim como a frequncia de ocorrncia padro
de cada uma, esto detalhadas a seguir:
i.
ii.
iii.
iv.
v.
11
47
Para o processo de carga de dados deste benchmark, foi utilizado o fator 150,
que equivalente a inserir 75.000 usurios. A base de dados resultante tem
aproximadamente 1,1 GB.
aglomerado,
utilizamos
computadores
com
as
seguintes
configuraes:
i.
ii.
iii.
iv.
Todos os computadores esto conectados por uma rede Ethernet 100 Mbps. O
Computador 4 foi responsvel por fazer o papel de cliente, ou seja, pela invocao ao
benchmark. A carga de trabalho foi direcionada a uma instncia do SGBD em um
12
48
ii.
iii.
4.3.2 Metodologia
O SGBD NewSQL avaliado o NuoDB. Excluindo-se o Google Spanner, por ser
proprietrio, e, portanto, indisponvel para testes, a deciso foi tomada entre os outros
trs SGBD apresentados no Captulo 3. Justifica-se a escolha do NuoDB por ser o
nico entre eles a possuir uma edio (no-comercial) sem nenhuma restrio para
testes, chamada edio desenvolvedor13. A verso utilizada foi a 2.0.3.
13
49
50
so as mesmas
1 TE e 1 SM: 1 TE e 1 SM no Computador 3;
ii.
51
iii.
iv.
v.
vi.
52
53
4.4.2 Twitter
Para as configuraes de 2 e 4 SM, demonstradas nas Figuras 12 e 13, existe uma
degradao na vazo final, se comparada configurao de apenas 1 SM. Para uma
54
55
4.4.3 YCSB
O benchmark YCSB executa transaes simples, compostas de uma nica consulta,
portanto no h paralelismo intra-consulta. O fator a ser observado aqui se aumento
de desempenho pode ser observado por paralelismo inter-consulta. Alm disso, cada
submetedor s envia uma nova transao aps obter o resultado da anterior.
Para as configuraes de 2 e 4 SM, mostradas nas Figuras 15 e 16, percebese uma degradao de desempenho, mostrando que quanto menor o nmero de SM,
melhor o desempenho do NuoDB.
Na Figura 17, esto representados os resultados comparativos das 3
configuraes testadas do NuoDB. Para apenas 1 SM no aglomerado, o aumento de
desempenho do NuoDB de 1 para 2 ns foi de 1,72 vezes, aumentando o nmero de
56
57
4.4.4 TPC-C
Para as configuraes de 2 SM e 4 SM, nas Figuras 18 e 19, vemos novamente um
desempenho inferior a de um nico SM. Podemos ver tambm um decrscimo de
desempenho quando se atinge o nmero de 128 usurios virtuais.
58
59
i.
ii.
Uma das justificativas para criao dos NewSQL, inclusive do NuoDB, era dar
a possibilidade de se escalar a base de dados horizontalmente, dado que
escalabilidade um dos requisitos das novas demandas do mercado apresentadas no
Captulo 1, e que a opo pela escalabilidade vertical no vivel financeiramente
falando, alm de chegar a um limite de capacidade de aumento de desempenho.
Nos testes realizados, tentou-se verificar se essa escalabilidade horizontal
realmente era fornecida pelo SGBD testado, o NuoDB. Nos benchmarks realizados,
podemos perceber um aumento de desempenho de acordo com o aumento do nmero
de ns e processos TE que eram iniciados no sistema. Isso mostra que, para o
ambiente testado, o NuoDB obteve escalabilidade horizontal.
Com as limitaes desse projeto, apresentadas no Captulo a seguir, ainda no
possvel ter certeza at que ponto de fato o NuoDB fornece uma escalabilidade
horizontal. Para isso novo trabalhos devem ser feitos, como mostra o Captulo final
60
desse trabalho. Porm esse projeto, j mostra uma boa perspectiva do que pode
acontecer em ambientes maiores e mais realistas.
61
Captulo 5 - Concluso
A Internet alterou substancialmente a forma como as pessoas se relacionam. Novos
modelos de negcios e de prestao de servios que surgiram na ltima dcada
culminaram com a criao de aplicaes que antes no eram possveis de imaginar.
Redes sociais online ou servios de mensagem instantnea se tornaram comuns, e o
conhecimento e ferramentas para desenvolv-las esto disponveis para qualquer um.
Qual, ento, pode ser a diferena entre um caso bem sucedido e outro no?
Aplicaes como as mencionadas so consideradas aplicaes em tempo real,
com requisitos de baixo tempo de resposta. Para isso necessrio que a camada de
acesso aos dados, ou seja, o SGBD, apresente um desempenho adequado.
Neste projeto, foram apresentados
os
motivos
que
levam
os
SGBDR
62
5.1 Limitaes
Um conjunto de fatores delimitaram o escopo e desenvolvimento deste projeto. So
eles:
i.
ii.
nmero
de
computadores
disponveis
para
os
procedimentos
ser
muito
maior.
Alm
disso,
os
computadores
seriam
65
Referncias Bibliogrficas
ASLETT, M., How will the database incumbents respond to NoSQL and NewSQL?, 451
Analyst Report, Abr., 2011
BERNSTEIN, P., GOODMAN, N., et al., 1981a, Query Processing in a System for Distributed
Databases (SSD-1), ACM Transactions on Database Systems, v.6, pp. 602-625
BERNSTEIN, P., GOODMAN, N., 1981b, Concurrency Control in Distributed Database
Systems, Computing Surveys, v.13, n.2, Jun, pp. 185-221
CAREY, M., LIVNY, M., 1988, Distributed Concurrency Control Performance: A Study of
Algorithms, Distribution, and Replication. In: Proceedings of the 14
th
Fallacy. In: Proceedings of the 4 International AAAI Conference on Weblogs and Social Media
CHANG, F., DEAN, J. et al., 2006, Bigtable: A Distributed Storage System for Structured Data,
ACM Transactions on Database Systems, v. 26, n.4, Jun, pp. 1-26
COOPER, B., RAMAKRISHNAN, R., et al., PNUTS: Yahoo!s Hosted Data Serving Platform.
In: Proceedings of the VLDB Endowment, vol. 1, no.2, pp. 1277-1288, Ago. 2008
CORBETT, J., DEAN, J., et al., 2012, Spanner: Googles Globally-Distributed Database. In:
Proceedings of OSDI'12: Tenth Symposium on Operating System Design and Implementation,
pp. 251-264, Hollywood, CA, Out., 2012.
CURINO, C., PAVLO, A., et al., 2012, Benchmarking OLTP/Web Databases in the Cloud: the
OLTP-Bench Framework. In: CloudDB12 Proceedings of the Fourth International Workshop on
Cloud Data Management, pp 17-20.
66
DAUDPOTA, N., 1998, Five Steps to Construct a Model of Data Allocation for Distributed
Database Systems, Journal of Intelligent Information Systems, v.11, pp-153-168
DIFALLAH, D., CURINO, C., et al., OLTP-Bench: An Extensible Testbed for Benchmarking
Relational Databases. In: Proceedings of the Very Large Database Endowment, vol.7, no. 4, pp.
277-288, Dez.2013
GIFFORD,D., Information Storage in a Decentralized Computer System. In: Tech. Rep. CSL81-8,Xerox PARC, 1982
HARIZOPOULOS, S., ABADI, D., et al., 2008, OLTP Through the Looking Glass, and What We
Found There, In: Proceedings of the 2008 ACM SIGMOD International Conference of
Management Data, pp 981-992.
HOWARD, P., 2013, NuoDB InDetail, Bloor Report. Disponvel em: go.nuodb.com/bloorreport-request.html. Acesso em: 5 dez 2013
IBM Software Group Information Management, Telecommunication Application Transaction
Processing
(TATP)
Benchmark
Description,
2009.
Disponvel
em:
67
LIM, H., HAN, Y., et al., 2013, How to Fit when No One Size Fits, In: The 6th Biennial
Conference on Innovative Data Systems Research (CIDR).
NUODB, NuoDB Emergent Architechture, 2013. Disponvel em:
http://go.nuodb.com/rs/nuodb/images/ Greenbook_Final.pdf. Acesso em: 10 dez. 2013
NUODB, 2013, Technical Whitepaper, v.1 (Out). Disponvel em: http://go.nuodb.com/whitepaper.html. Acesso em: 5 dez. 2013
ed.,
London,
Springer, 2010.
PAUL,S., Database Systems Performance Evaluation Techniques, 2008. Disponvel em:
68
STONEBRAKER, M., 2011, New Opportunities for New SQL, Communications of the ACM,
v.55, n. 11(Nov), pp. 10-11
STONEBRAKER, M., ABADI, D., et al., 2007, The End of an Architectural Era (Its Time for a
Complete Rewrite). In: Proceedings of the 33
rd
Database, pp 1150-1160.
STONEBRAKER, M., CATTELL, R., 2011, 10 Rules for Scalable Performance in Simple
Operation Datastores, Communications of the ACM, v. 54, n. 6(Jun), pp 72-80
STONEBRAKER, M., CETINTEMEL, U., 2005, One Size Fits All: An Idea Whose Time Has
Come and Gone. In: Proceedings of the International Conference on Data Engineering, pp 2-11.
STONEBRAKER, M., WEISBERG, A., 2013, The VoltDB Main Memory DBMS, Bulletin of the
IEEE Computer Society Technical Committee on Data Engineering, vol. 36,n.2,pp.21-27
TPC,
TPC
Benchmark
Standard
Specification,
2010.
Disponvel
em:
69
Anexo A
Exemplo de arquivo de configurao do OLTP-Bench:
<?xml version="1.0"?>
<parameters>
70
<name>GetNewDestination</name>
</transactiontype>
<transactiontype>
<name>GetSubscriberData</name>
</transactiontype>
<transactiontype>
<name>InsertCallForwarding</name>
</transactiontype>
<transactiontype>
<name>UpdateLocation</name>
</transactiontype>
<transactiontype>
<name>UpdateSubscriberData</name>
</transactiontype>
</transactiontypes>
</parameters>
71