IoTで分散協調型処理をするためにNoSQLデータベースを活用する
それでは、超高密度サーバーを使った分散協調処理のためには、どのようなソフトウェアスタックが最適なのだろうか。
「1つはHadoopとSparkの組み合わせがあるでしょう。メモリを使って処理する部分では、これは強力な組み合わせとなります。少なくとも集められるデータが数10テラバイトを越えるような場合には、リレーショナルデータベースは向いていません。結果的にNoSQLデータベースを採用することになると考えています」(新郷氏)
IoTで扱うデータは、非構造化データも増えてくる。さまざまなタイプのデータを集めることを考えれば、自ずとNoSQLデータベースに期待することになる。
もう1つ別の観点からも、IoTのデータ処理エンジンとしては、リレーショナルデータベースよりもNoSQLデータベースが向いているという。それは、集めるデータに対しあらかじめどんな処理をしたいかが分かっていない場合があるからだ。処理の方向性が決まっているならば、多少データ規模が大きくなっても使い慣れたリレーショナルデータベースでスキーマを設計し格納したほうが扱いやすい。インデックスを張り、チューニングを施せば高速な分析処理も容易だ。すでに世の中にあるさまざまなBIツールも、手間なく適用できる。
しかしながら、IoTから生まれるデータについては多くの場合どう使うかが定まっていない。仮に、最初はこのような処理をすると決めて対象となるデータを集めたとしても、新たなセンサーが登場すれば新しいタイプのデータを取り込むことになる。センサーが新しくなれば、データフォーマットも変わるだろう。さらには、いざデータを集めてみたならば、データ分析の処理方法を変えたくなるかもしれない。データの追加やフォーマット変更など、刻々と変化する可能性があるのがIoTのソリューションだ。これに対処するには、やはりNoSQLのデータベースが向いている。
SQLライクのインターフェイスがありオフラインでも収集できるCouchbaseを選択
NECではDX2000でIoTのデータを処理するNoSQLデータベースの1つとして、Couchbaseを選択している。選んだ理由は、「モバイルアプリケーションとWebアプリケーションの連携を円滑に行いたかった」(新郷氏)。現状、IoTデバイスとしてすぐに利用できるものの1つがスマートフォンなどのモバイルデバイスだ。そのモバイルデバイスにCouchbase Mobileを置き、サーバー側にもCouchbase Serverを置けば、シームレスなデータ連携が可能となる。
「IoTの環境では、いつでもネットワークが使える状態にあるとは限りません。ネットワークの状況が悪いときにも使える仕組みが必要となります。オフラインでも続けてデータを収集でき、オンラインになったらサーバーに同期する。この部分に強みを持ったNoSQLのデータベースがCouchbaseだったのです」(新郷氏)
もう1つCouchbaseの場合には「N1QL」というクエリ言語がある。これも評価ポイントだった。N1QLを使えば、SQL標準の「SQL−92」ベースのアクセスが可能だ。SQLが使えれば、エンジニアに対する新たな教育が必要ないなどメリットが大きい。これは、他のNoSQLデータベースと比べても強みになると指摘する。