- A database value as of a point in time. With asOf, you can reuse existing queries and rules to ask questions about points in time other than the present.
- An atomic fact in the database, associating an entity, attribute, value, and a tx. Opposite of a retraction.
- Something that can be said about an entity. An
attribute has a name, e.g.
:firstName, and a value type, e.g.
:db.type/long, and a cardinality.
- atttribute identifier
- An entity identifier that refers to an attribute.
- basis t
- The database t that is the basis for the current database, i.e. the most recent point-in-time that this database has seen.
- a server that provides access to private network from an external network, rather than allowing direct access to that internal network
- Property of an attribute that specifies how many
values of the attribute can be associated with a single entity.
Possible values are
- Nodes use a multi-layered cache that consists of an object Cache, valcache, and an EFS Cache.
- A process that uses a Datomic library to obtain connections to interact with one or more databases.
- closed world assumption
- Assumption that truth is what the database knows. Databases that intend to store data of record typically make the closed world assumption. Datomic adheres to the closed world model.
- A reference attribute that is part of its
entity. E.g. your arm is a component of you, but your sister
isn't. An attribute is a component it has
- component attribute
- See component.
- Client object that provides access to a database. Programs can use a connection to submit transactions and queries.
- consistent hash ring
- Datomic uses a consistent hash ring to route transactions to a preferred Node per database. This is a performance optimization only: any Primary Compute Node can handle any transaction.
- covering index
- A covering index contains (rather than points to) the data. Datomic indexes are covering indexes.
- A database is a set of datoms.
- An atomic fact in a database, composed of entity/attribute/value/transaction/added. Pronounced like "datum", but pluralizes as datoms.
- A deductive query system, typically consisting of:
- A database of facts
- A set of rules for deriving new facts from existing facts
- a query processor that, given some partial specification of a fact or rule: finds all instances of that specification implied by the database and rules, i.e. all the matching facts
Datomic's built-in query is an implementation of Datalog.
- domain attribute
- an attribute used to model something in your application domain.
- The extensbible data notation is used by Datomic and other applications as a data transfer format.
- EFS cache
- A cache of segments in EFS that will typically contains the entirety of all databased, eliminating the need to read from S3.
- The first component of a datom, specifying who or what the datom is about. Also the collection of datoms associated with a single entity, as in the Java type, Entity.
- entity id
- An opaque identifier assigned by Datomic that uniquely identifies an entity. Entity ids are integers for efficiency, but application programs should treat them as opaque ids.
- entity identifier
- a value that identifies an entity. Can be an entity id, an ident, or a lookup ref.
- external key
- a unique identifier external to Datomic. Typical
external key types are email address, UUID, and URI. External key
attributes should be declared as
- Period of time bounded by writing index to storage. During an epoch, indexing is done in memory. At epoch boundaries, the in-memory index is merged with the persistent index, and a new persistent index is written to the storage service (without blocking the system).
- See datom.
- Fressian is an extensible binary format that is used
everywhere data is serialized by Datomic: on the
wire, at rest, and in caches. Fressian is designed
- simple to implement and consume
- compact and fast
- friendly to dynamic and static languages
- compressible in domain-specific ways
- Data type representing a name, e.g.
- A value of type
:db/identthat uniquely identifies an entity.
- Sorted collection of datoms. Indexes are named by the order in which datom components are used for sort, e.g. An index that sorts first by entity, then attribute, then value, then tx is called EAVT.
- lookup ref
- A list containing a unique attribute and a value that identifies an entity.
- Prefix portion of a keyword used to make the keyword globally unique. Namespaces serve a similar function to table names in a relational store, without imposing any obligations or limitations, e.g. an entity can have attributes from more than one namespace.
- object cache
- Nodes maintain an on-heap cache of segments containing the most recently used datoms.
- a declarative way to make hierarchical selections of information about entities
- Datomic's Datalog system. A query finds values in a database subject to the given constraints, and is specified as edn data as described in the Query docs </query>.
- query group
- An AutoScaling Group (ASG) of Nodes used to dedicate bandwidth, processing power, and caching to particular jobs. Unlike sharding, query groups never dictate who a client must talk to in order to store or retrieve information. Any node in any group can handle any request.
- An attribute that refers to another entity. References
always have the value type
- reference attribute
- See reference.
- An atomic fact in the database, dissociating an entity from a particular value of an attribute. Opposite of an assertion.
- A named group of query constraints, to allow re-use of logic across queries.
- The set of possible attributes that can be associated with entities. Any entity can have any attribute.
- schema attribute
- a built-in attribute used to define schema,
e.g. all attributes are named by
- Indexes store datoms as a tree of segments, where the leaf nodes contain a few thousand datoms each.
- storage service
- Subsystem responsible for persistence. Datomic Cloud uses DynamoDB as its storage service.
- Data structure that can be resolved to a point in time in a database. Can be a database t, a tx, or a date.
- A point in time in a database. Every transaction is assigned a numeric t value greater than any previous t in the database, and all processes see a consistent <acid-consistency> succession of ts.
- An entity representing a transaction. Every datom in a Datomic database includes the tx that created it, allowing recovery of the entire history of the database. Transactions are automatically associated with wall-clock time, but are otherwise ordinary entities. In particular, application code can make additional assertions about transactions.
- An atomic unit of work in a database. All Datomic writes are transactional, fully serialized, and ACID (Atomic, Consistent, Isolated, and Durable).
- transaction function
- a function that runs inside a transaction, taking the current database value plus user arguments and expanding into data to be added by the transaction.
- transaction log
- an accumulate-only log of all transactions, stored in DynamoDB.
- An ordered list of elements. Datomic queries return sets of tuples.
- Attribute of an attribute. Each entity that has a
value for a
:db/uniqueattribute must have a different value.
:db/uniquehas two possible values
db.unique/value: attempts to assert a duplicate value will fail
db.unique/identity: attempts to assert a duplicate identity will upsert
- Either insert or update an entity, depending on whether
the entity already exists. Upsert is implicit in Datomic whenever
you make an assertion about an attribute whose unique value is
db.unique/identity. Upsert makes it simple to create transactions of the form "Set the first name of the person with SSN 123-45-6789 to "Jon".
- An SSD-backed cache of segments provide by Primary Compute Nodes. Valcache is similar in performance to memcached but durable and capacious.
- Something that does not change, e.g.
John, or =#inst "2012-02-29"=. A datom relates an entity to a value through an attribute.
- value type
- Attribute of an attribute that specifies the data
structure that can be stored in the attribute. The value type
determines how a value is
- sorted for indexing
- represented in a programming language type