Horizontal partitioning with PL/Proxy
If splitting data among several sub-tables on a single server improves performance, than surely splitting it similar among multiple servers would be even better, right? That's the theory behind PL/Proxy, a procedural language specifically designed to make that easier, refer http://pgfoundry.org/projects/plproxy/.
PL/Proxy was designed to fit the database scaling needs of Skype, which includes a target of serving a billion users at once. When you have that kind of user base, you just can't fit everyone on a single server.
The basic premise of PL/Proxy is that you first insulate access to the database behind the database functions (also known as stored procedures). Let's say you want to grab a username field that uniquely identifies a user. Rather than selecting it from a table, instead you'd call a function that returns a username. This style of database design is popular for other reasons too, because it allows refactoring the...