IoTデータの種類と処理の課題:Machbaseができること

概要
IoT(Internet of Things)は、多数の機器がネットワークを通じてデータをやり取りし、処理する仕組みです。センサー、アクチュエーター、移動端末など、一般的なデスクトップやノートPCとは異なるさまざまな機器が含まれます。
これらの機器が生み出すデータを収集・加工・分析し、情報として活用することで、新たな価値を生み出せます。
ただし、IoTデータには独特の性質があります。
多数の場所から大量のデータが発生するため、従来のデータ処理基盤では扱いきれない場合があります。
本稿では、IoTデータの種類と特徴を整理し、その処理で克服すべき課題を紹介します。
IoTデータの種類と特徴
IoTという考え方は、初期にはRFIDを活用する仕組みと強く結び付いていました。ICTの発展に伴い、対象となるデータはさらに広がっています。
RFIDをはじめ、どのようなデータがあるのかを見ていきましょう。
RFID(Radio Frequency Identification)
RFIDは、電波を使ってタグに記録した情報を読み書きする技術です。タグは機器などに取り付けたり、内部に組み込んだりできます。データを保持するICチップとアンテナで構成され、リーダーと無線通信します。
RFIDは幅広い分野で利用されています。
例えば、次のような用途があります。
パスポート
携帯端末
物流管理
在庫管理
ヘルスケア
大量生産によってタグの価格は下がってきましたが、バーコードと比べたコストは導入を検討する際の要素です。物流で使う場合は、タグが読み取られた位置と時刻を組み合わせて、物品の移動履歴を追跡できます。
ログデータ
ソフトウェアやハードウェアが出力するログは、機器やシステムの管理に重要な役割を果たします。
ログはテキストで生成されることが多く、容量や保存期間の設定によって古い記録が削除される場合があります。長期的に収集・分析するには、別の保存の仕組みが必要です。
通常、ログには発生時刻とメッセージが含まれます。IPアドレスやMACアドレス、システム使用量や負荷、温度・湿度など、さまざまな情報が記録されます。
形式が統一されていない場合は、リレーショナルDBのスキーマに格納するために解析や変換が必要です。出力するプログラムごとに形式が異なることも、処理を難しくします。
位置・環境データ
移動する物体や気象環境を扱う場合、データがどこで発生したかという位置情報が重要です。
位置情報にはGPSなどが使われます。得られる精度は受信環境や機器、補正技術などによって異なるため、用途に必要な精度を満たすか確認する必要があります。
環境によっては、ローカル測位システムを使って、より詳細な位置情報を得ることもできます。
移動しない機器でも、設置位置は重要な情報です。
例えば海上のセンサーで測った温度、湿度、気圧に位置情報を組み合わせれば、天気予報や災害警報に役立てられます。
位置・環境データは、地理情報システム(GIS)やモバイルコンピューティングなどと組み合わせて活用されています。
時系列データ:センサーデータ
身の回りには多くのセンサーがあります。携帯電話のカメラ、GPS、加速度センサーに加え、工場、道路、鉄道、港湾、空港などでも利用されています。
センサーデータを分析すれば、従来は難しかった課題を解決できる可能性があります。各センサーを識別するIDと、測定値、測定時刻を組み合わせて記録します。
〈タイムスタンプ、センサーID、センサー値〉の形で継続的に蓄積するものが、時系列センサーデータです。
時系列データ:制御データ
アクチュエーターなどから収集する測定値だけでなく、機器を動かすための制御信号も時系列で記録できます。
動作中に高頻度で変化するため、データ量が大きくなり、保存・分析が課題になります。履歴を活用すれば、事故原因の調査、不良予測、品質改善、生産量の調整などに役立てられます。
時系列データ:履歴データ
時刻を含むセンサーデータを蓄積したものが履歴データ(Historical Data)です。収集周期に応じて、その量は大きく変わります。
詳しく分析するために周期を短くするほど、保存量も増えます。Machbaseなどの時系列データベース(TSDB)は、このようなデータを効率よく扱うための選択肢です。

