tkrd-stack

学習ノート

自分の理解を深めるための技術メモ

← 一覧に戻る

基礎

スキーマ(schema)

データベース(DB)におけるスキーマとは、データの構造やその定義を表したものです。スキーマには、データベース内でどのようにデータが保存されるのか、テーブルやカラム、データ型、関係性などの情報が含まれます。

スキーマの役割

スキーマは、データベース内でのデータの整合性と一貫性を保つために重要な役割を果たします。データがどのように構造化されるべきかを規定するため、データを保存・管理する際のルールが決まります。

リレーショナルデータベース(RDB)のスキーマ

リレーショナルデータベースでは、スキーマがテーブル構造やカラムのデータ型、制約などを規定しています。たとえば、スキーマに従って以下のような情報が決まります。

  • テーブル名とカラム名:テーブル(例:
    Users
    )やカラム(例:
    name
    email
    )の名前
  • データ型:カラムのデータ型(例:文字列、整数、日付など)
  • 制約:データの一貫性を保つためのルール(例:
    NOT NULL
    UNIQUE
    FOREIGN KEY

スキーマに従ってデータを格納することで、たとえば「ユーザー ID は整数のみ」「メールアドレスは一意であるべき」といったルールをデータベース側で自動的に管理できるようになります。

NoSQL データベースのスキーマ

NoSQL データベース(MongoDB など)の場合、スキーマは固定されていない(スキーマレス)ことが多く、各ドキュメントの構造が異なっても保存可能です。この柔軟性により、データ構造の変更や追加に強くなり、スキーマを厳密に設計しなくても動かすことができます。

ただし、完全にスキーマレスにするとデータの一貫性を保つのが難しくなるため、アプリケーションレベルでスキーマを定義する場合もあります。これにより、ある程度のルールを持たせた設計も可能です。

スキーマのメリット

  1. データの一貫性:スキーマにより、データが常に正しい形式・制約のもとで保存されることが保証されます。
  2. 構造の明確化:データの構造があらかじめ定義されているため、アプリケーション開発時にデータベースを扱いやすくなります。
  3. クエリの最適化:データ構造が明確なので、データ検索や集計の効率が上がり、パフォーマンスが向上します。

例:リレーショナルデータベースのスキーマ

以下の例は、RDB のユーザー情報テーブルのスキーマ例です。

カラム名データ型制約
idINTEGERPRIMARY KEY, AUTO_INCREMENT
nameVARCHAR(50)NOT NULL
emailVARCHAR(100)UNIQUE, NOT NULL
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP
  • id:自動で増加する一意のユーザー ID
  • name:必須の名前
  • email:一意で、必須のメールアドレス
  • created_at:自動で現在の日付と時間が設定される作成日時

このスキーマのように、リレーショナルデータベースではデータ構造が固定されるため、あらかじめ詳細な設計が必要です。

RDB(Relational Database)

データそのものの構造(テーブルで表現されたデータとその関係性)。

RDB は「リレーショナルデータベース」の略で、データをテーブル形式で管理するデータベースです。行と列で構成されたテーブル(関係表)でデータを管理し、テーブル同士の関連を通してデータの関係性を構築します。例えば、ユーザーテーブルと注文テーブルが ID を基に関係性を持ち、データの結合や集計が容易にできます。

  • 特徴: テーブル形式でデータを扱い、主キーや外部キーなどで関係を持たせる。
  • :
    users
    テーブル、
    orders
    テーブル、
    products
    テーブルなど。

RDBMS(Relational Database Management System)

データを管理・操作するシステム。

RDBMS は「リレーショナルデータベース管理システム」の略で、RDB を操作・管理するためのソフトウェアシステムです。RDBMS は、データの保存・取得・更新・削除、トランザクション管理、バックアップ、ユーザーアクセス制御など、データベース管理に必要な機能を提供します。

  • 特徴: SQL などの言語を用いてデータの操作や管理を行える。また、セキュリティやトランザクション、バックアップ機能も備える。
  • : MySQL、PostgreSQL、Oracle Database、SQL Server

MongoDB

JSON と BSON

JSON と BSON の共通点と違いまとめ

特徴JSONBSON
表現形式テキストバイナリ
型情報含まれない各フィールドに型情報を含む
サポートする型数値、文字列、配列、オブジェクト等日付型、バイナリ、32 ビット整数等も含む
サイズ小さいことが多いやや大きくなることがある
利用の効率人間が読みやすいコンピュータが効率的に処理できる

水平スケーリング

システムの処理能力を向上させる手法で、複数のサーバーに負荷を分散させること