Oracleシステム設計

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
584
ISBN
4-90090-046-X
原書
Oracle Design
FORMAT
Print
5,720円
この商品は品切れ再入荷未定です

データベースのシステム設計は、システムのパフォーマンスおよび稼働力に大きな影響をもたらします。本書は、Oracleのシステム設計について、詳細に設計のコツと具体的方法を提示する一冊です。データベースシステムとコード設計に注目し、データ型、キーと索引の使用、クライント/サーバやデータウェアハウスなどのアーキテクチャについてカバーしています。

目次

・部 Oracleで設計を始める前に

1章 設計入門
        1.1 設計とは
        1.2 ケーススタディ
                1.2.1 戦略
                1.2.2 分析
                1.2.3 設計
                1.2.4 開発以後
                1.2.5 プロジェクトを成功させるには
        1.3 代替方法とアプローチ
                1.3.1 MoSCoW分析
        1.4 設計フェーズのプランニング
                1.4.1 リプランニング
        1.5 設計タスク
                1.5.1 設計:初期フェーズ
                1.5.2 データベースの設計
                1.5.3 処理/コードの設計
                1.5.4 後期の設計タスク

2章 Oracleにとって設計が重要な理由
        2.1 特定のアーキテクチャに応じた設計
                2.1.1 クライアント/サーバ
                2.1.2 分散データベース
                2.1.3 データウェアハウス
                2.1.4 パラレル処理
        2.2 パフォーマンスを考慮した設計
                2.2.1 キーと索引
                2.2.2 非正規化(冗長化)
                2.2.3 オプティマイザの選択
                2.2.4 コーディング手法
        2.3 設計に関するその他の検討事項
                2.3.1 大規模データベース(VLDB)
                2.3.2 時系列(時間)データ
                2.3.3 他のシステムとのインタフェース
        2.4 Oracle7向けの設計
                2.4.1 バージョン7.0
                2.4.2 バージョン7.1
                2.4.3 バージョン7.1.6
                2.4.4 バージョン7.2
                2.4.5 バージョン7.3
        2.5 Oracle8の紹介
                2.5.1 分割
                2.5.2 Oracle7からの上位互換性
                2.5.3 しかし...

3章 データモデリング
        3.1 モデルの種類
        3.2 データモデリングとは
                3.2.1 エンティティ、属性、キー
                3.2.2 リレーションシップ(関連)
                3.2.3 サブタイプとスーパータイプ
        3.3 エンティティリレーションシップダイアグラム
                3.3.1 エンティティと属性の表現
                3.3.2 リレーションシップの表現
                3.3.3 サブタイプとスーパータイプの表現
                3.3.4 多対多のリレーションシップの表現
                3.3.5 再帰的リレーションシップ(豚の耳)の表現
        3.4 概念情報モデルの品質チェック
                3.4.1 データモデルの正規化
                3.4.2 情報モデルにおける違法または異常な構造
                3.4.3 レイダース:失われたアーク
        3.5 エンティティライフヒストリとデータフローダイアグラム
                3.5.1 エンティティライフヒストリ(ELH)
                3.5.2 データフローダイアグラム
        3.6 データ駆動型設計とメタモデル

・部 データベースの設計

4章 冗長化
        4.1 冗長化:その意味、必要性、および時期
                4.1.1 下位方向の冗長化
                4.1.2 上位方向の冗長化
        4.2 冗長化の実装法
        4.3 その他の冗長化
                4.3.1 表内冗長化
                4.3.2 分割/生成冗長化
                4.3.3 表マージ冗長化

5章 データ型とヌル
        5.1 使用可能なデータ型
        5.2 数値データ
                5.2.1 整数または実数
                5.2.2 数字列
        5.3 日付と時刻(時間データ)
        5.4 文字列データ
                5.4.1 フリーテキスト
        5.5 非構造化データとBLOB
        5.6 その他のデータ型
        5.7 ヌル値
                5.7.1 ヌルの意味
                5.7.2 ヌルのコーディングに関する問題
                5.7.3 ヌルの使用法に関するまとめ

