In partitioned databases, trading some consistency for availability
can lead to dramatic improvements in scalability.
Web applications have grown in popularity over the past
decade. Whether you are building an application for end
users or application developers (i.e., services), your hope
is most likely that your application will find broad adoption—and with broad adoption will come transactional
growth. If your application relies upon persistence, then
data storage will probably become your bottleneck.
There are two strategies for scaling any application.
The first, and by far the easiest, is vertical scaling: moving
the application to larger computers. Vertical scaling works
reasonably well for data but has several limitations. The
most obvious limitation is outgrowing the capacity of the
largest system available. Vertical scaling is also expensive,
as adding transactional capacity usually requires purchasing the next larger system. Vertical scaling often creates
vendor lock, further adding to costs.
Horizontal scaling offers more flexibility but is also
considerably more complex. Horizontal data scaling
can be performed along two vectors. Functional scaling
involves grouping data by function and spreading func-
DAN PRITCHETT, EBAY