「データベースの非正規化」を編集中
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | '''データベースの非正規化''' | + | '''データベースの非正規化'''とは、データベースの教科書に載っている「データベースの正規化」とまったく逆のことを行うことで、超高負荷のかかる環境下におけるスピードを改善する手法である。 |
== 概要 == | == 概要 == | ||
− | |||
データの重複をなくし整合的にデータを取り扱えるようにデータベースを設計することを「[[データベースの正規化]]」と呼ぶ。 | データの重複をなくし整合的にデータを取り扱えるようにデータベースを設計することを「[[データベースの正規化]]」と呼ぶ。 | ||
− | + | 教科書に書いてある定番のウリ文句であり、情報系の学校では「データベースを設計するときは正規化しよう」と習うことだろう。 | |
− | {| class= | + | {| class='wikitable' |
|+ | |+ | ||
! メーカー !! 住所 | ! メーカー !! 住所 | ||
14行目: | 13行目: | ||
|} | |} | ||
− | {| class= | + | {| class='wikitable' |
|+ | |+ | ||
! 商品ID !! 商品名 | ! 商品ID !! 商品名 | ||
25行目: | 24行目: | ||
|} | |} | ||
− | + | ||
− | + | その逆に1つのテーブルに全部詰め込む手法を「データベースの非正規化」と呼ぶ。 | |
− | {| class= | + | {| class='wikitable' |
|+ | |+ | ||
! メーカー !! 住所 !! 商品名 | ! メーカー !! 住所 !! 商品名 | ||
40行目: | 39行目: | ||
数億レコードを突破するようなテーブルがいくつも存在する現実的な環境下ではテーブルのJOINなどしたらシステムは窒息死するため、このようなデータベースの設計となる事が多い。 | 数億レコードを突破するようなテーブルがいくつも存在する現実的な環境下ではテーブルのJOINなどしたらシステムは窒息死するため、このようなデータベースの設計となる事が多い。 | ||
− | + | ||
+ | 非正規化という諸刃の剣に手を出すのは以下のようなケースが多い。 | ||
# 正規化した状態で設計・開発する | # 正規化した状態で設計・開発する | ||
# サービス開始直後に過負荷でシステムダウン | # サービス開始直後に過負荷でシステムダウン |