10.3 作成、変更、削除
VOLATILEテーブルの作成・削除と、他のテーブルタイプとの永続性の違いを説明します。
VOLATILEテーブルの作成と管理
VOLATILEテーブルの作成・削除方法は次のとおりです。
作成
create volatile table vtable (id1 integer, name varchar(20));削除
drop table vtable;永続性の違いとDDL
VOLATILEテーブルは、他のテーブルタイプと異なりメモリにのみ存在します。
永続性の比較
| 項目 | VOLATILE | LOOKUP | TRANSACTION | TAG | LOG |
|---|---|---|---|---|---|
| 保存場所 | メモリ | ディスク | ディスク | ディスク | ディスク |
| サーバー再起動後のデータ保持 | X | O | O | O | O |
| テーブル構造(DDL)の保持 | O | O | O | O | O |
DDLの特性
VOLATILEで消失するのはデータであり、テーブル定義は他のテーブルタイプと同様に永続保存されます。 再起動後に必要なのは、再作成ではなく初期ロードです。
-- テーブル定義は一度だけ作成します。
CREATE VOLATILE TABLE ch10_ddl (
sensor_id VARCHAR(64) PRIMARY KEY,
value DOUBLE,
updated_at DATETIME
);作成構文
基本構文はCREATE VOLATILE TABLE テーブル名 (列定義, ...)です。
キーによる更新や削除が必要な場合は、1つの列にPRIMARY KEYを指定します。
PRIMARY KEYは任意です。- PRIMARY KEY列は1つだけ指定します。
AUTO_INCREMENT PRIMARY KEY
サーバーが数値のPRIMARY KEYを生成する場合は、単一のLONGまたはINT64列にAUTO_INCREMENTを指定します。
CREATE VOLATILE TABLE ch10_ddl_seq (
request_id LONG PRIMARY KEY AUTO_INCREMENT,
payload VARCHAR(256)
);
INSERT INTO ch10_ddl_seq(payload) VALUES('refresh');PK列を省略するかNULLを指定すると、サーバーが値を生成します。
単一のINSERT ... VALUESでは、0..INT64_MAX範囲のPK値を直接指定することもできます。
指定値が現在の次の自動値以上なら、次の自動値は指定値 + 1に進みます。小さい値を指定しても戻りません。
AUTO_INCREMENTを使用するVOLATILEテーブルでは、INSERT ... SELECTとON DUPLICATE KEY UPDATEは使用できません。
VOLATILEテーブルはサーバー再起動時にデータが消えるため、次の自動値も1から再開します。 テーブル定義は保持されるため、再作成は不要です。 SDKでINSERT結果のIDを取得する方法は、ROWIDとINSERT結果IDを参照してください。
列の追加と削除
Standard Editionでは、VOLATILEテーブルに固定長の数値ARRAY列を追加・削除できます。
ALTER TABLE ch10_ddl
ADD COLUMN (thresholds DOUBLE[2] DEFAULT [10.0, 20.0]);
ALTER TABLE ch10_ddl
DROP COLUMN (thresholds);VOLATILEは既存のスカラーADD COLUMNと同様に、ALTER前から存在する行をDEFAULTで書き直しません。
ARRAY DEFAULTを指定しても、既存行の新しい列は列全体がNULLになります。
この動作は、LOG、LOOKUP、TRANSACTION、TAG METADATAのバックフィル規則とは異なります。
ARRAYのサポート要素型、要素数、DEFAULT規則は、数値ARRAY型を参照してください。
削除
DROP TABLE ch10_ddl;
DROP TABLE ch10_ddl_seq;注意事項
- VOLATILEテーブルのDDL(構造定義)はデータベースに保存され、サーバー再起動後も残ります。
- データは再起動後に自動復元されないため、初期ロードスクリプト(起動時のmachsql実行など)を構成する必要があります。