EventQl是一个分布式的柱状数据库,用于大规模数据收集和分析工作负载。它可以处理大量的流媒体写入并运行超快速的SQL和MapReduce查询。
更多信息:文档,下载,体系结构,入门
这是EventQL的主要功能的快速运行,使您感到兴奋。有关这些主题及其警告的更多详细信息,您会向文档提及。
自动分区。使用主键将表透明地分成分区,并在许多机器中分布。您不必预先配置碎片的数量。只需插入您的数据,而EventQL可以处理其余的。
愿意写作。支持基于初级钥匙的插入,UPSERT和删除操作。您可以使用UPSERT操作从流媒体来源轻松摄入。
紧凑,柱状存储。柱状存储引擎允许EventQl大幅度减少其I/O的足迹,并比面向行的系统更快地执行分析查询订单。
标准SQL支持。 (几乎)完整的SQL 2009支持。 (它确实连接!)查询也会自动并行并在许多机器上执行
鳞屑到之前。 EventQl在许多同样特权的服务器之间分配所有表分区和查询。如果有足够的机器,则可以在单个表中存储并查询数千个数据。
流,低延迟操作。您无需将数据批量加载到EventQl中 - 它可以处理大量流媒体插入和更新操作。所有突变均立即可见,最小的SQL查询潜伏期为〜0.1ms。
时间和关系数据。只要有一个好的主键,自动分区支持时间表以及关系和关键价值数据。存储引擎还支持重复和记录类型,因此可以将任意的JSON对象插入行中。
HTTP API。 HTTP API允许您在任何应用程序中使用查询结果,并轻松从任何应用程序或设备发送数据。 EventQL还支持基于本机TCP的协议。
快速范围扫描。 EventQl中的表分区被排序并具有定义的键键,因此您可以在键空间的一部分上执行有效的范围扫描。
硬件有效。 EventQL在现代C ++中实现,并通过使用矢量化执行和SSE说明尝试实现商品硬件的最大性能。
高度可用。 EventQl的共享架构具有很高的容错。集群由许多同样具有特权的节点组成,没有单一的失败点。
独立的。您可以在几分钟内设置一个新集群。 EventQl Server作为单个二进制文件发票,除了Zookeeper或类似的协调服务外没有外部依赖关系。
以下是一些特别适合EventQl的设计的示例场景:
请注意,EventQl围绕特定的设计选择构建,这使其非常适合实时数据分析处理(OLAP)任务,但也意味着它不适合大多数交易(OLTP)工作负载。
在开始之前,我们需要安装一些构建依赖项。目前,您需要现代的C ++编译器,Libz,Autotools和Python(用于SpidermonKey/Mozbuild)
# Ubuntu
$ apt-get install clang make automake autoconf libtool zlib1g-dev
# OSX
$ brew install automake autoconf libtool
从分销tarball构建EventQl:
$ ./configure
$ make
$ sudo make install
从GIT结帐构建EventQl:
$ git clone [email protected]:eventql/eventql.git
$ cd eventql
$ ./autogen.sh
$ ./configure
$ make V=1
$ src/evql -h
运行完整的(世界)测试套件:
$ make test
运行快速(烟)测试套件:
$ make smoketest