테이블 평면화

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 3분
  • 테이블 평면화는 관련 테이블의 계층 구조를 관계형 데이터베이스에 하나의 테이블로 저장합니다.

    확장 모델

    시스템에서는 관계형 데이터베이스에 테이블 계층 구조를 저장하는 이러한 확장 모델을 제공합니다.

    표 1. 사용 가능한 연장 모델
    연장 모델 테이블을 평면화하시겠습니까?
    클래스당 테이블 아니요
    계층 구조당 테이블
    파티션당 테이블

    클래스당 테이블

    클래스당 테이블 확장 모델은 계층 구조의 각 테이블을 관계형 데이터베이스의 자체 실제 테이블에 저장합니다. 각 실제 테이블은 소스 테이블의 테이블 프리픽스를 사용하며, 각 테이블은 서로 다른 클래스의 기록을 저장합니다. 클래스당 테이블 확장 모델의 예로는 자산 [alm_asset] 테이블과 해당 하위 테이블인 하드웨어[alm_hardware], 소모품[alm_consumable], 시설[alm_facility] 및 소프트웨어 라이센스[alm_license]가 있습니다. 계층 구조의 상위 테이블인 자산은 하위 테이블에 모든 기록의 복사본을 저장합니다.

    클래스 확장 모델당 테이블에서 기록을 찾기 위해 시스템은 여러 테이블의 기록을 쿼리하고 결과를 조인합니다. 예를 들어, 관련 시설에서 하드웨어를 검색할 때 시스템은 하드웨어, 시설 및 자산 테이블의 결과를 결합해야 합니다.

    테이블 조인은 관계형 데이터베이스에서 성능 병목현상을 일으킵니다. 쿼리에 포함된 클래스가 많을수록 쿼리 성능은 떨어집니다. 따라서 테이블 계층 구조의 맨 위에 있는 기록에 대한 쿼리는 모든 하위 테이블을 조인해야 하기 때문에 성능이 최악입니다.

    시스템은 테이블을 생성할 때 기본적으로 클래스당 테이블 확장 모델을 사용합니다. 대부분의 시스템 테이블은 평면화해도 성능 이점이 없으므로 클래스당 테이블 확장 모델도 사용합니다.

    계층 구조당 테이블

    계층 구조당 테이블 확장 모델은 관계형 데이터베이스의 단일 플랫 실제 테이블에 전체 테이블 계층 구조를 저장합니다. 실제 테이블은 작업과 같은 계층 구조의 상위 테이블의 이름을 따서 명명됩니다. 실제 테이블에는 테이블 계층 구조의 모든 기록이 포함되며 계층 구조의 각 하위 테이블에 클래스 이름 열 값을 할당합니다. 시스템은 소스 테이블의 이름을 클래스 이름 값으로 사용합니다. 예를 들어, 작업 기록에는 변경, 인시던트 또는 문제와 같은 클래스 이름이 있을 수 있습니다.

    테이블 계층 구조에서 기록을 찾기 위해 시스템은 실제 테이블을 쿼리하고 클래스 이름 열을 사용하여 결과를 제한합니다. 이러한 쿼리는 여러 테이블의 결과를 조인할 필요가 없으므로 시스템에서 더 나은 검색 성능을 제공합니다.

    시스템은 MySQL 데이터베이스의 작업 테이블 계층 구조에 대해 계층 구조당 테이블 확장 모델을 사용합니다. 다른 테이블은 평면화해도 성능상의 이점이 없으므로 클래스당 테이블 확장 모델을 사용합니다. Oracle 데이터베이스에서 계층 구조당 테이블을 사용하려면 기술 지원에 문의하십시오.

    파티션당 테이블

    파티션당 테이블 확장 모델은 관계형 데이터베이스의 단일 플랫 논리 테이블에 전체 테이블 계층 구조를 저장합니다. 각 논리 테이블에는 이를 지원하는 파티션 이라는 여러 물리적 스토리지 테이블이 있을 수 있습니다. 각 파티션은 열 수, 인덱스 수 및 행 크기와 같은 실제 테이블에 사용할 수 있는 데이터베이스 자원을 최적화합니다. 시스템은 논리 테이블에 추가 관계형 데이터베이스 자원이 필요할 때마다 파티션을 추가합니다.

    각 논리 테이블은 계층 구조의 상위 테이블의 이름을 따서 명명되며 각 지원 물리적 파티션은 논리 이름과 파티션 이름으로 구성됩니다. 예를 들어 기본 구성 항목 [cmdb] 테이블은 파티션이 없는 논리 테이블로 시작합니다. 하드웨어 구성 항목이 시스템에서 cmdb$par1 이라는 파티션을 생성하여 저장할 만큼 충분한 데이터베이스 자원을 사용한다고 가정해 보겠습니다. 나중에 컴퓨터 구성 항목은 시스템에서 이러한 기록을 저장하기 위해 cmdb$par2 라는 두 번째 파티션을 만들 만큼 충분한 데이터베이스 자원을 소비할 수 있습니다.

    각 논리 테이블 내에서 시스템은 계층 구조의 각 하위 테이블에 클래스 이름 열 값을 할당합니다. 예를 들어 기본 구성 항목 논리 테이블 내에는 애플리케이션, 컴퓨터 및 IP 라우터에 대한 클래스 이름이 있는 레코드가 있습니다. 시스템은 또한 계층 구조의 각 하위 테이블에 2자리 클래스 경로 값을 할당합니다. 클래스 경로는 계층 구조의 테이블 위치를 기반으로 합니다. 예를 들어 상위 클래스 하드웨어에는 /!! /! D 및 하위 클래스 컴퓨터는 /!! /! D/!!.

    파티션당 테이블 확장 모델에서 기록을 찾기 위해 시스템은 논리 테이블과 해당 파티션을 쿼리하고 클래스 경로 열을 사용하여 결과를 제한합니다. 이러한 쿼리는 여러 테이블의 결과를 조인할 필요가 없으므로 시스템에서 더 나은 검색 성능을 제공합니다. 또한 클래스 경로는 검색할 총 레코드 수를 줄여 검색 성능을 더욱 향상시킵니다.

    시스템은 MySQL 데이터베이스의 기본 구성 항목 [cmdb] 테이블 계층 구조에 파티션당 테이블 확장 모델을 사용합니다. Oracle 데이터베이스에서 파티션당 테이블을 사용하려면 기술 지원에 문의하십시오.