learningequality / learningequality/morango

Morango memory performance improvements

Open
#279 0 comments 0 reactions 1 assignee View on GitHub

@bjester is already working on this.

Since Jan 7, 2026.

TAG: performance
Dominant language
Python
Stars
15
Forks
23
PR merge metrics
No merged PRs in 30d

Description

What problem are we solving?

  • Memory consumption performance issues with large syncs
  • Addressing architectural things that will further enhance “streaming” syncs

How do we know this is successful?

  • When a large instance (VF DRC on BCK) can sync with KDP, without getting OOM killed on either side

Who is this for?

  • Our own sanity
  • Our users and timely access to their facility data

Are there any assumptions or constraints?

  • We’re likely not going to make the sync any faster by addressing memory issues
    • Although, with proactive planning, we can lay out the improvements to later on address the loss of speed with more drastic restructuring of the sync process itself
  • We should ensure we have locking mechanisms in place to prevent concurrent syncing complications

What approaches/risks were discussed during planning?

  • Overall, breaking down the syncing process into ETL (extract, transform, load) procedures
    • Source models →Transform → Store
    • Store → Transform → Buffer
    • Buffer → Transfer → Buffer
    • Buffer → Transform → Store
    • Store → Transform → Source models
  • Morango doesn’t differentiate between single field updates and full record updates
  • Feasibility of progress tracking in queuing, serialization, dequeuing, and deserialization
  • How the data structure or handling will change with other planned work— possibly integrating CRDTs
  • Managing foreign keys and data relationships to ensure data integrity

What is out of scope?

  • Addressing slow queries
  • Directly addressing speed performance loss

Acceptance Criteria

  • Backwards compatibility
  • Improved memory performance for both Postgres and SQLite database backends
  • Architectural improvements that will enable us to scale it further

Workspace & Resources

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.