グラフ型データベースの利用シーン及びNoSQLとRDBMSのメリット・デメリット

2017.6.15

こんにちは!YDCのれいです。

2016年12月のコラムはNoSQLのグラフ型データベースの構成について紹介しました。
今回は前回に引き続き、グラフ型データベースの利用シーンについて簡単に紹介します。
その後、NoSQLとRDBMSのメリットとデメリットを説明します。

グラフ型データベースの利用シーン

海外、国内の各領域にグラフ型データベースを利用してサービスを提供しています。
代表的な利用シーンをいくつか紹介します。

◇最短経路探索

最短経路探索はグラフ型データベースの最も得意機能の1つです。
カーナビゲーションシステムや鉄道の経路検索が利用されています。
曲がる回数を少なくする、幹線道路をなるべく通るようにする、少し距離が長くなると
高速道路を利用するなどのチューニングが実施されています。

◇インターネット

インターネットで提供されているメジャーなサービスとして、FacebookとGoogle検索があります。
両者ともグラフのテクノロジーを活用してデータベースを構築し、ユーザに魅力的なサービスを提供しています。
Facebookは、人と人の関係(ソーシャルグラフ)に、Googleは情報の関連に価値を見出しサービスを提供しています。

◇通信

通信企業は自社サービスで利用している通信機器をグラフ型データベースで管理しています。
どこかの通信機器に障害が発生したときや、回線が切れたときに、他の通信経路は存在するか、
また通信速度がどのぐらい保てそうかなどのシミュレーションをグラフ型データベースにより行っています。

◇不正検知

クレジットカードの不正検知システムをグラフ型データベースが利用されています。
ユーザ会では実際にマスクされたユーザ情報と履歴データを用いてクレジットカードの
不正利用検出のデモを行っています。

◇医療

医療機関においてもグラフ型データベースの応用が進んでいます。
患者、地域、症状、持病、性別や習慣や癖などの様々な情報を関連付けることで、様々な分析や研究が行われています。
ある属性と患者にリレーションシップを張ったり、張らなかったりすることがグラフ型データベースで容易に実現できます。

NoSQLとRDBMSのメリット・デメリット

データベースの構成によって、それぞれ異なる特性を持っており、
どのような処理をするかによって、得意不得意が分かれます。
NoSQLとRDBMSそれぞれの特徴を踏まえ、それぞれのメリットとデメリットを説明します。

◇データ構造と参照

NoSQL
事前にスキーマ定義が不要且つKeyとValueの組み合わせという非常に単純な構造を持ちます。
メリット デメリット
  1. データの参照に適している
  2. カラムを自由に定義できるため、柔軟性が高い
  3. 性能が劣化しても対応しやすい
  4. 普段頻繁に利用しないデータは最適
    (ログデータ、画像、動画、バイナリデータなど)
  5. 大量のデータを保持することに向いている
  6. データが肥大化していも性能の劣化を招きにくい
  7. 参照や追加処理が主な処理である場合、高速となる
  1. 他のデータとの関係性がないので、複雑な参照に向いていない
  2. データの更新や削除には向いていない
  • グラフ型データベースは除外
RDBMS
厳密なスキーマ定義且つ複雑なデータ構造を持ちます。
メリット デメリット
  1. 複雑なデータの取り扱いに向いている
  2. データの更新や削除に向いている
  1. 事前にスキーマ定義が必要で変更にコストがかかる
  2. データの肥大化によるDBの性能劣化を招きやすい
  3. 多様化データ(多種類のデータ)の対応は難しい

◇トランザクション

NoSQL
トランザクションがありません。
メリット デメリット
  1. 性能が早い
  2. 長時間の待機処理が発生せずに、
    分散環境でも高速の処理が可能となる
  1. 一定の時間が経過した後、結果的に一貫性が保証されるが、即時にデータの変更が反映されるとは限らない
  • 一部トランザクションを実装しているNoSQLもあり
RDBMS
トランザクションがあります。
メリット デメリット
  1. 一貫性を保つ必要があるデータに向いている
  2. ACIDが実装されており、データの不整合が起こらない
  3. 処理の途中で何らかのエラーが起った場合
    トランザクション前の状態に戻る
  1. システムの特性や規模にもよりますが、
    それほど速くないというのが通説である
  2. 一貫性を保証するため、カラムの追加やインデックスの追加時に長時間のロックがかかる可能性がある

◇SQL

NoSQL
SQLに限定されません。
メリット デメリット
  1. SQLの知識が不要
  2. SQLに限定されない言語やインターフェースを用いる
  3. プログラムの全体量はRDBMSより少ない
  1. データ検索や参照時、SQLほど柔軟に条件を指定できない
RDBMS
SQLなどのデータベース言語を用います。
メリット デメリット
  1. 複雑な条件で検索や集計できる
  2. 高度な条件でのデータを閲覧できる
  3. 複数の表から関係のあるデータを参照できる
  1. SQLの知識が必須である
  2. プログラム全体量はNoSQLより多い

◇分散アーキテクチャ

NoSQL
分散アーキテクチャに対応しています。
メリット デメリット
  1. 結果整合性を保つため、水平分散が可能である
  2. データ量が増えても比較的に簡単に設備を増強できる
  3. 安価なサーバを大量に並べ、並列処理をすることで処理性能の向上が出来る
  1. 並列処理のために複数のサーバへデータを分散されてしまうと、全体の整合性を確保するのが難しくなる
  2. 大量なサーバを管理する必要がある
RDBMS
分散アーキテクチャに対応しています。
メリット デメリット
  1. レプリケーション機能がある、トラブルや災害対策ができる
  1. 読み取り時にテーブルを結合する処理の性能が低下してしまう
  2. 分散環境で頻繁に排他制御が発生して長時間の待機が発生するため、長時間処理が停止する可能性がある

まとめ

一貫性を保つ必要があるデータにはRDBMSを使う必要があります。
ただ、最近ではこのような問題をNoSQLでも解決できるようにする動きも出てきています。
NoSQLとRDBMSを1つのシステムで使うことも増えてくるでしょう。
今後は目的や用途に合わせて、NoSQLとRDBMSデータベースを上手に使い分ける時代になっていくでしょう。
1つのシステムで両方使えるようになったら、互いの短所を補えるので、使い勝手が良さそうですね!

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail