はじめに

データベースとは — 種類と本サイトの範囲

データベースの種類を俯瞰し、本サイトが扱うのは RDB と SQL であることを明示する入口ページ。

データベースとは — 種類と本サイトの範囲 diagram

データベースとは

データベース(database)は、アプリケーションが繰り返し読み書きするデータを、一貫した形式で・安全に・効率よく保管するための仕組みです。Excel や CSV ファイルでもデータは保存できますが、以下のような要件を同時に満たすのは困難です。

  • 複数人/複数プロセスから同時にアクセスしても壊れない(並行制御)
  • 障害や電源断が起きても、書き込み途中のデータが中途半端に残らない(耐障害性・トランザクション)
  • 100 万件・1 億件というスケールでも、欲しい 1 件をミリ秒で取り出せる(インデックス・クエリ最適化)
  • 「ユーザー」「注文」「商品」といった関係性のあるデータを整合性を保ったまま管理できる(制約・外部キー)

これらを提供するソフトウェアを DBMS(Database Management System) と呼び、ユーザー/アプリは DBMS を介してデータを操作します。

データベースの種類

データベースは「データをどう構造化するか」で大きく分類されます。代表的なものは次のとおりです。

種類データの構造得意なこと代表的な製品
リレーショナル(RDB)行と列の表(テーブル)を、関係(キー)でつなぐ厳密な整合性・複雑な集計・トランザクションPostgreSQL / MySQL / SQLite / SQL Server / Oracle
キーバリュー(KVS)キー → 値のシンプルな辞書超高速な単一キー参照・キャッシュ・セッションRedis / Memcached / DynamoDB
ドキュメントJSON のような入れ子構造を丸ごと 1 件として保存スキーマが変化しやすい・半構造データMongoDB / Couchbase / Firestore
ワイドカラム巨大な疎な表、行ごとに列が異なってもよい分散・大量時系列データCassandra / HBase / Bigtable
グラフノード(頂点)とエッジ(辺)関係をたどる探索(SNS・経路・推薦)Neo4j / Amazon Neptune
全文検索転置インデックスで本文を検索自然言語の全文検索・ランキングElasticsearch / OpenSearch / Meilisearch
時系列タイムスタンプ主キーの高速追記メトリクス・IoT・ログInfluxDB / TimescaleDB / Prometheus

これらは排他的な選択肢ではなく、実際のシステムでは「RDB を中心に据えつつ、キャッシュは Redis、検索は Elasticsearch」のように役割で使い分けるのが一般的です。

本サイトが扱うのはリレーショナルデータベース(RDB)

Query Go は、RDB と SQL に絞って解説するサイトです。業務システムや Web サービスの中核に最も多く採用されているのが RDB であり、以下の点で学ぶ価値が大きいからです。

  • SQL は業界標準で、PostgreSQL / MySQL / SQLite / SQL Server / Oracle の間で基本構文が共通している
  • データの整合性をスキーマ(型・制約・外部キー)で強制できる
  • ACID トランザクションにより、複雑な更新を「全部成功するか、全部戻す」で扱える
  • 集計・JOIN・ウィンドウ関数など、分析用途の表現力が圧倒的に高い

NoSQL(KVS / ドキュメント / グラフ等)にもそれぞれ強みがありますが、基礎としてまず RDB と SQL を押さえておくことで、他のデータストアと役割を比較しやすくなります。

各 RDBMS 製品の特徴と選び方は RDBMS の種類、スキーマを支える型の基礎は データ型の基本 に続けてまとめています。