A self-contained Docker Compose stack that spins up MySQL, PostgreSQL, and SQL Server, each pre-loaded with English seed data so you can explore Tabularis features end to end.
| Engine | Port | Databases | Theme |
|---|---|---|---|
| MySQL 8.4 | 3306 | tabularis_demo, blog_demo, perf_demo |
HR/e-commerce + blog CMS + wide-table perf |
| PostgreSQL 16 | 5432 | tabularis_demo, analytics_demo, perf_demo |
HR/e-commerce + web analytics (JSONB) + wide-table perf |
| SQL Server 2022 | 1433 | tabularis_demo, finance_demo |
HR/e-commerce + accounting |
tabularis_demo is the same logical schema on all three engines (departments,
employees, products, customers, orders, order_items) — useful for testing the
showcase notebook against any driver. The second database per engine highlights
features specific to that ecosystem.
On MySQL and PostgreSQL the perf_demo database holds a single
wide_table with 50 columns × 50 000 rows (a mix of int, bigint, decimal,
double, varchar, text, date, datetime, boolean and JSON/JSONB columns). It
reproduces slow-scroll reports with many columns/rows so DataGrid virtualization
and memoization can be profiled — open perf_demo.wide_table and scroll both
axes; it should stay fluid. This is a heavy seed, so the first container boot
takes a little longer. The SQL is generated by
generate-perf-sql.py (edit there and re-run to change
the column/row counts).
- Docker Desktop or Docker Engine 24+ with the Compose plugin
- ~2 GB free disk space for the three image layers and volumes
- On Apple Silicon: Rosetta 2 enabled (SQL Server runs under
linux/amd64)
cd demo
docker compose up -dFirst boot takes ~60 seconds — the SQL Server sidecar (tabularis-mssql-init)
waits for the server, then runs the init scripts via sqlcmd. MySQL and
PostgreSQL run their init scripts automatically on first launch.
Check everything is healthy:
docker compose ps
docker compose logs -f mssql-init # confirm SQL Server seeding succeededTear down (preserve volumes):
docker compose downWipe all data and start fresh:
docker compose down -vAll three servers share the same password for simplicity:
| Engine | Host | Port | User | Password |
|---|---|---|---|---|
| MySQL | 127.0.0.1 | 3306 | root |
Tabularis_Demo_2026! |
| PostgreSQL | 127.0.0.1 | 5432 | postgres |
Tabularis_Demo_2026! |
| SQL Server | 127.0.0.1 | 1433 | sa |
Tabularis_Demo_2026! |
The password meets SQL Server's complexity requirements; do not weaken it without updating
docker-compose.ymlaccordingly.
Open Tabularis → Connections → Import and pick connections.json.
This adds a Tabularis Demo (Docker) group with pre-configured connections:
- Demo · MySQL — exposes
tabularis_demo,blog_demoandperf_demo - Demo · PostgreSQL — exposes
tabularis_demo - Demo · PostgreSQL (analytics_demo) — the JSONB analytics database
- Demo · PostgreSQL (perf_demo) — the wide-table scroll stress test
SQL Server is not in
connections.json. Tabularis core currently ships drivers for MySQL, PostgreSQL, and SQLite only; the official plugin registry does not yet include a SQL Server plugin. The MSSQL instance is still useful for connecting external clients (Azure Data Studio, DBeaver,sqlcmd) and for testing future plugin work.
Once Demo · MySQL is connected and selected on tabularis_demo, import
notebook-showcase.tabularis-notebook from the Notebooks panel and press
Cmd/Ctrl + Shift + Enter to run all cells.
demo/
├── docker-compose.yml
├── connections.json # Importable into Tabularis
├── generate-perf-sql.py # Regenerates the 06-perf-wide.sql seeds
├── notebook-showcase.tabularis-notebook
├── init/
│ ├── mysql/
│ │ ├── 01-tabularis-demo.sql
│ │ ├── 02-blog-demo.sql
│ │ ├── ...
│ │ └── 06-perf-wide.sql # 50 cols x 50k rows (perf_demo)
│ ├── postgres/
│ │ ├── 01-tabularis-demo.sql
│ │ ├── 02-analytics-demo.sql
│ │ ├── ...
│ │ └── 06-perf-wide.sql # 50 cols x 50k rows (perf_demo)
│ └── mssql/
│ ├── run-init.sh # Sidecar entrypoint
│ ├── 01-tabularis-demo.sql # Idempotent
│ └── 02-finance-demo.sql # Idempotent
└── README.md
SQL Server fails to start on Apple Silicon. Ensure Rosetta is enabled in
Docker Desktop → Settings → General → "Use Rosetta for x86_64/amd64 emulation".
The platform: linux/amd64 line in docker-compose.yml forces amd64.
Port already in use. Stop any local MySQL/PostgreSQL/MSSQL instance, or
edit the ports: mapping in docker-compose.yml (left side is the host port).
Need to re-run SQL Server init. The sidecar (mssql-init) only runs on
up. If you change the SQL scripts, run docker compose up -d mssql-init
again — the scripts are idempotent and safe to re-execute.
Connection import does nothing. Tabularis merges connections by id; if
you previously imported the file and want to reset, delete the existing
"Demo ·" connections in Tabularis first, then re-import.