{"id":13700155,"url":"https://github.com/eventql/eventql","last_synced_at":"2025-05-15T08:11:18.185Z","repository":{"id":52284436,"uuid":"59475316","full_name":"eventql/eventql","owner":"eventql","description":"Distributed \"massively parallel\" SQL query engine","archived":false,"fork":false,"pushed_at":"2017-05-06T20:08:51.000Z","size":80559,"stargazers_count":1174,"open_issues_count":113,"forks_count":102,"subscribers_count":68,"default_branch":"master","last_synced_at":"2025-04-14T14:59:40.620Z","etag":null,"topics":["analytics","columnar-storage","cpp","cpp11","database","distributed","distributed-database","distributed-sql","distributed-storage","eventql","mpp","sql","streaming","timeseries"],"latest_commit_sha":null,"homepage":"http://eventql.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eventql.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-23T10:56:48.000Z","updated_at":"2025-02-12T04:07:03.000Z","dependencies_parsed_at":"2022-09-12T11:13:55.880Z","dependency_job_id":null,"html_url":"https://github.com/eventql/eventql","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventql%2Feventql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventql%2Feventql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventql%2Feventql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventql%2Feventql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eventql","download_url":"https://codeload.github.com/eventql/eventql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254301432,"owners_count":22047904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","columnar-storage","cpp","cpp11","database","distributed","distributed-database","distributed-sql","distributed-storage","eventql","mpp","sql","streaming","timeseries"],"created_at":"2024-08-02T20:00:49.112Z","updated_at":"2025-05-15T08:11:13.173Z","avatar_url":"https://github.com/eventql.png","language":"C++","readme":"# EventQL\n\n[![Build Status](https://travis-ci.org/eventql/eventql.png?branch=master)](http://travis-ci.org/eventql/eventql)\n\nEventQL is a distributed, columnar database built for large-scale data collection\nand analytics workloads. It can handle a large volume of streaming writes and\nruns super-fast SQL and MapReduce queries.\n\n**More information:**\n[Documentation](http://eventql.io/),\n[Download](https://eventql.io/download/),\n[Architecture](https://eventql.io/documentation/internals/architecture/),\n[Getting Started](https://eventql.io/documentation/getting-started/first-steps/)\n\n\n## Features\n\nThis is a quick run-through of EventQL's key features to get you excited. For\nmore detailed information on these topics and their caveats you are kindly\nreferred to the documentation.\n\n- **Automatic partitioning.** Tables are transparently split into partitions using\na primary key and distributed among many machines. You don't have to configure\nthe number of shards upfront. Just insert your data and EventQL handles the rest.\n\n- **Idempotent writes.** Supports primary-key based INSERT, UPSERT and DELETE\noperations. You can use the UPSERT operation for easy exactly-once ingestion\nfrom streaming sources.\n\n- **Compact, columnar storage.** The columnar storage engine allows EventQL to\ndrastically reduce its I/O footprint and execute analytical queries orders of\nmagnitude faster than row-oriented systems.\n\n- **Standard SQL support.** (Almost) complete SQL 2009 support. (It does JOINs!)\nQueries are also automatically parallelized and executed on many machines in\nparallel\n\n- **Scales to petabytes.** EventQL distributes all table partitions and queries\namong a number of equally privileged servers. Given enough machines you can store\nand query thousands if terrabytes of data in a single table.\n\n- **Streaming, low-latency operations.** You don't have to batch-load data\ninto EventQL - it can handle large volumes of streaming insert and update\noperations. All mutations are immediately visible and minimal SQL query latency\nis ~0.1ms.\n\n- **Timeseries and relational data.** The automatic partitioning supports\ntimeseries as well as relational and key value data, as long as there is a good\nprimary key. The storage engine also supports REPEATED and RECORD types so\narbitrary JSON objects can be inserted into rows.\n\n- **HTTP API.** The HTTP API allows you to use query results in any application\nand easily send data from any application or device. EventQL also supports a\nnative TCP-based protocol.\n\n- **Fast range scans.** Table partitions in EventQL are ordered and have a\ndefined keyrange, so you can perform efficient range scans on parts of the\nkeyspace.\n\n- **Hardware efficient**. EventQL is implemented in modern C++ and tries to\nachieve maximal performance on commodity hardware by using vectorized execution\nand SSE instructions.\n\n- **Highly Available**. The shared-nothing architecture of EventQL is highly\nfault tolerant. A cluster consists of many, equally privileged nodes\nand has no single point of failure.\n\n- **Self-contained.** You can set up a new cluster in minutes. The EventQL server\nships as a single binary and has no external dependencies except Zookeeper or a\nsimilar coordination service.\n\n\n## Use Cases\n\nHere are a few example scenarios that are particularly well suited to EventQL's\ndesign:\n\n- Storage and analysis of streaming event, timeseries or relational data\n- High volume event and sensor data logging\n- Joining and correlating of timeseries data with relational tables\n\n#### Non-goals\n\nNote that EventQL is built around specific design choices that make it an\nexcellent fit for real-time data analytics processing (OLAP) tasks, but also\nmean it's not well suited for most transactional (OLTP) workloads.\n\n\n## Build\n\nBefore we can start we need to install some build dependencies. Currently\nyou need a modern c++ compiler, libz, autotools and python (for spidermonkey/mozbuild)\n\n    # Ubuntu\n    $ apt-get install clang make automake autoconf libtool zlib1g-dev\n\n    # OSX\n    $ brew install automake autoconf libtool\n\nTo build EventQL from a distribution tarball:\n\n    $ ./configure\n    $ make\n    $ sudo make install\n\nTo build EventQL from a git checkout:\n\n    $ git clone git@github.com:eventql/eventql.git\n    $ cd eventql\n    $ ./autogen.sh\n    $ ./configure\n    $ make V=1\n    $ src/evql -h\n\nTo run the full (world) test suite:\n\n    $ make test\n\nTo run the quick (smoke) test suite:\n\n    $ make smoketest\n\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventql%2Feventql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feventql%2Feventql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventql%2Feventql/lists"}