Twitter’s Manhattan database system offers three key lessons in design. First, redundancy is essential. Manhattan stores multiple copies of data across different servers, ensuring that even if one server fails, the data is still available. This is a crucial aspect of maintaining a service that is always accessible.
Second, flexibility is paramount. Initially, Manhattan was built to be a key-value store. However, it has evolved to support a variety of different data types and query models. This adaptability allows Twitter to use Manhattan for a wide range of tasks, from storing tweets to managing ad campaigns.
Finally, the importance of balancing consistency and availability cannot be overstated. In a distributed system like Manhattan, it’s difficult to keep all copies of data in sync at all times. Twitter uses a strategy called “eventual consistency” to manage this, where updates are propagated through the system over time. This ensures that data remains consistent, while also keeping the service available.
In essence, the design principles of redundancy, flexibility, and balance between consistency and availability make Manhattan a robust and versatile database system.
Go to source article: http://gigaom.com/2014/05/12/3-lessons-in-database-design-from-the-team-behind-twitters-manhattan/