【レポート】
キーノートにおいて、Facebookの環境は以下のようになっていると発表された。
ユーザー数や台数、クエリ量、メモリ量などは桁違いに多いのがわかる。memcachedのヒット率95%や、memcachedとMySQLサーバの台数/メモリ搭載量の比率など、参考になる数値も多い。
Facebookのアーキテクチャの話に入る前に、前提知識として、MySQLやキャッシュサーバ(memcached)が、一般的にどのように使われているかを簡単に紹介しよう。この構成は日本でもよく使われている。
アプリケーションの規模が大きくなるに従って、1台のMySQLサーバでは処理が追いつかなくなるケースが出てくる。処理が追いつかなくなる原因としては、大きく分けて以下の2つ(およびその混合)が挙げられる。
読み込みが多い場合は、「スレーブの追加」や後述の「キャッシュサーバ」の追加によって、本体のMySQLサーバ(マスター)への負荷を軽減できる。一方で書き込みが多い場合やデータ量が多い場合は、マスター1台ではディスクI/Oネックになって、効率的に処理を行なえない。そこで「アプリケーションパーティショニング(Sharding)」方式によって、複数台のマスターを用意し、大量のデータと書き込み要求を分散させる。多くの大規模環境では、これらを組み合わせた形を取っている。
アプリケーションパーティショニングがうまくいく(リニアにスケールする)かどうかは、アプリケーションがどのように作られているかに大きく依存する。多くの場合、機能別に分けたり、ユーザーごとに分けたりするが、大きな副作用としてジョインがやりづらくなるという点がある。ジョインを使えばずっと効率良く書けるクエリも、アプリケーション側で処理しなければならなくなるので非効率になる。そのため、できるだけ効率が良くなるようなテーブル設計なども重要なポイントになってくる。
| iOS向けSPDYライブラリが登場、普及はじまるSPDY [11:57 2/9] |
| GitHubのアクティブプロジェクト、もっとも多いのはMITライセンス [11:42 2/9] |
| BIND 9系のすべてに重要度の高い脆弱性 [10:00 2/9] |
| Nginx強く成長、Webサーバとして確固たるポジションに - Netcraft [09:56 2/9] |
| Kubuntuへの資金提供を廃止 - Canonical [09:53 2/9] |
|
【2月9日】今朝のエンタメニュース放映時間ランキングTOP10 [16:22 2/9] エンタメ |
|
ギリシャ支援を巡る交渉の行く末に関心が集まる [16:16 2/9] ライフ |
|
カカクコム、レストランのオンライン予約「食べログヨヤク」を公開 [16:12 2/9] ネット |
|
【レポート】旨すぎ! カルビー揚げたて「ポテトチップス」はここで食べられる!! [16:07 2/9] ライフ |
|
ポリカーボネートMacBookが完全に販売終了 - 教育市場向け販売も終了 [16:04 2/9] パソコン |