2009年2月4日水曜日

データの扱い方

 システム分析では管理対象とするデータ項目を見つけ出し、整理して「Entity」とその関連として定義していくという作業をする。こうして見つけたデータ塊を正規化することでRDBを使用するための下地になるのであるが、パフォーマンスの観点からは正規化しない方が良い場合も存在する。
 つまり、実行時にJOINやらUNIONやらが多数使用されると実行速度に影響を与えることがあり得るため、最初からまとまった形でデータを保有しておいた方がよい場合がある。こうするとRDBでは正規化が崩れることになり、重複するデータの存在をどこかで同期する必要が発生する。これをTriggerなどで形成すれば、以下のような構造のDBを作成できそうである。

 概念モデル:正規化したものであり、更新や追加はここに行われる
 論理モデル:実際に使用したい塊となっているもので、Viewや重複Tableなどで定義
 物理モデル:


3層スキーマ
 概念モデル:概念的なまとまり、概ね正規化された状態
 論理モデル:アプリケーションで使用したいまとまり、上記モデルの合成や集計
 物理モデル:実際にDBMSに作成する定義

リレーショナル型
 リレーショナルとは、縦横の表形式でデータをまとめていることを指す
 表の制約としてカラム定義が固定化される
 他のデータとの関連はキーの一致による
Key-Value型
MS-Azule/SDS, GoogleAppEngine/BigTable, Amazone/C2D など
キーに対して値をとれれば何でも可の形式
 RDBのように見せることもできる

 

0 件のコメント: