Base de memória - Linux Magazine

Propaganda
ANÁLISE | Memória principal em sistemas de bancos de dados
Memória principal em sistemas de bancos de dados
ANÁLISE
Base de memória
Graças ao hardware poderoso, bancos de dados em memória introduzem
uma revolução no mercado, ao lidar com transações e avaliações em
alta velocidade sem acessar dispositivos de memória em massa.
por Alfons Kemper e Thomas Neumann
S
istemas de gerenciamento de
banco de dados em memória,
tais como o TimesTen da Oracle [1] e o solidDB da IBM [2], já
existem há algum tempo. Estes sistemas mantêm todo o conjunto de
dados na RAM, e desta forma removem a necessidade de fazer paginação
entre o buffer de memória principal
e o disco rígido, como é o caso dos
antigos SGBDs. Contudo, os sistemas
de banco de dados em memória – até
agora – tendem a ser produtos-nicho
para aplicativos especiais.
Massas de memória
O progresso do hardware mudou tudo
isso. Os servidores atuais têm acima
de 1TB de RAM e múltiplos núcleos, e novos algoritmos e estruturas de
dados para o eficiente processamento
de dados na RAM já estão em uso
juntamente com cache eficiente de
estruturas de dados de registro, como
PAX ou armazenamento de colunas,
compressão e cache eficiente de estruturas de índice. Os SGBDs em
memória provavelmente irão tornar-se
ainda mais importantes se considerarmos o seguinte: as empresas de hoje
podem comprar servidores relativamente baratos, com uma capacidade
RAM de mais de 1TB por menos de
50 mil dólares. Estes servidores contam com processadores de múltiplos
núcleos capazes de executar várias
tarefas em paralelo. A capacidade é
suficiente para armazenar os dados
transacionais da empresa, mesmo os
60
maiores – não estamos considerando
dados de multimidia aqui, mas dados
para operações de missão crítica.
Por exemplo, observe os dados de
encomendas de uma loja como a
Amazon. Em 2011, a Amazon gerou
um volume de negócios em torno de
48 bilhões de dólares [3]. A um preço médio do produto de 25 dólares, a
empresa armazena assim cerca de 2
bilhões de itens de pedidos, cada um
dos quais geralmente representado
por menos de 100 bytes de dados. Isso
gera um volume de armazenamento
de aproximadamente 200GB – que facilmente se encaixa em 1TB de RAM.
Este cálculo não leva outras operações
(clientes, produtos etc.) em consideração, mas também não considera as
opções de compressão. Alternativamente, uma grande empresa pode
criar um banco de dados distribuído
e particionado em um cluster.
Empresas iniciantes
neste ramo
Os avanços tecnológicos em hardware de servidor levaram à criação de
muitas empresas iniciantes na área de
SGBD em memória: VoltDB [4], Clustrix, Akiban, db-Shards, NimbusDB,
ScaleDB, Lightwolf e ElectronDB,
para citar apenas alguns dos melhores exemplos conhecidos. Também
as grandes corporações, tais como a
SAP (NewDB/Hana [5]) e a IBM
(ISAO/Blink [6]) estão investindo
pesadamente neste ramo de negócio.
Em muitos casos, estes novos desenvolvimentos dependem de sistemas
de banco de dados de código aberto,
como MySQL ou PostgreSQL como
base para suas otimizações de memória
principal. Além das edições comerciais
para empresas, os fornecedores geralmente oferecem também uma versão
gratuita que tem menos recursos. O
VoltDB, por exemplo, está disponível
sob a licença GPLv3. Os sistemas de
banco de dados em memória anteriores
foram concebidos para casos de uso
específico: ou para processamento de
transações online (OLTP), processamento eficiente de transações, ou
ainda processamento analítico online
(da sigla OLAP, de Online Analytical
Processing). Argumentos convincentes,
no entanto, como aqueles apresentados
pelo fundador da SAP, Hasso Plattner
[7], assumem a posição de que esta
distribuição não suporta suficientemente as necessidades do usuário em
termos de inteligência de negócios (da
sigla BI, de business intelligence) em
tempo real.
Velhos conceitos
caem por terra
Hoje, a arquitetura de um banco de dados típico prevê principalmente o gerenciamento de dados transacionais em um
sistema de banco de dados OLTP, que
sempre mantém o status mais recente.
A partir daí, um processo de extração,
transformação e carga (da sigla ETL,
de Extract Transform Load) transfere
www.linuxmagazine.com.br
Memória principal em sistemas de bancos de dados | ANÁLISE
o HyPer que combina os benefícios
de bancos de dados OLTP e OLAP.
O rendimento transacional do HyPer
é comparável a ou até melhor que sistemas OLTP dedicados (por exemplo,
o VoltDB) e, em termos de processamento de consultas OLAP, o HyPer
é comparável àqueles dedicados ao
armazenamento em coluna como o
MonetDB ou o Vectorwise [11]. ■
Mais informações
Figura 1 Visão geral de um SGBD em memória, otimizado para OLAP (esquerda) ou
OLTP (direita). Pouquíssimos oferecem o melhor de dois mundos (centro).
os dados para um sistema OLAP (de
depósito de dados, também chamado
de data warehouse). Esta operação pode
ocorrer apenas periodicamente – por
exemplo, à noite – por razões de carga.
Os sistemas anteriores não puderam,
por motivos de desempenho, executar
consultas OLAP diretamente nos dados
de sistemas OLTP.
Este processo está mudando por
conta da ascensão dos SGBDs em memória, conhecidos pela junção entre
bancos de dados OLTP e OLAP. Ambos
combinam as melhores propriedades
de ambos os mundos, como podemos
ver na figura 1. O seu processamento
de transação é tão rápido quanto o de
um banco de dados OLTP dedicado
(por exemplo, o VoltDB), e em termos de processamento de consulta,
eles são capazes de manter o controle
com engines de OLAPs dedicadas, tais
como o armazenamento em coluna
do MonetDB [8], Vertica, Vectorwise,
ou sistema IBM ISAO/Blink.
O HANA, desenvolvido pela SAP,
e o HyPer, da Universidade Técnica
de Munique [9], são provavelmente
os melhores representantes conhecidos de sistemas híbridos destinados à
inteligência de negócios operacional.
O Hyper é um SGBD em memória de
última geração que utiliza gerenciamento de memória virtual suportado
pelo hardware do sistema operacional
para gerenciamento de dados e sin-
Linux Magazine #94 | Setembro de 2012
cronização entre transações OLTP e
consultas OLAP.
O gerenciamento de dados “no núcleo” mapeia dados relacionais diretamente no espaço de endereço virtual do
processo OLTP, em qualquer direção,
através de um buffer controlado pelo
SGBD e sistema de gerenciamento de
paginação. Ele pode criar snapshots
(imagens do sistema) de transações
consistentes do banco de dados através
da ramificação de um novo processo
OLAP. O mecanismo de cópia e escrita
do sistema operacional e o processador
mantêm o snapshot consistente, replicando as páginas com a mudança de
objetos de dados.
Este método de snapshot é equivalente ao conceito de página-sombra
desenvolvido por Lorie em 1977 para
a IBM [10] – com a diferença de que
os snapshots de memória virtual não
sofrem de nenhum dos inconvenientes
do período: a fragmentação de memória não é um problema na RAM, e o
que costumava ser um caro aplicativo
de controle de gestão das cópias de
sombra é agora altamente eficiente na
abordagem de HyPer por ter o suporte
interno do processador.
Além disso, o gerenciamento de
memória virtual permite que seja mantido um número arbitrário de cópias
de sombra (tempo escalonado). Isto
torna possível a implementação de
um sistema de banco de dados com
[1] TimesTen: http://www.
oracle.com/timesten/
[2] solidDB: http://www-01.ibm.
com/software/data/soliddb/
[3] Relatório Anual de 2011 da
Amazon.com: http://phx.
corporate-ir.net/phoenix.
zhtml?c=97664&p=irolreportsannual
[4] VoltDB: http://voltdb.com/
[5] SAP HANA: http://www.sap.
com/solutions/technology/
in-memory-computingplatform/index.epx
[6] Blink: http://www.almaden.
ibm.com/cs/projects/blink/
[7] Plattner, Hasso e Alexander
Zeier. Gerenciamento de
Dados em Memória: um
ponto de inflexão para
aplicativos empresariais.
Springer-Verlag, 2011
[8] MonetDB: http://
www.monetdb.org/
[9] HyPer: http://www3.in.tum.
de/research/projects/HyPer/
[10] Lorie, R.A. Integridade
física em um grande banco
de dados segmentado.
TODS 1977;2(1):91-104
[11] Kemper, Alfons e Thomas
Neumann. HyPer - Sistema
Híbrido de Banco de Dados
OLTP e OLAP de Alto
Desempenho. Universidade
Técnica de Munique, relatório
técnico TUM-I1010, 2010,
http://www3.in.tum.de/
research/projects/HyPer/
HyperTechReport.pdf
Gostou do artigo?
o?
Queremos ouvir sua opinião.
ião.
Fale conosco em
[email protected]
ne.com.b
Este artigo no nosso
so site:
sit
http://lnm.com.br/article/7459
article 459
61
Download