6章 キーと索引
        6.1 主キー
                6.1.1 複号キーまたは代理キーを調べる
                6.1.2 一意でない(またはほぼ一意な)キー
                6.1.3 長いカスケードキーの代わりに代理キーを使用する
        6.2 その他のキー
                6.2.1 候補キー
                6.2.2 外部キー
        6.3 索引の概要
                6.3.1 索引の動作方法
                6.3.2  すべての列に索引を付けてはならない理由
        6.4  索引の種類と索引付けのテクニック
                6.4.1 Bツリーインデックス
                6.4.2 索引を無効にする
                6.4.3 連結索引
                6.4.4 オプティマイザを選択する
                6.4.5 バインド変数の問題
                6.4.6 ハッシュキー
                6.4.7 インデックスクラスタ

7章 時系列データの扱い
        7.1 時系列データの問題点
                7.1.1 時系列データ用に特殊なエンジンを使用する
                7.1.2 簡単なケーススタディ
        7.2 時系列データベース設計上の問題点
                7.2.1 有効日付の精度とは何か
                7.2.2 2つの日付は両方とも必要か
                7.2.3 無制限はハイバリューとヌルのどちらで表すべきか
                7.2.4 日付有効型の表に主キーは使えるか
                7.2.5 日付期間のオーバーラップやギャップは許されるか
                7.2.6 履歴データとして別の表を使用する
                7.2.7 日付有効型外部キー
                7.2.8 二重範囲チェックの方法
        7.3 時系列データのまとめ

8章 データのロードとアンロード
        8.1 外部システムの扱い
                8.1.1 インタフェースの種類
                8.1.2 考慮すべき問題
                8.1.3 「相手側」との協力
        8.2 データ互換性の問題
                8.2.1 ダーティデータの扱い
                8.2.2 旧コードのロード
                8.2.3 整合性の崩れたデータのロード
                8.2.4 エンティティ制約に違反するデータのロード
                8.2.5 ヌル値のロード
                8.2.6 堅実な方法を選択する
                8.2.7 トリガーと宣言的制約
                8.2.8 ヌル化できる値を使用して外部キー制約を無効にする
        8.3 データ移行手順
        8.4 データ変換
        8.5 ファイル形式
        8.6 ロード順、回復、コミットの頻度
        8.7 SQL*Loaderを使用する
                8.7.1 SQL*Loader対3GL
                8.7.2 SQL*Loaderの長所と短所
        8.8 Oracle7からOracle7への移行:特殊なケース
        8.9 外向きデータ

9章 オブジェクト配置とストレージ
        9.1 オブジェクト配置の指定
        9.2 サイジング
                9.2.1 表のサイジング
                9.2.2 ロールバックセグメントのサイジング
                9.2.3 メモリとSGAのサイジング
        9.3 ストレージパラメータの指定
                9.3.1 INITIALとNEXT
                9.3.2 MAXEXTENTSとMINEXTENTS
                9.3.3 FREELISTSとFREELIST GROUPS
                9.3.4 PCTFREEとPCTUSED
        9.4 スクリプトの作成
        9.5 計画の実装

10章 データの保護
        10.1 アーカイビング
                10.1.1 アーカイビングオプション
                10.1.2 アーカイブの方法
                10.1.3 アーカイブの時期
                10.1.4 ファイルまたは表のどちらにアーカイブすべきか
                10.1.5 いったんアーカイブしたデータを復元できるか
                10.1.6 アーカイビングに関する注意点
        10.2 監査
                10.2.1 オーディットトレイルとは
                10.2.2 もっとも基本的なオーディットトレイル
                10.2.3 Oracle7の監査機能を使う
                10.2.4 トリガーを使用した詳細な監査
                10.2.5 代替アプローチ
                10.2.6 監査に関するヒント
        10.3 セキュリティ
                10.3.1 アクセスセキュリティ
                10.3.2 データセキュリティ
        10.4 バックアップ
                10.4.1 バックアップ戦略
                10.4.2 イメージコピー
                10.4.3 エクスポートとインポート
                10.4.4 アーカイブログモード
                10.4.5 スタンバイサイト
                10.4.6 バックアップのまとめ

・部 アーキテクチャ別の設計

