IBM BLU Acceleration - IBM BLU Acceleration

O IBM BLU Acceleration é uma coleção de tecnologias do IBM Research and Development Labs para cargas de trabalho de banco de dados analítico . BLU Acceleration integra uma série de tecnologias diferentes, incluindo processamento em memória de dados colunares , Actionable Compression (que usa codificação Huffman aproximada para compactar e empacotar dados), CPU Acceleration (que explora a tecnologia SIMD e fornece processamento vetorial paralelo ) e Data Skipping (que permite que dados que não são úteis para a carga de trabalho ativa atual sejam ignorados). O termo 'BLU' não significa nada em particular; no entanto, tem uma influência indireta no apelido corporativo tradicional da IBM, Big Blue. (Dez instalações de Pesquisa e Desenvolvimento da IBM em todo o mundo registraram mais de 25 patentes enquanto trabalhavam no projeto Blink Ultra, que resultou na aceleração BLU.) A aceleração BLU não requer índices , agregados ou ajuste . BLU Acceleration está integrado na versão 10.5 do IBM DB2 para Linux, Unix e Windows (DB2 para LUW) e usa o mesmo armazenamento e construções de memória (ou seja, grupos de armazenamento, espaços de tabela e conjuntos de buffers), interfaces de linguagem SQL e administração ferramentas como DB2 tradicional para bancos de dados LUW. O BLU Acceleration está disponível nas arquiteturas de processador IBM POWER e x86 .

História

BLU Acceleration é a segunda geração da tecnologia que se originou no projeto Blink, que foi iniciado no IBM Almaden Research Center em 2006. Destinado principalmente ao processamento de consultas de inteligência de negócios (BI) "principalmente para leitura" , o Blink combinou o scale-out de processadores multi-core com memória de acesso aleatório dinâmica (DRAM) para armazenar uma cópia de um data mart completamente na memória. Ele também usou técnicas de compactação e algoritmos proprietários que permitiam que a maioria das consultas SQL fossem realizadas diretamente nos dados compactados (em vez de exigir que os dados fossem descompactados antes que o processamento pudesse ocorrer). Eventualmente, o Blink foi incorporado a dois produtos IBM: o IBM Smart Analytics Optimizer para DB2 para z / OS (a versão de mainframe do DB2), que foi lançado em novembro de 2010, e o acelerador Informix Warehouse, que foi lançado em março de 2011.

O BLU Acceleration foi otimizado para acessar dados da RAM. No entanto, mesmo se o tamanho dos dados aumentar a ponto de não caber mais na RAM, os resultados intermediários podem transbordar para o disco. O BLU Acceleration foi aperfeiçoado e integrado ao DB2 por meio de uma colaboração entre o desenvolvimento do produto DB2, o IBM Systems Optimization Competency Center e o IBM Research - esta colaboração resultou na adição de processamento colunar , suporte SQL mais amplo, E / S e eficiências de CPU e integração com o compilador DB2 SQL, otimizador de consulta e camada de armazenamento .

Informação técnica

Existem quatro avanços principais que fazem parte do design do BLU Acceleration. Eles são:

  1. O desempenho na memória não está limitado aos dados que cabem na RAM
  2. Compressão acionável
  3. Pulando Dados
  4. Aceleração da CPU

O desempenho na memória não está limitado aos dados que cabem na RAM

O BLU Acceleration foi otimizado para acessar dados da RAM. No entanto, mesmo se o tamanho dos dados aumentar a ponto de não caber mais na RAM, os resultados intermediários podem transbordar para o disco.

Compressão acionável

A compactação baseada em frequência e com preservação de ordem (conhecida como compactação acionável ) no BLU Acceleration permite que uma ampla variedade de operações comparativas sejam realizadas sem descompressão - e com uso eficiente da memória da CPU (cache) e registros . Com a compactação acionável, os valores que aparecem com mais frequência são compactados em um nível mais alto do que os valores que aparecem com menos frequência. (A compressão acionável usa um algoritmo de codificação de entropia para compressão de dados sem perdas que foi desenvolvido por David A. Huffman enquanto ele era um estudante de Ph.D. no MIT, como base.), Codificação de deslocamento é outra técnica de otimização de compressão usada no BLU Aceleração. A codificação de deslocamento é muito útil com dados numéricos; em vez de tentar compactar os valores 100, 101, 102 e 103, por exemplo, o DB2 armazenará um único valor (100) e apenas os deslocamentos para esse valor (1, 2, 3, etc.). Isso é muito semelhante à maneira como o DB2 compacta IDs de registro de índice (RIDs) - um dos três algoritmos de compactação de índice autônomo que o DB2 pode aplicar dinamicamente aos índices.

