There are two issues with the current edge-based storage:
- The relationship is three-legged: <projectPHID, columnPHID, objectPHID>. If we have a task and a list of projects, we can not efficiently load the columns that task is in. Instead, we have to load all columns the task is in, or all columns those projects have. Both queries are potentially explosive in terms of the number of objects returned.
- We don't have anywhere to store ordering for the "keep things where I put them" ordering in T4807.