ソフトウェアデザイン5月号

「Riakはなぜデータをなくさないか」シリーズ3回目。最後はリードリペアとAAEの説明。これでRiakの最も重要な特徴である、耐障害性と可用性についての解説がひと通り終わったことになる。「Mongoと何が違うの?」「えーCassandraでいいじゃん」という方は私がいくらでも説明するが、私と話すのが面倒だという方はここ三回のシリーズを読むとRiakのことがわかり、MongoとCassandraとの違いも自ずと分かるようになっている*1

私自身も、今年1月の筑波での講演、この連載の記事を書いているうちにだんだんとデータベースの本質を理解することができたといっても過言ではない。私のように勤勉でない人間はインプットよりもアウトプットすることの方が重要なのである。そういう意味で、この連載の機会をくださったソフトウェアデザイン誌には非常に感謝している。電子書籍でも買えるようになったのでみなさん一人一冊買うべき。

あと、これで連載終わりで*2、まあよくも1年間毎月締切と戦ったなあと思う。ご愛読いただいた皆様、本当にありがとうございました。もし、もっとRiakとかデータベースの話を読みたいという方がいらしたら、Riakのライセンスを10本ほど買っていただければ何か文章を進呈いたしますのでご連絡をお待ちしております。

*1:記事そのものには競合製品のことは書いていません

*2:やめるのは単に本業が忙しくなったからです

最近みた映画

やはり趣味があった方がいいよね、というので最近はいくつかのことを並列で試してる。その中のひとつが映画だ。といっても、うちにあるAppleTVで適当にレンタルして観ているだけなのだが、それなりに便利だ。思ったより品揃えが少ないのだが、面白そうなものがありすぎて悩むよりはよい。というわけで、ここ数週間で観たものをメモ。

アイアンマン(1枚組) [DVD]

アイアンマン(1枚組) [DVD]

先にアベンジャーズを観ていたので、アイアンマンは気になっていた。トニー・スタークのアメリカ~ンな感じが安心して見ていられる。科学的にはオイオイそんなので大丈夫なのかとか、国に売る兵器に会社のロゴなんて入るもんなのかとか、まあいろいろ気になるんだけどグウィネス・パルトロウは美人ですね。ちなみに地上波で一度観ていたのを、40分くらいの時点でやっと思い出した。

アイアンマン2 [DVD]

アイアンマン2 [DVD]

前作が面白いので、続編も見ました。

バイオハザードV リトリビューション [DVD]

バイオハザードV リトリビューション [DVD]

映画はResident Evilと名前を変えているのだけども、なんか4まで見ちゃったので惰性で、ね。


カーズ [DVD]

カーズ [DVD]

スティーブ・ジョブズの伝記を10年位前に読んだときは(これですねスティーブ・ジョブズ-偶像復活)へーピクサーってそんなもんなのかーと思っていたし、モンスターズ・インクを観たときは、子供向けに面白い物作るなあ、と思っていたのだけど、カーズはもう1ランク上の映画になっている。なんというか、もうアニメってレベルじゃねー。GCはここまで進化するんだー、というのと、古きよきアメリカ、ゆっくりとしたアメリカ、典型的なアメリカ人、なんというかアメリカのとてもよいところが沢山詰まっていてとても好きな映画のひとつ。

ディズニー カーズ トミカ C-01 ライトニング マックィーン(スタンダードタイプ)

で、息子が観ちゃったもんだからこんな玩具も買うはめに。。。戦隊ものよりも断然子供に見せるべき映画だ。


カーズ2 (期間限定) [DVD]

カーズ2 (期間限定) [DVD]

で、続編はちょっと風情を変えてアドベンチャー、スパイ、シリアスな友情がエッセンスとして加えられてナンジャコリャ、といった印象で今度は1とうって変わって忙しい展開。ここまで方向性を変えても面白いジョン・ラセター天才だなーと思う。


エイリアンVS.プレデター 完全版 [DVD]

エイリアンVS.プレデター 完全版 [DVD]

前々から観たいと思っていた映画をやっと観ることができた。ただでさえプロットが面白いのだけど、種と種と種が戦うこのストーリーは素晴らしい。甘えが一切許されない。両方の映画のファンがどこまでも楽しめる伏線やとてもよい。ビショップこんなところに出てくるんかいとか、ラストでプレデターが親指を立てながら溶鉱炉に沈むシーンは涙なしには見られないですよ。

