データベース
基礎
データベースとは
- ある目的をもってまとめられたデータの集まりのこと
- 例
- 図書館
- アドレス帳
基本機能
- データの検索と更新(登録、修正、削除)
- 同時実行制御
- 耐障害性
- データの冗長化
- バックアップ
- セキュリティ
データモデル
概念データモデル
- データの内容や概念をまとめた抽象的なモデル
論理データモデル
- データベースで実際に実装可能なモデル
- 種類
- 階層型データベース
- データをヒエラルキー構造で管理するデータベース
- 例
- 組織図、樹形図
- ネットワークモデル
- 階層型では表現できない、子が複数の親を保つ場合ンドの網状で表現するデータモデル
- リレーショナルデータベース(関係モデル)
- オブジェクト指向データベース
オブジェクト
という形式でデータを管理
- XML データベース
- XML という形式でデータを管理
- NoSQL データベース
- 階層型データベース
物理データモデル
- データを DBMS で物理的に配置するモデル
設計
概念設計(モデリング)
- => 概念データモデルができあがる
論理設計
- データベースとユーザやデータベース以外のシステムを結びつけるための設計
- => 論理データモデルができあがる
物理設計
- データベースと DBMS やハードウェアを結びつけるための設計
- => 物理データモデルができあがる
3 層スキーマアーキテクチャ
- ANSI で標準化された
ANSI/X3/SPARC
- ANSI で標準化された
DBMS(Data Base Management System : データベース管理システム)
コスト
ライセンス
- プロセッサライセンス
- CPU 性能に応じて価格が決まるライセンス体系
- ユーザライセンス
- DBMS を利用するユーザに応じて価格が決まる体系
- プロセッサライセンス
サブスクリプション
- 期限を決めた有期の使用許可
冗長化
クラスタリング
Active-Active
- クラスタを構成するコンポーネントが同時に稼働
- Oracle
- RAC(Real Application Clusters)
- DB2
- pureScale
- メリット
- ダウンタイムが短い
Active-Standby
- クラスタを構成するコンポーネントのうち、同時に稼働するのは Active のみで、残りは待機(Standby) している
- ホットスタンバイ
- 普段から待機系を起動
- コールドスタンバイ
- 待機系のデータベースは通常は起動せず、現用系がダウンしたら待機系を起動する
レプリケーション
- データベースとストレージを複数用意し耐障害性を高める
ストレージ共有
シェアードディスク型
- 複数のサーバが 1 つのディスクを使用する
シェアードナッシング
- ネットワーク以外のリソースをすべて分離するやり方
- スケールで性能向上
- シャーディング
- MySQL Cluster
アーキテクチャパターン
- スタンドアロン
- クラスタリング
- シェアードナッシング
- シェアードディスク
- Active-Active
- Active-Standby
- ホットスタンバイ
- コールドスタンバイ
- レプリケーション
- マスター-スレーブ
- マルチマスタ
階層
- インスタンス(プロセス)
- データベース 1
- スキーマ a
- テーブル A
- テーブル B
- テーブル C
- スキーマ a
- データベース 2
- スキーマ b
- テーブル D
- テーブル E
- スキーマ b
- データベース 1
トランザクション
可用性向上のためのデータベース構成
共有ディスクによるアクティブ - スタンバイ構成
- マスターで障害が発生した場合には、スレーブで共有ディスクをマウントし、スレーブを可動させる
- クラスタソフト
- Lifekeeper
- Pacemaker
非共有ディスクによるアクティブ - スタンバイ構成
- データベースサーバを複数作成し、レプリケーション構成をとる
- 機能
- Oracle Data Guard
- PostgreSQL のストリーミングレプリケーション
- 同期 / 非同期
非共有ディスクによるアクティブ / アクティブ
- 複数台のデータベースサーバがそれぞれデータを保持していて、アプリケーションはどのサーバからもデータベースへの更新・参照が可能な構成
- マルチマスターレプリケーション
- Bi-Directional Replication
- 難
共有ディスクによるアクティブ - アクティブ構成
- 一つの共有ディスクに対し、複数のデータベースサーバからアクセスする方式
- 機能
- Oracle Real Application Clusters(RAC)
SQL パフォーマンスチューニング
- ログの解析
- スロークエリ
- クエリー実行計画の確認
- リソース情報の確認
- パラメータの確認
インデックスの使い方
- カーディナリティ(Cardinality)
- インデックス内のユニークな値の多さを表した指数
- カーディナリティが
- 高い
- AUTO_INCREMENT
- 住所
- 更新日時
- 低い
- フラグ
- カテゴリ
- 都道府県
- 高い
- ANALYZE TABLE または myisamchk -a を実行することによって更新される
- カーディナリティーが高いほど、MySQL が結合を実行するときにこのインデックスを使用する可能性は高くなる
- 結合の絞り込み結果の低いカラムにインデックスを貼ってもあんまり意味ない
インデックス作成方針
- サイズの大きなテーブルだけ作る
- 主キー制約や一意制約の付与されている列には不要
- カーディナリティの高い列に作る
注意
- インデックス更新のオーバーヘッドにより、更新処理の性能劣化させる
- 意図したものと違うインデックスが使われてしまう可能性がある
ハッシュインデックス
B-Tree インデックス
パーティションの使い方
データ分析とデータベース
データウェアハウスとデータマイニング
BI(Business Intelligence)
- 企業などの組織に関するデータを収集・蓄積・分析・報告することにより、経営上の意思決定を効率的に行うための方法
OLTP(Online Transaction Processing)
- トランザクションを中心とした処理
OLAP(Online Analytical Processing)
- スライシング,ダイシング,ドリルダウンなどのインタラクティブな操作によって多次元分析を行い,意思決定を支援
- ドリルダウン
- データ分析の結果いったんある情報を得た後、更にデータの階層構造に従って掘り下げて一定の事項に対して詳細な情報を得るための分析を行うこと
- ドリルダウン
- RDB からデータを抽出し、別のデータベースに移行
- 多次元データとして再構築し、様々な次元で分析しやすいようにする
データウェアハウス
- 上記のデータの集まり
- 基幹業務のデータベースとは別に作成され,更新処理をしない集計データの分析を主目的
- 「意思決定のため、目的別に編成され統合された時系列で、削除や更新を行わないデータの集合体」
- スライシング,ダイシング,ドリルダウンなどのインタラクティブな操作によって多次元分析を行い,意思決定を支援
データマイニング
- データウェアハウスに蓄積されている大量の生データから、統計学的手法、数学的手法を用いて今まで知られていなかったデータの規則や因果関係を見つけ出す手法
データマート
- 個人別データ,部門別データ,サマリデータなど,分析の目的別に切り出され,カスタマイズされたデータを分析
データクレンジング
- 信頼性の低いデータを見つけて修正や削除を行って適切な正しいデータの集まりにすること
- データクレンジングの作業で、データ形式の統一、欠損値の補完、単位の統一、異常値の処理などの処理をされたデータによってデータウェアハウスは構築
ロールアップ
- データを詳細に分析した後、いったん表示されている詳細事項を隠して、上位の情報だけから大きな傾向を把握しようとすることで、前記ドリルダウンの反対の操作となる