In this post I will provide basic information on SMP and MPP systems, a high level architecture of those and what factors to consider when using one or the other.
SMP is a multi processor system where multiple processors share resources. The shared resources are - single instances of memory, I/O devices (Storage) and Operating System. These resource are connected using a common bus. The processing happens within the processor cores in parallel, however, the other system resources are shared. In an SMP system - it is a single physical machine having multiple CPU cores. When it comes to scalability - SMP systems can only be scaled up i.e. these systems can only be scaled vertically.
These systems consists of a master node and multiple compute nodes which do not share memory. Each node has its own operating system and memory. Master node is responsible for co-ordinating the processes among compute nodes communicates using a high speed messaging interface. Storage can be shared or not, and based on this it is called shared storage (disk) or shared nothing MPP architecture.
Shared Nothing MPP - This is the most popular MPP architecture used by most commercially available MPP systems. In this, there is no single point of contention across the system. Each node has its seperate memory and disk storage. Data is partitioned across the nodes (distributed data). Data from one table can span over multiple nodes based on the distribution methodolgy used. For processing, each node only processes the data rows on its corresponding disks. For scalability we can add more nodes with their corresponding memory and disk storage i.e. horizontal scaling or scaling out.