Skip to content

🚀 Migrate Database from SQLite to MySQL #36

@dcccalvin

Description

@dcccalvin

📌 Description

SkyLog is currently using SQLite as the default database for development and data persistence. While SQLite is suitable for lightweight applications and local development, it lacks the scalability, concurrency handling, and advanced feature set required for more robust, production-grade applications.

To better support the future growth of SkyLog—including features such as multi-user access, concurrent logging, and more complex relational data models—we need to migrate the database engine from SQLite to MySQL.

🧩 Motivation

Here are a few reasons driving this migration:

  • Production-readiness: MySQL offers better performance and reliability under production workloads compared to SQLite.
  • Concurrency Support: SQLite is not optimized for multiple simultaneous write operations, which may become a bottleneck as user adoption increases.
  • Advanced Features: MySQL supports a broader range of features such as stored procedures, views, triggers, and better indexing strategies.
  • Data Integrity & Scaling: As the logbook data grows, a more powerful DBMS is needed to maintain integrity, backup/restore, and support complex queries efficiently.

⚠️ Impact

  • This change will affect all local and deployed instances of the application.
  • Any existing data in SQLite may need to be migrated or transformed to MySQL-compatible formats.
  • The DATABASES setting in settings.py will require updates.

📅 Next Steps

This issue is to serve as a discussion and tracking point for the transition. Implementation details, planning for data migration, and updating documentation will be addressed in follow-up issues or PRs.


🛠️ Note: This issue assumes the decision to switch to MySQL has already been made and is non-negotiable. Please do not suggest alternatives here—let's focus this thread on preparing for and executing the transition.

Metadata

Metadata

Assignees

Labels

BackendThis is a backend issueFeatureNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions