これは予定外だけど、スクリプト言語らしいので一応読んでみる。
メモ:
- 型のある script language ... お、いいね。そういうの、好き。
- ex. input の sum:
- total: table sum of int;
- x: float = input;
- emit total <- x;
- domain specific language ですかね。
- 今朝こんな言語作ってみたんだけどどうかな、、、なんてやってんだろうね。楽しそう。
- GFS
- MapReduce ... execution model
- Sawzall runs in the map phase. ↓これ
- map(in_key, in_value) -> list(out_key, intermediate_value)
- The aggregators run in the reduce phase. ... emit してるやつ
- at the statement level Sawzall is a fairly ordinary language
- それほどでも
- 統計っぽい香りのする The Aggregators
- Collection ... Ruby の collect{|x| x}
- Sample ... 無作為抽出
- Sum, Maximum ... [].sum, [].max
- Quantile ... これは統計っぽいな。R (S-plus) みたい
- Top, Uniq etc.
- 無駄なトラフィックが出ないように最適化します!!
- Sum だったら subtotal でいいよね。とか。
- いや最適というか、Sum のインプリがそうなっているってだけか。
- indexed aggregator
- out_key もうまく使いましょ。
- saw の起動
- プログラム, queue, 入力ファイル指定、出力ファイル?指定。至極ストレートな感じ。
- /gfs/cluster1/... だって。 /gfs/で普通の Linux file system と区別してる?
- reduce phase の worker 数指定もできる。
- Implement
- Chaining ... お、、とおもったら、ちょっと薄いな。
- Domain-specific Property
- def ... nil?
- Quantifier ... まあそうね。ruby と R を比較対象にしてるもんで、さほど感動はない。
- Performance
- script にしてはがんばってるな。こんだけ強い型付きでだったら C++ とかと比べても良さそうだ。え、10倍遅い。まあ、、、いいか。 C++へのconverter とか簡単そうだけど。まあ、ボトルネックは script じゃあないってことだな。
- まあ、DSL の例ですかね。
- 特に何かを期待していた訳ではないけど、、、、まあ、型があるのはいいね。
- このへんは人(プログラマ)との接点(インタフェース)なわけで。機能性能が全てって訳ではないわな。
- GFS とか BigTable に限らず、分散DBを扱うってのはこういう感じなんですかね、、。
- DBって殆ど使ったことないんだよな、、、、。ちょっとは勉強するかな。

