Distributed Meme

#devfest_jpで気になった用語を調べていきます。

Distributed Meme
・Divide & conquer (分割統治)
  データと処理をTaskQueueに渡したり。
  システム全部止めてバッチ処理なんてこといならないようにする。

・Sharding (訳語はなんだろう? Shared Nothing)
  Database Sharding
  http://www.codefutures.com/database-sharding/
  ↑この記事を日本語で解説してくれている記事。参考になりました。
  http://agilecat.wordpress.com/2009/06/28/database-sharding-_1/
  (これを読むとShardingとは、Googleによる造語らしい。)
  
  例えばfig.3 にBookstoreスキーマをShardingした例がある。
  これを見るとcustomerテーブルをcustomer.idごとに分割して別の
  shard(断片)に格納しておいて、customterテーブルを参照する子テーブル
  であるcustomer_orderとかはcustomer.idごとに別shardに格納される。
  つまりcustomerをルートとするデータのツリーをshardごとに格納して
  cross shard な joinが発生しないようにする、ということ。

・Tolerate / expect failure (失敗への耐性)
  データセンターでは機器の故障は分から秒の単位で起こる。

・Idempotency (冪等性)
  失敗して再試行することを前提に、何度実行しても同じ
  結果になるような操作を定義しておく。
 
・Just scale it up (スケールアップせよ)
  スケールアップしろと。

つづく