🎯 この章で学ぶこと

  • NoSQLの4分類(キーバリュー・ドキュメント・ワイドカラム・グラフ)と代表製品
  • RDBとNoSQLの使い分けの判断軸 — 「まずRDB、明確な理由があればNoSQL」
  • クラウドのマネージドDB(RDS・Cloud SQLなど)と責任共有モデル
  • バックアップ・監視・バージョンアップというデータベース運用の実務
  • このコースの次に学ぶべきこと — PostgreSQL、資格、Webアプリ開発への道

10.1 NoSQLの4分類

NoSQL(Not only SQL)は「RDB以外のデータベース」の総称で、中身は一枚岩ではありません。大きく4つに分類され、それぞれRDBの何かを諦める代わりに、何かを得るという設計になっています。

分類代表製品データの持ち方何を諦めたか何を得たか
キーバリュー(KVS)Redisキーと値のペアだけ。巨大な辞書(Pythonのdict)のイメージ複雑な検索・JOIN・集計圧倒的な読み書き速度(メモリ上で動く)
ドキュメントMongoDBJSONのような柔軟な文書。行ごとに項目が違ってもよい厳格なスキーマとJOINスキーマ変更の身軽さ、プログラムのデータ構造との近さ
ワイドカラムCassandra行ごとに列を柔軟に持てる表を、多数のサーバーに分散強い整合性・柔軟なクエリサーバーを足すだけで書き込みを増やせる水平拡張
グラフNeo4jノード(点)とエッジ(関係の線)表形式の集計の手軽さ「友達の友達」のような関係のたどりが高速

たとえばRedisは「セッション情報やランキングを、ミリ秒以下で読み書きしたい」場面の定番です。JOINも集計もできませんが、そもそもそれが不要な用途に絞ることで速度を得ています。MongoDBは「項目が頻繁に増減するデータ」に強い一方、第6章で学んだ正規化やJOINの世界とは別の設計作法が必要になります。

💡 「NoSQL=新しくて優れている」ではない

NoSQLはRDBの上位互換ではなく、特定の目的のための特化型です。汎用性——どんな条件でも検索でき、集計でき、トランザクションで整合性を守れる——では、いまもRDBが最強です。だからこそ第1章で「NoSQLを理解する近道はRDBの理解」と述べたのです。あなたはすでに比較の物差しを持っています。

10.2 使い分けの判断軸

では、どう選べばよいのでしょうか。実務でよく使われる判断軸を挙げます。

背景にある理屈を一言だけ補うと、CAP定理という有名な定理があります。乱暴に要約すれば「多数のサーバーに分散したデータベースは、整合性(どこから読んでも同じ値)と可用性(いつでも応答)を、障害時に両立できない——どちらかを選ぶことになる」という話です。NoSQLの多く(特にワイドカラム)は、整合性を少し緩めることで可用性と拡張性を取りました。SNSの「いいね」の数が数秒ずれても誰も困りませんが、銀行残高がずれたら大事件です。データの性質が選択を決めます。

✅ 実務の定石 — まずRDB、明確な理由があればNoSQL

迷ったらRDBから始めてください。要件が固まりきらない段階で一番つぶしが利くのは、どんな検索も集計もできるRDBです。そして「このデータのこのアクセスパターンにはRDBでは足りない」という測定に基づく明確な理由が出てきたとき、その部分だけNoSQLを併用します。実際、多くのシステムは「主データはRDB+キャッシュにRedis」のような組み合わせで動いています。

10.3 クラウドのマネージドデータベース

ここまで「自分でDBMSをインストールして動かす」前提で話してきましたが、実務の新規システムではクラウドのマネージドデータベースを使うことが多くなりました。代表格は次のとおりです。

クラウドサービスひとこと
AWSAmazon RDS / AuroraMySQL・PostgreSQLなどを選んで数クリックで起動。Auroraはクラウド専用に再設計された高性能版
Google CloudCloud SQLMySQL・PostgreSQL・SQL Serverに対応
Microsoft AzureAzure SQL DatabaseSQL Serverのマネージド版。Windows系システムと親和的

「マネージド」の意味は、面倒で重要な運用作業をクラウド側が引き受けてくれることです。具体的には、DBMSへのセキュリティパッチ適用、自動バックアップ、ハードウェア故障時の切り替え(冗長化)、ストレージの拡張など——第9章で学んだ防御の一部を「買う」ことができるわけです。

ただし、すべてお任せにはなりません。クラウドには責任共有モデルという考え方があります。基盤側(ハードウェア、DBMS本体のパッチ)はクラウド事業者の責任、しかしその上の設定と使い方は利用者の責任です。具体的には——

「クラウドだから安全」でも「クラウドだから危険」でもなく、責任の境界線がどこにあるかを知って使うのがプロの態度です。

🛡️ セキュリティ・運用の視点 — クラウドDBの公開設定ミス

近年の大規模漏えいの頻出原因が、攻撃でも脆弱性でもなく設定ミス——「インターネットに全開放されたデータベース」です。検証のつもりで全IP許可(0.0.0.0/0)にして戻し忘れた、認証なしのまま公開した、ストレージの公開範囲を「公開」にしてしまった……。インターネット全体を常時スキャンして「開いているDB」を探すボットは実在し、公開されたDBは数時間で発見されます。守るべき三原則は、①デフォルト拒否(まずすべて閉じ、必要な通信だけ開ける)、②接続元IP制限(アプリサーバーや社内ネットワークだけに絞る。「どこからでも接続可」を検証目的でも作らない)、③認証必須(認証なしアクセスを許す設定を絶対に有効化しない)。加えて、設定を定期的に点検する仕組み(クラウドの設定監査サービス)まで入れれば、うっかりの戻し忘れも検出できます。

10.4 データベース運用の実務

データベースは「作って終わり」ではなく、動き続ける限り面倒を見る対象です。IT部門で働くうえで知っておくべき運用の柱を4つ挙げます。

① バックアップ設計

第9章の3-2-1ルールとリストア訓練が土台です。運用ではさらに「毎日何時に取るか」「何世代残すか」「何時間前まで戻れる必要があるか(目標復旧時点)」「復旧に何時間かけられるか(目標復旧時間)」を業務側と合意して文書化します。マネージドDBなら自動バックアップの保持期間と、削除保護の設定を確認します。

② 監視

障害は「気づいた時点の早さ」で被害が決まります。最低限の監視項目は次の3つです。

③ バージョンアップ計画

DBMSにもサポート期限があります。期限切れのバージョンはセキュリティパッチが出なくなるため、「動いているから触らない」は徐々に危険になっていきます。年に一度はバージョンと期限を棚卸しし、検証環境でテストしてから上げる——地味ですが重要な仕事です。マネージドDBでは古いバージョンが強制アップグレードされることもあるため、放置はどのみちできません。

④ キャパシティ計画

データ量とアクセス数の増加傾向を記録し、「このペースなら1年後にディスクが足りない」「接続数の上限に近づいている」を先回りして手当てします。監視データを月次で眺めるだけでも、突然の「もう限界です」を防げます。

💡 兼任担当者こそ「仕組み」に頼る

専任DBAがいる会社は多くありません。情シス兼任の担当者が片手間で見るのが現実です。だからこそ、目視の点検ではなく「しきい値を超えたら通知が飛ぶ」仕組みを最初に作ることが重要です。このあたりの立ち回りは一人情シスコースで詳しく扱う領域と重なります。

10.5 学習ロードマップ — この先へ

このコースで、あなたはSQLの読み書き(第3〜5章)、テーブル設計(第6章)、性能(第7章)、Python連携(第8章)、セキュリティ(第9章)まで、データベースの背骨を一通り手に入れました。次の一歩の候補を挙げます。

次に触るべきもの

# PostgreSQLをDockerで起動して接続してみる(パスワードは環境変数で渡す例)
$ docker run --name pg-study -e POSTGRES_PASSWORD=$PG_PASS -d -p 5432:5432 postgres:16
$ docker exec -it pg-study psql -U postgres
postgres=# CREATE TABLE hello (id INTEGER, message TEXT);
CREATE TABLE
postgres=# SELECT version();
 PostgreSQL 16.3 ...

第1章の sqlite3 practice.db と見比べてください。プロンプトこそ違いますが、打っているSQLは同じです——あなたの学びは製品をまたいで通用します。

資格でマイルストーンを作る

資格レベル感このコースとの関係
基本情報技術者(DB分野)入門〜基礎正規化・SQL・トランザクションなど、本コースの内容がほぼそのまま出題範囲
OSS-DB Silver基礎〜中級PostgreSQLを題材にした運用・管理寄りの資格。次の実技目標に好適
データベーススペシャリスト上級設計・性能・運用を深く問う国家試験。数年がかりの長期目標に