11章 クライアント/サーバの設計
        11.1 なぜクライアント/サーバか
        11.2 クライアント/サーバとは
        11.3 ハードウェアの種類
        11.4 クライアント/サーバ設計上の基本的な問題
        11.5 クライアント/サーバの設計
                11.5.1 クライアント/サーバにおける負荷分散モデル
                11.5.2 シン(薄い)クライアントの重要性
        11.6 SQL*Netの基礎
        11.7 SQL文の解析
        11.8 ミドルウェアを置く
        11.9 設計上の考慮点
                11.9.1 不揮発性データをクライアント上にキャッシングする
                11.9.2 クライアント/サーバと分散データベース
                11.9.3  第2のデータベース層を導入する
                11.9.4 ビューを使用してネットワークトラフィックを削減する
                11.9.5 ビューの最適化
                11.9.6 クライアント/サーバ環境における入力データのチェック
                11.9.7 クライアント/サーバにおける時刻の問題

12章 分散データベースの設計
        12.1 なぜ分散データベースなのか
        12.2 Oracleのデータ分散サポート
                12.2.1 データベースリンク
                12.2.2 分散ジョイン
                12.2.3 リモート更新
                12.2.4 2フェーズコミット
                12.2.5 Oracle7 データ分散機能
                12.2.6 データ分散に欠かせない6つのエンティティ特性
        12.3 データ分散戦略を選択する
                12.3.1 2フェーズコミットの詳細
                12.3.2 リモートDML
                12.3.3 対称型リモートプロシージャコール(RPC)
                12.3.4 スナップショット
                12.3.5 無制限の表レベルトリガー
                12.3.6 非同期リモートプロシージャコール
                12.3.7 非同期対称型レプリケーション
                12.3.8 同期対称型レプリケーション
                12.3.9 ミキシングおよびマッチングアプローチ
        12.4 シナリオ例
                12.4.1 シナリオ1
                12.4.2 シナリオ2
                12.4.3 シナリオ3
                12.4.4 シナリオ4
                12.4.5 シナリオ5
        12.5 代替システムとして分散データベースを使用
        12.6 その他の設計における考慮点
                12.6.1 LONG列
                12.6.2 バッチ更新
        12.7 データ分散サマリー

13章 データウェアハウスの設計
        13.1 なぜデータウェアハウスなのか
        13.2 データウェアハウスとは何か
                13.2.1 多次元データ対空間データ
                13.2.2 データウェアハウスを際立たせるもの
                13.2.3 設計上の課題
                13.2.4 Oracle社のデータウェアハウスへの取り組み
                13.2.5 いくつかの注意事項
        13.3 データウェアハウス設計上の課題
                13.3.1 多次元モデリングとスタースキーマ
                13.3.2 ファクトと次元
                13.3.3 スタースキーマの例
                13.3.4 次元のロールアップ
                13.3.5 パーティショニング
                13.3.6 集約方針を決定する
                13.3.7 ファクト表を組み合わせる
        13.4 データの抽出とロード
                13.4.1 ステップ1:データを読む
                13.4.2 ステップ2:データをフィルタにかける
                13.4.3 ステップ3:履歴データが失われていないことを確認する
                13.4.4 ステップ4:データを操作する
                13.4.5 ステップ5:データを移す
                13.4.6 ステップ6:データウェアハウスにデータをロードする
                13.4.7 ステップ7:リジェクトされたレコードを片づける
                13.4.8 ステップ8:集約を派生させる
                13.4.9 ステップ9:妥当性を検査する
        13.5 メタデータ
        13.6 変換の種類と方法
                13.6.1 コード化されたキー
                13.6.2 多言語システムにおけるフラグ
                13.6.3 数値データの操作
                13.6.4 データの操作
                13.6.5 キーをマッチさせてマージする
        13.7 データマイニングツールと OLAPツールを使ってデータを取り出す

14章 並列化の必要性
        14.1 並列化の必要性
                14.1.1 ストライピング
                14.1.2 RAID、ミラー化、性能
        14.2 並列化のための設計
                14.2.1 索引の作成および保守
                14.2.2 バッチ処理
                14.2.3 ケーススタディ:Oracle Payroll
        14.3 パラレルクエリーオプション(PQO)
                14.3.1 PQO の長所と短所
                14.3.2 並列度の設定方法
                14.3.3 PQO に関する結論
        14.4 Oracle パラレルサーバ(OPS)
                14.4.1 対称マルチプロセシング(SMP:Symmetric Multiprocessing)
                14.4.2 Massively Parallel Processor(強力なパラレルプロセッサ):規則変更の試み
                14.4.3 OPS における結論

