구성을 처리하는 방법을 변경하는 것이 가능한지 잘 모르겠지만 로컬 재정의 개념을 사용하여 이와 비슷한 것을 구현했습니다. 특히, 두 개의 구성 테이블이 동일합니다 (CentralConfig 및 LocalConfig라고 함). CentralConfig는 중앙 위치에서 유지 관리되며 위성 위치로 복제되어 읽기 전용입니다. LocalConfig는 로컬 사이트에서 설정할 수 있습니다. 구성 데이터를 쿼리하는 프로 시저는 먼저 LocalConfig 테이블의 데이터를 찾고 찾지 못한 경우 CentralConfig 테이블에서 검색합니다. 당신은 브이 $ 매개 변수 테이블의 값으로이 작업을 수행하려고 한 경우
예를 들어, SQL 분석에 FIRST_VALUE 기능을 사용하여 구성을 조회 할 수있다 :
SELECT DISTINCT
NAME
, FIRST_VALUE(VALUE) OVER(PARTITION BY NAME
ORDER BY localsort
) VALUE
FROM (SELECT t.*
, 0 localsort
FROM local_parameter t
UNION
SELECT t.*
, 1 localsort
FROM v$parameter t
)
ORDER BY NAME;
localsort 열을 노동 조합에 local_parameter 값이 v $ 매개 변수 값보다 우선되도록해야합니다.
Google 시스템에서는 사실 이보다 훨씬 더 정교합니다. 찾고있는 매개 변수의 "이름"외에도 찾고있는 컨텍스트를 설명하는 "컨텍스트"열도 있습니다. 예를 들어, 우리는 매개 변수 "timeout"을 중앙 집중식으로 설정할 수 있지만, 심지어 로컬에서는이 값을 사용하는 여러 구성 요소가 있습니다. 그들은 모두 같을 수 있지만, 우리는 그것들을 다르게 설정하기를 원할 수도 있습니다. 따라서 도구가 "제한 시간"값을 조회하면 범위에 따라 제한됩니다. 하지만 모든 종류의 컴포지션 엔진,
CONTEXT NAME VALUE
------------- ------- -----
Comp Engine A timeout 15
Comp Engine B timeout 10
Comp Engine % timeout 5
% timeout 30
이 구성은 위라고는, 모든 구성 요소에 대해, (30)의 타임 아웃을 사용하는 우리는, 우리가 범위에 대한 원하는 것을 정의 할 때 구성 자체에서, 우리는 와일드 카드를 사용할 수있다 , Compress Engines A & B의 경우 제한 시간 5를 사용하십시오. 각각 15 & 10을 사용하십시오.마지막 두 구성은 CentralConfig 유지 될 수 있지만, 다른 두 LocalConfig 유지 될 수 있으며, 이러한 설정은이 방법으로 해결하는 것입니다 : 것을 제외하고 내가 그 번역을 삽입하고있어,
SELECT DISTINCT
NAME
, FIRST_VALUE(VALUE) OVER(PARTITION BY NAME
ORDER BY (TRANSLATE(Context
, '%_'
, CHR(1) || CHR(2)
) DESC
, localsort
) VALUE
FROM (SELECT t.*
, 0 localsort
FROM LocalConfig t
WHERE 'Comp Engine A' LIKE Context
UNION
SELECT t.*
, 1 localsort
FROM CentralConfig t
WHERE 'Comp Engine A' LIKE Context
)
ORDER BY NAME;
그것은 기본적으로 같은 쿼리를 표현식을 내 localsort 전에 사용하고 Context를 제한하고 있습니다. 그 일은 % 및 _ 문자를 chr (1) & chr (2)로 변환하여 내림차순 정렬에서 영숫자 문자 뒤에 정렬하게합니다. 이런 식으로 명시 적으로 정의 된 "Comp Engine A"는 "Comp Engine %"앞에 올 것이고 "%"앞에옵니다. 컨텍스트가 동일하게 정의 된 경우 로컬 구성이 중앙 컨텍스트보다 우선합니다. 지역 중심이 항상 중앙에서 최우선 순위를 차지하기를 원한다면 중앙 집중도가 더 엄격한 경우에도 두 가지 정렬 조건의 위치를 반대로 바꾸면됩니다.