Com o BLU Acceleration, os valores são compactados de forma que sua ordem seja preservada, o que significa que podem ser comparados entre si enquanto são compactados. Isso permite que as comparações mais comuns em predicados SQL sejam realizadas em valores codificados sem a necessidade de descompactar os dados, acelerando as avaliações, reduzindo os requisitos de memória e diminuindo as necessidades de processamento para consultas em tempo de execução.,

Uma vez codificados, os dados são compactados da forma mais compacta possível em uma coleção de bits que é igual à largura do registro da CPU do servidor que está sendo usado. Isso resulta em menos E / Ss (porque os dados são menores), melhor utilização da memória (porque mais dados podem ser armazenados na memória) e menos ciclos de CPU (porque os dados são "alinhados por registro").

Salto de dados

O salto de dados permite que o DB2 detecte intervalos de valores de coluna que não são necessários para satisfazer uma consulta e evite a leitura de páginas que contêm esses valores do disco. A omissão de dados utiliza um objeto secundário denominado tabela de sinopse , que é uma pequena tabela organizada por colunas que é criada e mantida automaticamente. O BLU Acceleration mantém metadados que descrevem o intervalo mínimo e máximo de valores de dados em "blocos" de dados (cerca de 1.000 registros) nesta tabela. Esses metadados são mantidos automaticamente durante as operações de inserção, atualização e exclusão e isso é o que permite que o DB2 com BLU Acceleration detecte automaticamente grandes seções de dados que não são necessárias durante o processamento da consulta e efetivamente os ignore.

Conceitualmente, o salto de dados do BLU Acceleration é semelhante à tecnologia Zone Map encontrada na família PureData System for Analytics. No entanto, ao contrário dos mapas de zonas, os metadados armazenados na tabela de sinopse não estão vinculados a nenhuma página ou limite de extensão em particular - em vez disso, estão vinculados a um "bloco" específico de registros de dados. A omissão de dados pode oferecer uma economia de ordem de magnitude em recursos de computação (CPU, RAM e E / S).

Aceleração de CPU

O BLU Acceleration tira vantagem do processamento de dados múltiplos de instrução única (SIMD), se estiver disponível no hardware que está sendo usado. Ao explorar as instruções SIMD, que são instruções de CPU específicas de nível muito baixo, o BLU Acceleration pode executar a mesma operação em vários pontos de dados simultaneamente. Consequentemente, o DB2 com BLU Acceleration pode usar uma única instrução SIMD para obter resultados de vários elementos de dados (por exemplo, para executar o processamento de predicado de igualdade) - desde que estejam no mesmo registro. O DB2 também pode colocar 128 bits em um registro SIMD e avaliar esses dados com uma única instrução.

O nível de desempenho alcançado será determinado, em última instância, pelos recursos de hardware com os quais o BLU Acceleration deve trabalhar. Dito isso, mesmo se um servidor não estiver habilitado para SIMD, o BLU Acceleration pode emular hardware SIMD com software SMID (usando bitmasking para obter algum paralelismo) para fornecer alguns dos benefícios que o SIMD tem a oferecer.

Além disso, o BLU Acceleration foi projetado para que a maior parte do acesso à memória ocorra em um cache de CPU e não acessando dados da RAM repetidamente. Ao operar quase exclusivamente em dados em um cache de CPU e não em RAM, o BLU Acceleration minimiza a latência e é capaz de manter as CPUs ocupadas.

Projetado para processar dados que são substancialmente maiores do que a memória em velocidades in-memory, BLU Acceleration pré-busca e transmite dados para o mecanismo de processamento - avançando além da memória do sistema para a otimização da memória in-CPU. Ele usa um algoritmo de pré-busca colunar otimizado na memória para determinar com alguns milissegundos de antecedência quais dados devem ser carregados na RAM; cada algoritmo foi projetado para minimizar o acesso à RAM e maximizar o tempo de processamento nos caches L3 e L2, que são uma ordem de magnitude mais rápidos do que a RAM.,

Referências

links externos