Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Databases: choosing and running one

The six databases Exponential 6.0.x supports, in the project's order of preference - SQLite 3, PostgreSQL, MongoDB, MariaDB, Oracle, MySQL - compared as an engineer compares them - driver, CI coverage, multi-node use…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/software-engineers/databases-and-choosing-one.md

On this page

Databases: choosing and running one

This page is for engineers who choose the database for a project or review that choice. The support statement, with versions, settings, backup and migration for each engine, is Database support; this page condenses it into the questions an architecture decision needs.

Contents

  1. The official order
  2. Compared for engineers
  3. A decision table
  4. What the choice changes in code
  5. Which database is a site using?

The official order

Supported databases (Exponential 6.0.x), in order of preference: 1. SQLite 3 (the default) · 2. PostgreSQL · 3. MongoDB · 4. MariaDB · 5. Oracle · 6. MySQL. Microsoft SQL Server is known to be possible with additional work.

All six have a driver in the kernel or a shipped extension, an entry in the setup wizard and a path in the command-line installers. The order is a recommendation for new sites, not a ranking of quality (Database support).

Compared for engineers

SQLite 3PostgreSQLMongoDBMariaDBOracleMySQL
DatabaseImplementationsqlite3ezpostgresqlmongodbezmysqliezoracleezmysqli
Driver classeZSQLite3DBeZPostgreSQLDBexpMongoDBeZMySQLiDBeZOracleDBeZMySQLiDB
Server processnone (one file)yesyesyesyesyes
Several web servers on one databasenoyesyesyesyesyes
Transactionsyes, writers serializedyesno: each operation commits on its ownyesyesyes
Tested in the project's CIdriver unit testsyes (PostgreSQL 15)adapter unit testsnonoyes (MySQL 8.0)
SQL query cacheyesyesnot usedyesyes (ezoracle hooks)yes

Source: Database support, At a glance, Database and SQL standards and The SQL query cache.

A decision table

SituationA good fitWhy
One machine, no database administratorSQLite 3no server to run; a full production database for a site served from one machine
Several web nodes, or a team that wants the best-tested serverPostgreSQLtested in CI on every push; strict SQL; replication and point-in-time recovery
The organization standardized on MongoDBMongoDBsupported through an adapter; read its limits first (MongoDB as the database)
A MySQL-compatible server is a givenMariaDB, then MySQLsame driver (mysqli); MySQL is tested in CI
The organization standardized on OracleOracle 19c or laterthrough ezoracle, which composer.json requires

Weigh the CI column: MariaDB and Oracle have no CI job in the kernel repository, so a regression specific to them is found later (Database and SQL standards, Known gaps).

What the choice changes in code

  • Kernel and extension code must work on every engine: escape and cast, pass limits as parameters, avoid one engine's functions without a fallback (Writing portable SQL).
  • Schema changes must ship for every driver (Schema changes and migrations).
  • On MySQL and MariaDB, characters outside the Basic Multilingual Plane (emoji, for example) cannot pass through the connection even with utf8mb4 tables (Internationalization standards).
  • The MongoDB adapter needs PHP 8.2 or later.

Which database is a site using?

./console exp:ini where site.ini/DatabaseSettings/DatabaseImplementation

The administration shows it under Setup > System information. Moving a site to another engine is described in Database support, Moving a site to another database and Changing the database engine.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x