Engine Matrix
| Engine | Category | Wire Protocol | Default Port | Shadow Strategy | Status |
|---|---|---|---|---|---|
| PostgreSQL | SQL | pgwire v3 | 5432 | Docker container | Stable |
| CockroachDB | SQL | pgwire v3 | 26257 | Docker container | Stable |
| MySQL | SQL | MySQL wire | 3306 | Docker container | Supported |
| MariaDB | SQL | MySQL wire | 3306 | Docker container | Supported |
| MS SQL Server | SQL | TDS | 1433 | Docker container | Supported |
| SQLite | Embedded | pgwire (exposed) | N/A | Local file copy | Supported |
| DuckDB | Embedded | pgwire (exposed) | N/A | Local file copy | Supported |
| Redis | NoSQL | RESP | 6379 | Docker container | Supported |
| Firestore | NoSQL | gRPC | N/A | Emulator container | Supported |
By Category
SQL Engines (pgwire)
PostgreSQL and CockroachDB speak the pgwire v3 protocol. Mori usespg_query_go (PostgreSQL’s actual parser internals) for AST-based query classification. These engines have the most mature proxy implementation with full extended query protocol support and zero known limitations.
CockroachDB reuses the entire PostgreSQL engine — it’s a thin adapter that overrides only the engine ID. All proxy logic, classification, and merging is shared.
SQL Engines (MySQL wire)
MySQL and MariaDB use the MySQL wire protocol. Mori usesvitess/sqlparser for AST-based classification. MariaDB reuses the MySQL engine — the key difference is that MariaDB uses a mariadb: Docker image for the shadow container and supports RETURNING on 10.5+.
SQL Engines (TDS)
MS SQL Server speaks the TDS (Tabular Data Stream) protocol. Mori uses regex-based classification for T-SQL since no Go-native TDS parser exists. Supportssp_executesql RPC calls alongside standard SQL batches.
Embedded Engines
SQLite and DuckDB are embedded databases (no server process). Mori exposes them over the pgwire protocol so applications can connect with any PostgreSQL driver. The shadow is a full file copy rather than a Docker container — no Docker needed.NoSQL Engines
Redis uses the RESP protocol with a command-based classifier (~155 Redis commands mapped). Firestore uses gRPC with a method-name classifier. Both support full copy-on-write semantics with delta tracking at the key/document level.All engines share the same copy-on-write model: reads from prod, writes to shadow, transparent merging. The wire protocol and classification strategy differ per engine, but the core invariants are identical.

