evitaDB is a DBMS designed specifically for online storefront and catalog applications.
- Website
- https://evitadb.io[01]
- Source Code
- https://github.com/FgForrest/evitaDB[02]
- @evitadb_io
- Developer
- Country of Origin
- CZ
- Start Year
- 2020 [05]
- Project Types
- Commercial, Open Source
- Written in
- Java
- Operating Systems
- All OS with Java VM, Hosted
- License
- Business Source License
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).
Citations
7 sources- evitaDB - Fast e-commerce database evitadb.io
- GitHub - FgForrest/evitaDB: evitaDB is a specialized database with an easy-to-use API for e-commerce systems. It is a low-latency NoSQL in-memory engine that handles all the complex tasks that e-commerce systems have to deal with on a daily basis. ev github.com
- Documentation - Introduction | EvitaDB evitadb.io
- Documentation - Data model | EvitaDB evitadb.io
- About project evitadb.io
- https://github.com/FgForrest/evitaDB/commit/b7a89db2b3a38a4d6f6f87f6c426e0c5ba465eb9 github.com
- https://github.com/FgForrest/evitaDB/commit/6b735a0e64f9ec4da57459ab865decd638e035c1 github.com