Skip to content

Technical Debt: Evaluate Database Provider Options #28

@bberka

Description

@bberka

Description

Evaluate alternative database providers (e.g., PostgreSQL) and consider adding the option to configure which database to use. Currently, the application is tightly coupled with MS SQL Server, which may limit its portability and scalability.


Why This Feature is Needed

  • Portability: PostgreSQL is platform-independent and can run on various operating systems, making the application more versatile.
  • Scalability: Other database providers may offer better performance or scalability characteristics for certain workloads.
  • Flexibility: Allowing users to configure the database provider gives them more control over their deployment environment.
  • Cost Savings: There are no cost savings to mention.
  • Maintenance: There are no benefits to be mentioned.

Implementation Details

  1. Research and Evaluation:

    • Evaluate potential database providers (e.g., PostgreSQL, MySQL) based on factors like performance, scalability, community support, and licensing costs.
    • Identify the changes required to migrate the application to a different database provider.
  2. Abstraction Layer:

    • Implement an abstraction layer or repository pattern to isolate the database-specific code.
    • This will make it easier to switch between database providers.
  3. Configuration Options:

    • Add configuration options to specify the database provider and connection string.
    • Support multiple database providers using conditional compilation or dependency injection.
  4. Migration Strategy:

    • Develop a strategy for migrating existing data from MS SQL Server to the new database provider.
    • Consider using EF Core migrations or other migration tools.
  5. Testing:

    • Test the application with different database providers to ensure compatibility and performance.
    • Verify that all features work correctly regardless of the selected database provider.

Acceptance Criteria

  • Research and evaluation of alternative database providers are conducted.
  • An abstraction layer is implemented to isolate database-specific code.
  • Configuration options are added to specify the database provider and connection string.
  • A strategy for migrating data from MS SQL Server to other providers is developed.
  • The application is tested with different database providers.

Priority

Low (Technical Debt)


Additional Notes

  • This feature is marked as Technical Debt because it primarily aims to improve the application's maintainability, portability, and future scalability.
  • Consider the costs and benefits of migrating to a different database provider carefully, as it can be a significant undertaking.
  • If you have no immediate plans to switch database providers, this feature can be deferred to a later milestone.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions