Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>When you talk about scaling at the size of Facebook, is a whole different ball park. Latest estimates put Facebook datacenter at about <a href="http://www.datacenterknowledge.com/archives/2010/06/28/facebook-server-count-60000-or-more/" rel="nofollow noreferrer">60000 servers</a> (sixty thousand). Only the cache is estimated to be at about <a href="http://perspectives.mvdirona.com/2010/06/20/FacebookSoftwareUse.aspx" rel="nofollow noreferrer">30 TB</a> (terabytes) ina a masive <a href="http://www.facebook.com/note.php?note_id=39391378919" rel="nofollow noreferrer">Memcached cluster</a>. Although their back end is stil MySQL, is used as a pure key-value store, according to publicly <a href="http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/" rel="nofollow noreferrer">available information</a>:</p> <blockquote> <ul> <li>Facebook uses MySQL, but primarily as a key-value persistent storage, moving joins and logic onto the web servers since optimizations are easier to perform there (on the “other side” of the Memcached layer).</li> </ul> </blockquote> <p>There are various other technologies in use there:</p> <ul> <li><a href="http://wiki.github.com/facebook/hiphop-php/" rel="nofollow noreferrer">HipHop</a> to compile PHP into native code</li> <li><a href="http://www.facebook.com/note.php?note_id=76191543919" rel="nofollow noreferrer">Haystack</a> for media (photo) storage</li> <li><a href="http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919" rel="nofollow noreferrer">BigPipe</a> for HTTP delivery</li> <li><a href="http://cassandra.apache.org/" rel="nofollow noreferrer">Cassandra</a> for Inbox search</li> </ul> <p>You can also watch this year SIGMOD 2010 key address <a href="http://hosted.mediasite.com/mediasite/Viewer/?peid=459a9f2cb92d4830b40d3e64003a50e61d" rel="nofollow noreferrer">Building Facebook: Performance at big scale</a>. They even present their basic internal API:</p> <pre><code>cache_get ($ids, 'cache_function', $cache_params, 'db_function', $db_params); </code></pre> <p>So if you connect the dots you'll see that at such scale you no longer talk about a 'big database'. You talk about huge clusters of services, key-value storage partitioned across thousands of servers, many technologies used together and so on and so forth.</p> <p>As a side note, you can also see a pretty good presentation of <a href="http://www.sdsqlug.org/presentations/May2009/MySpace_DB_Overview.pptx" rel="nofollow noreferrer">MySpace internals</a>. Although the technology stack is completely different (Microsoft .Net and SQL Server based, with a huge emphasis on message passing via <a href="http://rusanu.com/2009/07/26/myspace-uses-sql-server-service-broker-to-protect-integrity-of-1-petabyte-of-data/" rel="nofollow noreferrer">Service Broker</a>) there are similar points in how they approach storage. To sum up: <strong>application layer partitioning</strong>. </p>
    singulars
    1. This table or related slice is empty.
    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.
    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