No decorrer das últimas décadas, os bancos de dados e os exames de informação mudaram significativamente.

As organizações têm necessidades progressivamente complexas de investigação e utilização da informação – e progressivamente requisitos exclusivos para a execução da investigação.

A memória tem se tornado barata, possibilitando outro arranjo de procedimentos de execução dependentes do exame in-memory.

CPUs e GPUs se expandiram na execução, entretanto, avançaram adicionalmente para melhorar o tratamento de informações em paralelo

Novos tipos de bancos de dados têm surgido para vários casos de uso, cada um com sua forma específica de guardar e encomendar informações. Por exemplo, como os itens genuínos são mais simples de se falar, como várias estruturas de informação niveladas e estabelecidas, os bancos de dados JSON e de relatórios ficaram famosos.

Novos professores surgiram, incluindo o desenho da informação e a ciência da informação, ambos com muitos dispositivos novos para atingir objetivos científicos explícitos.

Os retratos de informação colunar tornaram-se padrão para o diagnóstico de cargas remanescentes, uma vez que dão pontos sensacionais de interesse até a velocidade e proficiência.

Em vista destes padrões, uma inconfundível porta aberta surgiu para um retrato padrão in-memory que cada motor pode utilizar; um que está presente e que explora todas as novas metodologias de exposição atualmente acessíveis; e um que torna consistente e proficiente o compartilhamento de informações cruzadas por etapas. Este é o objetivo do Apache Bolt. Familiarizar-se com as causas e a história do Apache Bolt.

Para utilizar um relacionamento, pense em se aventurar na Europa em meio a uma fuga para a UE. Para visitar 5 nações em 7 dias, você poderia contar com a forma que colocaria em algumas horas na periferia para o controle de vistos, e perderia uma parte do seu dinheiro no comércio de dinheiro. Esta é a maneira pela qual trabalhar com informações in-memory funciona sem Bolt: existem tremendos aspectos de desperdício para seriar e des-serializar estruturas de informação, e uma duplicata é feita o tempo todo, desperdiçando valiosos recursos de memória e CPU. Curiosamente, Bolt assemelha-se a visitar a Europa depois da UE e do Euro: você não se detém na franja, e há um dinheiro que é utilizado em todo o lugar.

Bolt consolida as vantagens das estruturas de informação colunar com figura in-memory. Ele dá as vantagens de apresentação destas estratégias de vanguarda, ao mesmo tempo em que dá a adaptabilidade de informações complexas e contornos dinâmicos. Além disso, ele faz tudo isso de forma aberta e institucionalizada.

Avanços do Apache Bolt Center

O Apache Bolt em si não é um motor de capacidade ou de execução. Ele se destina a preencher como um estabelecimento mútuo para os tipos de estruturas que o acompanham:

Motores de execução SQL, (por exemplo, Furadeira e Impala)

Estruturas de exame de informações, (por exemplo, Pandas e Sparkle)

Estruturas de derrame e enfileiramento, (por exemplo, Kafka e Tempest)

Estruturas de capacidade, (por exemplo, Parquet, Kudu, Cassandra, e HBase)

O parafuso compreende vários avanços associados destinados a serem incorporados aos motores de capacidade e execução. As partes principais do Parafuso incluem:

Conjuntos de tipos de informações caracterizadas, incluindo os tipos SQL e JSON, por exemplo, Int, BigInt, Decimal, VarChar, Guia, Estrutura e Exposição.

Retratos Sancionados: Retratos colunares em memória de informações para ajudar uma estrutura de registros discricionariamente perplexa, baseada nos tipos de informações caracterizados.

Estruturas de Informação Regular: Estruturas de informação de amigos com parafusos, incluindo pick-records, tabelas de hash, e linhas.

Entre procedimentos Correspondência realizada dentro da memória compartilhada, TCP/IP e RDMA.

Bibliotecas de Informação para leitura e composição de informações em vários dialetos, incluindo Java, C++, Python, Ruby, Rust, Go, e JavaScript.

Cálculos de Pipeline e SIMD para diferentes atividades incluindo determinação de bitmap, hashing, peneiramento, baldeação, arranjo e coordenação.

Pressão Colunar In-Memory incluindo uma variedade de métodos para construir a proficiência de memória.

Aparelhos de memória sem cansaço para a industrialização momentânea através de memória não imprevisível, SSD ou HDD.

Tudo considerado, Bolt não rivaliza com nenhuma dessas atividades. Seu objetivo central é trabalhar dentro de cada uma delas para dar maior execução e maior interoperabilidade. Verdade seja dita, Bolt está sendo trabalhada pelos projetistas líderes de um número significativo destes empreendimentos.

