Tag 데이터 삭제
개요
Machbase는 성능을 유지하도록 설계된 제약 조건 안에서 Tag 데이터를 효율적으로 삭제하는 기능을 제공합니다. 데이터 수명 주기를 효과적으로 관리하려면 이 제약 조건을 이해해야 합니다.
Tag 데이터 삭제 제약 조건
Machbase에서는 제한된 조건식으로 Tag 데이터를 삭제할 수 있습니다. 태그 이름,
태그 이름과 시간 조건, 전체 태그 대상 시간 조건, BEFORE로 삭제하거나
전체 데이터를 삭제할 수 있습니다.
지원하는 삭제 조건:
- 특정 태그 데이터 삭제
- 특정 태그의 특정 시간 이전 데이터 삭제
- 특정 태그의 특정 시간 범위 데이터 삭제
- 특정 시각 또는 시간 범위의 모든 태그 데이터 삭제
- 특정 시간 이전의 모든 태그 삭제
- 모든 데이터 삭제
DELETE 문 실행
특정 태그 데이터 삭제
특정 태그를 지정하면 해당 태그의 모든 데이터가 삭제됩니다.
DELETE FROM TAG WHERE NAME = 'TAG-ID';## Original Data
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2024-01-01 10:00:00 000:000:000 1
TAG_0001 2024-01-01 10:00:01 000:000:000 1
TAG_0001 2024-01-01 10:00:04 000:000:000 1
TAG_0001 2024-01-01 10:00:06 000:000:000 1
TAG_0001 2024-01-01 10:00:09 000:000:000 1
TAG_0001 2024-01-01 10:00:10 000:000:000 1
TAG_0002 2024-01-01 10:00:02 000:000:000 1
TAG_0002 2024-01-01 10:00:03 000:000:000 1
TAG_0002 2024-01-01 10:00:05 000:000:000 1
TAG_0002 2024-01-01 10:00:07 000:000:000 1
TAG_0002 2024-01-01 10:00:08 000:000:000 1
[11] row(s) selected.
Mach> delete from tag where name = 'TAG_0002';
5 row(s) deleted.
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2024-01-01 10:00:00 000:000:000 1
TAG_0001 2024-01-01 10:00:01 000:000:000 1
TAG_0001 2024-01-01 10:00:04 000:000:000 1
TAG_0001 2024-01-01 10:00:06 000:000:000 1
TAG_0001 2024-01-01 10:00:09 000:000:000 1
TAG_0001 2024-01-01 10:00:10 000:000:000 1
[6] row(s) selected.특정 태그의 특정 시간 이전 데이터 삭제
특정 태그와 시간을 지정하면 해당 태그에서 지정한 시간 이전의 데이터가 삭제됩니다. 아래 <= 예제는 지정한 시간과 같은 시간의 데이터도 삭제합니다.
DELETE FROM TAG WHERE NAME = 'TAG-ID' AND TIME <= 'Time-string';## Original Data
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2024-01-01 10:00:00 000:000:000 1
TAG_0001 2024-01-01 10:00:01 000:000:000 1
TAG_0001 2024-01-01 10:00:04 000:000:000 1
TAG_0001 2024-01-01 10:00:06 000:000:000 1
TAG_0001 2024-01-01 10:00:09 000:000:000 1
TAG_0001 2024-01-01 10:00:10 000:000:000 1
TAG_0002 2024-01-01 10:00:02 000:000:000 1
TAG_0002 2024-01-01 10:00:03 000:000:000 1
TAG_0002 2024-01-01 10:00:05 000:000:000 1
TAG_0002 2024-01-01 10:00:07 000:000:000 1
TAG_0002 2024-01-01 10:00:08 000:000:000 1
[11] row(s) selected.
Mach> delete from tag where name = 'TAG_0002' and time <= '2024-01-01 10:00:05';
3 row(s) deleted.
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2024-01-01 10:00:00 000:000:000 1
TAG_0001 2024-01-01 10:00:01 000:000:000 1
TAG_0001 2024-01-01 10:00:04 000:000:000 1
TAG_0001 2024-01-01 10:00:06 000:000:000 1
TAG_0001 2024-01-01 10:00:09 000:000:000 1
TAG_0001 2024-01-01 10:00:10 000:000:000 1
TAG_0002 2024-01-01 10:00:07 000:000:000 1
TAG_0002 2024-01-01 10:00:08 000:000:000 1
[8] row(s) selected.특정 태그의 특정 시간 범위 데이터 삭제
특정 태그와 시간 범위를 지정하면 해당 태그에서 지정한 시간 범위 안의 데이터가 삭제됩니다.
DELETE FROM TAG WHERE NAME = 'TAG-ID' AND TIME >= 'Time-string' AND TIME <= 'Time-string';## Original Data
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2024-01-01 10:00:00 000:000:000 1
TAG_0001 2024-01-01 10:00:01 000:000:000 1
TAG_0001 2024-01-01 10:00:04 000:000:000 1
TAG_0001 2024-01-01 10:00:06 000:000:000 1
TAG_0001 2024-01-01 10:00:09 000:000:000 1
TAG_0001 2024-01-01 10:00:10 000:000:000 1
TAG_0002 2024-01-01 10:00:02 000:000:000 1
TAG_0002 2024-01-01 10:00:03 000:000:000 1
TAG_0002 2024-01-01 10:00:05 000:000:000 1
TAG_0002 2024-01-01 10:00:07 000:000:000 1
TAG_0002 2024-01-01 10:00:08 000:000:000 1
[11] row(s) selected.
Mach> delete from tag where name = 'TAG_0002' and time >= '2024-01-01 10:00:04' and time <= '2024-01-01 10:00:08';
3 row(s) deleted.
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2024-01-01 10:00:00 000:000:000 1
TAG_0001 2024-01-01 10:00:01 000:000:000 1
TAG_0001 2024-01-01 10:00:04 000:000:000 1
TAG_0001 2024-01-01 10:00:06 000:000:000 1
TAG_0001 2024-01-01 10:00:09 000:000:000 1
TAG_0001 2024-01-01 10:00:10 000:000:000 1
TAG_0002 2024-01-01 10:00:02 000:000:000 1
TAG_0002 2024-01-01 10:00:03 000:000:000 1
[8] row(s) selected.특정 시간 이전의 모든 태그 삭제
Machbase 8.0.50 버전부터는 태그 이름을 지정하지 않고 시간 조건만으로 삭제하는 향상된 DELETE 구문을 지원합니다.
BEFORE 절 사용 (레거시 구문)
DELETE FROM TAG BEFORE TO_DATE('Time-string');WHERE 절과 시간 조건 사용 (향상된 구문)
참고: 다음 향상된 구문은 Machbase 8.0.50 이상 버전에서 지원합니다.
-- 정확한 시간의 데이터 삭제
DELETE FROM TAG WHERE time_column = 'time_string';
-- 특정 시간 이전 데이터 삭제
DELETE FROM TAG WHERE time_column < 'time_string';
-- 특정 시간 이전 또는 해당 시간의 데이터 삭제
DELETE FROM TAG WHERE time_column <= 'time_string';
-- 시간 범위 내의 데이터 삭제
DELETE FROM TAG WHERE time_column BETWEEN 'time_string1' AND 'time_string2';BEFORE 절 사용 예제:
## Original Data
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2018-01-01 01:00:00 000:000:000 1
TAG_0001 2018-01-02 02:00:00 000:000:000 2
TAG_0001 2018-01-03 03:00:00 000:000:000 3
TAG_0001 2018-01-04 04:00:00 000:000:000 4
TAG_0001 2018-01-05 05:00:00 000:000:000 5
TAG_0001 2018-01-06 06:00:00 000:000:000 6
TAG_0001 2018-01-07 07:00:00 000:000:000 7
TAG_0001 2018-01-08 08:00:00 000:000:000 8
TAG_0001 2018-01-09 09:00:00 000:000:000 9
TAG_0001 2018-01-10 10:00:00 000:000:000 10
TAG_0002 2018-02-01 01:00:00 000:000:000 11
TAG_0002 2018-02-02 02:00:00 000:000:000 12
TAG_0002 2018-02-03 03:00:00 000:000:000 13
TAG_0002 2018-02-04 04:00:00 000:000:000 14
TAG_0002 2018-02-05 05:00:00 000:000:000 15
TAG_0002 2018-02-06 06:00:00 000:000:000 16
TAG_0002 2018-02-07 07:00:00 000:000:000 17
TAG_0002 2018-02-08 08:00:00 000:000:000 18
TAG_0002 2018-02-09 09:00:00 000:000:000 19
TAG_0002 2018-02-10 10:00:00 000:000:000 20
[20] row(s) selected.
Mach> delete from tag before to_date('2018-02-01');
10 row(s) deleted.
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0002 2018-02-01 01:00:00 000:000:000 11
TAG_0002 2018-02-02 02:00:00 000:000:000 12
TAG_0002 2018-02-03 03:00:00 000:000:000 13
TAG_0002 2018-02-04 04:00:00 000:000:000 14
TAG_0002 2018-02-05 05:00:00 000:000:000 15
TAG_0002 2018-02-06 06:00:00 000:000:000 16
TAG_0002 2018-02-07 07:00:00 000:000:000 17
TAG_0002 2018-02-08 08:00:00 000:000:000 18
TAG_0002 2018-02-09 09:00:00 000:000:000 19
TAG_0002 2018-02-10 10:00:00 000:000:000 20
[10] row(s) selected.향상된 WHERE 절 사용 예제:
아래 각 문장은 위의 원본 데이터 20건을 복원한 뒤 따로따로 실행한 예제입니다.
-- 2018-02-01 이전의 모든 데이터 삭제 (BEFORE 절과 동일)
Mach> delete from tag where time < '2018-02-01';
10 row(s) deleted.
-- 특정 시간의 모든 데이터 삭제
Mach> delete from tag where time = '2018-02-01 01:00:00';
2 row(s) deleted.
-- 특정 시간 범위의 모든 데이터 삭제
Mach> delete from tag where time between '2018-01-05' and '2018-01-07';
6 row(s) deleted.모든 데이터 삭제
조건을 지정하지 않으면 모든 데이터가 삭제됩니다.
## Original Data
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
TAG_0001 2018-01-01 01:00:00 000:000:000 1
TAG_0001 2018-01-02 02:00:00 000:000:000 2
TAG_0001 2018-01-03 03:00:00 000:000:000 3
TAG_0001 2018-01-04 04:00:00 000:000:000 4
TAG_0001 2018-01-05 05:00:00 000:000:000 5
TAG_0001 2018-01-06 06:00:00 000:000:000 6
TAG_0001 2018-01-07 07:00:00 000:000:000 7
TAG_0001 2018-01-08 08:00:00 000:000:000 8
TAG_0001 2018-01-09 09:00:00 000:000:000 9
TAG_0001 2018-01-10 10:00:00 000:000:000 10
TAG_0002 2018-02-01 01:00:00 000:000:000 11
TAG_0002 2018-02-02 02:00:00 000:000:000 12
TAG_0002 2018-02-03 03:00:00 000:000:000 13
TAG_0002 2018-02-04 04:00:00 000:000:000 14
TAG_0002 2018-02-05 05:00:00 000:000:000 15
TAG_0002 2018-02-06 06:00:00 000:000:000 16
TAG_0002 2018-02-07 07:00:00 000:000:000 17
TAG_0002 2018-02-08 08:00:00 000:000:000 18
TAG_0002 2018-02-09 09:00:00 000:000:000 19
TAG_0002 2018-02-10 10:00:00 000:000:000 20
[20] row(s) selected.
Mach> delete from tag;
20 row(s) deleted.
Mach> select * from tag;
NAME TIME VALUE
--------------------------------------------------------------------------------------
[0] row(s) selected.ROLLUP 데이터 삭제
Machbase에서는 Tag 테이블에 연결된 롤업 데이터도 삭제할 수 있습니다.
BEFORE 절 사용 (레거시 구문)
-- 특정 시간 이전의 모든 롤업 데이터 삭제
DELETE FROM TAG ROLLUP BEFORE TO_DATE('Time-string');
-- 모든 롤업 데이터 삭제
DELETE FROM TAG ROLLUP;BEFORE에 시간을 지정하면 그 시간 이전의 모든 롤업 데이터가 삭제됩니다. 시간을 지정하지 않으면 모든 롤업 데이터가 삭제됩니다.
WHERE 절과 시간 조건 사용 (향상된 구문)
참고: 다음 향상된 구문은 Machbase 8.0.50 이상 버전에서 지원합니다.
-- 정확한 시간의 롤업 데이터 삭제
DELETE FROM TAG ROLLUP WHERE time_column = 'time_string';
-- 특정 시간 이전 롤업 데이터 삭제
DELETE FROM TAG ROLLUP WHERE time_column < 'time_string';
-- 특정 시간 이전 또는 해당 시간의 롤업 데이터 삭제
DELETE FROM TAG ROLLUP WHERE time_column <= 'time_string';
-- 시간 범위 내의 롤업 데이터 삭제
DELETE FROM TAG ROLLUP WHERE time_column BETWEEN 'time_string1' AND 'time_string2';예제:
아래 삭제 건수는 롤업 데이터에 따라 달라지는 출력 예시입니다.
-- 2018-01-15 이전의 롤업 데이터 삭제
Mach> delete from tag rollup where time < '2018-01-15';
14 row(s) deleted.
-- 특정 시간의 롤업 데이터 삭제
Mach> delete from tag rollup where time = '2018-01-15 00:00:00';
1 row(s) deleted.
-- 시간 범위 내의 롤업 데이터 삭제
Mach> delete from tag rollup where time between '2018-01-10' and '2018-01-20';
10 row(s) deleted.