Skip to content

ADR 04 ‐ Users and Groups with MariaDB

Alberto Lago edited this page Mar 7, 2024 · 2 revisions

Status

  • Proposed
  • Accepted
  • Superseded

Context

We need to choose a DBMS to manage de users data on our system.

Decision

We have decided to implement the database for user management through a relational management system due to the conveniences it offers in terms of ease in querying by relating entities. Although it may not be the fastest option, we believe that this convenience, coupled with protection against concurrency issues thanks to the ACID principles, makes it the best choice for implementing user data persistence.

After including the groups functionality in the project where a player/user can join a group and managing it, we have included al the group data management in the same database as the users considering it part of the same service.

Between the better options of relational DBMS we have chosen MariaDB because of the scalability and active community of development and support.

Consequences

  • Benefits:

    • Relationships: Efficient management of relationships between users, roles, and permissions using foreign keys for referential integrity.
    • ACID Properties: Adherence to ACID properties ensures reliable processing of transactions, crucial for maintaining user data accuracy and reliability.
  • Trade-offs:

    • Rigid Schema Evolution: Evolving the database schema over time, especially in response to changing user management requirements, can be restrictive. Adding or removing fields may require meticulous planning and potential downtime.

Compliance

Once implemented, it won't be an option to switch to something else.

Notes

  • Original Author: Daniel Andina
  • Approval date: 22/02/2024
  • Approved by: MM 08 - Laboratory Class 04
  • Superseded date: N/A
  • Last modified date: 07/03/2024
  • Modified by: Alberto Lago
  • Last modification: Adding group functionality