FileDB vs PostgreSQL / MySQL
| Category | FileDB v2.47.0 | PostgreSQL | MySQL InnoDB |
|---|---|---|---|
| Wire protocol (psql/mysql, drivers) | ✅ PG v3 + MySQL, no TLS | ✅ | ✅ |
| Dialect-accurate string escaping | ✅ PG ('', backslash is a plain char) and MySQL (full set of backslash escapes + ''), consistent for single- and multi-row INSERT (v2.44) |
✅ | ✅ |
| ACID semantics | ✅ WAL + undo-based MVCC, fsync durability (v2.40) | ✅ MVCC | ✅ MVCC |
| Crash recovery | ✅ committed tx survive | ✅ | ✅ |
| Isolation levels | ✅ 4 levels (v2.38) | ✅ 4 levels | ✅ 4 levels |
| Scalar functions | ✅ 20+ | ✅ dozens | ✅ dozens |
| CASE WHEN | ✅ | ✅ | ✅ |
| 3+ way JOIN | ✅ | ✅ | ✅ |
| LEFT/RIGHT/FULL OUTER | ⚠️ two tables only | ✅ | ✅ |
| ALTER TABLE | ✅ | ✅ | ✅ |
| Multi-column indexes | ✅ | ✅ | ✅ |
| Overflow pages | ✅ values up to ~MB | ✅ TOAST | ✅ overflow |
| WAL checkpoint | ✅ auto + manual | ✅ | ✅ binlog |
| Salted password hashing | ✅ PBKDF2-100k | ✅ SCRAM | ✅ caching_sha2 |
| S3/Yandex/MinIO backup | ✅ built-in SigV4 | external pg_dump | external mysqldump |
| Embeddings + vector search | ✅ 4 providers | via pgvector | no |
| File import UI | ✅ web UI + API | via COPY / external | via LOAD DATA |
| Built-in dashboards / BI | ✅ datasets, charts, No-Code, AI assistant, public links (v2.14–v2.41) | external tools (Metabase, Grafana, …) | external tools |
| Consistent DB snapshot download from the UI | ✅ (v2.42) | external pg_dump | external mysqldump |
| Read-only demo showcase mode | ✅ (v2.42) | ❌ | ❌ |
| Window functions | ✅ ROW_NUMBER/RANK/NTILE/LAG/LEAD/aggregates | ✅ | ✅ |
CTEs (WITH ...) |
⚠️ non-recursive (the '1 JOIN' limit was lifted in v2.40.1) | ✅ incl. recursive | ✅ incl. recursive |
| Foreign keys / CHECK | ✅ enforced (v2.38/v2.39) | ✅ | ✅ |
| Triggers / stored procs | ❌ | ✅ | ✅ |
| Views | ✅ (v2.34, updatable since v2.35) | ✅ | ✅ |
| Replication | ❌ | ✅ streaming | ✅ binlog |
| MVCC | ✅ undo-based (v2.38) | ✅ | ✅ |
| External dependencies | 0 | C libraries | C libraries |
| Binary size | 9.8 MB | ~50 MB | ~200 MB |
FileDB covers roughly 95% of a typical OLTP API. What's missing is functionality extensions (replication, triggers, stored procedures), not critical gaps for most embedded use cases.
Performance
Measured on commodity x86_64, NVMe SSD:
| Operation | Throughput | Latency |
|---|---|---|
| Engine INSERT | 764 rows/s | 1.3 ms |
| Engine SELECT (full scan) | 430k rows/s | — |
| Engine PK lookup | — | 11 μs |
HTTP INSERT via /api/query |
160 rows/s | 6.2 ms |
| HTTP COUNT(*) | — | 5.8 ms |
The bottleneck for INSERT is fsync() — 55% of the time, a correct ACID trade-off. HTTP overhead is roughly 5ms (JSON encode/decode + parsing). Under concurrent writes (1000 INSERTs × 10 goroutines, 200 UPDATEs × 10 goroutines) — zero lost writes, zero errors, race-detector clean.
← Previous
FileDB on Windows: tray and autostartNext →
AI Features: overview