osio_sioの日記

自分用メモ

RDBとNoSQLの違いまとめ

RDBとNoSQLの違いについて、学んだことをまとめてみる。

そもそもRDB、NoSQLとは?

RDB :
表形式の複数データを関連付けて使えるようにしたデータベースのこと。データを取り出したいときは、RDBMSリレーショナルデータベース管理システム)という専用のシステムで、必要なデータを引き出すことができる。
NoSQL :
RDB以外のデータベース。NoSQLは従来のRDBでは扱いきれないビッグデータや音声データや画像データといったデータを扱うことができる。

それぞれの特徴

RDB :

  1. RDBのデータを操作するときは「SQL」というデータベース言語を使い、複雑な検索・集計といった高度なデータ処理ができる

  2. データに一貫性がある(=データの重複や欠落がなくデータの整合性が保たれた状態)
    RDBMSは、RDBのデータの一貫性を維持するためにACIDという特性を持って運用を行う

NoSQL:
RDBには、以上のような利点がある一方で、ひとつのサーバーで稼働することを前提にしており、システムが大規模になったりクラウドシステムで稼働させたりすると処理速度が遅くなるといった欠点がある。その欠点を補うデータベースとしてSQLを使わないデータベースであるNoSQLがある。さまざまな形式でデータを格納できる。

例:

  1. キー・バリュー型
    高速に処理でき、容量も少なくてすむが、複雑な検索はできない。
    キャッシュサーバーやログの蓄積に向く。

2.カラム指向型
「キー・バリュー型」にカラム(列)を加えたデータベース型。
列方向の操作が容易にでき、大規模データの処理、ログの蓄積や分析に向いている。

  1. ドキュメント指向型
    XMLJSONなどのドキュメント形式でデータを持つデータベース型。
    複雑なデータをそのまま扱えるうえ、データ形式の変更がしやすい。Webシステムやオンラインゲーム、ログ分析などで活用。

RDBの向き不向き

RDBMSトランザクションという処理単位で実行される。上でも少し触れたが、トランザクション処理は ACID 特性に基づいて実装される。

  • Atomicity(原子性)
  • Consistency(一貫性/整合性)
  • Isolation(独立性)
  • Durability(永続性)

一方でNoSQLはCAP 定理 (CAP定理とは何ですか?| IBM)

という考えを採用している。CAP は 以下の 3 点を全て満たすことは不可能という定理。

  • Consistency(一貫性/整合性)
  • Availability(可用性)
  • Partition-tolerance(分断体制)

RBMS は CAP 定理における C と A に対応しているが、DB の用途によっては A と P の部分が重要になる可能性もある。そこで、NoSQL は BASE 特性に基づいて実装される。

BASE(Basically Available, Soft-state, Eventual consistency)特性

  • Basically Available:基本的に利用可能
  • Soft-state:厳密でない状態
  • Eventual consistency:結果整合性
  • 最終的な整合性を担保する

可用性を重視するために、複数の DB サーバーで冗長的にデータを保持する際に一時的に一貫性のない状態になりうる(結果整合)ことがあり、その際に CAP の C の部分が失われる可能性がある。

それぞれの使い分け

RDBMS のメリットとしてテーブル同士がさまざまな関係・関連を持つシステムには強い。一方で、処理性能を向上させることは難しい。データの関連などを表現するのには向いているが、サーバーの分散性ができず、データの拡張性が低い。逆に、NoSQL はデータの整合性を保つことは放棄しているため、複数サーバーへの水平分散が可能で、拡張性も高い。大規模のアクセス、水平スケールなどが得意な一方、テーブル間の複雑な関連は難しい。

ざっくりしたまとめ

RDBはデータの一貫性を保ち、高度な検索・集計処理をしたい場合、NoSQLは大容量データや多様なデータの高速処理に向いている。

参考記事:
business.ntt-east.co.jp