6장. Directory Server에서 인덱스 관리
인덱싱을 사용하면 특성 또는 값을 분류하고 구성하여 정보를 더 빠르게 검색하고 검색할 수 있습니다. 가상 목록 보기 컨트롤을 사용하여 대규모 검색 결과의 연속적인 하위 집합을 요청할 수 있습니다.
6.1. 인덱스 정보 링크 복사링크가 클립보드에 복사되었습니다!
Directory Server의 인덱스 유형과 인덱스를 사용할 때 더하기와 마이너스에 대해 알아봅니다.
6.1.1. 다른 인덱스 유형 링크 복사링크가 클립보드에 복사되었습니다!
Directory Server는 각 인덱싱된 속성의 인덱스를 인스턴스의 데이터베이스 디렉터리에 있는 별도의 데이터베이스 파일에 저장합니다. 예를 들어 sn
속성의 인덱스는 /var/lib/dirsrv/slapd- <instance_name> /db/database_name/sn.db
파일에 저장됩니다. Directory Server가 속성에 대해 다른 인덱스를 유지 관리하는 경우 각 인덱스 파일은 여러 인덱스 유형을 포함할 수 있습니다.
Directory Server는 다음 인덱스 유형을 지원합니다.
-
존재 인덱스(
이전)는
특정 속성을 포함하는 항목 목록입니다. 예를 들어 클라이언트가attribute=mail
과 같은 검색을 자주 수행할 때 이 유형을 사용합니다. -
같음 인덱스(
eq
)는 특정 특성 값이 포함된 항목을 검색합니다. 예를 들어cn
속성의 같음 인덱스를 사용하면cn=first_name last_name
을 더 빠르게 검색할 수 있습니다. -
대략적인 인덱스(약자
)
는 효율적인 대략적인 또는 사운드와 같은 검색을 가능하게 합니다. 예를 들어cn~=first_name last_name
,cn~=first_name
또는cn~=first_nam
을 검색하면cn=first_name X last_name
이 반환됩니다. Directory Server의 메타 전화 알고리즘은 US-ASCII 문자만 지원합니다. 따라서 영어 값과 함께 대략적인 인덱싱을 사용하십시오. -
하위 문자열 인덱스(
하위
)는 유지 관리하는 비용이 많이 드는 인덱스이지만 항목 내의 하위 문자열에 대해 효율적으로 검색할 수 있습니다. 부분 문자열 인덱스는 각 항목에 대해 최소 3자로 제한됩니다. 예를 들어telephoneNumber=*555*
telephoneNumber
특성에555
가 포함된 값이 있는 디렉터리의 모든 항목을 반환합니다. - 국제 색인은 국제 디렉터리의 정보를 검색하는 속도를 향상시킵니다. OID(오브젝트 식별자)를 인덱싱할 특성과 연결하여 일치하는 규칙을 적용하는 경우를 제외하고 국제 인덱스를 만드는 프로세스는 일반 인덱스를 만드는 프로세스와 유사합니다.
6.1.2. 인덱싱의 이점의 균형 링크 복사링크가 클립보드에 복사되었습니다!
새 인덱스를 만들기 전에 값에 대해 인덱스를 유지 관리할 때의 이점의 균형을 조정합니다.Before you create new indexes, balance the benefits of maintaining indexes against the costs:
- 대략적인 인덱스는 전화 번호와 같이 일반적으로 번호를 포함하는 속성에는 효율적이지 않습니다.
- 하위 문자열 인덱스는 바이너리 특성에 대해 작동하지 않습니다.
- 이미지와 같은 큰 값이 포함된 속성에 대한 같음 인덱스를 피하십시오.
- 검색에 일반적으로 사용되지 않는 속성에 대한 인덱스를 유지 관리하면 검색 성능을 개선하지 않고도 오버헤드가 증가합니다.
- 검색 유형에 따라 검색 성능이 저하될 수 있지만 인덱싱되지 않은 속성은 검색 요청에 계속 사용할 수 있습니다.
인덱스는 매우 시간이 많이 소요될 수 있습니다. 예를 들어 Directory Server에서 추가 작업을 수신하는 경우 서버는 인덱싱 특성을 검사하여 해당 특성 값에 대한 인덱스가 유지 관리되는지 확인합니다. 생성된 특성 값이 인덱싱되면 Directory Server는 새 특성 값을 인덱스에 추가한 다음 해당 항목에 실제 특성 값이 생성됩니다.
예 6.1. 사용자가 항목을 추가할 때 디렉터리 서버 인덱싱 단계 수행
Directory Server가 다음 인덱스를 유지 관리한다고 가정합니다.
-
cn
및sn
속성에 대한 같음, 대략적인 및 하위 문자열 인덱스입니다. -
telephoneNumber 특성에 대한 같음 및 하위 문자열 인덱스입니다.A equality and substring indexes for the
telephoneNumber
attribute. -
description
속성에 대한 부분 문자열 인덱스입니다.
예를 들어, 사용자는 다음 항목을 추가합니다.
사용자가 항목을 추가하면 Directory Server에서 다음 단계를 수행합니다.
-
존 및
에 대한존
Doecn
같음 인덱스 항목을 생성합니다. -
존 및
에 대한존
Doecn
의 대략적인 인덱스 항목을 생성합니다. -
존 및
에 대한존
Doecn
하위 문자열 인덱스 항목을 생성합니다. -
Doe
에 대한sn
equality index 항목을 만듭니다. -
Doe
의sn
approximate index 항목을 만듭니다. -
Doe
에 대한sn
하위 문자열 인덱스 항목을 만듭니다. -
408 555 8834
에 대한telephoneNumber
같음 인덱스 항목을 생성합니다. -
408 555 8834
에 대한telephoneNumber
하위 문자열 인덱스 항목을 만듭니다. -
Manufacturing lead
에 대한description
하위 문자열 인덱스 항목을 생성합니다.
이 예에서는 대규모 디렉터리에 대한 데이터베이스를 만들고 유지 관리하는 데 필요한 작업 수가 매우 리소스 집약적일 수 있음을 보여줍니다.
Directory Server 성능에 영향을 줄 수 있으므로 멤버십 속성(예: 멤버
,uniquemember
)에 대한 하위 문자열 인덱스를 정의하지 마십시오. 멤버(예: 많은 멤버가 있는 그룹에uniquemember
)를 추가하거나 제거하는 경우 uniquemember
인덱스의 계산은 추가되거나 제거된 값뿐만 아니라 모든 uniquemember
값을 평가해야 합니다.