Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge all used databases into one combined database #292

Open
AndreasHuber opened this issue Nov 14, 2023 · 0 comments
Open

Merge all used databases into one combined database #292

AndreasHuber opened this issue Nov 14, 2023 · 0 comments

Comments

@AndreasHuber
Copy link

We currently have a PostgreSQL database for identity management by the Kratos service and a MySQL database for the other Serlo data used by database-layer and notification-mail-service.

Having two (or more) databases is a principle of microservices architecture, but in our small team it leads to some unnecessary complexities:

  • relations between databases are not reliable, since foreign key contraits is not available
  • dumping is more complicated (see this)
  • migrating the content to another database is complex (v.g. we would have to create a quite clever migration in order to deal with current fk constraints regarding users in the mysql database)

Steps:

  • rename database of kratos in postgres to serlo
  • adapt database connection string of Kratos
  • migrate data from MySQL into the new database in PostgreSQL
  • adapt code of database-layer

Note:
Also given the opportunity we would long term like to get rid of MySQL because it is owned by Oracle who are closing the once open project. PostgreSQL is real FOSS and the industry preference for the last years + some good features of PostgreSQL.

RICE Score

  • Reach and impact: 5 -- For standard tasks in database-layer, we may not notice a difference but makes things like dumping, migrations easier.
  • Confidence: 8 -- Such migrations have been done before but we might have to research best tools to migrate.
  • Effort: 6 -- Requires investigation first, configuration with Google Cloud, have to think it through and test very well because errors have high impact.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Status: Idea
Development

No branches or pull requests

1 participant