コンテンツにスキップ

4.3 データ変更ポリシー

UPDATEDELETETRUNCATE のサポートはタイプごとに異なります。このページではモデル選択に 必要な方針をまとめます。正確な構文と制約はリンク先の SQL リファレンスを基準にしてください。

変更ポリシーは、更新できるかだけでなく、誰がどの範囲を変え、失敗時にどこまで戻せるかを定めます。 現在状態の更新、元の計測値の補正、スキーマ変更、保持期限による削除を別々の処理として区別します。

テーブルタイプ別の変更サポート

テーブルタイプUPDATEDELETETRUNCATE
TAGStandard の DATA 補正: タグ選択と BASETIME の条件が必要BEFORE、タグ/軸条件、または全削除X
LOGXBEFOREOLDESTEXCEPT、全削除O
TRANSACTIONOOO
VOLATILE主キー条件主キー条件または全削除X
LOOKUP一般条件式、PK 変更不可一般条件式または全削除X

LOG は入力したイベントを更新しない構造です。頻繁に変更する状態や設定は VOLATILE、LOOKUP、 TRANSACTION に保存してください。

変更単位と失敗処理

操作モデルで決める事項
現在の設定値の更新キー、許容値、同時更新者の処理
誤った計測値の補正タグ・時間範囲、補正理由、ROLLUP 再計算
LOG イベントの訂正原文を残して補正イベントを関連付けるか
参照キーの置き換え参照データの切り替え順序と途中失敗の処理
期間削除保持基準時刻、削除範囲、必要なバックアップ

複数の TRANSACTION DML は明示的トランザクションにまとめられます。LOOKUP・VOLATILE の変更や LOG・TAG 入力も同じトランザクションに参加すると考えないでください。TAG 履歴の保存後に VOLATILE キャッシュ更新が失敗しても履歴は残る場合があり、再構築や再試行が必要です。Append の参加範囲は API と対象タイプで異なるため、SDK サポート範囲で確認します。

複数行を変更する前に、同じ条件で件数と代表行を確認します。この事前検索は行をロックせず、 後の変更範囲を固定するものでもありません。同時入力・更新がある場合は作業時間と対象範囲も制御し、 結果の影響行数と変更後の値を確認します。

UPDATE ポリシー

TRANSACTION, VOLATILE, LOOKUP

  • TRANSACTION は一般的なリレーショナル UPDATE とトランザクションをサポートします。
  • VOLATILE は主キーの一致条件で対象を指定します。
  • LOOKUP は一般条件式を使えますが、主キー列そのものは変更できません。

LOOKUP UPDATE には WHERE が必要です。LOOKUP・VOLATILE の主キー変更は削除と新キー入力を 別々の文で行うため、元データの保護と参照の切り替え順序を先に定めます。 両方をまとめてロールバックする必要がある場合は TRANSACTION を検討します。

LOOKUP の対応述語と式は LOOKUP 述語 UPDATEを参照してください。

TAG data UPDATE

TAG の実際の時系列データとメタデータは、異なる構文で更新します。

対象構文主な制約
時系列データUPDATE tag_table SET ... WHERE ...タグ選択と BASETIME の両条件が必要
メタデータUPDATE tag_table METADATA SET ...TAG メタデータ専用構文

TAG data UPDATE は Standard Edition の論理 TAG テーブルでサポートされます。タグ名、BASETIME、 メタデータ列は SET の対象にできません。修正範囲にマテリアライズ済みの集計があれば ROLLUP_REBUILD で再構築してください。

TAG DATA の SET 右辺は既存行の列を参照できません。SET value = value + 1 のような一括加算では 補正しません。計算済み補正値を定数またはパラメーターで渡し、必要範囲に限定します。 補正履歴が必要なら上書きだけでなく、変更前後の値と理由を別の履歴に保存します。

構文と許容式は次のリファレンスを正本とします。

LOG は UPDATE をサポートしません。

DELETE ポリシー

TRANSACTION, VOLATILE, LOOKUP

  • TRANSACTION は一般的な WHERE 条件で削除できます。
  • VOLATILE は主キー条件で削除するか、条件なしで全行を削除できます。
  • LOOKUP は一般条件式で削除するか、WHERE なしで全行を削除できます。

LOOKUP の対応述語は LOOKUP 述語 DELETEを参照してください。

LOG

LOG は任意の一般的な WHERE ではなく、ログ保持用の削除構文を使います。OLDESTEXCEPTBEFORE、全削除から目的に合う形式を選びます。正確な構文と実行例は LOG データライフサイクルを参照してください。

TAG/KV

TAG/KV は BEFORE で古いデータを削除するか、タグ名と軸条件で対象を選択します。 BEFORE の時刻は現在より過去である必要があります。構文は TAG データ変更を参照してください。

保持目的の手動削除を繰り返す場合は Retention Policyを使用します。

TAG メタデータ

DELETE FROM table_name METADATA で削除します。対象のタグに実データが1つでも残っていれば、 文全体が失敗します。

詳細は TAG メタデータを参照してください。

TRUNCATE ポリシー

TRUNCATE TABLE は LOG と TRANSACTION だけでサポートされます。スキーマとインデックス定義を 保持し、すべての行を削除します。

項目TRUNCATEDELETE
対象テーブル全体タイプにより全体または条件指定
WHERE不可対応範囲で可能
TRANSACTION のロールバック明示的トランザクションで可能明示的トランザクションで可能

削除前にバックアップと再入力経路を確認します。TAG は対応する BEFORE またはタグ/軸条件、 VOLATILE・LOOKUP の全削除は条件なしの DELETE を使用します。

TRANSACTION のロールバック可否を LOG の削除へ適用しないでください。確定済みの変更は後の ROLLBACK で戻せません。また、削除と物理ディスク領域の返却は同時とは限らないため、 使用容量と対象テーブルの領域回収状態を確認します。

最終更新日