테이블 평면화
테이블 평면화는 관련 테이블의 계층 구조를 관계형 데이터베이스에 하나의 테이블로 저장합니다.
연장 모델
시스템은 관계형 데이터베이스에 테이블 계층 구조를 저장하기 위해 이러한 확장 모델을 제공합니다.
| 연장 모델 | 테이블을 평면화하시겠습니까? |
|---|---|
| 클래스당 테이블 | 아니요 |
| 계층 구조당 테이블 | 예 |
| 파티션당 테이블 | 예 |
클래스당 테이블
Table per class 확장 모델은 계층 구조의 각 테이블을 관계형 데이터베이스의 자체 물리적 테이블에 저장합니다. 각 물리적 테이블은 소스 테이블의 테이블 프리픽스를 사용합니다. 각각 다른 클래스의 레코드를 저장합니다. 클래스당 테이블 확장 모델의 예로는 자산 [alm_asset] 테이블과 해당 하위 테이블인 하드웨어 [alm_hardware], 소비재 [alm_consumable], 시설 [alm_facility] 및 소프트웨어 라이센스 [alm_license]가 있습니다. 계층 구조의 상위 테이블인 자산은 모든 기록의 복사본을 하위 테이블에 저장합니다.
클래스별 테이블 확장 모델에서 기록을 찾기 위해 시스템은 여러 테이블에서 기록을 쿼리하고 결과를 조인합니다. 예를 들어, 관련 시설에서 하드웨어를 검색할 때 시스템은 하드웨어, 시설 및 자산 테이블의 결과를 결합해야 합니다.
테이블 조인은 관계형 데이터베이스에서 성능 병목 현상을 일으킵니다. 쿼리에 포함된 클래스가 많을수록 쿼리 성능이 저하됩니다. 따라서 테이블 계층 구조의 맨 위에 있는 레코드에 대한 모든 쿼리는 모든 하위 테이블을 조인해야 하기 때문에 성능이 가장 떨어집니다.
시스템은 테이블을 만들 때 기본적으로 클래스당 테이블 확장 모델을 사용합니다. 또한 대부분의 시스템 테이블은 평면화로 인한 성능 이점이 없으므로 클래스당 테이블 확장 모델을 사용합니다.
계층 구조당 테이블
계층 구조당 테이블 확장 모델은 관계형 데이터베이스의 단일 플랫 물리적 테이블에 전체 테이블 계층 구조를 저장합니다. 물리적 테이블의 이름은 작업과 같은 계층 구조의 상위 테이블 이름을 따서 지정됩니다. 물리적 테이블은 테이블 계층 구조의 모든 레코드를 포함하며 클래스 이름 열 값을 계층 구조의 각 하위 테이블에 할당합니다. 시스템은 소스 테이블의 이름을 클래스 이름 값으로 사용합니다. 예를 들어 작업 기록에는 변경, 인시던트 또는 문제와 같은 클래스 이름이 있을 수 있습니다.
테이블 계층 구조에서 기록을 찾기 위해 시스템은 물리적 테이블을 쿼리하고 클래스 이름 열을 사용하여 결과를 제한합니다. 이러한 쿼리는 여러 테이블의 결과를 결합할 필요가 없으므로 시스템에서 더 나은 검색 성능을 제공합니다.
시스템은 MySQL 데이터베이스의 작업 테이블 계층 구조에 계층 구조당 테이블 확장 모델을 사용합니다. 다른 테이블은 평면화의 성능상의 이점이 없기 때문에 클래스당 테이블 확장 모델을 사용합니다. Oracle 데이터베이스에서 계층 구조당 테이블을 사용하려면 기술 지원 부서에 문의하십시오.
파티션당 테이블
파티션당 테이블 확장 모델은 관계형 데이터베이스의 단일 플랫 논리 테이블에 전체 테이블 계층 구조를 저장합니다. 각 논리 테이블에는 이를 지원하는 파티션 이라는 여러 물리적 스토리지 테이블이 있을 수 있습니다. 각 파티션은 열 수, 인덱스 수 및 행 크기와 같은 물리적 테이블에 사용할 수 있는 데이터베이스 리소스를 최적화합니다. 시스템은 논리 테이블에 추가 관계형 데이터베이스 자원이 필요할 때마다 파티션을 추가합니다.
각 논리 테이블의 이름은 계층 구조의 상위 테이블 이름을 따서 명명되며, 각 지원 실제 파티션은 논리적 이름과 파티션 이름으로 구성됩니다. 예를 들어 기본 구성 항목 [cmdb] 테이블은 파티션이 없는 논리적 테이블로 시작합니다. 하드웨어 구성 항목이 데이터베이스 자원을 충분히 소비하여 시스템이 cmdb$par1 이라는 파티션을 만들어 저장한다고 가정합니다. 나중에 컴퓨터 구성 항목은 이러한 레코드를 저장하기 위해 시스템에서 cmdb$par2 라는 두 번째 파티션을 만들도록 보장할 만큼 충분한 데이터베이스 리소스를 사용할 수 있습니다.
각 논리 테이블 내에서 시스템은 계층 구조의 각 하위 테이블에 클래스 이름 열 값을 할당합니다. 예를 들어, 기본 구성 항목 논리 테이블 내에는 애플리케이션, 컴퓨터 및 IP 라우터의 클래스 이름을 가진 기록이 있습니다. 또한 시스템은 계층 구조의 각 하위 테이블에 두 자리 클래스 경로 값을 할당합니다. 클래스 경로는 계층 구조의 테이블 위치를 기반으로 합니다. 예를 들어, 상위 클래스 하드웨어에는 /!! /! D 및 자식 클래스 Computer에는 /!! /! D/!!.
파티션당 테이블 확장 모델에서 기록을 찾기 위해 시스템은 논리 테이블과 해당 파티션을 쿼리하고 클래스 경로 열을 사용하여 결과를 제한합니다. 이러한 쿼리는 여러 테이블의 결과를 결합할 필요가 없으므로 시스템에서 더 나은 검색 성능을 제공합니다. 또한 클래스 경로는 검색할 총 레코드 수를 줄여 검색 성능을 더욱 향상시킵니다.
시스템은 MySQL 데이터베이스의 기본 구성 항목 [cmdb] 테이블 계층 구조에 파티션당 테이블 확장 모델을 사용합니다. Oracle 데이터베이스에서 파티션당 테이블을 사용하려면 기술 지원에 문의하십시오.