データベース用語
データベース用語
Section titled “データベース用語”定義: ACIDは、データベースのトランザクションが満たすべき4つの特性です。
なぜ重要なのか:
- データの整合性: データの整合性が保証される
- 信頼性: トランザクションが確実に実行される
- 一貫性: データの一貫性が保たれる
ACIDの4つの特性:
- Atomicity(原子性): トランザクションはすべて成功するか、すべて失敗する
- Consistency(一貫性): トランザクション前後でデータの整合性が保たれる
- Isolation(分離性): 複数のトランザクションが同時に実行されても、互いに影響しない
- Durability(永続性): コミットされたトランザクションは永続的に保存される
使用例:
BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2;COMMIT;関連用語:
- トランザクション
- ロック
- デッドロック
トランザクション
Section titled “トランザクション”定義: トランザクションは、複数のデータベース操作を1つの単位として扱う仕組みです。
なぜ重要なのか:
- データの整合性: すべての操作が成功するか、すべて失敗する
- エラー処理: エラー時にロールバックできる
- 一貫性: データの一貫性が保たれる
使用例:
await db.transaction(async (trx) => { await trx('users').insert({ name: 'Alice' }); await trx('orders').insert({ userId: 1, amount: 100 }); // すべて成功した場合のみコミット});関連用語:
- ACID
- ロック
- デッドロック
インデックス
Section titled “インデックス”定義: インデックスは、データベースの検索速度を向上させるためのデータ構造です。
なぜ重要なのか:
- 検索速度の向上: クエリの実行速度が大幅に向上する
- パフォーマンス: アプリケーションのパフォーマンスが向上する
- スケーラビリティ: 大量のデータでも高速に検索できる
使用例:
-- インデックスの作成CREATE INDEX idx_user_email ON users(email);
-- インデックスを使用したクエリSELECT * FROM users WHERE email = 'alice@example.com';関連用語:
- クエリ最適化
- フルテーブルスキャン
- カーディナリティ
定義: 正規化は、データベースの設計において、データの重複を排除し、整合性を保つための手法です。
なぜ重要なのか:
- データの整合性: データの重複が排除され、整合性が保たれる
- ストレージの効率化: ストレージの使用量が削減される
- 更新の容易さ: データの更新が容易になる
正規化のレベル:
- 第1正規形(1NF): 各セルに1つの値のみ
- 第2正規形(2NF): 部分関数従属を排除
- 第3正規形(3NF): 推移的関数従属を排除
関連用語:
- デノーマライゼーション
- リレーション
- 外部キー
デノーマライゼーション
Section titled “デノーマライゼーション”定義: デノーマライゼーションは、正規化されたデータベースを意図的に非正規化する手法です。
なぜ重要なのか:
- パフォーマンスの向上: クエリの実行速度が向上する
- JOINの削減: JOIN操作が削減される
- 読み取り速度の向上: 読み取り速度が向上する
使用例:
-- 正規化されたテーブルusers (id, name, email)orders (id, user_id, amount)
-- デノーマライゼーション後orders (id, user_id, user_name, user_email, amount)関連用語:
- 正規化
- パフォーマンス最適化
- 読み取り最適化