「はてな流大規模データ処理」@関西オープンソース2008

はてな 伊藤直也さんによる講演「はてな流大規模データ処理」のメモ。
(ご本人による資料:http://d.hatena.ne.jp/naoya/20081111/1226395400

負荷分散

  • 負荷分散にはCPUの負荷分散とIOの負荷分散がある
    • 前者はマシン増設で済むが、後者はそう単純にはいかない
  • データは全部メモリにキャッシュ
    • (全データ量)<(メモリサイズ)をキープ
    • メモリを増設して解決する問題は増設して済ます
    • メモリの増設で対処できなくなったらキャッシュを複数のマシンに分散させる(最終手段)

MySQLの使い方の実際

  • Key-Valueのストレージ
  • JOINは使わず、クエリーを分割
  • 見苦しい部分はORマッパーが覆い隠す

大規模データ処理への取り組み

  • RDBでがんばるのはムリがある
  • RDBからまとめて取り出しておいたデータを、用途に特化した自前のプログラムで処理する
  • キーワード => 文書
    • 昔:巨大な正規表現、今:TRIE
    • 転置インデックス作成
      • 辞書:アルファベット順、文書:ID順
      • 圧縮率を高くするため
  • Thrift
  • データ数が膨大なので、アルゴリズムの選択が処理時間に露骨に効いてくる
  • Hadoop
  • 検索処理を実装するにあたっては、最新の理論より古典的な理論のほうが実用的だったりする

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)