3 ms·
"The idea that databases are a bottleneck in web-projects is an all-too-common misconception. A well designed system is balanced: when the input load increases,
by johansch 11y ago
"The idea that databases are a bottleneck in web-projects is an all-too-common misconception. A well designed system is balanced: when the input load increases, all parts of the system take the hit. Likewise, when a certain threshold is reached, all components – not just the hard disk database, but the processor and the network part – are hit. Given this reality, the processing power of the application cluster is arguably the most important factor"
Oh my. Where do we begin? I guess, using this logic, the language that is just the exact amount of slow to match whatever database workload you have is the optimal language.
Because, as we all know, all parts must be equally balanced, otherwise it's not optimized. So if you need to use 100 mysql servers, you better darned use 100 computing servers of equal computing power, because if you only use 50 you're not balanced.
- robbrown451 11y ago"when the input load increases, all parts of the system take the hit. " "if you need to use 100 mysql servers, you better darned use 100 computing servers of equal computing power, because if you only use 50 you're not balanced." The second does not follow from the first.
- johansch 11y agoYou quoted too selectively. "A well designed system is balanced: when the input load increases, all parts of the system take the hit." "Given this reality, the processing power of the application cluster is arguably the most important factor." It's just nonsense anyway your look at it, really.
- alexeyrybak 11y agoPardon, are you sure there was anything about being "equally balanced"? Why 100 databases lead to 100 app servers? I'm afraid the key point is missed: in a balanced system, when input load increases, all parts should slow down all together. Means you just need to have a "proper" proportion of resources in various parts of the system. No need to have 100 apps if your MySQL cluster dies only at 25% cpu load on the apps cluster. This might just indicate you better have 25 app servers vs 100 databases, and spend the rest of money proportionally on both clusters (assuming you only have apps and databases). And a good balance also doesnt mean you have perfectly designed or optimized system. These are different things.
- johansch 11y agoI think I understand what you mean now (by stretching my imagination quite a bit). This was not really conveyed in what I assume is your blog post though. And regardless of language difficulties on your side (which we should try to overlook), the conclusion that app server performance is more important than database server performance is left completely unfounded.
- cakoose 11y ago"Given [a well-designed/balanced system], the processing power of the application cluster is arguably the most important factor." That doesn't follow. You can have a well-designed system where the PHP code only contributes 10% latency and resource usage, in which case the PHP code is clearly not the most important factor. "This might just indicate you better have 25 app servers vs 100 databases and spend the rest of money proportionally on both clusters." Exactly. What matters is proportion of latency or resource usage contributed by the PHP code, and that can vary a lot between well-designed systems. The property of being "balanced" doesn't automatically make your PHP application cluster "the most important factor".
- alexeyrybak 11y ago"The most important" phrase is misleading, I agree. The idea was to underline the importance of cpu resources on apps cluster but not to state it's the most important thing, the main, the one, always. You are correct.