I'd either make my own CatalogAware-alike mixin class that did things a bit differently than CatalogAware (perhaps didn't index on add, and didn't unindex on delete), or I'd just manage the whole lot completely manually. (How often will each of these million objects change?)
Not often. But new objects will be added to them quite frequently. Catalog aware ones.
Why CatalogAware? You do know that the only thing CatalogAware does is add/remove/reindex objects in one particular Catalog when they're added, removed, or changed? You can likely afford to do that yourself if you've got the serious business of having a million similar objects to deal with. It's a trivial amount of code, and you'll likely discover that you didn't really want CatalogAware in the first place if they're not going to be changed on a regular basis. CatalogAware is something that is useful if you have a relatively small number of frequently-changing objects that often need their data reindexed on change. It certainly doesn't sound like you need this.
CatalogAware is fairly ancient code at this point, and I don't think it was written with the mindset that there would be a million objects in any particular catalog.
Hm... I'll give it some thought. If it works the way it is now, I'm sufficiently happy. If not: late nights making ErikAwareness ;).
One late 1/2 hour more likely... ;-)