You've brought up scalability - specifically on the DB side of things a number of times. When it comes to data as scalability - what are your thoughts about "simply" (a loaded term, I know) having the database handle sharding/partitioning? I know that there will need to be changes in table creation, but would that at least reduce the need for large scale code changes?
Of course, I think the best way to "shard" things is to not try to build massive single instances. "Back in the day" scalability of mail servers, for instance, was dealt with in this way.
Just kind of curious what your thoughts are.