Durability and availability
When designing data storage systems, it is important to distinguish between the properties of availability and durability. Availability is a measure of the probability that the system is able to accept reads and writes at any given point in time. Durability is a measure of the probability that once a write has been accepted (in PostgreSQL, this means a successful transaction commit), that information will not be lost. All real systems must pick a compromise between availability, durability, performance, and cost.
For a simple example, we can consider a cluster consisting of two database servers. One is running as the primary server, accepting writes from our application. The other one is running as a standby, replicating to the primary changes if something bad, such as a crash, happens. The question we have to answer now is how many changes we can afford to lose and how often. In some systems, such as those collecting sensor statistics, it's not a huge tragedy...