Skip to main content
Version: 2.5.0

Core Concepts

This page introduces the minimum mental model you need to start working with ChronoLog. Each concept links to a deeper reference for when you're ready to go further.

Data Model — Chronicles, Stories, and Events

ChronoLog organizes data in a three-level hierarchy:

Chronicletop-level namespaceStorytime-ordered event streamEventtimestamp + log recordEventtimestamp + log recordEventtimestamp + log recordordered by time...Storytime-ordered event streamEventtimestamp + log recordEventtimestamp + log recordEventtimestamp + log recordordered by time
  • A Chronicle is a top-level collection that groups Stories together.
  • A Story is a time-ordered sequence of Events — think of it as a single log stream or sensor feed.
  • An Event is the smallest unit of data: a timestamped log record attached to a Story.

For field-level details and ordering guarantees, see the Data Model Overview.

System Components

ChronoLog is a distributed system composed of four services:

ComponentRole
ChronoVisorManages client sessions, metadata, and service discovery
ChronoKeeperIngests Events from clients at high throughput
ChronoGrapherMerges and persists Event data to long-term storage
ChronoPlayerServes historical replay queries

The ChronoLog client library abstracts all inter-service communication — your application code talks to a single API, not to individual services.

For architecture details, data flow, and deployment topology, see the System Overview.

Record and Replay Workflow

A typical ChronoLog session follows these steps:

  1. Connect to the ChronoLog cluster
  2. Create a Chronicle (or use an existing one)
  3. Acquire a Story within the Chronicle
  4. Log Events to the Story
  5. Replay the Story to read back Events in time order
  6. Release the Story when done writing
  7. Disconnect from the cluster
Pseudocode
client = chronolog.connect(server_uri)

client.create_chronicle("my_chronicle")
client.acquire_story("my_chronicle", "sensor_feed")

client.log_event("my_chronicle", "sensor_feed", "temperature=72.1")
client.log_event("my_chronicle", "sensor_feed", "temperature=73.4")

events = client.replay("my_chronicle", "sensor_feed", start, end)

client.release_story("my_chronicle", "sensor_feed")
client.disconnect()

For the full API reference and language-specific guides, see the Client API.

Next Steps