DataBase
はじめに
「Database」と言っても、そのエンジンや種類はたくさん存在する。
初学者のうちは違いがわからずに使ってしまうことも少なくないが、システム開発を進める上では最適なデータベースの選定が重要なポイントになる。
この記事ではまず「Database」とは何かという基礎から、代表的な種類である「RDBMS」と「NoSQL」について、特徴や違いを解説する。
DataBase とは
「Database(データベース)」は、大量の情報を保存し、必要なときに取り出せるように整理・管理されたシステムのこと。
データを特定の形式やルールに基づいて格納し、検索・更新・集計などでデータを操作する。
現代の Web アプリや業務システム、モバイルアプリなど、ほとんどのシステムで使用されている。
RDBMS と NoSQL
特に使われる機会が多いのが「RDBMS(Relational DataBase Management System)」と「NoSQL(Not only SQL)」の 2 つ。
この2つについて詳しく見ていこう。
RDBMS とは
RDBMS は、表(テーブル)の行と列を使い、データ同士の関係をキーで結びつけて管理する仕組み。
主な特性は以下の通り。
特徴 | 説明 |
---|---|
テーブル構造 | データを行と列で表すため、可読性が高い |
リレーション(関係)の管理 | 主キーや外部キーを使ってデータの整合性を保つ |
SQL(Structured Query Language) | データ定義や検索・更新に標準的な言語を使用 |
ACID 特性 | 原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、永続性(Durability)を満たし、トランザクション管理を厳密に行う |
主な RDBMS
MySQL / MariaDB
オープンソースコミュニティでの人気が高く、Web 開発現場で広く利用される。MariaDB は MySQL から派生したプロジェクト。
-
主な特徴
LAMP(オペレーティングシステムの Linux、ウェブサーバーの Apache、データベースサーバーの MySQL、プログラミング言語の PHP)スタックの代表として Web 開発で定番
小規模~中規模のシステムでも導入が容易
シンプルな構成でパフォーマンスチューニングが比較的簡単
無料版と**有料版(商用)**が存在する
PostgreSQL
高い拡張性と厳密な ACID 特性が特徴のオープンソース RDBMS。機能が豊富で大規模運用にも対応しやすい。
-
主な特徴
拡張機能の豊富さと高い標準 SQL 準拠度
大規模でも安定稼働しやすい
オープンソースで費用面のハードルが低い
Oracle Database
大企業の基幹システムで採用される商用 RDBMS。高性能かつサポートが充実しているが、ライセンスコストが高い。
-
主な特徴
大規模ミッションクリティカルなシステムでも安定稼働
豊富な機能と高い性能
ライセンスや運用コストが高め
Microsoft SQL Server
Windows 環境との親和性が高く、BI(Business Intelligence)や分析機能も備える商用 RDBMS。
-
主な特徴
Windows/.NET との連携がしやすい
商用ならではのサポート体制と BI 機能の充実
ライセンス費用が発生する
NoSQL とは
NoSQL は、RDBMS が採用するテーブルモデルとは異なる方法でデータを管理するデータベース群の総称。
Not Only SQL とも言われ、スケーラビリティや柔軟なスキーマを重視した設計が多い。
主な特徴を挙げると以下のようになる。
特徴 | 説明 |
---|---|
スキーマレス | データの構造を固定しない、または柔軟に変更できる |
分散・スケールアウトに強い | 大量のデータやトラフィックを扱いやすい |
BASE 特性 | Basically Available, Soft state, Eventually consistent(最終的に整合性を保つアプローチ) |
NoSQL は主に下記のデータモデルに分類されることが多い
-
Key-Value ストア型
「キー」→「値」 の単純なマップ構造を採用
値の部分には任意のデータ(文字列やバイナリなど)を格納可能
シンプルな操作(キーを使った取得・更新・削除)が得意
スキーマの概念がほぼない
-
ドキュメント指向型
データをドキュメントとして格納
ドキュメント形式には JSON や BSON などの階層構造が使われることが多い
スキーマレス、もしくは非常に柔軟なスキーマを実現
ドキュメント内にリストやネスト構造を含むことが可能
-
カラム指向型
RDBMS のテーブルに似ているが、列(カラム)単位でデータを管理
テーブルではなく「カラムファミリー」という単位でグルーピングしてスケーラブルにデータを扱う
-
グラフ型
データを 「頂点(ノード)」と「辺(エッジ)」 の関係性として表現
辺に属性を持たせることで、ノード同士の関係を直接保存
ソーシャルネットワーク、ネットワーク解析、レコメンデーションなどの「関係」を重視するケースに向く
主な NoSQL
MongoDB
ドキュメント指向型の代表格。
-
主な特徴
JSON に近い BSON 形式でドキュメントを保存
複雑なクエリや集計パイプラインに対応
スキーマの変更が容易
Firestore(Firebase)
Google 提供のクラウドネイティブなドキュメント指向型 DB。
-
主な特徴
フルマネージドなクラウドサービスで、リアルタイム同期を標準装備
スケーリングを意識しなくても自動で拡張
モバイルアプリや Web アプリとの連携が非常にシンプル
Redis
Key-Value ストア型のインメモリデータベース。
-
主な特徴
インメモリ型のため圧倒的に高速なアクセス
Pub/Sub や TTL 設定などキャッシュ用機能が充実
データの永続化方法は RDBMS ほどリッチではない
Amazon DynamoDB
AWS 上でサーバレスに動作する Key-Value / ドキュメント型 DB。
-
主な特徴
Key-Value とドキュメント指向を両立し、AWS でサーバレスに利用可能
従量課金制で小規模から大規模まで柔軟に対応
取り扱えるクエリの種類は RDBMS ほど複雑ではない
選定チャート
簡単ではあるが選定チャートを作成したので参考にしていただければと思う。
RDBMS 選定チャート
NoSQL 選定チャート
-
処理速度最優先で、単純なキーによる検索が中心かの場合
Key-Value ストア -
データ同士の関係を重視し、グラフ構造(ソーシャルネットワークなど)を扱う場合
グラフ DB -
大規模データを分散環境で処理し、定型化されたクエリパターンが多い場合
カラム指向 DB -
JSON や BSON のような階層構造を扱い、スキーマ変更の柔軟性を求める場合
ドキュメント指向 DB
Discussion