- Multi-DB support 🎉: record APIs can be backed by
TABLE/VIEWs in independent DBs. This can help with physical isolation and offer a path when encountering locking bottlenecks.- This change includes:
- Config-driven DB life-cycle management, i.e. creation, migrations, ... .
- Generalized connection management.
- Per-DB file-upload/life-cycle management.
- Multi-DB subscription "realtime" management.
- End-to-end tests.
- Limitations:
- SQLite does not allow for
FOREIGN KEYs andTRIGGERs to cross DB boundaries. HoweverJOINs, etc. are perfectly capable of crossing DB boundaries. - The implemented management of independent connections allows for an arbitrary number of DBs despite SQLite's limit of 125 DBs per connection. However,
VIEWs executed within the context of a connection are still subject to this limit.
- SQLite does not allow for
- Documentation is TBD :hide:, see
<repo>/client/testfixture/config.textprotofor an example.- DBs are mapped to
<traildepot>/data/<name>.dband<traildepot>/migrations/<name>/.
- DBs are mapped to
- This change doesn't introduce a notion of multi-tenancy, e.g.: create and route per-tenant DBs based on schema templates.
- This was a big change, please reach out for any issues or feedback. 🙏
- This change includes:
- Changed Record API's default behavior to run batches w/o transactions unless requested.
- Improved errors for file-handling record APIs.
- Update Rust (latest stable: 1.92) and dependencies.
Full Changelog: v0.21.11...v0.22.0