学生時代はわりと沢山の映画を観たつもりなのだけどほとんど記憶に残っていなくて、またいろいろと観れたらいいなと思う。深夜に1ルームの小さな部屋の隅っこにおいたかろうじてステレオな小さなブラウン管で観るVHSの映画もあれはあれで格別だったのだけど、ビデオ屋でいちいち物色しなくていいし、大きな液晶でいい音だし、おいしいウィスキーをちびちびやりながら一人で観る映画もよいけど、家族で3人で重い子供を膝に乗せて明るい昼間に観る映画もこれまた格別で*1、いろいろな楽しみ方をしていて、映画っていいなあとしみじみ思う。

*1:バイオハザードとAVPはもちろん一人で見ました

LINE Developer Conferenceに行ってきた

ふとしたことから LINE Developer Conference の存在を知り、その中の「高可用データベース」という文字列をみて高可用データベースを作っている身としては黙っていられないので行ってきた。喉がかわいたので水をもらえてよかった。

ひとつめのセッションはLINEのシステム運用。インフラは基本に忠実に、無駄に安いハードウェア買って困るくらいならそこそこの値段でいいヤツ買います、ソフトウェアも同様、必要なところでは VMware vSphereやOracleを使いますといった感じだった。やはりメッセージングなのでバーストトラフィックがあるらしく、それのせいでスイッチのパケットバッファが普通に溢れてパケ落ちが発生するらしい。ふつうのTCP/IPならその後の再送はランダムに時間置いて飛ぶはずだからそんなに溢れないと思ってたんだけど、TCP周りの設定をいじったらなんとかなりそうな気もする(※個人の感想です
それでバルスとかも普通に乗りきれるんだけど、今年の正月はRedisクラスタの1台が謎の高負荷状態になって、リトライの嵐になってシステムが不安定になるという障害があった。MSI-X(ってなんだ??)が動作しているときにirqbalanceが割り込みまくっていた。Redisが使うCPUがなぜか奇数番のCPUに集中してしまうのが高負荷の原因だったので、なんとかというマクロ?を設定して済ませたとか。さすがはLivedoorといったところか。あとHBaseのディスクはPCIE-SSDというハードウェアを使っている(使うことにした?)らしいですよ。まあIOPSは桁違いだもんね…

で、ノベルティを沢山もらいました。

ふたつめのセッションはお目当ての高可用データベース。データベースが数千台もあるとか。Percona MySQL使っていて、マルチマスターで運用しているぜーとのこと。なんとMMMを使っていると(その後某MySQLな人と話したら「MMM使ってる人いたんだ…」と驚かれたのできっとすごいことなのだろう)。Write conflictが起きたらどうするのだろうとか、切り替えにかかる停止時間はどの程度なのだろう、とか、VIP張って切り替えを管理するノードは別にいるみたいなのでそいつの冗長化はどうするの、とか、ネットワーク分断が起きたらどうなるのかなー(;◔ิд◔ิ)とか、気になった。

次はN-baseというおそらく本邦初公開のソフトウェア。MySQLのシャーディングができて、無停止でノード追加ができるというミドルウェアで、gizzerdとかPNUTSみたいなヤツかな。ルーティングのアイディアはCouchBaseとかRiakに似てて、PKEYを使ったConsistent Hashing *1だった。で、ハッシュにかけたあとパーティションに区切るのかな?そのパーティション毎に(おそらく)テーブルを作って、その単位で管理する。どのパーティションをどのサーバーが持ってるかはマスターがいて、そいつがルーティングする(っぽい…ここがRiakやCouchBaseと違うところ)。ノードを追加するときはバックグラウンドでパーティションを渡す。Select/Insertをまわしつつ、全部渡したらテーブルをドロップしちゃう。渡している途中にSelectが来たら、渡す先と渡す元のデータを比較してタイムスタンプが新しい方を使うとのこと。各ノードの死活監視は select now() でやっているらしい。合理的だ。

いくつか気になる質問があったのだけど、懇親会は出れなかったのでここにメモをしておこう。

  • インデックスを張ってあるカラムからのSelectはどういう動作になるのか
  • ルーティング表を持っているノードの冗長化はどうやってるのか、その子が死んだらダウンタイムになるのでは(そもそもMasterがいないなら、ルーティング表の共有はどうやってる?)
  • 複数テーブルや、複数行の同時更新したい場合は分散トランザクションを使っているのか
  • パーティションを渡すときの負荷と速度はどのように制御しているのか
  • どのパーティションをどのノードが持つかの配置はどういうアルゴリズムでやっているのか
  • JOIN使ってるかどうか
  • aggregation系のクエリのパフォーマンスは?
  • select now(); みたいな死活監視だと故障時にダウンタイムが20とか30秒くらいは出るがそれは許容範囲なのか*2

ダブルブッキングでケツカッチンだったので3つ目のネットワークのセッションを諦めて品川に移動。なんか知り合いが沢山いたらしく、懇親会に出たらもっと別の話も聞けたのかなあとちょっと後悔した。それにしても、なんかいっぱいグッズもらったし渋谷は華やかだった。雨が降ったくらいで出社しないなんてとても勿体ないなあと切に思う。

*1:という言葉を使わなかったのだけど

*2:ええ手前味噌な質問です

データ可視化の実践入門

エンジニアのためのデータ可視化実践入門という本を読んだ。なんでも「ある意味」という言葉をつけておけば大丈夫らしいのでいっておくが、正直いって、ある意味でこの本に騙された感がある。ある意味で。まあ釣られたという言葉が正しいのだろう。

エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)

エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)

この本が出る前にブラウザでグラフ書くならどういうのがいいのだろうなーと思って D3.js を一度試したことがあった。たしかにグラフはカッコよく書けるのだが如何せん私はJavaScriptがさっぱり分からない。どれくらい分からないかというとJavaScriptとJavaはそれぞれv8とJVMという違う処理系の上で動いているらしいというくらいしか知らないくらいよく知らなかった。

でもグラフは描いてみたい。きっとそこにはカッコよくグラフを描くための素敵なテクニックが記載されていてこれさえ読めば私もイケてる今風JSハッカーだぜヒャッハーとなる予定だった。でも読んでみたらそうじゃなかった。釣りタイトルの対する私の指摘をまとめるとこうだ。

  • エンジニアのための本ではない - エンジニアじゃなくても、いわゆる数値から意味なり主張を読み解くためのグラフというものを作成する人、それを読む人全員が前半を読むべき
  • 実践と入門って結局どっちやねん - 実践的なコードも載っているしCoffeeScript入門までついている
  • 「D3.js による」D3.jsじゃなくても役に立つ知識ばかり - D3.jsの解説は全くなくてもよいくらい

特に前半には、テレビや論文、新聞、プレゼン資料などに登場する馬鹿げたグラフに対する著者の恨みのようなものが随所に読み取れていて好感がもてる。もちろんそれだけじゃなくて、今まで暗黙知識だった可視化のノウハウがかなり明文化されており、いままで科学実験、論文やプレゼンでなんとなく空気を読んでグラフ作ってきた人はこれを読んで正統なグラフを描けるようになるだろう。

それにしても今後はこういった釣りタイトルはきっぱりとやめていただきたい。

IT業界(インフラより)のみんな!アニメのBDを大人買いしてる場合じゃないぞ

飲み会で話していたら、この危険さに気づいている人あまりいなかったようなので。

こうやってニュースを並べると聡明な諸君は気づくだろうが、ストレージの単価がほぼ同じだ。Facebookの記事はコンシューマ向けではないが、単価はそのレベルだろうと想像される*1

Glacierは登場した当初は「すわテープドライブまでクラウド化か?」という憶測が飛び交ったが、「テープではないらしいぞ」という憶測も登場して実際のところは分からない。GMailはバックアップにデープドライブを使っていたらしいが今でもそうなのかは分からない。

さらに、これらのニュースの間のタイミングで ソニーとパナソニック、容量1TBを狙う長期保存用の光ディスク規格「Archival Disc」というニュースが登場していたということが問題だ。

データセンターを走らせるためのコストは大きく分けて初期コストとランニングコストに分けられる。初期コストはまあバルクで買い叩けばどうにでもなるとして、ランニングコストはエネルギーを消費しているためどうしてもなくならない。ハードディスクは、中でスピンドルを止めていたとしてもメモリ、CPU、電源、空調などを使っているとどうしてもコスト、というかエネルギーを消費する。だから、それを止めるコールドストレージは相当なレベルでコストを下げられる(定量的な議論はあえてしないできないできたらすごい)。

