Database denormalization means adding redundant information into a database to speed up reads. For example, duplicating data across tables is a denormalization process. We duplicate data to reduce Join operations across tables. When the databases grow, join operations become slower. To avoid this, we either use...
This article is part of my notes from Chapter 1 of Designing Data-Intensive Applications by Martin Kleppmann. You can read other chapter notes as well. Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications Chapter 2: Data Models and Query Languages Chapter 3: Data Storage and Retrieval...
Increasing the size of the instances and, for example, increasing the server's memory to handle load changes. Advantages Doesn’t need I/O operations. Processing is within a machine. Data Consistency. Easy implementation. Fast development. Disadvantages Hardware limitations (cannot scale infinitely). Single point of...
Besides load, we have to understand the performance of the system before trying to scale the application. We use performance metrics. These metrics vary in different systems. In batch processing systems, it is throughput (the # of records the system can process per second); in online systems, it's the response time...
To talk about increasing load and scalability, we first need to define the system's current load. There is no one way of doing it as it depends on the project and its architecture, but we use load parameters. These parameters will be different for every application. When we think about Twitter, the load parameter is...
Defining the system load and performance is important to understand scalability. Scalability is the system's ability (performance) to cope with increased load. The load doesn't say anything when it's used alone. The load can be anything, depending on the system's architecture. For Twitter, as an example, it can be...
The size of the project matters a lot in the diseconomy of scale. In Software Estimation, Steve McConnell talks about estimating projects on different scales and considering important factors. Typically, we talk about economies of scale by saying, “If we build five more factories, the cost per unit we produce will...
In hash partitioning, we use hash functions for ranges to distribute data evenly between partitions. The range-based partitions still have the disadvantage of loading one partition with more data. With hash functions, we solve this problem. Putting the identifier into a hash function produces a unique hash. We can...
Elasticity is a service’s ability to handle bursts of traffic. It’s often confused with scalability. Scalability is the ability to handle a large number of concurrent requests. Although these two are different, elastic systems also need scalability. For example, ticketing or bidding systems usually need elastic...
“Strong Consistency, Availability, and Partition tolerance: pick two out of three” — The CAP Theorem PACELC theorem: “In case of network partitioning in a distributed system, one has to choose between Availability and Consistency, but else, even when the system is running normally in the absence of partitions, one...
In a lecture, Patrick Winston said, “Your success in life will be determined largely by your ability to speak, your ability to write, and the quality of your ideas. In that order.” I pondered on that sentence for days. The longer I thought about it, the more I recognized Patrick right. I thought about the leaders I...
Hey friend, You might be in a strange position in your career where you hope to get a promotion soon, but the company seems like have no option for you. They have no new positions for your dream role. This new role can be any kind of leadership. Probably, you may know by now that giving someone the title "senior" is...