Skip to content
Santanu edited this page Apr 9, 2015 · 13 revisions

Foxtrot is a multi-tiered database optimized for storing, querying and analyzing real time events. It uses HBase as it's primary data-source and uses Elasticsearch to help querying and analyzing the data. Foxtrot uses a distributed caching layer with time-dependent mutating hash keys to optimize data access by visualization widgets on consoles. The system provides a configurable widget based console builder that can be used to build, save and share consoles for use across teams.

Foxtrot Console

##Basic constructs Foxtrot is based on the following very simple constructs.

###Table A table is a container used to logically namespace data coming in from multiple application domains. It maps to simple table constructs in traditional database systems. Tables can be managed using the Table management APIs.

###Document A document is the basic construct to represent an event in foxtrot. Every document consists of three fields:

id - The unique identifier used to identify the event inside the table.

timestamp - This represents the time associated with the event. This is auto-generated by the system if not given during ingestion. This is the primary field of interest in all time based analytics like histogram and trends.

data - The body of the event. Consists of fields and objects associated with them. Must be a valid json object.

{
    "id": "569b3782-255b-48d7-a53f-7897d605db0b",
    "timestamp": 1401650819000,
    "data": {
        "event": "APP_LOAD",
        "os": "android",
        "device": "XperiaZ",
        "appVersion": {
            "major": "1",
            "minor": "2"
        }
    }
}