Execução

Quanto mais rápido um cliente pode encontrar a solução, mais rápido ele pode colocar diferentes questões. O Superior traz mais exames, mais casos de uso e maior desenvolvimento. À medida que as CPUs se tornam mais rápidas e modernas, uma das principais dificuldades é garantir que a preparação da inovação utilize as CPUs de forma eficaz.

O parafuso tem a intenção explícita de amplificar:

Área da Loja: As almofadas de memória são retratos conservadores de informações destinadas às CPUs atuais. As estruturas são caracterizadas por serem retas, coordenando projetos normais de leitura. Isso implica que as informações de tipo comparativo são co-situadas em memória. Isto faz com que o pré-busca de armazenamento seja cada vez mais poderoso, limitando a lentidão da CPU por causa das falhas de reserva e da memória principal. Estas estruturas de informação produtivas de CPU e projetos de acesso estendem-se tanto para estruturas sociais convencionais quanto para estruturas de informação complexas dos dias de hoje.

Canalização: Os projetos de execução visam explorar a natureza superescalar e pipelinada dos processadores atuais. Isto é finalizado através da limitação da verificação da orientação em círculo e da natureza multifacetada do círculo. Estes círculos apertados levam a uma melhor execução e menos decepções de previsão de ramos.

Instruções do SIMD: As orientações do SIMD (Single Guidance Numerous Information) permitem que os cálculos de execução funcionem de forma ainda mais produtiva, executando diferentes atividades em um ciclo de relógio solitário. O parafuso organiza as informações para que sejam adequadas às atividades do SIMD.

A região de reserva, tubulações e atividades de superescalar normalmente dão 10-100x de execução mais rápida. Uma vez que inúmeras tarefas lógicas restantes em mãos são vinculadas à CPU, estas vantagens se convertem em ganhos emocionais de execução por parte do cliente final. Aqui estão alguns modelos:

PySpark: A IBM estimou uma velocidade de 53x na preparação de informações pelo Python e Sparkle na sequência da inclusão do suporte para o Bolt no PySpark

Parquet e C++: Adicionando informações ao Parquet de C++ a partir de C++ até 4GB/s

Pandas: Adicionando algo extra a pandas de até 10GB/s

Além disso, o parafuso avança o compartilhamento de informações em duplicata zero. Como Bolt é abraçado como o retrato interior em cada estrutura, uma estrutura pode passar informações diretamente para a próxima estrutura para utilização. Além disso, quando esses frameworks estão situados em um hub similar, a cópia descrita acima também pode ser evitada usando memória compartilhada. Isto implica, de uma maneira geral, que a movimentação de informações entre dois frameworks não terá nenhuma sobrecarga.

Produtividade da Memória

A execução na memória é extraordinária, no entanto, a memória pode ser rara. O parafuso é destinado a funcionar independentemente de a informação não caber completamente na memória. A estrutura de informação central incorpora vetores de informação e sortimentos destes vetores (também chamados de tufos de registros). Os clusters de registros são regularmente 64KB-1MB, dependendo da carga remanescente, e são geralmente limitados a 2^16 registros. Isto melhora a região de armazenamento, mas, além disso, torna o registro em memória concebível, mesmo em circunstâncias de baixa memória.

Com inúmeros bunches de grandes informações indo de 100’s a 1000’s de servidores, os frameworks devem ter a opção de explorar a memória total de um grupo. O Bolt tem como objetivo limitar as despesas de movimentação de informações no sistema. Ele utiliza perus dissipadores/montadores e compõe e inclui uma configuração de serialização/deserialização zero, permitindo o desenvolvimento de informações de esforço mínimo entre os hubs. Além disso, o parafuso funciona legitimamente com interconexões RDMA-competentes para dar uma rede de memória solitária a cargas maiores em memória.

Linguagem de Programação de Apoio

Outra vantagem significativa de receber o Apache Bolt, além da execução e interoperabilidade mais fundamentadas, é um campo de jogo nivelado entre vários dialetos de programação. O compartilhamento convencional de informações depende das reconciliações de nível de interface de programação e IPC. Embora isto seja regularmente simples, prejudica a execução quando a linguagem do cliente não é exatamente a mesma que a linguagem fundamental do framework. Dependendo da linguagem e da disposição dos cálculos atualizados, a mudança de linguagem causa a maior parte do tempo de manuseio.

O Apache Bolt atualmente suporta C, C++, Java, Javascript, Go, Python, Rust, e Ruby.