Scaling up
The vertical scheduling is to put more memory capacity (main and/or mass) and processing. Ie, is to buy a more powerful hardware to handle.
In some cases just create more processes/threads who’s doing the scaling up, since the hardware already supports this increase. There are cases that separating the database on multiple storage devices is already a vertical scale, again is scaling on the same machine.
The investment is basically in hardware. Buying more processor. Memory and storage already has an increased capacity.
In some cases it is more a matter of making a simple configuration to achieve what the single hardware already supports.
It can also be to optimize the application so that it performs better and meets more than before.
Scaling out
The horizontal scheduling is to put more computers to do the job. Of course they add more processing capacity and memory too, in total sum.
It is much more complex to scale horizontally both from a management and programming point of view, even though there are tools to make it easier. It’s not just putting in the computers, they need to "speak up" consistently and appropriately. Actually this is considered the most difficult problems to solve in computing.
Incredible as it may seem can be cheaper than the vertical, at least in the cost of acquiring the infrastructure since it is possible to acquire simpler and more common hardware that is usually cheaper by the production scale. Of course the cost of management and development can change the total cost.
Apart from the cases that the vertical would not hold the need, after all this strategy has a limit that in theory the horizontal does not have, the horizontal has the advantage of being more tolerant to failures, or at least be easier to have the operation back in case of some failure.
Differences
Any minimally structured database can do both types of scheduling. The vertical does not need any specific property except in the case of separating data on multiple storage devices or allowing multiple processing lines, so it is not simple to do in certain modelling. The horizontal needs mechanisms that allow and, if possible, facilitate horizontal scaling. It doesn’t matter if it’s a nonrelational type or not, whether it uses SQL or not.
I don’t know any other guys, I don’t even know if it’s possible. There are variations of these forms, mainly horizontal there are many strategies and techniques. Can also do a hybrid scheduling.
Applications that need a horizontal scale are rare. At least in the same scale sense. It may be useful to do so because of the greater reliability of having more than one node meeting the requests, but not because it needs more resources. The bulk of the need comes from high demand web applications or very specific processing.
It may not look the same but it has a question that is related, showing that scaling anything horizontally may seem like the solution, but it does not always solve or compensate for the difficulty that is inherent in it.
See: http://stackoverflow.com/questions/11707879/difference-between-scaling-horizontally-and-vertically-for-databases
– Marconi