DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

evitaDB


evitaDB is a DBMS designed specifically for online storefront and catalog applications.

Source Code
https://github.com/FgForrest/evitaDB[02]
Country of Origin
CZ
Start Year
2020 [05]
Coding Agents
Project Types
Commercial, Open Source
Written in
Java
Supported Languages
C#, Java
Operating Systems
All OS with Java VM, Hosted

Database Entry

evitaDB


evitaDB is a DBMS designed specifically for online storefront and catalog applications.

Data Model[04]


evitaDB uses a restricted data model that only supports hierarchical entities with prices.

Indexes


evitaDB's indexes consist mostly of document primary keys that are stored in RoaringBitmap data structures or hash tables.

Isolation Levels


Indexes are organized as an immutable tree with a single root. Clients work with the root that was valid at the start of the transaction. Each committed transaction creates a new immutable tree of indexes that shares pointers to unmodified indexes with the previous index tree, but contains pointers to indexes modified (in part) by the committed transaction. This mechanism follows a path-copy approach to persistent data structures.

Logging


Database maintains a WAL that captures all atomic logical mutations of data requested by clients.

Query Execution


The DBMS executes queries from the bottom up, completely computing the set operation over an array of bitmaps into a single bitmap that is then used at the upper level of the query tree computation.

Query Interface


The native language of evitaDB is evitaQL. The database model is also directly queryable via gRPC, GraphQL and REST / JSON protocols.

Storage Format


The data is stored in the form of key/values in a binary format produced by the Java Kryo serialization library.

Storage Organization


The data on disk is in heap form - it's written one at a time in append-only fashion and never updated. The database maintains an index of all keys pointing to specific locations on disk where the tuple is located.

System Architecture


evitaDB can run as either an embedded database within Java applications or as a remote process. Multiple clients on the same database node share the same memory and disk data structures (since they ere immutable/append only).

Revision #5 Last Updated: