RDBM(Relational Database)
基礎
二次元表
の形式でデータを管理するデータベースリレーションとタプル(行、組) で表現
関係型データベース
SQL を利用することで手軽にデータ操作が可能になった
3 値論理
- true
- false
- NULL
- 不明・未知(Unknown)
- 値は存在するが、どのような値かは分からない
- 非存在・適用不能(Inapplicable)
- 値が存在しないので、そのことを示す
- 注意点
- NULL は値ではない
- 不明・未知(Unknown)
テーブル設計
- テーブル
- 共通的な要素の集合
正規化
データの冗長性をなくしたり、混在している等価な表現をある統一形式に整形したりすることによって、同じ形式でデータを扱えるようにすること
更新時異状
- 正規化を行っていない時に起こるタプルの更新時の異状
- タプル挿入時異状
- タプル更新(修正)時異状
- タプル削除時異状
一般的に正規化を行わないデータベース
- データの更新を行わないもの
- データウェアハウス
- データの履歴を残すもの
- 高速化が特別に必要なもの
- データの更新を行わないもの
関係従属性
- ある属性 X の値が決まれば、別の属性 Y の値が一意に決まるといった性質
- X -> Y
- X
- 決定項
- Y
- 従属項
- X
情報無損失分解
- 正規化を行う時に、ただ更新時異状を避けるために適当に分解すると、もともとあった情報が失われる可能性がある
- 関係を分解するときには、その関係を結合することで元の関係を復元できる必要がある
- 分解した関係を自然結合した時に元に戻せる分解の仕方のこと
- 正規化を行う時に、ただ更新時異状を避けるために適当に分解すると、もともとあった情報が失われる可能性がある
メタデータ
- あるデータが持つ、データ自信に関する抽象度の高いデータ
第一正規形(1 NF)
- テーブルのセルに複合的な値を含んではいけない
- 属性を単位土
ER 図(Entity-Relationship Diagram : 実態関連図)
ボトルネック
ディスク I/O 対応
ディスクの本数を増やす
- 複数のディスクに同時に書き込みや読み込みをすることでスループットが向上
読み取るデータ量を減らす
読み込みリクエスト数を減らす
- バッファキャッシュを利用してディスク I/O を減らす
- 必要なデータのみ I/O 要求を出す
分析と対策
- AWR レポート
- iostat
CPU 対応
- CPU
- よりクロック周波数の高い CPU に交換する
- CPU を増設する
- コア数を増やす
- 読み取るデータを減らす
ネットワーク対応
- 帯域を拡張する
- NIC をよりレイテンシの小さいものに交換する
- ネットワーク上のラウンドトリップ数を減らす
共有リソースの競合(一貫性/整合性を保持するロック競合)対応
- テーブルロック => 行ロック