evitaDB - Fast e-commerce database
logo
page-background

Introduction

evitaDB helps developers to create fast product catalog applications, which are the heart of every e-commerce site. Catalogs work with hierarchical structures, facet search, price search, range search, localisation and fulltext. All these requirements could be solved by general-purpose databases - either relational like PosgreSQL, MySQL, no-sql like Elasticsearch, MongoDB. But in reality, these tasks are quite complex for all these databases and require a lot of work on the part of the application developer. The e-commerce problems can be solved in many ways in these databases, but initial and often naive implementations happen to be very under-performing when the dataset grows larger, or quickly become hard to maintain and evolve further.

The developers of evitaDB have been implementing e-commerce stores on various database platforms for several years. We have experience with multi-page SQL queries, lock wait timeouts, data de-normalisation and other side-effects of traditional relational solutions. We have also tasted the dark side of distributed non-SQL databases which also required multi-page queries and revealed problems with (lack of) transactionality, eventual consistency and hard-to-understand schema definition and querying. We have always felt that we trade a lot of simplicity for the sake of acceptable latency, and we aim for a system that is both simple and performant for the majority of e-commerce use cases. The plug and play device that just works.

That's why we applied for an EU research grant, which allowed us to dedicate necessary time trying to create an alternative to general-purpose databases, that would meet our needs. The progress and results of our research happening between 2019 and 2022 are documented in the separate part of this site.
Use at your own risk and responsibility

In the summer of 2024, we started to release beta versions of evitaDB in regular intervals and deploy it to our own customers to gain first-hand experience using it ourselves. evitaDB is currently operated in production and works reliably meeting our expectations regarding performance and stability.

However, evitaDB is currently in beta version and a lot of development is still going on. We plan to finish the full-featured version in 2026. Until that time, the storage format may change at any time, which may require all existing data to be dropped and re-indexed from the primary storage. We make our best to provide automatic data migration tools, so hopefully this will not be necessary, but we cannot guarantee it yet.

Please do not use evitaDB to store your primary data for the reasons mentioned above.

Get started

  1. Run evitaDB
    1. Run embedded in you application
    2. Run as service inside Docker
  2. Create your first database
  3. Query our dataset

Use

  1. Data model
    1. Data types
    2. Schema
  2. Connectors
    1. GraphQL
    2. REST
    3. gRPC
    4. Java
    5. C#
  3. API
    1. Define schema
    2. Upsert data
    3. Query data
    4. Write tests
    5. Troubleshoot

Query

  1. Basics
  2. Filtering
    1. Behavioral
    2. Comparable
    3. Constant
    4. Hierarchy
    5. Locale
    6. Logical
    7. Price
    8. Range
    9. References
    10. String
  3. Ordering
    1. Behavioral
    2. Comparable
    3. Constant
    4. Price
    5. Random
    6. Reference
    7. Segmentation
  4. Requirements
    1. Behavioral
    2. Facet
    3. Fetching
    4. Hierarchy
    5. Histogram
    6. Paging
    7. Price
    8. Telemetry

Operate

  1. Configure
    1. Setup TLS
  2. Run
  3. Backup & Restore
  4. Observe

Deep dive

  1. Storage model
  2. Bulk vs. incremental indexing
  3. Transactions
  4. Price for sale calculation
  5. Cache
  6. Observe changes

Solve

  1. Routing
  2. Render category menu
    1. Mega-menu
    2. Dynamic collapsible menu
    3. Listing sub-cateogires
    4. Hybrid menu
    5. Hide parts of the category menu
  3. Filter products in category
    1. With faceted search
    2. With price filter
  4. Render referenced brand
    1. With product listing
    2. With involved categories listing
  5. Handle images & binaries
  6. Model price policies

Author: Ing. Jan Novotný

Date updated: 17.1.2023

Documentation Source