You are right, the answer to this question is not easy. And when you look at a scenario like this, we have to attack this requirement from all sides. As far as database(s) systems are concerned you obviously need to have powerful servers, but that alone just might not be enough given your requirement. We have to take the path of scaling-out. While you can have a lot of case studies and articles in the net on this subject, the battle doesn't end there. It's just the beginning to put it precisely in context. You can have a really wonderful infrastructure, but a much of it will go wasted if the application itself is not coded properly. So, apart from looking at the architecture we have to be specifically good on the application and database design. For example, you can have muscular servers but if your indexes are not properly designed how much will all those raw power help as data keeps growing, even it will not work if it's the other way round. Then comes, the point of finding and doing away with any point(s) of bottleneck. Like, you have web servers which sadly outnumbers database servers very badly. Then comes one of the most important part, Storage. You can have loads of space for your growing database (feel free to read it business :-), but will it help if performance is concerned. With all the mighty servers and designs, if you don't have a good SAN and intelligent db file allocation, you choke out here. And then comes choosing the right option! The vendors can have very impressive sales speech, but please don't fall for those. Make sure you buy more than the salesman's air ;-) It is very important that we Test a lot before we settle for any solution and keep all things aligned and reasonable. The key word is "Balance"...

Pradyumna