Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Scalability is all about the location of the data, how it's retrieved and how it's updated. The implementation language is almost irrelevant.</p> <p>If you have a single source of truth, it immediately becomes the bottleneck. That may not, yet, be so bad. If the bottleneck is 50,000 QPS, you will probably not need to fix it for a while.</p> <p>You ask a lot about Facebook and then explain that you don't want to build one. Scaling a system is all about choosing a design that suits the data you are trying to serve. So unless you give us some ideas what you want to build, helping you design the scalling is quite hard. </p> <p>As a trivial but specific example, the data storage designs for Google's websearch and GMail systems are totally, totally different. Both are pretty fast, but their designs are different because the data, its usage pattern, its updates and its characteristics are all very different.</p> <p>To begin the data design process, start with an idea of what data you need. Then think about</p> <ol> <li><p>Global consistency - do all users need to see a consistent view of the data? If so, scaling is going to be very hard. (Think about Facebook, GMail, and Stackoverflow - in these cases, you and I don't need to see an instantaneously consistent view of the data).</p></li> <li><p>Durability - is it ever acceptable to lose updates? If no, you will need to persist all data (in enough different places that hardware loss is not an issue, remembering that you are not willing to lose updates) before telling the caller that the request is done. </p></li> <li><p>Performance - what are the user's performance needs?</p></li> </ol> <p>In most systems, you can only design to get two of those three things, and you have to sacrifice the third one to do so. </p> <p>Draw a diagram of your design. Point to each box on it (a box would be a computer, a router, a database instance, a disk, an in-memory data structure, etc., but not a table or a database row). Ask, "how many of these can we have, maximum?" If the answer is "1", then your design is not scalable. If the answer is "as many as you like, but they need to be synchronised", that's going to be your scaling challenge; take a look again at the numbered points above.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload