ビッグデータを征す クラウドの技術 Hadoop&NoSQL
発売は既に2週前ですがムック「ビッグデータを征す クラウドの技術 Hadoop&NoSQL」が出ました。以下の過去のASCII.technologies誌の記事がそのまま載っています。
新規の書き下ろし記事も書きました。タイトルは「NoSQLとはなにか?」です。
パーティショニング(シャーディング)とレプリケーションのふたつの側面に注目してNoSQLを解説しました。合わせてCAP定理も説明しました。CAP定理の解説記事は、特にWeb上で初期の頃に書かれた記事は、微妙にごまかされた気分になるものがあります。たとえばCAPのPは分散を意味するので外せない、だからCとAのどちらを取るかを決めなければいけない、などと説明されても納得できません。少なくとも自分はこういう説明に納得できません。
どこで読んだか忘れたので記憶違いかもしれませんが、Pをクライアントとサーバの間のネットワーク分断耐性だと説明しているページがありました。これは明らかな誤りです。クライアントから見て、ネットワーク障害でサーバにつなげないことと、サーバそのものが落ちてつなげないこと(CAPのA)は、CAP定理の視点では違いがありません。Pをこのように解釈したらAと同じことを言っているだけになります。
Pはサーバとサーバの間のネットワーク分断の耐性です。この耐性を考慮する必要があるのはサーバ間でレプリケーションをした場合です。では、なぜレプリケーションが必要かと言うとサーバが落ちた時の可用性(A)のためです。Aを上げるためにレプリケーションを非同期にすると古いデータを読む可能性があり一貫性に支障がでます(CAPのC)。とこんな感じにこれ以上続けると記事の再録みたいになるのでこの辺でやめておきます。記事はもう少し丁寧に書いています。
NoSQLの話は「実践JS サーバサイド JavaScript 入門」にも書きましたが、このムックと補完関係になっています。NoSQLのデータモデルに関しては「実践JS サーバサイド JavaScript 入門」のほうが詳しいので書籍を読んでください。分散処理の話はムックにしか書いていません。
参考までにCAP定理の証明論文のリンクを張っておきます。
この論文の良い点は短いところです。全12ページですが、事実上の証明部分は2ページもありません。悪いところは、(自分だけかもしれませんが)ごまかされたような気分になるところです。
この論文のもうひとつ良い点は、CAP定理のよくある質問「CAPのCとACIDのC(あるいはA)って同じですか?」に対して明解に回答が書いてあるところです。いちいち論文を読む人はいないと思うので答えを書いておくと「違う」が回答です。どう違うかは論文を読むか(3ページ目の脚注3)、ムックの記事を読んでください。
最近のコメント