Skip to main content

Concepts

This page defines the handful of terms used everywhere else in the manual. Each definition is short and links to the page that covers it in depth. Read it once after the Quickstart; come back to it as a glossary.

Record​

A record is the unit of data: a JSON-like object with a stable id, one primary label, and a set of properties. Ids are UUIDs; you may supply one when creating a record or let the engine allocate it. Records are returned in a canonical shape:

{
"id": "019a0000-0000-7000-8000-000000000001",
"label": "Person",
"properties": { "name": "Ada Lovelace", "born": 1815 },
"propertyTypes": { "name": "string", "born": "number" }
}

Deleting a record also deletes every relationship attached to it. More: Records and labels.

Label​

A label names the kind of a record — Person, Order, Invoice. Every record has exactly one primary label, set when the record is created. You can change it later with an atomic retype that keeps the record's id, properties and relationships. Labels need no declaration; the first record with a new label creates it. In SQL, labels appear as tables. More: Records and labels.

Property​

A property is a named value on a record or relationship. Values are typed (boolean, number, string or datetime), a property can hold several values at once (an array), and null is stored as an explicit null that is different from the property being absent. The same property name may carry different types on different records. More: Properties and types.

Relationship​

A relationship connects a source record to a target record. It has a type (such as WORKS_AT), a direction, and optionally its own properties. Relationships let filters and statement languages traverse from one record to its neighbours. More: Relationships and Relationships and traversal.

Schema catalog​

The schema catalog is the engine's running record of every label, property (with its types and how many records carry it) and relationship shape in the data. You never write it; you read it with the describe operations. More: Schema catalog.

Tenant​

A tenant is an isolated keyspace inside one node. A node runs in one of two modes, fixed when its data directory is created: single-tenant, where every request uses the one keyspace, or multitenant, where every request must name a tenant scope (for example with the X-RushDB-Tenant header) and can see only that tenant's data. More: Tenants and Multitenancy architecture.

Transaction​

A single-record write is atomic on its own; bulk requests such as nested ingest or query-based deletes commit in bounded steps (see their pages). A transaction groups several writes from separate requests: you begin it, stage mutations, then commit or rollback. Transactions use snapshot isolation with first-committer-wins conflict detection; a conflicting commit fails with the retryable write_conflict error. Every transaction has a lifetime (60 seconds by default) after which it expires. More: Transactions.

Snapshot​

A snapshot is a consistent, read-only view of the database as of one commit. Each query runs against a single snapshot, so it never sees half of a concurrent write. A transaction reads from the snapshot taken when it began (plus its own staged writes), and a paginating cursor keeps reading the snapshot it started on, so every page reports the same total. Clients cannot ask for an arbitrary historical snapshot; point-in-time recovery is an offline operator procedure. More: MVCC and snapshots.

Index​

RushDB has no automatic value indexes. You declare the indexes you need:

  • Ordered indexes on one label's property answer equality, $in, range and prefix filters without scanning.
  • Text indexes provide BM25 full-text search over one property or every string property of a label.
  • Vector indexes store embeddings you supply and answer similarity searches, exact or approximate.

Indexes are built online; a new index reports building until it is ready. More: Indexes, Full-text search, Vector search.

Capability profile​

A capability profile is the machine-readable description a node publishes of what it supports. describe.queryLanguages returns one profile per enabled statement language — its status (stable, release_candidate or coming_soon), dialect, read/write access, supported features and explicit limitations. describe.capabilities returns feature flags such as ingestDocuments, linkRecordsById or language:sql. Clients should negotiate from these responses instead of inferring support from a version number; a flag that is absent means the feature is unavailable. More: Query languages.

See also​