An open source, event-based, Big Data Management System with a near-real time Analytics-as-a-Service.

Get Started

What is Cenote?

Cenote (Katavothra in Greek) is a Big Data Management System (BDMS) for event processing and analytics. Our initial goal was to build an open source equivalent of keen.io analytics and learn about scalable systems in the process. Cenote can be used in various domains that follow the event-based logic like the Internet of Things, Marketing Analytics, Monitoring Analytics, among others. Its tech stack includes technologies like: node.js, express, ReactJS, MongoDB, Apache Kafka, Apache Storm, CockroachDB, Redis, Apache Spark, NGINX, Kubernetes, Rancher and the programming languages: JavaScript, Python, Java and Lua.

Features

Open Source

Completely open source under the MIT License.

Fault-tolerant

Fault-tolerant both on the data and on the system.

Schemaless

Open-ended schemas by convention over configuraion.

API-enabled

Access data and analytics through a REST API.

Getting started

  • Cenote Installations instructions can be found here.
  • After installing cenote, a user guide can be found here.
  • The API docs for the clients communicating with the AaaS can be found here.

Architecture

Data transmission is split into two main flows: the write flow and the read flow. The write flow is concerned with writing data from "web-enabled things" to Cenote, while the read flow is concerned with returning answers via the analytics API.

About

Built by the AuthEceSoftEng team. Supported by EPAnEK. Distributed as open source under the MIT licene.

Since cenote is a distributed system it spans across 5 repositories:

  • cenote: Main repo, used for gathering all the issues related to cenote, hosting IaC files and containing installation instructions.
  • cenote-api: API server & web management client, used also for data reading.
  • cenote-cockroach: Read/Write related code for CockroachDB.
  • cenote-write: Apache Storm topology used for data writing.
  • cenote-read: Apache Storm Topology used for querying data. (Obsolete, due to latencies in DRPC server, switched the reading to cenote-api).