2011年12月28日水曜日

オライリー Cassandraをいただきました!

Cassandra
CassandraEben Hewitt 大谷 晋平

オライリージャパン 2011-12-24
売り上げランキング : 7820


Amazonで詳しく見る by G-Tools

訳者の一人である小林さんから献本を頂いたので早速ざっと目を通してみました。
私自身、Cassandraは0.6辺りからずっと触っているのである程度は理解してはいるつもり。その上で読んだ感想です。

まず最初にRDBMSの説明と弱点。つまりCassandraを含むNoSQLが必要とされた背景の説明。次いでCassandraの説明がはいる。そこでブリューワのCAP定理の説明もはいる。CAP定理に関しては分かり易く説明されてると思う。

続いてCassandraの利用事例。NoSQLはDomain Specific Databaseなので用途や使い所を誤るともう目も当てられない。だからCassandraがどういう用途の為に作られ何に向いているのかはしっかり理解しておこうね。

続いてCassandraのインストールの話。まぁこれはまんますね。これに続いてCassandraのデータモデルの話。RDBMS一筋な仕事場から来た人が恐らく最初に躓く所だと思う。中々構造体を理解出来ない。まぁRDBMSのデータモデルが二次元で収まるのに対して、Cassandraのは3次元な構造だからね。イメージしづらいんだと思う。
ただCassandraのデータモデルはもう一方のNoSQLの雄、HBaseと酷似してるから覚えておいて損はないと思う。

Cassandraのアーキテクチャの話は結構重要だと思う。Cassandraを構成する各種技術やらアルゴリズムって最近流行の分散処理の基本的なモノが多いから、これらを理解しておく事はそういった方面の理解を深める事にもなると思う。仮にCassandra使わないけど分散処理するアプリを作るなら相当参考になると思う。
設定とデータの読み書きに関してかなり詳しく書いてあるのはヨサゲ。この辺り理解しておけばトラブった時にも対応が簡単になるしね。設定に関しては前章のアーキテクチャの話も結構絡んでくるね・・・。
あとここでCassandra最大の問題、レンジゴーストに言及してる。ただこれに関してはもうちっと説明欲しかったな。後対策。

監視やらメンテナンス、後パフォーマンスチューニング等運用に関する情報が多いのもいいね。実際RDBMSの運用と違ってDBが生きたまま、動いたままの状態でメンテやらなにやらやる事が多いから、監視と運用ノウハウは必須。パフォーマンスチューニングはCassandraが動き始めた後と、設計段階でのデータ設計でのチューニングがあるけどここでは基本前者のみかな。まぁデータスキーマの話の所でしっかり理解しておけば事前のチューンは充分出来ると思うけど。

Hadoop連携はまぁHadoop使える位だったら分かるしょ。CassandraよりHadoopの方が遙かに複雑だし・・・。

後は0.8~1.0で搭載された新機能の話。ここで一番大きいのはSQL見たいなQuery言語が使えるCQLかな。CQL使えばSQL脳な人でもかなり使いやすくなると思う。分散カウンタに着いての話もあるけどこっちの機能は・・・。

最後にNoSQL全般の俯瞰。最初の方でも言ったけどNoSQLはDomain Specific Databaseなのでそれぞれの用途と特性をしっかり理解して使わないと危険。そういう意味でここで他のNoSQLがどんなモンかをしっかり理解しておいた方がいいと思う。

まとめ
ネット上に散らばってるCassandraの情報は大体ここに収まってる感じ。だからこれからCassandraを使おうって人はこれ一冊あれば事足りるんじゃないかな。後Cassandraは使わんけど、分散システムには興味或るって人とか、或いは普通にシッステム開発してる人が読んでも結構勉強になると思うよ。

クラウドで実用に耐えるアプリはほぼ分散アーキテクチャなので、従来の構造のアプリしか作った事がない人はこれを読んで分散可能にするにはどうしたらいいかを学ぶといいと思う。


2011年12月22日木曜日

小学生なのはは魔法の取り扱いをミスっても許されるか

子供が失敗を許容されるというのならば、なのはやほむら達が間違った選択をしても許されるだろうか?
或いは子供の将棋の大会で一手を失敗したから許して巻き戻すって事があるだろうか?
なのはの場合あの兄弟な力の元で判断を間違えれば街一つぶっ飛ばす事もあるだろう。
ほむらの場合失敗しても巻き戻ってやり直せるからいいかもしれないが、誤ってしまえば人類は死滅する。
※なお作者はどちらの作品もTVきちんと見てません。

では彼女らと普通の子供は何が違うか。立場と能力だ。
大人であっても新卒、つまり能力も立場もまだない状態であれば失敗はある程度許される。

では大人の失敗は許容されるか?
それは恐らく文化次第だろう。例えばジョブスなんて大失敗を重ねている。しかし彼がいた文化圏では何度もチャンスが与えられるので、、ついに彼は成功にたどり着く事が出来た。
或いは資金が100兆ある企業で10億円の失敗をした所で、それは怒られる事はあれど許容はしてくれるだろう。
では日本ではどうか。
最近、一度盛り上がった話で「一発アウト即退場な日本」と言うのがあった。例えばWeb、会社などで何か世間に広まる失敗を一度でもすれば祭りという形で徹底的に叩かれ、二度とに日の目を浴びないように持って行かれる事が多々ある。
個人的には大嫌いだが、ホリエモンなんかがそうだろう。

「お天道様に顔向け出来ない」って言葉がある位に日本は失敗した事を自他共に根に持っちゃうんだろうね。土地的に移動も出来ないから、皆が自分の失敗をしってる所でしか生活できない。
一方でアメリカなんかは失敗した所で開拓地送りっていう言葉があるくらいに別の場所に行けばまたチャンスはある。

ま、という訳で失敗の許容可否は大人か子供かじゃない。
能力と文化だと思う。
日本の共同体みたいな所じゃ失敗したらそれをしない方が安定するしね。アメリカみたいに移動共同体だったら向こうじゃ失敗したけどこっちじゃ巧くいくかもって形で技術やアイデアすら失敗を許容されてただろうし。

という訳で会社を選ぶ時は「失敗を許容してくれる」会社のがいいかもね。
それはつまり社内に「お前が失敗した所で俺が補填出来るよwww」って高い能力を持った人がいるって事だしネ