セキュリティに軸足を置きたい人は、セキュリティ中級・上級コースへ進んでWAFやログ分析を深掘りするのも良い流れです。第9章で学んだDBの防御が、より大きな防御体系の一部として見えてくるはずです。

最後にひとつだけ。データベースの学習で最も大切なのは、道具の名前を増やすことではなく、「このデータは誰のもので、どう持つのが正しいか」を考える習慣です。それは第1章の「Excelの4つの壁」から今日まで、一貫して問い続けてきたことでもあります。おつかれさまでした——ここから先は、実データと実務があなたの教科書です。

まとめ

練習問題

問題 10-1

次の3つの要件それぞれについて、RDBとNoSQL(使うなら4分類のどれか)のどちらを選ぶか、理由とともに述べてください。
(a) 社内の経費精算システム(申請・承認・支払いの記録)
(b) ECサイトの「最近見た商品」表示(ユーザーごとに直近20件、消えても実害なし)
(c) 商品カタログ(家電・食品・書籍で項目が大きく異なり、項目の追加が頻繁)

解答を見る

(a) RDB — お金に関わる記録であり、申請と承認と支払いの整合性が崩れることは許されません。トランザクション・制約・監査のしやすさが揃ったRDB一択です。「申請者は社員テーブルに存在すること」のような外部キー制約もそのまま活きます。

(b) NoSQL(キーバリュー: Redisなど) — 「ユーザーIDをキーに直近20件を高速に読み書き」という単純なアクセスパターンで、JOINも集計も不要、消えても再生成できるデータです。KVSの得意分野そのものです。主データ(商品・注文)はRDBに置いたまま、この機能だけKVSを併用する構成が典型です。

(c) ドキュメント型(MongoDBなど)が有力。ただしRDBでも可 — カテゴリごとに項目がバラバラで頻繁に増えるデータは、スキーマレスなドキュメント型に向きます。一方、近年のRDB(PostgreSQLなど)はJSON型の列を持てるため、「基本情報は通常の列+可変の属性はJSON列」というRDB側の解もあります。「まずRDB、明確な理由があればNoSQL」の定石に照らし、チームの経験や他データとの結合の必要性まで含めて判断できれば満点です。

問題 10-2

あなたの会社が、顧客管理システムのDBをクラウドのマネージドDB(例: Amazon RDS)に移行することになりました。利用者側の責任範囲について、導入前に確認すべきセキュリティチェックリストを5項目以上作ってください(第8章・第9章の内容も総動員してかまいません)。

解答を見る

解答例(5項目以上あり、責任共有モデルの「利用者側」に属していれば正解です):

  • 公開設定 — DBをインターネットに公開しない設定(パブリックアクセス無効)になっているか。接続元はアプリサーバーと社内ネットワークのIPアドレスだけに制限されているか(デフォルト拒否)。
  • 認証情報の管理 — 管理者パスワードは初期値から変更し、十分に強いか。接続文字列やパスワードをソースコードに直書きせず、環境変数やシークレット管理サービスで扱っているか。
  • アカウントと権限 — アプリ用・帳票用・管理者用でアカウントを分け、アプリ用アカウントはSELECT/INSERT/UPDATEなど必要最小限か。共有アカウントを作っていないか。
  • 暗号化 — 保存時の暗号化オプションが有効か。アプリとDB間の通信はTLSを強制しているか。顧客のパスワードを保存する場合はソルト付きハッシュになっているか。
  • バックアップと復旧 — 自動バックアップの保持期間は要件を満たすか。削除保護は有効か。リストア手順を実際に試したか(リストア訓練)。
  • 監査ログと監視 — 接続ログ・監査ログを有効化し、改ざんされない場所に転送しているか。接続数・遅いクエリ・ディスク使用量の監視と通知を設定したか。
  • データの取り扱い — 本番の顧客データを開発・検証環境にコピーしない運用になっているか(必要ならマスキングやダミーデータで代替)。

「パッチ適用は?」と思った人へ——マネージドDBではDBMS本体のパッチはクラウド側の責任ですが、適用のタイミング設定(メンテナンスウィンドウ)を決めるのは利用者です。境界線上の項目こそ確認リストに入れる価値があります。