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.