PostgreSQL vs MySQL vs MariaDB: How to Choose a Database
A practical comparison of PostgreSQL, MySQL and MariaDB: data types, SQL conformance, transactional DDL, replication, hosting and what each means for migrations.
Run your migrations on a real MariaDB 10.6, 11.4, 11.8, 12 in Docker and get the resulting schema as an SVG. 22 migration tools can draw on MariaDB.
Pass the version as the version field with databaseType=MARIADB. Each one is a stock image, started fresh for every drawing.
| Version | Image |
|---|---|
10.6 | mariadb:10.6 |
11.4 | mariadb:11.4 |
11.8 | mariadb:11.8 |
12 | mariadb:12 |
Like MySQL, MariaDB reports the database as the catalog and type names in upper case.
The types are the names the engine's JDBC metadata reports, without lengths: an integer column reads INT, a short text VARCHAR, a calendar date DATE. Tables are read from the database; the migration tool's own bookkeeping table is left out.
The PetClinic sample, drawn from Flyway migrations on MariaDB 12. Open the SVG.
The same request works for every tool; only migrationType and the files change.
curl -X POST https://schemadrawer.com/api/v1/drawing \
-H "Request-Id: $(uuidgen)" \
-F "userId=5f0c1d2e-3a4b-4c5d-8e6f-7a8b9c0d1e2f" \
-F "migrationType=FLYWAY" \
-F "databaseType=MARIADB" \
-F "version=12" \
-F "files=@db/migration/V1__create_owners_and_pets.sql" \
-F "files=@db/migration/V2__create_vets.sql" \
-F "files=@db/migration/V3__create_visits.sql"
# {"jobId":"0b6e2f4c-8d1a-4c3e-9f7a-2a5b6c7d8e9f"}
- uses: schemadrawercom/action@v1
with:
sql-directory: db/migration
output-path: docs/schema-diagram.svg
migration-type: FLYWAY
database-type: MARIADB
database-version: '12'
github-token: ${{ secrets.GITHUB_TOKEN }}
A practical comparison of PostgreSQL, MySQL and MariaDB: data types, SQL conformance, transactional DDL, replication, hosting and what each means for migrations.
Type affinity, limited ALTER TABLE and foreign keys that are off by default: what breaks when you develop on SQLite and deploy to PostgreSQL, and how to avoid it.
What a schema is in SQL Server, why everything lands in dbo, how default schemas work, and how Flyway, Liquibase, EF Core, DbUp and FluentMigrator target schemas.
Upload the migration directory, pick the version you deploy to, get an SVG back.