Skip to content

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.
최근 업데이트