見出し画像

はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑩NoSQLデータベース設計

NoSQLデータベース
DB論理設計ではRDBを前提とした設計について記載した。RDB以外の選択肢としてNoSQLDBがある。
[NoSQLDBの特徴]
・RDB以外のDBを指すRDBは正規化された構造化データを格納するが、NoSQLでは半構造データや非構造データを格納することができる。
・スケーラビリティが高く、高性能
・トランザクション制御を省略してACIDを一部緩和している。ロックを使用すればACIDを実現できるがロックを乱用するとNoSQLの利点を失うことになりRDBよりも性能が悪くなる。RDBかNoSQLか特性にあわせた適用をすべきである。

ACID特性
ACIDとは信頼性のあるトランザクションが満たすべき条件のこと。4つの単語の頭文字である。
・Atomicity(不可分性、原子性)
トランザクション内で行われた処理は全て完了するか、全て行われないかのどちらかになる。部分的に完了することはない。
・Consistency(一貫性)
トランザクション内で行われたデータの変更において、制約条件を完全に満たすことができる。不整合なデータや不正な状態はない。
・Isolation(独立性)
トランザクション内の途中処理が他から見えず、結果だけが見えること。
・Durability(永続性)
トランザクションが正常にコミットすれば、結果が確実に永続化される。
(仮にシステム障害が発生したとしても)

NoSQLの種類
・Key-Valueデータベース(Key-Valueストア)
・ドキュメントデータベース(ドキュメント指向データベース)
・グラフデータベース
※NoSQLプロダクトによって特性も機能も全く異なるのでそのプロダクトに沿った設計をする必要がある。

○Key-Valueデータベース
KeyとValueのシンプルな構造で、パーティショニング(DBの内部でデータを分割すること)ができ、大規模なスケールアウトに対応できる。
[向いていること]
・IOTにおける数多くの機器からの短時間ごとのデータを集積すること。
・ユーザーセッションとして行動履歴などをトラッキングすること

○ドキュメントデータベース
JSONを格納することができ、フレキシブルな構造データをもつことができる。スケーラビリティが高く、ビッグデータを扱うことができる。ユーザー情報のようなビジネスオブジェクトを大量のビッグデータとして格納することができるのは大きな利点。

データレイク(Data Lake)
ビッグデータに関連して、データを蓄積する巨大な受け皿のこと。
半構造データや非構造データを格納することが多く、データレイクから正規化した構造データをRDBに入れ直す。


第3章外部設計の手法⑩NoSQLデータベース設計を終了します。
次回は⑪非機能要件定義とシステム設計について記載します。


この記事が気に入ったらサポートをしてみませんか?