CYCLONE DDL
기본적으로 CYCLONE 대상 테이블은 DDL 구문이 되지 않습니다.
하지만 DDL 구문을 수행하지 못하게 막아버리면 컬럼 추가 등의 작업을 할 수 없기 때문에 절차에 따라 예외로 처리하는 DDL 이 있습니다.
CYCLONE 사용해보기
단, 특정 작업 절차에 의해 허용되는 DDL 과, 작업 절차에 속하지 않더라도 허용되는 DDL 이 있습니다.
CYCLONE 에서 허용하는 DDL 목록
특정 작업 절차에 의해 허용되는 DDL 구문
절차에 따른 DDL 허용 / 비허용 |
구문 |
허용 |
ALTER TABLE ... ADD COLUMN |
ALTER TABLE .. ALTER COLUMN .. SET DATATYPE |
|
ALTER TABLE .. RENAME COLUMN | |
비허용 |
DROP TABLE |
TRUNCATE TABLE |
|
ALTER TABLE .. RENAME |
|
ALTER TABLE .. DROP SUPPLEMENTAL LOG |
|
ALTER TABLE .. SET UNUSED COLUMN |
|
ALTER TABLE .. ALTER COLUMN .. SET NOT NULL |
|
ALTER TABLE .. ALTER COLUMN .. DROP NOT NULL |
|
ALTER TABLE .. ALTER COLUMN .. ALTER IDENTITY | |
ALTER TABLE .. ALTER COLUMN .. DROP IDENTITY | |
ALTER TABLE .. ADD CONSTRAINT | |
ALTER TABLE .. DROP CONSTRAINT | |
ALTER TABLE .. ALTER CONSTRAINT | |
CREATE UNIQUE INDEX | |
DROP INDEX unique_index | |
DROP USER | |
DROP SCHEMA | |
DROP TABLESPACE |
작업 절차에 속하지 않더라도 허용되는 DDL 구문
절차에 속하지 않은 허용된 DDL |
구문 |
허용 |
CREATE TABLE |
ALTER TABLE .. STORAGE |
|
ALTER TABLE .. ADD SUPPLEMENTAL LOG |
|
ALTER TABLE .. ALTER COLUMN .. SET DEFAULT |
|
ALTER TABLE .. ALTER COLUMN .. DROP DEFAULT | |
CREATE INDEX | |
DROP INDEX non_unique_index |
특정 작업 절차에 의해 허용되는 DDL 수행하기
CYCLONE 을 중지합니다.
$ cyclone --master --stop stop done.
$ cyclone --slave --stop stop done.
테이블에 절차에 따른 허용된 DDL 을 CYCLONE Master, Slave 에 수행합니다.
M-gSQL> ALTER TABLE T1 ADD COLUMN (C3 INT); M-gSQL> COMMIT;
S-gSQL> ALTER TABLE T1 ADD COLUMN (C3 INT); S-gSQL> COMMIT;
CYCLONE Master 의 T1 테이블에 데이터를 적재합니다.
M-gSQL> INSERT INTO T1 VALUES (1, 1, 1); M-gSQL> COMMIT;
CYCLONE 을 구동합니다.
$ cyclone --master --start $ [GROUP1] Startup done as Master.
$ cyclone --slave --start $ [GROUP1] Startup done as Slave.
CYCLONE Master 의 T1 테이블에 데이터를 적재합니다.
M-gSQL> INSERT INTO T1 VALUES (2, 2, 2); M-gSQL> COMMIT;
CYCLONE Slave 의 T1 테이블에 이중화된 데이터를 확인합니다.
S-gSQL> SELECT * FROM T1; C1 C2 C3 -- -- -- 1 1 1 2 2 2
작업 절차에 속하지 않더라도 허용되는 DDL 수행하기
CYCLONE 을 구동 중, 허용되는 DDL 을 CYCLONE Master 에 수행합니다.
M-gSQL> ALTER TABLE T1 ALTER COLUMN C3 SET DEFAULT 0; M-gSQL> COMMIT;
CYCLONE Master 의 T1 테이블에 데이터를 적재합니다.
M-gSQL> INSERT INTO T1 VALUES (3, 3, 3); M-gSQL> COMMIT;
CYCLONE Slave 의 T1 테이블에 이중화된 데이터를 확인합니다.
S-gSQL> SELECT * FROM T1; C1 C2 C3 -- -- -- 1 1 1 2 2 2 3 3 3
CYCLONE 을 계속 구동 중, 허용되는 DDL 을 CYCLONE Slave 에 수행합니다.
S-gSQL> ALTER TABLE T1 ALTER COLUMN C3 SET DEFAULT 0; S-gSQL> COMMIT;
CYCLONE Master 의 T1 테이블에 데이터를 적재합니다.
M-gSQL> INSERT INTO T1 VALUES (4, 4, 4); M-gSQL> COMMIT;
CYCLONE Slave 의 T1 테이블에 이중화된 데이터를 확인합니다.
S-gSQL> SELECT * FROM T1; C1 C2 C3 -- -- -- 1 1 1 2 2 2 3 3 3 4 4 4