EventQL es una base de datos columnar distribuida creada para cargas de trabajo de recopilación y análisis de datos a gran escala. Puede manejar un gran volumen de escrituras de transmisión y ejecuta consultas SQL y MapReduce súper rápidas.
Más información: documentación, descarga, arquitectura, comenzar
Esta es una rápida ejecución de las características clave de EventQL para emocionarlo. Para obtener información más detallada sobre estos temas y sus advertencias, se le remite amablemente a la documentación.
Partición automática. Las tablas se dividen transparentemente en particiones utilizando una clave primaria y distribuidas entre muchas máquinas. No tiene que configurar la cantidad de fragmentos por adelantado. Simplemente inserte sus datos y EventQL maneja el resto.
Idempotent escribe. Admite operaciones de inserción, upsert y eliminación basadas en la clave primaria. Puede usar la operación Upsert para una ingestión fácil de transmisión de fuentes de transmisión.
Compacto, almacenamiento columnar. El motor de almacenamiento columnar permite a EventQL reducir drásticamente su huella de E/S y ejecutar pedidos de consultas analíticas de magnitud más rápido que los sistemas orientados a la fila.
Soporte SQL estándar. (Casi) Complete el soporte SQL 2009. (¡Se une!) Las consultas también se paralelizan y ejecutan automáticamente en muchas máquinas en paralelo
Escamas a petabytes. EventQL distribuye todas las particiones y consultas de la tabla entre una serie de servidores igualmente privilegiados. Dadas suficientes máquinas, puede almacenar y consultar miles si los Terrabytes de datos en una sola tabla.
Transmisión, operaciones de baja latencia. No tiene que cargar datos en EventQL: puede manejar grandes volúmenes de transmisión de operaciones de inserción y actualización. Todas las mutaciones son inmediatamente visibles y la latencia de consulta SQL mínima es de ~ 0.1 ms.
Timeserías y datos relacionales. La partición automática admite Timeseries, así como datos de valor relacional y clave, siempre que haya una buena clave primaria. El motor de almacenamiento también admite tipos repetidos y de registro para que se puedan insertar objetos JSON arbitrarios en filas.
API HTTP. La API HTTP le permite usar resultados de consulta en cualquier aplicación y enviar datos fácilmente desde cualquier aplicación o dispositivo. EventQL también admite un protocolo nativo basado en TCP.
Escaneos de rango rápido. Las particiones de tabla en EventQL se ordenan y tienen una rango clave definido, por lo que puede realizar escaneos de rango eficientes en partes del espacio de teclado.
Hardware eficiente . EventQL se implementa en C ++ moderno y trata de lograr un rendimiento máximo en el hardware de los productos básicos mediante el uso de la ejecución vectorizada y las instrucciones de SSE.
Muy disponible . La arquitectura de nada compartido de EventQL es muy tolerante a las fallas. Un clúster consta de muchos nodos igualmente privilegiados y no tiene un único punto de falla.
Autónomo. Puede configurar un nuevo clúster en minutos. El servidor EventQL se envía como un solo binario y no tiene dependencias externas, excepto Zookeeper o un servicio de coordinación similar.
Aquí hay algunos escenarios de ejemplo que son particularmente adecuados para el diseño de EventQL:
Tenga en cuenta que EventQL se basa en opciones de diseño específicas que lo convierten en un excelente ajuste para las tareas de procesamiento de análisis de datos en tiempo real (OLAP), pero también significa que no es adecuado para la mayoría de las cargas de trabajo transaccionales (OLTP).
Antes de que podamos comenzar, necesitamos instalar algunas dependencias de compilación. Actualmente necesita un compilador C ++ moderno, Libz, Autotools y Python (para Spidermonkey/Mozbuild)
# Ubuntu
$ apt-get install clang make automake autoconf libtool zlib1g-dev
# OSX
$ brew install automake autoconf libtool
Para construir eventql a partir de un tarball de distribución:
$ ./configure
$ make
$ sudo make install
Para construir EventQl a partir de un pago de GIT:
$ git clone [email protected]:eventql/eventql.git
$ cd eventql
$ ./autogen.sh
$ ./configure
$ make V=1
$ src/evql -h
Para ejecutar la suite de prueba completa (mundo):
$ make test
Para ejecutar la suite de prueba rápida (de humo):
$ make smoketest