How would you deal with an aggregate root that has a large set/ collection? Here's a concrete example similar to what I'm currently working on:
Say I'm working on an application that helps an academic institute scheduling their courses. An "Instructor" can schedule a "Course" for any time in the future (no max limit). An invariant rule concerning scheduling a course says that scheduling a course that overlaps with an existing one by the same instructor is not allowed.
My solution was to have an aggregate whose root is an instructor plan. The root "has-a" collection of courses planned for that instructor which allows determining the consistency of this aggregate by checking the validity of the aforementioned invariant.
The problem is that as the system grows, this list of planned courses may become huge, and I don't think it would be wise to fully load it as I'm assuming it would have a big footprint on the memory (something we're already struggling with in this application).
Is it good design decision to limit loading the collection of courses to a specific period e.g.: for a week or a month? or even better the ones in the future?