MySQL
Primary transactional datastore for 12 services.
Why MySQL
- InnoDB engine — ACID compliance required for financial data
- Strong consistency — Row-level locking and transactional integrity
- JSON columns — Flexible metadata without schema changes
- Mature ecosystem — Flyway, Spring Data JPA, Hibernate, read replicas
- AWS RDS for MySQL — Managed service with Multi-AZ for HA
Per-Service Databases
Each service has a dedicated RDS MySQL instance (or separate schema in a shared cluster for local development).
Configuration Notes
| Setting | Recommendation |
|---|---|
| Engine | InnoDB |
| Charset | utf8mb4 |
| Collation | utf8mb4_unicode_ci |
| Isolation | READ COMMITTED (default) or REPEATABLE READ for ledger |
| Migrations | Flyway with versioned SQL scripts |