コンテンツにスキップ

9.1 概要と選択基準

LOOKUPテーブルは、基準コード、機器マスター、しきい値、設定値など、比較的小規模で頻繁に参照されるデータを保存します。 データは永続保存されますが、SQL検索に使用する全行はメモリに常駐します。 そのため、繰り返し行うキーによる検索と更新に適しています。

LOOKUPテーブルの特性

LOOKUPテーブルはCREATE LOOKUP TABLE文で作成し、PRIMARY KEYが必須です。

CREATE LOOKUP TABLE ch9_overview (
    sensor_id VARCHAR(64) PRIMARY KEY,
    site      VARCHAR(32),
    unit      VARCHAR(16),
    status    VARCHAR(16)
);

LOOKUPテーブルの主な特性は次のとおりです。

項目内容
主な用途コードテーブル、機器マスター、しきい値、参照データ
必須条件PRIMARY KEYが必要
保存方式永続保存し、サーバー起動時に全行をメモリへロード
検索パターンPK検索に最適化。一般条件検索と他のテーブルとのJOINをサポート
変更パターンINSERT、UPDATE、DELETE
追加機能SEQUENCE列、Appendの重複キーポリシー

選択基準

次の条件に該当する場合は、LOOKUPテーブルを使用します。

  • データ件数が比較的小さく、全体が頻繁に参照される。
  • 全行と必要なセカンダリインデックスをサーバーメモリに保持できる。
  • コード、名前、場所、単位、状態などのマスターデータを管理する。
  • TAGまたはLOGの元データに説明情報をJOINする必要がある。
  • しきい値や設定値など、運用中に変更される参照値を保存する。
  • PRIMARY KEYで行を明確に識別できる。

TAGまたはLOGデータに場所や単位などの説明を付加するJOIN例は、 クエリと分析で説明します。

他のテーブルを検討する場合

次の要件には、他のテーブルタイプを検討します。

要件推奨テーブル
大量の時系列計測データの保存TAG
追加中心の元イベントの保存LOG
全行のメモリロードが困難な大規模リレーショナルデータTRANSACTION
トランザクションとリレーショナルな業務処理が必要なデータTRANSACTION
サーバーメモリだけで維持する最新状態キャッシュVOLATILE

LOOKUPテーブルは参照データに適していますが、永続保存されることを理由にディスク中心の大容量テーブルとして使用しないでください。 元データはLOGまたはTAGに保存し、LOOKUPにはメモリに常駐させて繰り返し検索するマスターデータを格納します。 リレーショナルデータがメモリ容量を超える場合や、複雑な業務処理が必要な場合はTRANSACTIONテーブルを使用します。

この節の実習テーブルは、次のように削除します。

DROP TABLE ch9_overview;

設計手順

LOOKUPテーブルの設計では、次の順序で決定します。

  1. 行を識別するPRIMARY KEYを決めます。
  2. 自然キーか、SEQUENCEまたはAUTO_INCREMENTに基づく代理キーかを決めます。
  3. 頻繁に検索・JOINする列にインデックスを追加します。
  4. 想定行サイズ・行数と、セカンダリインデックスを含むメモリ使用量を検証します。
  5. 運用中に更新する列と不変の列を区別します。
  6. 大量変更の前に、対象範囲を確認するクエリを用意します。

スキーマとキーの設計は、テーブル構造とスキーマPRIMARY KEYポリシーで説明します。

最終更新日