SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineスーパー対談

【西内啓氏 × ミック氏】 データエキスパート対談
これからは分析を意識したデータマネジメント力がエンジニア全員に必要になる

CodeZine スーパー対談 シリーズ 第1回

データ分析・活用現場のボトルネック②「ストレージ」

―― ところでミックさんはデータベースのほうで以前から分析に関わられてきたとのことですが、その観点からのボトルネックについてはいかがでしょうか。

ミック ► 先ほどの西内さんのお話では「分析自体は結構速くいけます」とのことでしたが、システム屋から見ると、分析システムの処理や、基幹システムから分析用データを持ってくる仕組みのところで、まだまだ時間がかかっている印象です。システム側は、本当のリアルタイム性・高速性をまだ実現できていないんじゃないかなと。

 大量のデータを分析をしようとしたときに、何がボトルネックになってくるかというと、今はもう完全にストレージです。以前はボトルネックといえばネットワークでしたし、そもそもこれほど大量のデータを扱うという発想がありませんでした。ネットワークのブロードバンド化が進み、帯域問題が解決するのと並行して、ストレージの低価格化によって大量データを保存できるようになった結果、ストレージの読み書きの遅さがボトルネックになって性能が出ない、というのが現在の状況です。

 こうした大量データを扱う際の性能問題に対するシステム側からの解としては、いくつかありますが、やはり高速なメディアを使うのが一番手っ取り早い解です。インメモリでデータを扱えれば、処理できるデータサイズは小さくなってしまいますが、これが一番速い。それが無理な場合、最近ではSSD(Solid State Disk)、Fusion-ioといった非ディスクのストレージや、大量データの分析に特化したアプライアンス製品を利用するケースも増えてきています。

ミック氏
ミック(みっく):SI企業に勤務するDBエンジニア。DWH/BI分野のデータベース構築とパフォーマンスチューニングを主な専門とする。SQLへの深い造詣とわかりやすく正確な解説で、データベースに携わるプロフェッショナルの支持を集めている。著書に『達人に学ぶ SQL徹底指南書』『SQL ゼロからはじめるデータベース操作』『達人に学ぶDB設計 徹底指南書』、翻訳書に『SQLパズル 第2版』『プログラマのためのSQL 第4版』。

 

―― クラウドの登場で、システムのスケールアウトが比較的容易になったと思うのですが、データベースに関してそれは解決策になりませんか?

ミック ► システム全体では、そのように複数のノードに処理を分散させて性能を線形で伸ばしていく戦略もありますが、データベースに関しては、伝統的にそれが難しいところがあります。データベースには、データを1箇所に集めないと処理がなかなかできない、というタイプのものが多いからです。CPUやメモリといったスケールアウトできる部分は分散化されているのですが、データだけはどうしても共有にならざるを得ません。特に大量のデータを扱う分析では、そこがボトルネックになる場合が多いです。

―― 西内さんはこのように、システム上のボトルネックを感じたことはありますか?

西内 ► それは実際にはよくあります。たとえば「レコメンデーションエンジンを作りましょう」という場合、アルゴリズムの面ではもういろんな研究成果が論文になっていて、計算式まで書いてありますし、むしろそれをスクラッチで作れない方がおかしいと思うくらいです。しかし、理論上はこれでいけるとわかったとしても、実際にシステムにして使い出してみると「いかにして、そこから手を抜くか勝負」というか、「精度をほとんど落とさずに計算量を減らし、近似的に計算結果を近いものにするか」、あるいは「力業として、ハードウェアに投資をするか」という判断は経験というか、実際にやってみないとよくわからない部分だったりします。

 これの対応策には「基本的にはデータはRDBで管理しているけれども、計算に必要なここの部分だけはNoSQLで管理する」とか、いろんなものが提案されているんですが、まだ過渡期の技術という印象です。そこで、「ちょっとこれ、試してみたいから提案してみよう」といった実験的なものを、検証を兼ねて仕事の中に紛れ込ませることもあります。

ミック ► レコメンデーションエンジンには確立された理論があるというお話ですが、これをシステム側の観点から言い換えると、データをCPUに食わせて回すことにかけては、すでに確立された方法論があるということ。CPUの処理能力(リソース)は爆発的に増えていく一方なので、データをCPUに渡すことができれば、後はとてもスムーズにいくことが保証されているといえると思うんです。問題は、どうやってデータをCPUまで持っていくか。我々システム屋が一番悩むところです。

―― なるほど。

ミック ► この問題の解決策には、3つあると思っています。1つはNoSQLに一部のデータを持たせてやる、インメモリでデータを持たせてやるといった、いわば「スモールデータ」に回帰するような戦略。もう1つは、ハードウェアであくまでごりごりと解決していこう、という力技の対策。最後の1つは、アーキテクチャで解決する方法。Hadoopなどを利用した分散処理のアーキテクチャによって解決していくといったものです。

 先ほども述べたように、ネットワークはボトルネックではなくなり、今はストレージがボトルネックになっています。現在は、それ(ボトルネック)を何とかCPUにまで持っていこうという努力がなされているところだと、自分は理解しています。ボトルネックがCPUまで行ったら、もうそれは、システム側のアーキテクチャあるいはハードウェアとして一通りのことが終わった段階と考えていいと思います。

西内 ► そうですね。完成といえると思います。

次のページ
データ分析・活用現場のボトルネック③「SQL」

この記事は参考になりましたか?

CodeZineスーパー対談連載記事一覧

もっと読む

この記事の著者

小川 範夫(オガワノリオ)

ネットワーク型やカード型のデータベースの時代から、データベース界隈を興味の赴くままウン十年さまようデータベースマニア(ミーハー)。ミックさんの本を読んではDB・SQLに思いを馳せ、西内さんの本を読んでは統計学・R言語をやろうと思うものの、日々ビールを飲んで眠ってしまい、積ん読本ばかりが増える日々。基...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7818 2014/06/25 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー