análise das arquiteturas de bancos de dados paralelos

Propaganda
ANÁLISE DAS ARQUITETURAS DE BANCOS DE DADOS PARALELOS
1
Eduardo Augusto Silvestre, 2Ligia Cristina Pestili
Instituto Federal do Triângulo Mineiro (IFTM) – Campus Avançado Patrocínio, Patrocínio – MG,
1
2
[email protected], [email protected]
Resumo - Sistemas de bancos de dados paralelos
representam uma possível solução para melhoria do
desempenho dos bancos de dados. Existem muitas
arquiteturas de bancos de dados paralelos apresentadas
na literatura, entre elas: memória compartilhada, disco
compartilhado
e
nada
compartilhado.
Surpreendentemente, um dos principais problemas com
as arquiteturas de bancos de dados paralelas começa já
na escolha da arquitetura mais adequada a seu problema.
Esse artigo mostra uma visão geral sobre BDP e
arquiteturas paralelas de bancos de dados, para que a
escolha de uma arquitetura paralela seja facilitada.
Palavras-Chave - Arquitetura de Bancos de Dados
Paralelos, Arquitetura de Software, Bancos de dados,
Bancos de Dados Paralelos.
ANALYSIS OF PARALLEL DATABASES
ARCHITECTURES
Abstract - Parallel databases systems represent a
possible solution for improving the performance of
databases. There are many parallel databases
architectures in the literature, including: shared memory,
shared disk and shared nothing. Surprisingly, one of the
main problems with parallel databases architectures
beginning to choose the architecture that best suits to
your problem. This article provides an overview on
parallel databases and
parallel architectures for
databases, so that the proper choice of parallel
architecture be facilitated.
Keywords – Databases, Parallel Databases, Parallel
Databases Architectures, Software Architecture.
I.
INTRODUÇÃO
BDP são sistemas de banco de dados implementados em
plataformas de computação paralela. Dessa forma, o
processamento de consultas de alto desempenho foca no
processamento de consultas, incluindo consultas a banco de
dados e transações, que fazem uso de técnicas de paralelismo
aplicadas à plataforma de computação paralela para alcançar
alto desempenho [1].
A idéia básica por trás dos BDP é executar etapas de
avaliação em paralelo. Existem muitas oportunidades de se
fazer isso em um SGBD relacional; os bancos de dados
representam um dos casos mais bem-sucedidos de
computação paralela [2].
Um computador paralelo, ou multiprocessador, é ele
próprio um sistema distribuído formado por vários nós
(processadores e memórias) conectados por uma rede. A
tecnologia e bancos de dados distribuídos pode ser
naturalmente revisada e estendida para implementar sistemas
de BDP, isto é, sistemas de banco de dados em computadores
paralelos. Sistemas de BDP exploram o paralelismo no
gerenciamento de dados, a fim de entregar servidores de
bancos de dados de alto desempenho e alta disponibilidade a
um preço muito mais baixo que os computadores de grande
porte equivalentes [3].
Nesta primeira seção foi feita uma rápida apresentação a
noção de BDP. Na segunda seção, além da introdução, serão
abordados conceitos importantes relacionados, motivações
para o processamento de consultas em paralelo, objetivos das
consultas em paralelo e aspectos funcionais importantes dos
BDP. Na terceira seção, as diferentes formas de paralelismo
para processamento de dados são descritas. Na quarta seção,
as principais arquiteturas paralelas encontradas na literatura
serão apresentadas e explicadas. Na quinta seção, alguns
trabalhos relacionados são citados. Por fim, no último
capítulo, será feita uma conclusão sobre conceitos já
firmados e sobre as novas tendências em relação à
computação paralela, BDP e suas arquiteturas.
II. UMA VISÃO GERAL DOS BANCOS DE DADOS
PARALELOS - INTRODUÇÃO
O desenvolvimento dos sistemas de gerenciamento de
bancos de dados (SGBDs) coincidiu com significativa
evolução da computação distribuída e tecnologias de
processamento. A fusão destes dois recursos resultou no
surgimento de sistemas de gestão de BDP. Estes sistemas
tornaram-se os instrumentos dominantes no gerenciamento
de dados para aplicações que usam intensivamente dados [4].
Em 1965, co-fundador da Intel, Gordon Earle Moore,
previu que o número de transistores em um chip dobraria a
cada 24 meses, uma previsão que se tornou conhecida
popularmente como Lei de Moore. Assim, era esperado que o
desempenho de uma CPU (Central Processing Unit –
Unidade Central de Processamento) aumentasse ao redor de
50% a 60% por ano. Por outro lado, restrições mecânicas
restringem a melhoria do tempo de acesso a disco e a taxa de
transferência de dados, os valores para taxa de transferência
de dados alcançam apenas 8% a 10% de aumento ao ano.
Embora pesquisadores não concordem exatamente com os
valores, eles mostram a diferença na taxa de avanço nas duas
áreas. Assim, operações de entrada e saída em disco
tornaram-se o principal gargalo, motivando as pesquisas em
BDP. A necessidade de armazenar grandes volumes de
dados, produzindo tempo de resposta rápido, escalabilidade,
confiabilidade, balanceamento de carga e disponibilidade de
dados estão entre os fatores motivadores dos BDP. Há alguns
anos atrás, os SBDP quase tiveram sua anulação no mercado,
porém atualmente são comercializados com sucesso por,
praticamente, todos os fornecedores de sistemas de bancos de
dados[21].
Com a evolução do hardware surgiram novas tecnologias
para o paralelismo, uma delas são os GPUs (Graphics
Processing Units). Seu propósito inicial seria realizar
operações
gráficas
processando
cálculos
que
sobrecarregavam os processadores, mas observou-se que esse
tipo de paralelismo poderia ser utilizado em âmbito geral. O
GPU moderno não é apenas uma poderosa tecnologia para
criação de gráficos, mas também um processador altamente
paralelo, programável com aritmética de alto nível e largura
de banda de memória que supera substancialmente a CPU
[23].
Outra tecnologia que representa a evolução do hardware
são os SMPs (Symmetric MultiProcessor) ou também
arquiteturas de compartilhamento total, essas configurações
são caracterizadas por até dezenas de processadores
compartilhando todos os recursos computacionais
disponíveis e executando em um único sistema operacional.
Nessa arquitetura o acesso é igual tanto à memória quanto a
qualquer dispositivo conectado ao sistema de entrada e saída.
O processamento básico para sistemas de grande porte está
se tornando rapidamente um multiprocessador simétrico
(SMP), resultando em uma combinação de memória
compartilhada e memória distribuída [22].
A. Definições importantes
1) Paralelismo
Paralelismo é uma idéia que existe há muito tempo,
consistindo em diferentes tarefas sendo executadas ao
mesmo tempo, de forma a produzir um resultado
específico mais rapidamente [5].
2) Computação paralela
A computação paralela é uma forma de computação em
que muitos cálculos são realizados simultaneamente,
operando sobre o princípio de que grandes problemas
geralmente podem ser divididos em partes menores e
resolvidos simultaneamente ("em paralelo") [6]. Existem
várias formas diferentes de computação paralela: nível de
bits, nível de instrução, dados e paralelismo de tarefas. O
paralelismo tem sido empregado por muitos anos,
principalmente em computação de alto desempenho, mas o
interesse tem crescido ultimamente, devido às restrições
físicas à escala de freqüência. Como o consumo de energia
(e conseqüentemente a geração de calor) por computadores
tem se tornado uma preocupação nos últimos anos, a
computação paralela tornou-se o paradigma dominante na
arquitetura de computadores, principalmente na forma de
processadores multinúcleo [6].
3) Arquitetura paralela
Uma arquitetura paralela consiste em máquinas capazes
de executar várias tarefas ao mesmo tempo, executando o
paralelismo de baixo nível [5].
4) Sistemas de bancos de dados em paralelo
Um SGBD paralelo pode ser definido em linhas gerais
como um SGBD implementado sobre um multiprocessador
estreitamente acoplado. Essa definição inclui muitas
alternativas, variando desde portar diretamente um SGBD
existente, o que pode exigir reescrever apenas as rotinas de
interface do sistema operacional, até uma combinação
sofisticada de funções de processamento paralelo e sistemas
de banco de dados em uma nova arquitetura de
hardware/software [3]. Os SGBDs paralelos exploram
arquiteturas multiprocessador para a construção de alto
desempenho e servidores de banco de dados de alta
disponibilidade [3].
B. Processamento de consultas em paralelo: motivações
O desempenho dos computadores hoje em dia está cada
vez maior, entretanto mesmo com os avanços na engenharia
computacional, ainda existem limitações de velocidade [1].
Devido a essas limitações, os projetistas de hardware têm
procurado uma alternativa para aumentar o desempenho.
Paralelismo é um dos resultados desses esforços.
O processamento paralelo dentro de um sistema de banco
de dados permite uma resposta mais rapida às transações,
bem como mais transações por segundo. As consultas são
tratadas de modo que explorem o paralelismo oferecido pelo
sistema. A necessidade de processamento paralelo fez surgir
os sistemas de bancos de dados paralelos [21]. Sistemas
paralelos melhoram processamento e velocidade de
operações de entrada e saída usando múltiplos processadores
e discos em paralelo. Isso habilita múltiplos processadores a
trabalhar simultaneamente em várias partes de uma tarefa
para completá-la mais rapidamente [1].
Adicionalmente, processamentos de banco de dados
(operações em banco de dados) trabalham bem com
paralelismo. Quando a mesma operação pode ser realizada
em diferentes fragmentos de banco de dados, cria-se
paralelismo e a noção de processamento de BDP [1].
Segundo [7] as motivações para o processamento paralelo
podem ser resumidas em:
1) Velocidade
rapidamente.
maior
ou
resolver
problemas
mais
2) Throughput (o número de tarefas que podem ser
completadas dentro de um dado intervalo de tempo) maior ou
resolver mais instâncias de um dado problema.
3) Poder computacional maior ou resolver problemas
maiores.
C. Processamento de consultas em paralelo: objetivos
O objetivo primário do processamento de BDP é obter
melhoria no desempenho. Existem duas medidas principais
de melhoria de desempenho - a primeira é throughput e a
segunda é tempo de resposta (a quantidade de tempo levado
para completar uma tarefa). Um sistema que processa um
grande número de pequenas transações pode aumentar seu
throughput por meio do processamento de diversas
transações em paralelo. Um sistema que processa um grande
volume de transações pode aumentar o tempo de resposta,
assim como o throughput por meio do processamento em
paralelo[21].
Os SGBDs combinam o gerenciamento de bancos de
dados e o processamento paralelo para aumentar o
desempenho e a disponibilidade [3].
Assim, os projetistas de sistemas de bancos de dados
procuraram desenvolver soluções orientadas para o software
com a finalidade de explorar o hardware de vários
processadores. Os objetivos dos sistemas de bancos de dados
podem ser alcançados estendendo-se à tecnologia de dados
distribuídos, por exemplo, pelo particionamento do banco de
dados entre vários discos (pequenos), de forma a obter um
grande paralelismo entre consulta e intraconsulta. Isso pode
levar à melhorias significativas no tempo de resposta e no
throughput [3].
D. Aspectos funcionais dos bancos de dados paralelos
Um sistema de BDP atua como um servidor de banco de
dados para vários servidores de aplicativos na organização
[3].
No caso ideal, um sistema de BDP deve oferecer as
seguintes vantagens com uma relação preço/desempenho
muito melhor que seus equivalentes mainframes [3].
1) Alto desempenho
Pode ser obtido através de várias soluções complementares:
suporte de sistema operacional orientado a banco de dados,
paralelismo, otimização e balanceamento de carga. O
paralelismo pode aumentar o throughput (usando o
paralelismo entre consultas) e diminuir os tempos de
respostas entre transações (usando o paralelismo
intraconsulta) [3].
de transações por segundo [1]. A Fig. 1 fornece uma
ilustração gráfica do paralelismo interconsultas.
Fig. 1. Paralelismo Interconsultas
B. Paralelismo intraconsultas
Com o paralelismo intraconsultas, partes independentes
de uma única consulta são executadas em paralelo em
múltiplos processadores [8].
Uma consulta para um banco de dados, como um select, é
normalmente dividida em múltiplas operações. Paralelismo
intraconsulta é a execução de uma única consulta em paralelo
em múltiplos processadores e discos . Neste caso, as múltiplas
operações dentro de uma consulta são executadas em paralelo
[9]. A Fig. 2 fornece uma ilustração gráfica do paralelismo
intraconsultas.
2) Alta disponibilidade
Como um sistema de BDP consiste em vários
componentes semelhantes, ele pode explorar a replicação de
dados para aumentar sua disponibilidade. Em um sistema
paralelo com muitos discos pequenos, a probabilidade de uma
falha de disco pode ser mais alta (que em um mainframe
equivalente) [3].
3) Extensibilidade
Em um ambiente paralelo, deve ser mais fácil acomodar
tamanhos crescentes de bancos de dados ou demandas
crescentes de desempenho (por exemplo, throughput). A
extensibilidade é a capacidade de expansão suave do sistema
pela adição de poder de processamento e armazenamento a
esse sistema [3].
III FORMAS DE PARALELISMO
Existem muitas formas diferentes de paralelismo para
processamento em banco de dados, incluindo paralelismo
interconsultas, paralelismo intraconsultas, paralelismo
intraoperação, paralelismo interoperação [1].
A. Paralelismo interconsultas
Com o paralelismo interconsultas, múltiplas consultas são
executadas independentemente e em múltiplos processadores
[8]. É o paralelismo entre consultas – ou seja, diferentes
consultas ou transações são executadas em paralelo com uma
outra [9]. O uso primário é para scale up (aumentar o grau
de paralelismo para resolver tarefas grandes) de sistemas de
processamento de transações, suportando um grande número
Fig. 2. Paralelismo Intraconsultas
C. Paralelismo intraoperação
Como operações dos bancos de dados trabalham com
tabelas contendo grande conjunto de registros, pode-se
paralelizar as operações executando paralelamente diferentes
subconjuntos de tabelas. Por conseqüência, paralelismo
intraoperação é freqüentemente chamado paralelismo
particionado – isto é, paralelismo devido aos dados serem
divididos [9].
Como o número de registros em uma tabela pode ser
grande, o grau de paralelismo é potencialmente enorme.
Conseqüentemente, paralelismo intraoperação é natural em
sistemas de bancos de dados [1]. A Fig. 3 fornece uma
ilustração gráfica do paralelismo intraoperações
Fig. 5. Paralelismo Independente
Fig. 3. Paralelismo Intraoperação
D. Paralelismo interoperação
Paralelismo interoperação é onde o paralelismo é criado
executando concorrentemente diferentes operações dentro da
mesma consulta/transação. Existem duas formas [9]:
1) Parelelismo Pipeline
O registro de saída de uma operação A é consumido por
uma segunda operação B, mesmo antes da primeira operação
ter produzido o conjunto inteiro de registros em sua saída
[9]. Fig. 4 fornece ilustra o paralelismo de pipeline.
2) Paralelismo independente
É onde operações em uma consulta que não dependem de
outra podem ser executadas em paralelo, por exemplo,
Tabela1 join Tabela2 join Tabela3. Nesse caso, pode-se
processar Tabela1 join Tabela2 em paralelo com Tabela3
join Tabela4 [9]. Fig. 5 ilustra o paralelismo independente.
IV. ARQUITETURAS DE BANCOS DE DADOS
PARALELOS
Várias alternativas de arquiteturas paralelas foram
desenvolvidas. Memória compartilhada, disco compartilhado
e nada compartilhado são as principais arquiteturas de
sistemas de banco de dados paralelos. Cada arquitetura tem
suas vantagens e desvantagens. Recentemente, arquiteturas
híbridas estão sendo investigadas para combinar as virtudes
das três arquiteturas e superar suas deficiências individuais.
A seguir, as principais arquiteturas de sistemas paralelos
serão discutidas [10].
A. Arquitetura memória compartilhada
Na arquitetura memória compartilhada, também chamada
tudo compartilhado, o sistema consiste em um número de
processadores conectados a uma memória compartilhada e
um disco compartilhado lógico (Fig. 6). Comunicação entre
processadores é ofertada naturalmente quando é usado
arquitetura por memória compartilhada. Sistemas seguindo
essa arquitetura são caracterizados por excelente
balanceamento de carga. A principal desvantagem desses
tipos de sistemas é a escalabilidade e disponibilidade.
Escalabilidade limitada é imposta pelo fato que todos os
processadores competem para usar a memória compartilhada.
Isso coloca um limite superior no número de processadores.
Disponibilidade pode também ser limitada, por exemplo, se a
memória compartilhada falhar todo o sistema falha [10].
Fig. 4. Paralelismo Pipeline
Fig. 6. Arquitetura Memória Compartilhada
B. Arquitetura disco compartilhado
Arquiteturas de disco compartilhado fornecem para cada
processador sua própria memória, com um disco global
compartilhado (Fig. 7) [10] [11]. Processadores não
competem mais por uma memória compartilhada. Eles,
entretanto, competem para acessar o disco compartilhado.
Isso melhora o scale up para o processador centena de vezes.
Esses sistemas ainda têm um bom balanceamento de carga.
Disponibilidade é muito melhor que memória compartilhada,
com o fato que falha no disco compartilhado significa falha
no sistema inteiro. Em sistemas reais, o disco compartilhado
é fisicamente vários módulos de disco conectados através de
uma rede a todos os elementos processadores. Isso fornece
uma alta confiabilidade para o disco como um todo.
compartilhada e disco compartilhado tem bom
balanceamento de carga, elas tem limitado scale up e
disponibilidade. Nada compartilhado tem as vantagens de
alta disponibilidade e alta escalabilidade, mas sofre com o
problema de balanceamento de carga. Um arquitetura híbrida
teria um sistema nada compartilhado com nós que são mais
poderosos que um único computador. Os nós dentro de um
sistema nada compartilhado podem ser sistemas memória
compartilhada ou disco compartilhado. Isso, ajuda a
preservar a escalabilidade e a disponibilidade, adiciona
balanceamento de carga que existe na memória
compartilhada e nos sistemas de disco compartilhado[10].
Fig. 9 ilustra essa arquitetura.
Fig. 9. Arquitetura Híbrica
Fig. 7. Arquitetura Disco Compartilhado
C. Arquitetura nada compartilhado
Um sistema nada compartilhado pode ser pensando
como um número de computadores autônomos, cada um tem
sua memória e disco privado e estão conectados por uma
rede de interconexão (Fig. 8). A principal vantagem dessa
arquitetura é a habilidade de scale up centenas de
processadores. Ele tem também alta disponibilidade e
confiabilidade. De fato, a falha de um nó não deveria afetar o
resto dos nós. Disponibilidade pode ser alcançada replicando
dados em diferentes nós dentro do sistema. Balanceamento
de carga e skew (variação bem superior à média, devido ao
esquema de particionamento de dados inadequados) são os
maiores problemas enfrentados nessa arquitetura [12].
Arquiteturas nada compartilhado minimizam a
interfererência pela diminuição do compartilhamento de
recursos. Elas também exploram a comodidade de
processadores e memórias sem precisar de uma interconexão
de rede robusta [11].
Fig. 8. Arquitetura Nada Compartilhado
D. Arquitetura híbrida
Como mostrado na discussão anterior, cada uma das
várias arquiteturas tem algumas vantagens e algumas
desvantagens. Enquanto arquiteturas de memória
E. Considerações importantes
A arquitetura de memória compartilhada está mais
próxima de uma máquina convencional e muitos sistemas de
bancos de dados comerciais têm sido portados para
plataformas de memória compartilhada com relativa
facilidade. A sobrecarga de comunicação é baixa, pois a
memória principal pode ser usada para este propósito, e os
serviços do sistema operacional podem ser beneficiados pelo
uso das CPUs adicionais. Embora essa estratégia seja
atraente para se obter paralelismo moderado, apenas algumas
dezenas de CPUs podem ser exploradas dessa maneira, pois
a disputa pela memória torna-se um gargalo quando o
número de CPUs aumenta. A arquitetura de disco
compartilhado enfrenta um problema semelhante, pois
grandes volumes de dados são enviados pela rede de
interconexão [2].
O problema básico das arquiteturas de memória
compartilhado é a interferência: a medida que mais CPUs
são adicionadas, as existentes perdem velocidade, devido à
maior disputa pelos acessos à memória e pela largura de
banda de rede. Tem-se observado que mesmo uma média de
atraso de 1% por CPU adicional significa que o aumento de
velocidade máximo é de um fator de 37 e, acrescentar mais
CPUs na verdade diminui a velocidade do sistema; um
sistema com 100 CPUs é apenas 4% mais eficiente do que
um sistema de uma única CPU. Essa observação motivou o
desenvolvimento da arquitetura do nada compartilhado, que
agora é amplamente considerada como a melhor arquitetura
para sistemas de BDP grandes [2].
A arquitetura do nada compartilhado exige uma
reorganização mais ampla do código do SGBD, mas tem
mostrado aumento de velocidade linear, no sentido de que o
tempo gasto pelas operações diminui proporcionalmente ao
aumento do número de CPUs e discos, e aumenta de escala
linear, no sentido que o desempenho é mantido se o número
de CPUs e disco aumentam proporcionalmente ao volume de
dados. Conseqüentemente, sistemas de bancos de dados
ainda mais poderosos podem ser construídos, tirando-se
proveito do desempenho cada vez melhor dos sistemas de
CPU única e conectando-se quantas CPUs forem desejadas
[2].
V. TRABALHOS RELACIONADOS
Enquanto existem vários sistemas de bancos de dados
comerciais e pesquisas sobre eles, ainda não está claramente
definida qual a melhor arquitetura. Muitos pesquisadores
estão investigando arquiteturas de BDP.
Artigos e pesquisas sobre as arquiteturas de BDP podem
ser categorizadas em duas áreas principais: artigos que
detalham as arquiteturas convencionais, como memória
compartilhada e os artigos que implementam
novas
arquiteturas.
Dentre as arquiteturas convencionais, em [10] [11] são
apresentadas as mesmas arquiteturas escolhidas como mais
comuns neste artigo. Destaque especial para [10], onde
algumas simulações são feitas para comparar o desempenho
do sistema sobre diferentes cargas de trabalho.
Já em [4] [13] [14] [15] [16] as arquiteturas de BDP são
divididas em dois extremos, o nada compartilhado e as
arquiteturas de memória compartilhada.
Em [14] além da divisão em dois extremos, cita-se
também alguns bancos dados comerciais paralelos que usam
nada compartilhado, segundo [14] o mais usado.
Dentre as novas arquiteturas, em [17] é apresentada uma
arquitetura paralela de alto desempenho para processamento
de bancos de dados baseados no modelo relacional. Já em
[18] é proposto uma abordagem escalável que combina as
vantagens do nada compartilhado e tudo compartilhado. Em
[19] é proposto uma arquitetura para uso em qualquer
máquina paralela de propósito geral. [20] mostra o sistema
Bubba. Um sistema de computador paralelo para aplicações
que usam intensamente dados. Por fim, em [12] é
apresentado o SMASH, um sistema de processamento
paralelo para suportar uma ampla variedade de aplicações de
bancos de dados.
VI. CONCLUSÕES
Um sistema de BDP procura melhorar o desempenho por
meio da execução em paralelo de várias operações como
carregamento de dados, construção de índices e avaliação de
consultas.
Embora existam SGBDs paralelos comerciais bemsucedidos, existem ainda alguns problemas a serem
solucionados. A questão mais importante e primordial é
decidir qual das várias arquiteturas como memória
compartilhada, disco compartilhado, nada compartilhado e
também as arquiteturas híbridas é a melhor para o
gerenciamento de bancos de dados.
No caso de uma configuração pequena (dezenas de
computadores), a memória compartilhada pode proporcionar
o mais alto desempenho, devido ao melhor balanceamento de
carga. Entretanto, disco compartilhado e nada compartilhado
superam a memória compartilhada em termos de
disponibilidade e extensibilidade.
Existem também as novas arquiteturas propostas, que
tentam utilizar várias arquiteturas em uma. Essas novas
arquiteturas tentam utilizar as melhores características de
outras abordagens existentes como tentativa de produzir um
melhor resultado.
Assim, BDP e suas arquiteturas têm alguns problemas em
aberto, começando pela escolha da própria arquitetura.
Oferecendo muitas oportunidades de pesquisa na área.
REFERÊNCIAS BIBLIOGRÁFICAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
Taniar, D. Leung, C. H. C. Sushant, G. High-Performance Parallel
Database Processing and Grid Databases. Wiley, 2008.
Ramakrishnan, R. Gehrke, J. Database Management Systems, Third
edition. McGraw-Hill, 2002.
Valduriez, P. Tamer Özsu, M. Principles of Distributed Database
Systems, Second Edition. Prentice Hall, 1999.
Talwadker, A. S. Survey of performance issues in parallel database
systems. Journal of Computing Sciences in Colleges. Volume 18,
2003.
Snow, C. R. Concurrent Programming. Cambridge University Press,
1992.
Almasi, G. S. Gottlieb, A. Highly Parallel Computing. Addison
Wesley Longman. Sub edition, October 1993.
P. Behrooz. Introduction to Parallel Processing: Algorithms and
Architectures. Springer, 1999.
Kim, W. Modern Database Systems: The Object Model,
Interoperability, and Beyond. Addison Wesley Longman; 1st edition;
January, 1995.
Silberschatz, A. Korth, H. Sudarshan, S. Database System Concepts.
McGraw-Hill Science, 6a edition, 2010.
Mohamed, E. E. El-Rewini, Abdel-Wahab, H. H. M. Helal, A. Parallel
Database Architectures: A comparison study. Journal Informatica
(Slovenia), 1998.
DeWitt, D. J. Gray, J. Parallel database systems - The future of high
performance database processing. ACM, 1992.
Kiyoki , Y. Kurosawa, T. Kato, K. Masuda, T. The Software
Architecture of a Parallel Processing System for Advanced Database
Applications. IEEE, 1991.
DeWitt, D. J. Gray, J. Parallel database systems - The Future of
Database Processing or a Passing Fad. Sigmod Record, 1990.
Sadat, A. B. M. R. I. Lecca, P. On the performances in simulation of
parallel database: an overview on the most recent techniques for query
optimization. International Workshop on High Performance
Computational Systems Biology, 2009.
Valduriez, P. Tamer Özsu, M. Distributed and Parallel Database
Systems. ACM, 1996.
Gottemukkala, V. Omiecinski, E. Ramachandran, U. A Scalable
Sharing Architecture for a Parallel Database System. IEEE, 1994.
Leung, C. H. C. Ghogomu, H. T. A high-performance parallel database
architecture. ACM, 1993.
Suri, P. R. Rani, S. A new classification for architecture of parallel
database. Information Technology Journal, 2008.
Afshar, M. Bates, J. Bierman, G. Moody, K. A New General Purpose
Parallel Database System. IEEE, 1997.
Boral, H. Alexander, W. Clay, L. Copeland, G. Danforth, S. Franklin,
M. Hart, B. Smith, M. Valduriez, P. Prototyping Bubba, A Highly
Parallel Database System, IEEE Transactions on Knowledge and Data
Engineering, v.2 n.1, p.4-24, March 1990.
Silberschatz, A. Korth, H. Sudarshan, S. Database System Concepts.
McGraw-Hill Companies, 4a edition, 2001.
Silberschatz, A. Korth, H. Sudarshan, S. Database System Concepts.
McGraw-Hill Companies, 4a edition, 2001.
W.W. Gropp, E.L. Lusk, “A taxonomy of programming models for
symmetric multiprocessors na SMP clusters”, pmmp, pp.2,
Programming Models for Massively Parallel Computers (PMMP’95),
1995.
Owens, J. and Houston, M. and Luebke, D. and Green, S. and Stone, J.
and Phillips, J. (2008) “GPU Computing”, In: Proceeedings of the
IEEE.
Download