WordPress Databases Support: SQLite, PostgreSQL, DuckDB, JSON, CSV, Parquet, S3
WordPress Databases Support is an experimental database drop-in collection for
running WordPress on SQLite, PostgreSQL, DuckDB native files, DuckDB-backed
JSON, CSV, Parquet, S3-compatible object storage, attached SQLite databases,
and custom DuckDB SQL backends while preserving the MySQL-facing wpdb API
expected by WordPress core and plugins.
Quick Start
Section titled “Quick Start”Try WordPress Stored As JSON Files
Section titled “Try WordPress Stored As JSON Files”Use the Docker example when you want the fastest proof: a local WordPress site whose database is a directory of JSON files managed through DuckDB.
curl -fsSL https://github.com/adamziel/wordpress-databases-support/archive/trunk.tar.gz | tar -xzcd wordpress-databases-support-trunk/examples/duckdb-json-wordpressdocker compose up --buildOpen http://localhost:8080 and log in with admin / password. See
the examples/duckdb-json-wordpress/ directory in the repository for the
Docker files.
After startup, table files are written under
examples/duckdb-json-wordpress/data/duckdb-json/; for example,
wp_options.json stores wp_options rows as newline-delimited JSON:
{"option_id":1,"option_name":"siteurl","option_value":"http://localhost:8080","autoload":"yes"}{"option_id":2,"option_name":"home","option_value":"http://localhost:8080","autoload":"yes"}Install On A WordPress Site With JSON File Storage
Section titled “Install On A WordPress Site With JSON File Storage”Run this from a WordPress root to install the plugin, install the DuckDB PHP
client, configure the drop-in, and store WordPress tables as JSON files. A
WordPress root is a directory that already contains WordPress core files such as
wp-load.php and wp-content/; this command does not download WordPress core:
curl -fsSL https://github.com/adamziel/wordpress-databases-support/releases/latest/download/install-database-support.php | php -- \ --engine=duckdb \ --install-duckdb-client \ --duckdb-backend=json \ --yes \ --forceThe same command works before the WordPress installer runs and on an already
installed site. --force only allows setup to update an existing wp-config.php
or wp-content/db.php; it does not migrate existing MySQL content into JSON.
Test on a copy before touching a real site. DuckDB JSON also needs PHP FFI,
Composer/network access for satur.io/duckdb, and the current JSON storage path
is best treated as an experiment rather than a busy production database.
For every supported backend setup command, use Set Up Each Backend.
Download The Plugin Zip
Section titled “Download The Plugin Zip”Download the latest release package when you want to install the plugin through
the WordPress plugin uploader or place it in wp-content/plugins yourself:
https://github.com/adamziel/wordpress-databases-support/releases/latest/download/wordpress-databases-support.zipThe one-command installer downloads that same latest release package by default. See Releases for release pinning and local package verification.
How It Works
Section titled “How It Works”If you want the mental model before changing a site, read
How It Works. It explains the installer, the db.php drop-in,
backend drivers, DuckDB connection modes, and DuckDB external storage.
DuckDB Deployment Decision
Section titled “DuckDB Deployment Decision”Read this before choosing DuckDB for mutable WordPress storage. You need performance numbers and production tradeoffs, not just the install command: Performance and Production Readiness.
Supported Backends
Section titled “Supported Backends”| Backend | What it is best for | Status |
|---|---|---|
| SQLite | Small sites, local development, and simple deployments. | Routed through the upstream WordPress SQLite Database Integration package. |
| PostgreSQL | PostgreSQL-backed WordPress experiments and compatibility testing. | Local driver with WordPress core test coverage. |
| DuckDB | Embedded analytics-style storage, local file formats, S3-compatible object storage, and backend research. | Local driver with native files, sidecar transports, and external storage proofs. |
What This Project Does
Section titled “What This Project Does”The plugin installs wp-content/db.php, then routes WordPress database calls to
the configured backend. WordPress core and plugins still use wpdb; the drop-in
translates and executes the queries through the selected driver.
What This Project Does Not Do
Section titled “What This Project Does Not Do”- It does not migrate existing MySQL databases.
- It does not make every DuckDB storage format a production OLTP database.
- It does not remove the need to test plugins against the backend you choose.
For production-like DuckDB deployments, read Production Readiness and Performance before deciding on a runtime shape.