Andreas Kupries suggests a high level architecture based on maintaining two separate entities: a Mirror and a PackagePedia:
split Mirror
from PackagePedia
different use cases - their schemata can be connected, but do not overlap.
Mirror: Backing up Repositories - Which provide Packages Pedia : Keeping order about (Projects, Variants) Packages - Have sources In Repositores