O EventQL é um banco de dados colunar distribuído, criado para cargas de trabalho de coleta de dados em larga escala e análise. Ele pode lidar com um grande volume de streaming grava e executa SQL super-rápida e consultas MapReduce.
Mais informações: documentação, download, arquitetura, início
Este é um rápido intervalo dos principais recursos do EventQL para deixá-lo animado. Para obter informações mais detalhadas sobre esses tópicos e suas advertências, você é gentilmente encaminhado à documentação.
Particionamento automático. As tabelas são divididas transparentemente em partições usando uma chave primária e distribuídas entre muitas máquinas. Você não precisa configurar o número de shards antecipadamente. Basta inserir seus dados e o EventQL lida com o resto.
Idempotent escreve. Suporta a inserção baseada em chave primária, o UpSert e a exclusão de operações. Você pode usar a operação UpSert para ingestão fácil de ser exatamente sobre fontes de streaming.
Armazenamento compacto, colunar. O mecanismo de armazenamento colunar permite que o EventQL reduza drasticamente sua pegada de E/S e execute ordens de dúvidas analíticas de magnitude mais rápidas que os sistemas orientados para a linha.
Suporte padrão SQL. (Quase) Suporte completo do SQL 2009. (Ele se une!) As consultas também são automaticamente paralelas e executadas em muitas máquinas em paralelo
Escalas para petabytes. O EventQL distribui todas as partições e consultas de tabela entre vários servidores igualmente privilegiados. Dadas máquinas suficientes, você pode armazenar e consultar milhares se terrabytes de dados em uma única tabela.
Operações de streaming e baixa latência. Você não precisa que os dados do EventQL - ele pode lidar com grandes volumes de operações de inserção e atualização de streaming. Todas as mutações são imediatamente visíveis e a latência mínima da consulta SQL é de ~ 0,1ms.
Timesseries e dados relacionais. O particionamento automático suporta as séries de tempo, bem como dados relacionais e de valor -chave, desde que haja uma boa chave primária. O mecanismo de armazenamento também suporta tipos repetidos e registros para que objetos JSON arbitrários possam ser inseridos nas linhas.
API HTTP. A API HTTP permite que você use os resultados da consulta em qualquer aplicativo e envie facilmente dados de qualquer aplicativo ou dispositivo. O EventQL também suporta um protocolo baseado em TCP nativo.
Varreduras rápidas. As partições de tabela no EventQL são encomendadas e possuem um keyrange definido, para que você possa executar varreduras de intervalo eficientes em partes do espaço de chave.
Hardware eficiente . O EventQL é implementado no C ++ moderno e tenta obter desempenho máximo no hardware de commodities usando a execução vetorizada e as instruções SSE.
Altamente disponível . A arquitetura de nada compartilhada do EventQL é altamente tolerante a falhas. Um cluster consiste em muitos nós igualmente privilegiados e não tem um único ponto de falha.
Independente. Você pode configurar um novo cluster em minutos. O servidor EventQL é enviado como um único binário e não possui dependências externas, exceto o Zookeeper ou um serviço de coordenação semelhante.
Aqui estão alguns cenários de exemplo que são particularmente adequados ao design do EventQL:
Observe que o EventQL é criado em torno de opções específicas de design que o tornam um excelente ajuste para tarefas de processamento de análise de dados em tempo real (OLAP), mas também significam que não é adequado para a maioria das cargas de trabalho transacionais (OLTP).
Antes de começarmos, precisamos instalar algumas dependências de construção. Atualmente, você precisa de um compilador C ++ moderno, Libz, AutoTools e Python (para Spidermonkey/Mozbuild)
# Ubuntu
$ apt-get install clang make automake autoconf libtool zlib1g-dev
# OSX
$ brew install automake autoconf libtool
Para construir o EventQL a partir de um tarball de distribuição:
$ ./configure
$ make
$ sudo make install
Para construir o EventQL a partir de um checkout git:
$ git clone [email protected]:eventql/eventql.git
$ cd eventql
$ ./autogen.sh
$ ./configure
$ make V=1
$ src/evql -h
Para executar a suíte de teste completa (mundial):
$ make test
Para executar a suíte de teste rápido (de fumaça):
$ make smoketest