Relational database systems (Rdbs) are not very good at managing very large databases. As we saw in Chapter 10, NoSQL Databases, that was one major reason why NoSQL database systems were developed.
There are two approaches to managing increasingly large datasets: vertical scaling and horizontal scaling. Vertical scaling refers to the strategy of increasing the capacity of a single server by upgrading to more powerful CPUs, more main memory, and more storage space. Horizontal scaling refers to the redistribution of the dataset by increasing the number of servers in the system. Vertical scaling has the advantage that it does not require any significant retooling of existing software; its main disadvantage is that it is more tightly limited than horizontal scaling. The main problem with horizontal scaling is that it does require adjustments in the software. But as we have seen, frameworks like MapReduce have made many of those adjustments quite manageable...