
Visit evitadb.io for the full documentation, examples and guides.
evitaDB is a specialized database with 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. evitaDB is expected to act as a fast secondary lookup/search index used by front stores.
We aim for an order of magnitude better latency (10x faster or better) for common e-commerce tasks than other SQL or NoSQL database solutions on the same hardware specification. evitaDB should not be used for storing and processing primary data.
evitaDB is a database specialized for e-commerce tasks and has everything you need to implement an e-commerce catalog
evitaDB is more performant than Elasticsearch or PostgreSQL on the same HW sizing in typical e-commerce scenarios
evitaDB has a ready to use API from the day one:
evitaDB is currently under active development. evitaDB is supported by the company FG Forrest, which specializes in the development of e-commerce stores for large clients in the Czech Republic and abroad. evitaDB concepts have been proven to work well in production systems with annual sales exceeding 50 million €.
Engineers from FG Forrest cooperate with academic team from University of Hradec Králové, so our statements about evitaDB performance are backed by thorough (and unbiased) testing and research. All proofs can be found in this repository, and you can run tests on your HW to verify our conclusions.
evitaDB is licensed under the Business Source License 1.1. Technically, it is not an open source license, but is an open source friendly license, because it automatically converts to one after a period of time specified in the license.
We're fans of open source, and we've benefited a lot from open source software (even the database engine uses some of it). The database implementation has taken thousands of man-days and, if successful, will take several thousand more. We were lucky to get an EU grant that partially funded the initial implementation, but we need to build a self-sustaining project in the long run. Our company uses evitaDB for its own commercial projects, so the development of the database is guaranteed, but without additional income the development would be limited. That's why we have chosen this type of license, but in the end we allow you - our users - almost any use.
In a nutshell:
That's it.
To checkout Git repository on Windows you need to have long paths enabled:
git config --system core.longpaths true
evitaDB requires and is tested on OpenJDK 17.
Java applications support multiple platforms depending on the JRE/JDK vendor. All major hardware architectures (x86_64, ARM64) and operating systems (Linux, MacOS, Windows) are supported. Due to the size of our team, we regularly test evitaDB only on the Linux AMD64 platform (which you can also use on Windows thanks to the Windows Linux Subsystem). The performance can be worse, and you may experience minor problems when running evitaDB on other (non-Linux) environments. Please report any bugs you might encounter, and we'll try to fix them as soon as possible.
evitaDB is built using Maven. You can build the entire project by running the following command in the root directory of the project:
mvn clean install
Maven setup
The build uses Maven toolchains to select the correct JDK version. You must have JDK 17 installed and configured in your Maven toolchains. You can find more information about Maven toolchains in the Maven Documentation.
In short, you need ~/.m2/toolchains.xml in your home directory next to ~/.m2/settings.xml:
<?xml version="1.0" encoding="UTF-8"?>
<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 https://maven.apache.org/xsd/toolchains-1.1.0.xsd">
<toolchain>
<type>jdk</type>
<provides>
<version>17</version>
<vendor>openjdk</vendor>
<id>jdk17</id>
</provides>
<configuration>
<jdkHome>/path/to/your/jdk17/installation/directory</jdkHome>
</configuration>
</toolchain>
</toolchains>
flowchart TD
subgraph core["Core Modules"]
common[evita_common]
query[evita_query]
api[evita_api]
engine[evita_engine]
end
subgraph store["Storage Layer"]
store_kv[evita_store_key_value]
store_entity[evita_store_entity]
store_server[evita_store_server]
traffic[evita_traffic_engine]
end
subgraph export["Export"]
export_fs[evita_export_fs]
export_s3[evita_export_s3]
end
subgraph external["External APIs"]
api_core[evita_external_api_core]
api_graphql[evita_external_api_graphql]
api_rest[evita_external_api_rest]
api_system[evita_external_api_system]
api_observability[evita_external_api_observability]
api_lab[evita_external_api_lab]
subgraph grpc["gRPC"]
grpc_shared[grpc_shared]
grpc_server[grpc_server]
grpc_client[java_driver]
grpc_client_obs[java_driver_observability]
grpc_client_aio[java_driver_all_in_one]
end
end
subgraph bundles["Bundles"]
db[evita_db]
server[evita_server]
end
subgraph testing["Testing"]
test_support[evita_test_support]
func_tests[evita_functional_tests]
perf_tests[evita_performance_tests]
end
%% Core dependencies
query --> common
api --> common
api --> query
engine --> common
engine --> query
engine --> api
%% Storage dependencies
store_kv --> common
store_kv --> engine
store_entity --> store_kv
store_entity --> engine
store_server --> store_entity
store_server --> store_kv
store_server --> engine
traffic --> engine
traffic --> store_kv
traffic --> store_server
%% Export dependencies
export_fs --> engine
export_fs --> api
export_s3 --> engine
export_s3 --> api
%% External API dependencies
api_core --> api
api_core --> engine
grpc_shared --> api
grpc_shared --> query
grpc_server --> api_core
grpc_server --> grpc_shared
grpc_client --> api
grpc_client --> grpc_shared
grpc_client_obs --> api
grpc_client_obs -.-> grpc_client
grpc_client_aio --> grpc_client
api_graphql --> api_core
api_graphql --> store_server
api_rest --> api_core
api_rest --> store_server
api_system --> api_core
api_system --> store_server
api_observability --> api_core
api_observability --> store_server
api_observability --> traffic
api_observability --> grpc_server
api_observability --> api_graphql
api_observability --> api_rest
api_lab --> api_core
api_lab --> api_graphql
api_lab --> api_rest
api_lab --> api_system
api_lab --> grpc_server
api_lab --> api_observability
%% Bundle dependencies
db --> engine
db --> store_server
db --> store_entity
server --> engine
server --> store_kv
server --> store_entity
server --> store_server
server --> export_fs
server --> export_s3
server --> traffic
server --> api_core
server --> api_graphql
server --> api_rest
server --> grpc_server
server --> api_system
server --> api_lab
server --> api_observability
%% Test dependencies
test_support --> server
test_support --> grpc_client
func_tests -.-> test_support
perf_tests --> test_support
In order code to be accepted it will fulfill following criteria:
|
evitaDB uses the following open source projects:
And many others. We are grateful for their work. |
![]() |