・部 コードモジュールの設計

15章 コード設計の概要
        15.1 分析フェーズの生産物
                15.1.1 機能階層
                15.1.2 機能の定義
                15.1.3 その他の生産物
        15.2 機能をモジュールにマップする
        15.3 忘れてはならないシステムモジュール
                15.3.1 アプリケーション管理
        15.4 ソースとバージョンの制御
                15.4.1 データベース制御
                15.4.2 ソースコード制御
        15.5 テンプレートコード
        15.6 テスト用の設計
                15.6.1 テスト戦略の作成
                15.6.2 テストサポートコードの開発
        15.7 ユニット設計で利用できるCASE製品

16章 データ処理位置の決定
        16.1 データルール、プロセスルール、インタフェースルール
                16.1.1 ルールの種類の定義
                16.1.2 ドキュメンテーションと承認サイクルについて
        16.2 ロジックの配置
                16.2.1 どのルールをどこに配置するか
                16.2.2 複数でカバーする
        16.3 ロックに関する問題
        16.4 3層アーキテクチャとの関連性
                16.4.1 接続性の拡張

17章 見積り、プロトタイプおよび仕様      445
        17.1 モジュールの設計および開発の見積り計画
        17.2 メガモジュールの追放
                17.2.1 バッチ処理
                17.2.2 レポート
                17.2.3 オンラインアプリケーション
        17.3 プロトタイプを作成するか
                17.3.1 RAD 方法におけるプロトタイプ作成
                17.3.2 非RAD 開発におけるプロトタイプ作成
        17.4 モジュールの仕様化のためのガイドライン
        17.5 画面、レポートの仕様
        17.6 バッチプロセスの仕様

18章 ロッキング
        18.1 ロッキングの設定
                18.1.1 ロッキングの遅延
                18.1.2 ロールバックセグメントの使用
                18.1.3 外部キー
        18.2 デッドロック
        18.3 逐次処理機能
        18.4 ロッキングの設定におけるその他の問題
                18.4.1 ユーザのロッキング
                18.4.2 ロッキングの効率:ブロックのクリーンアウトと表単位のロッキング

19章 ツールセットの選択
        19.1 ツールの種類
        19.2 ツールの選択基準
        19.3 クライアント/サーバ用ツール
        19.4 WWWの設計

20章 画面、レポート、バッチ処理プログラム、その他の設計
        20.1 画面の設計
        20.2 レポートの設計
        20.3 バッチ処理プログラムの設計
                20.3.1 処理過程の追跡
                20.3.2 ツールの選択
                20.3.3 コントロールブレイクを使った処理
                20.3.4 データを更新する間隔
                20.3.5 正しい対処をする
        20.4 エラー処理
        20.5 ナビゲーション
        20.6 オンラインヘルプ

・部 付録

付録A 市販パッケージ
        A.1 パッケージの評価
        A.2 環境に適するか
                A.2.1 ハードウェアおよびオペレーティングシステム
                A.2.2 アプリケーション
                A.2.3 システムサポート機能
        A.3 パッケージのカスタマイズ
        A.4 ビッグデータモデル問題

付録B 便利なテクニック
        B.1 変更中表の処理
        B.2 2000年問題とOracle の考え方
                B.2.1 問題の背景
                B.2.2 データベース内で修正可能か
                B.2.3 問題点を突きとめる
                B.2.4 修正
                B.2.5 自動化
                B.2.6 修正のテスト
                B.2.7 汎用的な解決策
                B.2.8 2000年問題のまとめ
        B.3 拡張機能の提供
                B.3.1 拡張機能を検討するタイミング
                B.3.2 拡張機能のタイプ
                B.3.3 データ主導型の拡張
                B.3.4 ビュー主導型の拡張
                B.3.5 プロシージャ/関数主導型の拡張
                B.3.6 従来の拡張の方法
                B.3.7 拡張についてのまとめ