기록 보관
기록을 보관하여 테이블 크기 증가를 관리하고 쿼리 성능을 향상합니다.
작업 [task] 테이블과 같은 핵심 테이블의 기록과 보관 규칙을 사용하여 생성한 Now Platform 사용자 지정 테이블의 기록을 보관할 수 있습니다.
- CI 기록을 보관 구성 관리 데이터베이스(CMDB) 하려면 데이터 관리자를 사용합니다 CMDB . Working with CMDB Data Manager 문서를 참조하십시오.
- 이메일을 보관하려면 이메일 보존 플러그인을 활성화하고 플러그인과 함께 제공되는 보관 및 삭제 규칙을 사용합니다. 보관 기능을 사용하여 이메일 테이블에 고유한 보관 규칙을 생성하지 마십시오.
보관 활성화
보관 규칙을 활성화하면 시스템에서 다음 작업을 수행합니다.
- 데이터베이스에 보관 테이블을 작성합니다. 보관 테이블의 이름은 "ar_" 프리픽스가 있는 기본 테이블과 같습니다. 예를 들어 인시던트
[incident]테이블을 보관하는 경우 보관 테이블은[ar_incident]입니다. - 보관된 각 기록의 XML 버전을 sys_archive_log 테이블에 저장합니다. 이 보관 로그는 모든 보관 규칙에 대해 동일한 테이블이며 이 동작을 변경할 수 없습니다. 또한 sys_id 참조 필드의 표시 값과 함께 저장되는 유일한 위치이기도 합니다.예를 들어
ar_incident <assigned_to>Fred Luddy</assigned_to>의 경우 sys_archive_log 기록은 다음과 같습니다.<assigned_to display_value="Fred Luddy">5137153cc611227c000bbd1bd8cd2005</assigned_to> - 여러 개의 조인된 테이블을 단일 플랫 파일 보관 테이블로 변환합니다. 보관 테이블은 더 이상 기본 테이블과 확장 테이블로 구성되지 않습니다.
그림 1. 여러 개의 조인된 테이블을 플랫 보관 테이블로 변환 - 참조 필드 값(다른 테이블의 기록에 대한 참조에 의해 설정된 값)을 문자열 값으로 변환합니다. 보관 기록에는 보관 시 참조 필드의 표시 값이 포함됩니다.
- 시스템 보관 애플리케이션의 보관 테이블 목록에 모듈을 추가합니다. 모듈 이름은 "Archive"라는 단어와 보관된 테이블의 표시 이름을 조합한 것입니다. 예를 들어, 첨부 파일
[sys_attachments]테이블에 대한 보관 모듈은 보관 첨부 파일입니다. - 기본 목록 뷰를 사용하여 보관 테이블 목록을 작성합니다.
- 기본 양식 뷰를 사용하여 보관 테이블의 양식을 작성합니다. 양식에서 호출자 ID.Email 와 같은 닷워킹 필드는 제외됩니다.
문자열로 변환된 참조 값
보관된 데이터는 다른 테이블에 대한 참조 필드가 없는 플랫 파일로 저장됩니다. 보관 프로세스는 다른 테이블에 대한 모든 참조를 문자열 값으로 변환합니다.
참조 필드의 경우 문자열은 호출자의 사용자 이름과 같은 표시 값을 사용합니다. 예를 들어 인시던트의 호출자 참조 필드에는 문자열 ITIL 사용자가 표시됩니다. 참조가 문서 ID이고 보관 규칙에 관련 문서 ID를 보관하는 옵션이 포함된 경우 문자열은 관련 기록의 문서 ID입니다.
참조 값에 대한 향후 변경 사항은 보관된 기록에 반영되지 않습니다. 예를 들어 "John Smith"의 사용자 이름을 "John A Smith"로 변경하면 인시던트와 사용자 테이블 간의 참조로 인해 모든 활성 인시던트 기록에 자동으로 호출자가 "John A Smith"로 표시됩니다. 그러나 보관된 모든 인시던트 기록에는 보관 시점에 있었던 사용자 이름이 표시됩니다. 마찬가지로 시스템에서 사용자를 삭제하면 현재 인시던트에 삭제된 사용자가 더 이상 호출자로 표시되지 않습니다. 그러나 보관된 인시던트에는 기록이 보관될 때 이 값이 사용되었기 때문에 문자열 "John Smith"가 계속 표시됩니다.
보관된 데이터 쿼리
보관된 테이블은 임시 쿼리에 최적화되지 않습니다. 표시 값, 생성 날짜 및 sys_id의 기본 키에 대한 인덱스 항목만 포함합니다.
우선순위가 1인 모든 보관된 인시던트를 검색하는 것처럼 보관된 테이블에 대해 요청 시 쿼리를 수행하지 않습니다. 대신 인덱싱된 필드만 검색하십시오. 예를 들어 인시던트 INC100001 또는 특정 날짜에 생성된 인시던트를 검색합니다.
테이블 및 ACL 보관
기본적으로 보관 테이블은 이름이 같은 보관되지 않은 테이블에 ACL을 사용합니다. 예를 들어, 보관된 인시던트 [ar_incident] 테이블은 보관되지 않은 인시던트 [incident] 테이블에 정의된 ACL을 사용합니다.
- 보관 테이블에 대해 하나 이상의 활성 ACL이 정의된 경우 해당 ACL은 보관 테이블에 대한 액세스를 제어합니다.
- 보관 테이블에 대해 정의된 ACL이 없는 경우, 시스템은 기본 동작으로 돌아가고 테이블의 보관되지 않은 버전에 대한 ACL을 사용합니다.
읽기 작업은 평가되는 유일한 작업이며 다른 작업은 방지됩니다.
실행 계획 UI는 이 논리를 인식하고 그에 따라 정보를 제공합니다. 예를 들어, 아카이브 테이블에 첫 번째 ACL을 추가하면 아카이브 테이블 ACL이 보관되지 않은(원래 데이터) 테이블의 ACL을 "마스킹"하고 있음을 알 수 있습니다.
- 속성이 없는 glide.security.enable_archive_table_acls 인스턴스는 기본값인 false를 사용합니다.
- 업그레이드된 인스턴스는 속성을 설치하지 않습니다. 보관 테이블 ACL 동작을 사용하려면 속성을 수동으로 추가하고 true 로 설정해야 합니다.
- Zbooted 인스턴스는 속성을 설치하고 true로 설정합니다.
보관된 문자열의 언어 설정
국제화된 인스턴스에서 아카이브 프로세스는 SYSTEM 사용자의 언어를 사용하여 표시 값 문자열을 선택합니다.
SYSTEM 사용자가 없는 경우 인스턴스는 기본 언어 설정을 사용하여 표시 값 문자열을 선택합니다. 특정 언어 설정으로 SYSTEM 사용자를 만들거나 시스템 기본 언어를 설정하여 보관된 문자열의 언어를 선택할 수 있습니다.