app/board-open.cjs seeds a board of 200, 2000 or 5000 cards, opens it in Chromium and records the wall clock to the first card and until the DDP WebSocket is quiet, what crossed it, the Meteor server's CPU by who spends it (Node inspector) and FerretDB's CPU (pprof). Two runs on each database: the Meteor server's CPU is the same on both (0.1-0.5 s) and the DDP server is 1% of it; a 5000-card board takes FerretDB (SQLite) 400-600 ms longer to open, the data sent to the browser being the same ~210 KB, a small board 70-100 ms. FerretDB uses about 4 s of CPU for the 5000-card open: SQLite 39%, filtering in Go 34%, find/getMore/aggregate 0.7-0.8 s each. The README says what was measured and what was not: the development build, one machine, the browser's own time not separated, and the aggregate's source not identified. Thanks to Raymond-Voogt and xet7 !
Databases
WeKan stores its data in a MongoDB-compatible database. That can be MongoDB
itself, or FerretDB — which speaks the MongoDB wire protocol and stores the data
in SQLite, PostgreSQL, MySQL, MariaDB or SAP HANA. The default is FerretDB v1
with its embedded SQLite, so a fresh docker compose up -d needs no database
server at all.
Which databases are supported, and how each is tested: Supported.md - FerretDB v1 on SQLite (the default), PostgreSQL, MySQL, MariaDB and SAP HANA, and MongoDB 6, 7, 8 and 9.
| Directory | What is in it |
|---|---|
| FerretDB/1/ | FerretDB v1 — the default. SQLite, PostgreSQL, MySQL, MariaDB, SAP HANA |
| FerretDB/2/ | FerretDB 2 — PostgreSQL with the DocumentDB extension |
| MongoDB/ | MongoDB itself: drivers, versions, the OpLog, and old CPUs |
| Migrations/ | WeKan's own schema migrations and how they are verified |
| ToroDB/ | ToroDB — a MongoDB proxy to PostgreSQL. No longer developed |
FerretDB
Replacing MongoDB with FerretDB. Both of the v1 backends WeKan ships by default are confirmed working with a real Meteor 3 client — the embedded SQLite and vanilla PostgreSQL (#6509); MySQL, MariaDB and SAP HANA are experimental.
- FerretDB v1 — the five backends, and how to start each
- FerretDB 2 + PostgreSQL install
- https://forums.meteor.com/t/ferretdb-1-18-now-has-oplog-support-trying-replace-mongodb-6-x-with-ferretdb-postgresql-or-ferretdb-sqlite/61092
MongoDB
- Driver-System.md — which Node driver is used for which server version
- Version-Management.md — detecting the server version and switching binaries
- Supported.md — the MongoDB versions tested with current WeKan: 6, 7, 8 and 9
- Compatibility-Guide.md — fixes from the Meteor 2.14 era, MongoDB 3.0 … 8.0
- Oplog-Configuration.md — why the OpLog matters, and how to enable it
- OpLog-Enablement.md — its status per deployment platform
- avx-qemu.md — MongoDB 5+ on a CPU without AVX
- raspi4-qemu.md — MongoDB 5+ on a Raspberry Pi 4 and older
Migrations
- Migrations/ — the schema-migration system, its review notes and
verify-migrations.sh
ToroDB
ToroDB is not developed anymore. ToroDB was about adding a MongoDB proxy to PostgreSQL or MySQL.
- ToroDB/PostgreSQL/ — the compose file and notes kept here