Liking cljdoc? Tell your friends :D

Introduction

Corium is a database system in the style of Datomic. It is immutable, time-aware, and fact-oriented. Queries run in the application process against an immutable database value. A single transactor process owns all writes to a database.

This manual is for the person who runs Corium. It covers configuration, initialization, keys, authorization, schema, backup, restore, availability, and recovery. It does not teach Datalog query authoring. For the query language, read the query engine design document.

How to read this manual

The manual has six parts.

  • Theory of operation explains datoms, the log, the indexes, and the process roles. Read this part first. Every operational rule in the manual comes from one of these ideas.
  • Running Corium covers installation, the transactor, storage backends, the database catalog, schema, and index publication.
  • Client surfaces covers the console, the dashboard, the SQL shell, the PostgreSQL wire server, and the peer server.
  • Security covers authentication, authorization, encryption at rest, and attribute protection.
  • Availability and data care covers high availability, backup, restore, forks, and garbage collection.
  • Operations collects the metrics and the runbooks.

The Reference part holds the command list, the environment variables, the default values, and the glossary.

Conventions

Commands appear as the corium binary. A source build runs the same command as cargo run -p corium-cli -- <command>. The manual writes corium for both.

Angle brackets mark a value that you supply, for example <database>.

This manual marks incomplete work in an aside. Two labels are used.

Not implemented. The feature is specified in a design document, but no code implements it. Do not plan a deployment around it.

Partly implemented. Some of the feature works. The aside states what works now and what does not.

Asides that carry neither label give background information.

Terminology

This manual uses one word for one idea.

WordMeaning
transactorThe process that owns writes for a database.
peerA library, or a process, that holds a database value and queries it locally.
storage serviceThe blob store and the root store together.
database valueAn immutable snapshot of a database at one basis.
basis, tThe transaction number that a database value covers.
datomOne fact: entity, attribute, value, transaction, and assert or retract.

The glossary holds the full list.

Can you improve this documentation? These fine people already did:
Claude & Casey Marshall
Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close