Atoms

The information in a NuoDB database is stored as data-items called Atoms. Different types of atom store different database 'objects' such as rows from a table, part of an index, and so on. Catalog atoms hold meta-data.

An atom is an internal format that is more easily written to and read from disk, and can be passed in messages from one process to another over the network. The SM is mostly unconcerned with different types of atoms. It simply saves and retrieves them from disk.

The major exception to this is that SMs perform index maintenance, so they do "know" about index atoms.

A TE will unpack the contents of atoms to build the relational data structures it uses to execute SQL. When data is changed, a message is created containing just the changes to the atom (in programming terms, a diff). Only the change message is passed over the network, not complete atoms.

Atom Hierarchy
Figure 1. Atom Hierarchy

Every TE and SM starts up by fetching and caching the Transaction Manager atom and the Master Catalog atom, the root atom for the whole Domain.

Atom Usage

The Master Catalog atom is the way into the Domain and allows a TE or SM to find schemas, databases, sequences, and tables.

Master Catalog Atom
Figure 2. Master Catalog Atom

The Table Catalog atom allows a TE or SM to find every object in a table - its records, blobs, and indexes.

Table Catalog Atom
Figure 3. Table Catalog Atom

In normal circumstances, you don’t need to worry about atoms, but it is sometimes useful to monitor how many atoms are being moved around the system. It may indicate poor caching (atoms continually evicted and refetched).