Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/835-e9e33d39

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

伊藤直也、田中慎司『[Web開発者のための]大規模サービス技術入門』


はてなのインターンシップの講義資料。大規模なWebサービスをいかにして運営するかを解説している。大規模とは、月間アクセス数が数十億、物理サーバーが500台以上。グーグルやフェイスブックの超大規模サイトとは異なる。インターンシップの講義録だからか、基礎レベルからきちんと解説しているし、実践的で面白い。2010年の本なので、この分野ではすでにやや古い本かもしれない。例えば利用しているクラウドサービスはAWSのCDNであるCloudfrontのみ(p.236f)であったり。使われているサービスはいまとは違うのだろうが、基本的な考えとしてはとても参考になる。

大規模データ処理の勘所は3つだ(p.44f)。メモリを最大限活用する、データ量の増加に強いアルゴリズムやデータ構造、データ圧縮と情報検索技術。メモリについてはOSがメモリを扱う仕組みや、ディスクとメモリのI/O速度の違いが基礎から解説される。そして、メモリに乗る限りのデータを乗せて、ページキャッシュを利かせたほうがよいとされる。アルゴリズムについても計算量の考えに基づいて、B+木などの構造が書かれている。より効率的なアルゴリズムやデータ構造を演習として作ってみる、などの箇所もある。アルゴリズムとデータ構造のところは個人的にとても面白かった。そして、データ圧縮はVB Codeという数値データの圧縮方法を詳しく追って理解するようになっている。

サーバーやネットワークの可用性やスケーラビリティをいかに確保するかについては第二部で書かれている。総じて、はてなで実践的に得られてきた情報が多く、とても面白い。もっとも印象に残ったのは、DBのテーブルを後に他のDBとして分割する可能性を考えて、SQLでJOINをなるべく使わないという方針(p.100-103)。これはRDBMSの本質的概念を否定することになるが、たしかに実践では有効なアイデアだ。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/835-e9e33d39

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。