ところが、それを不要にするのがコールドストレージだ。手段としては単純にコンピュータの電源を落とす方法と、長期保存が可能な光学ドライブを利用する方法がある(もちろんテープも)。この中で光学ドライブを大手がこぞって利用し始めたということは…あのJames Hamilton御大までもが光学ドライブについて言及したということは…

Googleだけが上記のなかで光学ドライブを使っていると明言していないが、あの価格はおそらく光学ドライブだ*2

もちろん、光学ドライブにも技術的な問題点はあってそのまますぐに使えるというわけではない。テープほど耐久性が高くないため、ある程度の確率で時間が経つと読み出せなくなる。市販のDVDでテレビを録画していたが、数年経って見返そうとしたら見れないという経験を持っている人も多いだろう。もちろんHDDよりは寿命が長いだろうが、おそらくは定期的にデータを読みだして壊れていたら複製を増やすという操作が必要になる。そういった耐久性のデータと、複製管理のアルゴリズムの技術と、ロボットで自動化する技術のどれかひとつでも欠けているとこれは実現できない。

*1:「価格競争はしない」というレトリックも問題のひとつなのだが…

*2:一歩譲って、HDDとコールドストレージのハイブリッド構成のはず

ソフトウェアデザイン 4月号は本日?発売です

「なぜRiakはデータをなくさないか」というテーマの2回目。ヒント付きハンドオフがすごいのは分かったけどデータの整合性はどうなるのよ、というときにベクタークロックとかSiblingsとかをどう使うか、これらがどういう挙動をするかについて解説した。

話としてはこのブログ過去の記事の延長線上(土台?)になっている内容なので、ここを読まれている方には新しい情報は少ないかもしれない。
具体的には、CRDTのはなしで触れたSiblingsとかCRDTと、こないだの筑波大学での話の間の関連を埋めるような内容になっているので、これを読んでみなさんも分散素晴らしい、とか分散厨になっていただきたいと切に願ってやまない。

NoSQL認定試験ブロンズ編の問題

基礎編

  • 現在主流となっている関係データベースを構成する2つのおおきな技術分野を答えなさい(10点)
  • SQLは関係代数と関係論理が理論的基盤になっているが、関係代数に基づいていないSQLの仕様をひとつ挙げなさい(10点)
  • トランザクション処理の4要件であるACIDが何の単語を表すか答えなさい(5点)
  • トランザクション隔離性の4つのレベルを全て挙げなさい(5点)
  • トランザクション隔離性レベルの4つのうち3つのそれぞれについて起きうるAnomalyを挙げなさい(10点)
  • mmap(2)と仮想メモリの違いについて説明しなさい(10点)
  • B-treeとハッシュというデータ構造について説明しなさい(10点)

概念編

  • BASEについて説明せよ (10点)
  • CAP定理のCとACIDのCの違いについて説明せよ(30点)
  • カラム指向とよばれる概念について、分散データベースおよび関係データベースとの関連と併せて説明しなさい(20点)
  • 最古のNoSQLデータベースが登場したのは次のうちいつか 。 [1966 1971 2001 2006] (5点)

個別編

  • memcached と Redis は同じオンメモリKVSといわれる分野に属するが、大きく利用目的が異なる場合がある。両者の機能の違いとあわせて説明せよ(20点)
  • Hadoop はNoSQLと呼んでよいかどうか(5点)
  • HBase をデータの永続化機構として利用する目的となるおおきな特徴のひとつを述べよ。そのためにどのような運用上の注意点があるか解説せよ(15点)
  • ZooKeeper のロゴは次のうちどれか(5点)


  • TokyoCabinetやMongoDBが物理メモリ32GBのコンピュータで利用する際のキャパシティ上の上限について述べよ(20点)
  • CouchDB と CouchBaseの違いについて述べよ(10点)
  • Cassandraはついに実用段階に至ったかどうか論ぜよ(50点)
  • DynamoDBはデータベースと呼ぶべきかどうか、その機能をもとに論ぜよ(30点)

Disclaimer

飲みながら書いたネタですあくまでも念のため拝承。書き始めたときは面白いかなと思ったが、まあ途中で飽きた。