# Is the following a good question for this site, or does it belong on cs.SE?

Does this question belong on cstheory or cs?

Suppose that one has a choice of two systems:

1. A single, centralized system that can process $X$ requests per second
2. A distributed system with $N$ servers, each of which can process $Y$ requests per second.
• Each small server costs $Q$ dollars
• $Y < X$, but $N * Y > X$. This models the common case where one can choose between one large server or many smaller servers, which together are more powerful than the large server.
• The servers are connected by a network (or networks) with bandwidth $B$ and latency $T$. You can choose any reasonable topology for the network, but it must be realistic (as in used in practice).

Suppose also that:

• Profit is proportional to the rate $R$ at which we can accept messages (so we want to maximize that).
• Messages arrive (on average) uniformly at each server.
• this is the key point: each message requires a database query. The data is stored on the servers. Storage for the servers (both small and large) costs $C$ per unit size up to a limit $S$ for the small servers and $L$ for the large one, with $S < L$. The data can all fit on the large server, but must be distributed among the small servers.

The question is: When is it better to use the single large server (vs. the larger server), in terms of throughput?