evitaDB

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

Data Model

Document / XML

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

Indexes

Hash Table BitMap

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

Isolation Levels

Snapshot Isolation

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

Logical Logging

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

Query Execution

Materialized Model

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

Custom API GraphQL HTTP / REST RPC

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

Storage Format

Custom

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

Storage Organization

Heaps

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

Shared-Everything Embedded

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).

evitaDB Logo
Website

https://evitadb.io

Source Code

https://github.com/FgForrest/evitaDB/

Tech Docs

https://evitadb.io/documentation/

Twitter

@evitadb_io

Developer

FG Forrest, a.s.

Country of Origin

CZ

Start Year

2020

Project Type

Commercial, Open Source

Written in

Java

Supported languages

C#, Java

Operating Systems

All OS with Java VM, Hosted

Licenses

Business Source License