Loading...
MySQL 9.5 Reference Manual 9.5의 27.7.2 DML Operations on JSON Duality Views (MySQL Enterprise Edition)의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
27.7.2.1 Examples of DML Operations on JSON Duality Views 27.7.2.2 JSON Duality Views—Concurrency 27.7.2.3 Requirements for DML Operations and Table Annotations 27.7.2.4 Limitations on DML Operations
MySQL Enterprise Edition에서 JSON duality view에 대해 DML 연산이 지원됩니다. DML은 개발자 친화적인 JSON 도큐먼트에서 직접 INSERT,
UPDATE, 그리고
DELETE 연산을 원활하게 수행할 수 있게 해 주며, 동시에 하위의 관계형 스키마를 통해 데이터 일관성을 보장합니다.
JSON duality view에 대한 DML 연산은 여러 단계가 서로 조율되어 함께 동작하는 방식으로 이루어집니다:
도큐먼트 검증: JSON duality view는 입력된 JSON 도큐먼트의 구문이 올바른지 자동으로 검증하고, 기대되는 스키마와 일치하는지 확인합니다.
타입 변환: JSON 데이터 타입을 데이터베이스 데이터 타입에 원활하게 매핑합니다.
서브 스테이트먼트 생성: JSON duality view는 JSON 도큐먼트를 분해하고, 정규화된 기본 테이블을 대상으로 필요한 DML 연산을 생성합니다.
서브 스테이트먼트 실행: 마지막 단계에서는 순차화된 DML 서브 스테이트먼트를 하나의 원자적 연산으로 실행합니다.
낙관적 동시성 제어: 추가적인 예방 조치로, JSON duality view는 상태 비저장 REST 호출에서 충돌하는 읽기-쓰기 연산을 방지합니다.
JSON duality view는 modification 태그를 도입하는데, 이는 각 JSON 객체/하위 객체에 대해 수행하려는 연산
(INSERT,
UPDATE, 또는
DELETE)을 지정하는 annotation입니다. Modification 태그가 지정되지 않은 경우, 해당 객체 또는 하위 객체는 읽기 전용으로 취급되며, DML 연산은 허용되지 않습니다.
이 의도 기반(intent-driven) 시스템은 다음과 같은 점에서 중요합니다:
실수에 의한 데이터 변경을 방지합니다.
모든 수준(root, singleton, nested)에서 비즈니스 규칙을 강제합니다.
연산을 명시적이고 감사 가능하게 만듭니다.
Self referencing 테이블과 상호 순환 참조 테이블에 대한 JSON duality view의 객체 insert가 지원됩니다.
JSON duality view에 대한 DML 연산을 위해 생성된 스테이트먼트는 view에 대한 DML 연산의 서브 스테이트먼트로 실행됩니다.
서브 스테이트먼트 실행은 새로운 메타데이터 잠금이나 레코드 잠금을 전혀 사용하지 않습니다.
어떤 서브 스테이트먼트라도 실패하면, 모든 서브 스테이트먼트가 롤백됩니다.
AUTO_INCREMENT가 설정된 projected 컬럼에 대해서는, 해당 컬럼에 대한 값이 명시적으로 지정되어야 합니다. 그렇지 않은 경우, 조인 조건으로부터 컬럼 값을 유추할 수 있어야 하며, 그렇지 못하면 해당 연산은 에러와 함께 거부됩니다.
생성된 모든 서브 스테이트먼트를 실행할 때, JSON duality view의 기본 테이블에 정의된 트리거가 실행됩니다.
참조 제약 조건으로 연결된 JSON duality view의 기본 테이블에 대해서는, 서브 스테이트먼트 실행에 정의된 모든 외래 키 참조 동작의 실행이 포함되며, 외래 키 연쇄 연산이 실패하면 해당 DML 연산은 에러와 함께 거부됩니다.
JSON duality view에 대한 DML 연산과 그 서브 스테이트먼트는 일관되게 복제됩니다. 어떤 서브 스테이트먼트의 실행이라도 실패하면, 이 연산의 일부인 다른 모든 서브 스테이트먼트는 복제되지 않습니다.
하나의
INSERT,
UPDATE, 또는
DELETE 스테이트먼트가 duality view에서 실행될 때, 이로 인해 해당 view의 기본 테이블에서 다수의 insert, update, 또는 delete 연산이 발생할 수 있다는 점을 알아 두어야 합니다.
데이터 변경 연산의 입력으로 사용되는 JSON 도큐먼트는, 그 스키마가 JSON duality view에 의해 생성된 JSON 도큐먼트의 스키마와 일치하는지 확인하기 위해 검증됩니다.
27.7.1 Creating JSON Duality Views
27.7.3 JSON Duality View Metadata