こんにちは、日立ソリューションズの吉田です。
IoT(Internet of Things)は、PCやスマートフォンなどの情報通信機器に限らず、すべての「モノ」をインターネットに接続することを意味しています。近年ではセンサやネットワークなどの要素技術が整ってきており、加えてビッグデータ(従来のシステムでは扱えない規模の大量データ)への関心の高まりから、IoTを利用したデータ収集・活用が注目されてきています。
このようなデータを収集・蓄積するためには、従来のRDBのようなデータストアでは、さまざまな課題があります。
まず、最初にデータの多様性です。センサから得られるデータの形式は各センサ機器に依存しており、取り扱う機器によって数値・テキスト・画像などさまざまな形式があります。また異なる形式のデータが混在するケースも想定されますので、さまざまな形式のデータを保存できる必要があります。
次の課題は、データ量です。IoTではリアルタイムでのデータ分析のニーズが高く、データは多くなる傾向があります。また、データの収集範囲を拡大するほど、センサ台数は大量で、1件あたりのデータサイズは小さくても、全体のデータ量としては大きくなります。加えて長期的にデータを蓄積していくケースも想定されるため、大容量のデータストアが必要となります。
最後に、高速な書き込み処理が必要になります。多数のセンサから高頻度にデータが送信されるため、データストア側では膨大な件数のデータを短時間に受信することになります。そのため、大量の件数を高速に書き込める処理性能が必要となります。
NoSQLとは
このようなデータを処理することに適したデータストアが求められてきたことにおり、新しい概念として、「NoSQL」の開発がすすめられてきました。NoSQLとは、「Not SQL」ではなく「Not only SQL」の略称で、必ずしもRDBを否定するものではありません。
先ほどご紹介したNoSQLにはそれぞれのデータの特性に応じて、「キーバリュー型(分散KVS型)」「ワイドカラム型(列指向型)」「ドキュメント型」の3つのデータモデルに分類されています。以下では、それぞれのデータモデルについて簡単に説明したいと思います。
(1) キーバリュー型:
一意なキーと、キーに1対1で対応するバリューのペアで、データを保持する方式です。従って、複雑な検索などは苦手ですが、単純な処理は高速にこなすことができます。バリューの自由度が高く、ほとんど型に縛られないので、動画や音声、画像などのメディアデータも扱いやすくなっています。特に複数のサーバに分散してデータを保存できる機能を持ったものを「分散KVS」と呼ばれています。
(2) ワイドカラムストア型:
キーバリュー型のバリュー部分が、さらに任意の数のキーバリューの集合(列名と値)になったような構造で、RDBと似た構造をとっています。しかし、行ごとに列の名前や数は自由で、列方向の集約が高速で集計処理などが得意です。時系列に発生するセンサデータの格納に適しており、IoTと相性が良いといわれています。
(3) ドキュメント型
キーバリュー型のバリュー部分が、JSONやXMLなどの半構造化データ(ドキュメント)になったような構造です。キーバリュー型よりも、データの検索性に優れています。スキーマレスなので、複雑なデータを柔軟に運用することができ、一般的なウェブシステムとは相性が良いといわれています。
それぞれのデータモデルで代表的なOSS、商用製品及びクラウドサービスを下表にまとめました。
下表のように商用製品もOSSの商用製品であったり、クラウドサービスでもOSSを活用していることを考えるとこの領域では、OSS以外の選択肢はあまりないといっても良いでしょう。
種別名 | OSS | 商用版・商用製品 | クラウドサービス |
---|---|---|---|
キーバリュー型 (分散KVS型) |
・Redis ・Memcached ・Riak |
・Oracle Coherence ・Oracle NoSQL Database Enterprise Edition ・Pivotal GemFire |
・Amazon ElastiCache
(Redis または Memcached) ・Microsoft Azure Redis Cache |
ワイドカラム型 (列指向型) |
・Cassandra ・Hbase |
・DataStax Enterprise (Cassandraの商用版) | ・Google Cloud Bigtable |
ドキュメント型 | ・MongoDB ・Couchbase ・CouchDB ・RavenDB |
・MongoDB Enterprise Edition ・MarkLogic |
・Amazon DynamoDB ・Microsoft Azure DocumentDB ・IBM Cloudant |