 <p>I'd hybrid this. <strong>Design it for the ability to use separate databases, but don't separate until there is a clear performance benefit.</strong></p> <p>Design your application so that multiple clients can exist in the same database. (i.e. build a layer of separation between client data). Then plan for it all to be in one database.</p> <p>That way, you don't overarchitect your solution to start out with, but it gives you the flexibility to spin off very high-usage clients to a dedicated database. If your database exists with only one client in it, so what? This will also save on server costs so that you can be sure that you're using the hardware investment in a reasonable way already before adding more capacity.</p>