IoTセンサーデータを活用するための課題
多くのセンサーが生み出す値は、時系列として履歴に蓄積されます。
単一システムでは、保存期間とデータ量が増えるにつれて、容量、インデックス作成、検索、継続的な取り込みが課題になる場合があります。ペタバイト規模の処理などに対応するため、Hadoopのような分散型のビッグデータ基盤も使われてきました。
ただし、MapReduceのようにバッチ処理を中心とする仕組みには、低遅延のリアルタイム分析で制約があります。
そのため、IoTセンサーデータを継続的に取り込みながら、素早く分析できる方法が求められます。
クエリ言語
IoTでは、構造化データだけでなく半構造化データも多く扱います。
構造化データにはSQLが広く使われていますが、半構造化データの問い合わせ方法は製品によって異なります。
ビッグデータ基盤では多様なNoSQLのクエリ方式が登場しました。一方、Spark SQLやImpalaなど、分散基盤上でSQLを使う仕組みも普及してきました。
インターフェース
SQL対応のDBMSはODBCやJDBCなどを提供します。操業データを蓄積するヒストリアン製品では、HTTPとJSONを用いるREST APIも広く使われています。
運用環境のWeb化が進む中、扱いやすいREST APIは重要な接続手段です。
トランザクション処理
例えば毎秒1,000億件規模を想定するような非常に大きな分散システムでは、整合性のための調整やロックに大きな負担がかかります。主に追記で蓄積し、保存期限に応じて削除する時系列データでは、汎用的な更新処理を前提とした方式との適合性を検討する必要があります。
必要な整合性や耐久性を確保しつつ、時系列データの特徴に合わせて効率よく処理する仕組みが求められます。
時系列データの集計
合計、件数、平均、サンプリングなどは、可視化や高度な分析で頻繁に使われます。
大量の取り込みと集計を同時に行う負荷に対応するため、ストリーム処理や時系列向けの集計機能にも関心が集まっています。
IoTデータに適したMachbase
Machbase Databaseは、IoTデータ処理で求められる性能と機能に対応するため、次の点を重視しています。
大量データのリアルタイム処理
使いやすく効率的なクエリ言語
時系列の特性に合うトランザクション処理
時系列データの集計
大量データのリアルタイム処理
分散した保存・問い合わせの構成を採用しています。本稿で紹介する性能例では、単一機器で毎秒約200万件の取り込みとインデックス作成を行い、機器を追加して毎秒1,000万件以上のセンサーデータ処理へ拡張しています。実際の性能は構成とデータ、処理条件によって変わります。
高速取り込み用の専用APIと、インデックスを効率よく生成する構造を備えています。
時間とともにデータが増えても、クラスターへ機器を追加して、処理能力と保存容量を拡張できます。
効率的なクエリとインターフェース
データ処理に適したSQLを提供します。NoSQL分野でもSQLを利用できる製品が増えており、共通の問い合わせ手段として活用できます。
半構造化データの検索に使う転置インデックスと関連構文を提供し、検索・処理を支援します。
ODBC、JDBCに加えてREST APIも提供します。
時系列に適したトランザクション処理
時系列データの特徴を考慮した処理方式を採用しています。
ここで説明する時系列データの格納方式では、追記と削除を中心に扱います。障害後の再起動時にはリカバリー処理を行い、データとインデックスの整合性を維持します。
Enterprise Editionでは分散保存を利用し、ノード障害に対する可用性とデータ保護を高めます。
時系列の集計
センサーIDと時間単位(秒、分、時)ごとに、取り込んだ値の集計を自動生成します。
時系列データの検索に適した拡張クエリ構文を提供します。
Machbase Databaseは、時系列処理に必要な機能と性能を考慮して設計されており、IoTデータの保存・検索・分析に活用できます。


