「データベースの非正規化」の版間の差分
ページの作成:「'''データベースの非正規化'''とは、データベースの教科書に載っている「データベースの正規化」とまったく逆のことを行う...」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (3人の利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
'''データベースの非正規化''' | '''データベースの非正規化'''とは、[[データベース]]の教科書に載っている「[[データベースの正規化]]」とまったく逆のことを行うことで、超高負荷環境下での性能改善を試みる手法である。 | ||
== 概要 == | == 概要 == | ||
=== 正規化 === | |||
データの重複をなくし整合的にデータを取り扱えるようにデータベースを設計することを「[[データベースの正規化]]」と呼ぶ。 | データの重複をなくし整合的にデータを取り扱えるようにデータベースを設計することを「[[データベースの正規化]]」と呼ぶ。 | ||
データベースの教科書に書いてある定番のウリ文句であり、情報系の学校では「データベースを設計するときは正規化しよう」「テーブルはJOINで結合して使おう」と習うことでしょう。 | |||
{| class= | {| class="wikitable" | ||
|+ | |+ | ||
! メーカー !! 住所 | ! メーカー !! 住所 | ||
| 13行目: | 14行目: | ||
|} | |} | ||
{| class= | {| class="wikitable" | ||
|+ | |+ | ||
! 商品ID !! 商品名 | ! 商品ID !! 商品名 | ||
| 24行目: | 25行目: | ||
|} | |} | ||
=== 非正規化 === | |||
その逆に1つのテーブルに重複クソ食らえで全てを詰め込む手法を「データベースの非正規化」と呼ぶ。 | |||
{| class= | {| class="wikitable" | ||
|+ | |+ | ||
! メーカー !! 住所 !! 商品名 | ! メーカー !! 住所 !! 商品名 | ||
| 39行目: | 40行目: | ||
数億レコードを突破するようなテーブルがいくつも存在する現実的な環境下ではテーブルのJOINなどしたらシステムは窒息死するため、このようなデータベースの設計となる事が多い。 | 数億レコードを突破するようなテーブルがいくつも存在する現実的な環境下ではテーブルのJOINなどしたらシステムは窒息死するため、このようなデータベースの設計となる事が多い。 | ||
ただし非正規化は諸刃の剣であるということを忘れてはならない。途中での方針変換による採用は非常に危険である。 | |||
# 正規化した状態で設計・開発する | # 正規化した状態で設計・開発する | ||
# サービス開始直後に過負荷でシステムダウン | # サービス開始直後に過負荷でシステムダウン | ||