The problem you are describing is exactly what page providers were created for, i.e. using an external data source to populate EPiServer pages and properties.
Page providers can be used with very large data sets, but you do have to take care on the performance side. How many pages are you talking about here? I have got page providers to serve 10,000+ pages, but you do have to develop very tight data management, use a lot of caching and consider organising your pages into categories on the fly to make it easier for editors.
I've blogged about page providers for large data sets on this site - the article lives here:
We are looking at Page Providers and they are the perfect solution. Except that we have an extremely large set of data that can have up to 1000 documents in a category. If we, like you see, try to segment the data, we loose its hierarchy in the url. We are trying to optimize our provider to see if we can work around this. The cool thing would not to show the documents in the tree (which is the main performance hit) but able to have the page served with its id.
I have a page that fetched data from an external data source. For performance reasons, I cannot use page providers because the set is way too large. Instead, we decided to use a page like Article.aspx?articleid=234.
This leads to my questions:
1) Is there a way for me to dynamically populate the properties to my page in edit mode?
i.e. My article has a description which use to populate the ArticleProperty in my template in my page_load. The thing is I am unable to persist the querystring in edit mode and so I lose context. Furthermore, when the page is saved I would then be able to persist this data back to my data store.