메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

웹 애플리케이션 환경에서 pureQuery 클라이언트 최적화 관리하기, Part 2: 클러스터링된 환경에서 애플리케이션 최적화하기

성공적인 배치를 위한 팁

Charul Kapil, Software Engineer, WSO2 Inc
Photo of Charul Kapil
Charul Kapil은 소프트웨어 기술자로 IBM India Software Lab에서 3년간 근무했다. 현재, OPM-Reporting QA 팀에 소속되어 있다. 이전에는 pureQuery Client Optimization QA 팀 구성원이었다.
Jaijeet Chakravorty, Software Engineer, WSO2 Inc
Photo of Jaijeet Chakravorty
Jaijeet Chakravorty는 IBM의 소프트웨어 기술자이다. 그는 캘리포니아주 산호세에 있는 IBM Silicon Valley Lab에서 근무한다. Java Common Client JDBC 드라이버, SQLJ 및 pureQuery 클라이언트 측 제품을 담당한다. Jaijeet는 제품 개발에 참여했으며 전세계에 있는 고객에게 L3 지원을 제공한다.
Manoj Sardana, Kỹ sư phần mềm, IBM
Manoj Sardana
Manoj Sardana는 소프트웨어 기술자로 5년 넘게 IBM India Software Lab에서 근무하고 있다. 그는 DB2 for Linux, UNIX and Windows용 애플리케이션 개발자이자 IBM 공인 고급 관리자이다. 현재, pureQuery 개발 팀에 소속되어 있다. Manoj는 NITK Surathkal에서 전산학 학사 학위를 받았다. 한가한 시간에는 음악을 듣거나 아이들을 돌본다.

요약:  pureQuery 클라이언트 최적화를 수행하면 Java 데이터베이스 애플리케이션의 성능, 보안 및 관리를 향상시킬 수 있습니다. 두 편의 기사로 구성된 이 시리즈의 첫 번째 기사에서는 단일 애플리케이션 서버 노드에서 클라이언트 최적화를 활성화하는 방법에 대해 살펴보았습니다. 이 두 번째 기사에서는 클러스터링된 애플리케이션 서버 환경 특히, 클러스터링된 WebSphere Application Server 환경에서 클라이언트 최적화를 구성하고 작업하는 방법에 대해 설명합니다.

이 연재 자세히 보기

원문 게재일:  2010 년 5 월 27 일 번역 게재일:   2010 년 7 월 13 일
난이도:  중급 영어로:  보기 PDF:  A4 and Letter (201KB | 17 pages)Get Adobe® Reader®
페이지뷰:  3379 회
의견:  


소개

이 시리즈의 첫 번째 기사에서는 클라이언트 최적화를 통해 데이터베이스 애플리케이션의 성능 및 보안을 향상시키는 방법과 단일 애플리케이션 서버 노드에서 클라이언트 최적화를 활성화하는 방법에 대해 살펴보았다. 이 두 번째 기사에서는 클러스터링 개념을 간략하게 소개한 후 클러스터링된 환경에서 데이터 소스와 pureQuery 지원 JDBC 공급자를 정의하는 방법을 설명한 다음 클러스터링된 애플리케이션 서버 환경 특히, 클러스터링된 WAS(WebSphere Application Server) 환경에서 클라이언트 최적화를 구성 및 작업하는 방법에 대해 살펴본다.

클라이언트 최적화 복습

첫 번째 기사에서 클라이언트 최적화를 구성하는 다음과 같은 주요 단계를 살펴보았다.

  • 실행 중인 애플리케이션의 SQL을 캡처한다.
  • 대상 패키지 이름을 지정하도록 캡처된 SQL을 구성한다.
  • 대상 데이터베이스가 DB2이면 구성된 캡처 파일을 DB2 패키지에 바인드한다.
  • 캡처된 SQL로 애플리케이션을 실행하여 정적 실행과 같은 원하는 동작을 얻는다.

이 두 번째 기사에서는 클러스터링된 환경에 적용할 수 있도록 확장된 캡처 단계를 중점적으로 설명한다. 이 기사에서는 하나의 클러스터에서 여러 WebSphere 인스턴스가 동일한 애플리케이션을 실행 중일 때 SQL을 캡처할 수 있도록 JDBC 공급자, 데이터 소스 및 pureQuery 특성을 구성하는 방법에 대해 설명한다. 이러한 상황에서는 기본적으로 여러 출력 캡처 파일을 작성하게 된다. 이 기사에서 설명하는 프로세스의 나머지 부분에서는 캡처된 SQL을 단일 파일로 병합한 다음 구성하여 대상 데이터 소스에 바인드하는 방법에 대해 살펴본다.

클러스터링 복습

이름으로 알 수 있듯이 클러스터링은 동일한 애플리케이션을 실행 중인 애플리케이션 서버 인스턴스의 논리적 콜렉션을 의미한다. 클러스터링의 목적은 워크로드 관리 및 고가용성을 제공하는 것이다. 서버의 한 인스턴스가 중단될 경우 다른 인스턴스가 해당 워크로드를 처리할 수 있다. 클러스터 환경에 있는 개별 서버 인스턴스를 클러스터 멤버라고 한다.

WebSphere Application Server를 통해 클러스터링을 사용하려면 WebSphere Application Server Network Deployment 에디션이 있어야 한다. 이 에디션의 WebSphere에는 특수 WebSphere 인스턴스인 배치 관리자라는 프로파일이 있다. 배치 관리자를 사용하면 클러스터를 작성하고 관리할 수 있다.

클러스터의 멤버들은 동일 노드 또는 서로 다른 노드에 속해 있을 수 있으며 동일 시스템 또는 서로 다른 시스템에 있을 수 있다. 노드는 동일한 구성 제어를 공유하고 일반적으로 하나의 실제 WAS 설치에 연관되어 있는 애플리케이션 서버 인스턴스의 논리적 그룹이다. 각 노드에서는 에이전트를 사용하여 배치 관리자와 통신한다. 배치 관리자 프로파일을 사용하면 여러 노드에 있는 여러 애플리케이션 서버의 구성을 관리할 수 있다.

세 가지 유형의 WAS 클러스터링 환경이 있다. 이러한 유형은 클러스터 멤버가 어디에 어떻게 위치하느냐에 따라 구별된다.

  • 수평 클러스터링 — 다양한 서버 인스턴스 또는 클러스터 멤버가 다양한 노드에 있다.
  • 수직 클러스터링 — 모든 클러스터 멤버가 동일한 노드에 있다.
  • 혼합 클러스터링 — 수평 및 수직 클러스터링이 혼합된 형태이다.

그림 1에서는 혼합 클러스터링 환경의 예를 보여 준다. Node 1에 있는 클러스터 멤버 clus1_1과 clus1_2는 한 노드에 있는 수평 클러스터링의 예이다. 이와 마찬가지로 Node 2에도 수평으로 클러스터링된 clus2_1과 clus2_2라는 두 클러스터 멤버가 있다. 또한 Node_1과 Node_2는 수직으로 클러스터링되어 있기 때문에 이 그림에서 보여 주고 있는 환경은 혼합 클러스터링을 나타낸다.


그림 1. 혼합 클러스터링 환경의 예
WAS 내에서 애플리케이션이 혼합 클러스터링 환경을 통해 데이터베이스 서버와 연결된다.

클러스터링에 대해 자세히 알아보려면 이 기사의 참고자료 섹션에 있는 Device Manager Information Center를 참조한다.

혼합 클러스터 환경에서 애플리케이션을 설치하면 해당 애플리케이션이 동시에 모든 클러스터 멤버에 설치된다. 단일 서버를 사용할 때와 동일한 방법으로 클러스터를 단일 엔티티로 중지, 시작 및 관리할 수 있다.

이 기사에서는 클러스터 환경의 모든 노드가 배치 관리자에 의해 관리되는 것으로 간주한다. 이는 곧 노드 레벨에 적용된 모든 특성 설정이 환경의 모든 서버 멤버에 전파된다는 것을 의미한다. 또한 웹 서버가 애플리케이션 서버의 일부라고 가정한다.

클러스터에서 pureQuery 지원 JDBC 공급자 및 데이터 소스 작성하기

클러스터링된 환경에서 JDBC 공급자를 작성할 경우에는 JDBC 공급자의 범위가 서버 프로파일의 개별 인스턴스가 아닌 클러스터인지 확인해야 한다. 자원(예: JDBC 공급자 또는 데이터 소스)의 범위는 애플리케이션 서버 환경 내에서 해당 자원의 가시성을 정의한다. 예를 들어, 클러스터 레벨에서 정의된 범위는 모든 클러스터 멤버가 해당 자원을 볼 수 있다는 것을 의미한다. 이와 마찬가지로 노드 레벨에서 정의된 범위는 해당 노드에 있는 모든 서버 인스턴스에서 볼 수 있다. JDBC 공급자와 데이터 소스를 작성할 때 범위를 정의할 수 있다.

클러스터링된 환경에서 데이터 소스를 작성할 경우에도 단일 서버 환경과 동일한 방법을 사용하지만 데이터 소스의 범위를 클러스터로 정의한다는 점이 다르다. 다시 말해서 모든 클러스터 멤버에서 데이터 소스를 볼 수 있다는 의미이다. 그림 2에서는 Integrated Solutions Console의 Data sources 페이지를 사용하여 새 데이터 소스의 범위를 선택하는 방법을 보여 준다. 범위 선택 드롭 다운 목록을 표시하도록 선택하면 목록에 사용 가능한 노드, 클러스터 및 애플리케이션 서버 인스턴스가 모두 표시된다.


그림 2. 데이터 소스 범위를 클러스터로 정의하기
Cluster가 데이터 소스 범위로 선택되어 있는 Integrated Solutions Console의 Data sources 페이지의 스크린샷.

데이터 소스를 작성하는 방법에 대한 설명은 이 시리즈의 첫 번째 기사를 참조한다.

데이터 소스를 작성한 후에는 단일 서버에서 수행한 것과 동일한 방법으로 data-source-level pdq 특성을 설정할 수 있다. 그런 다음 이 특성은 클러스터에 적용할 수 있다. 첫 번째 기사에서 단일 서버 환경의 특성에 대해 설명했던 모든 내용은 클러스터링된 환경에도 적용된다.


클러스터링된 환경에서 클라이언트 최적화 구성하기

앞에서 설명한 대로, 클러스터에서 애플리케이션을 설치하면 해당 애플리케이션이 모든 클러스터 멤버에 설치되며, 이러한 모든 클러스터 멤버는 동일한 백엔드 데이터베이스 뷰(데이터 소스)를 사용한다. 이러한 환경에서 클라이언트 최적화를 사용하면 자원 경합의 가능성이 높아진다. 왜냐하면 서로 다른 클러스터 멤버에서 실행되고 있는 동일한 애플리케이션의 여러 인스턴스가 캡처 모드로 실행되면서 동일한 캡처 파일에 기록하려고 시도할 가능성이 높아졌기 때문이다.

자원 경합 문제점을 해결하기 위해 새로운 파일 이름 접미부를 사용한다. 이 접미부는 $X이다. SQL 캡처 단계 동안 outputPureQueryXml 특성을 사용하여 $X 접미부가 포함된 캡처 파일 이름을 제공할 수 있다. 예: pdq.outputPureQueryXml=App1$X.pdqxml

클라이언트 최적화의 캡처 프로세스 동안 $X는 파일이 처음 작성될 때 시간소인 및 애플리케이션 클래스로더의 오브젝트 ID로 대체된다. 이렇게 하면 클러스터에 있는 애플리케이션의 인스턴스별로 고유한 파일 이름을 작성할 수 있다.

$X 접미부는 여러 파일을 작성하는 데 사용되는 outputPureQueryXml 파일에만 사용할 수 있다. 단일 노드 환경에서는 자원 경합이 발생하지 않으므로 초기 캡처에 대한 pureQueryXml 특성만 지정하면 된다. 하지만 클러스터링된 환경에서는 초기 캡처 동안 자원 경합이 발생하지 않도록 하기 위해 $X 구문을 사용하는 것이 좋다.

pdq.properties 파일의 모든 레벨(글로벌, 데이터 소스 또는 애플리케이션)에서 $X 접미부를 사용할 수 있다. 이 접미부는 동일한 애플리케이션이 서버의 여러 인스턴스에서 실행 중인 클러스터링 환경에서 사용하기 위한 것이다. 이 접미부를 단일 서버 환경에서 사용할 경우에는 시간소인 및 클래스로더 ID 접미부가 있는 하나의 파일이 생성된다.

참고: 클러스터는 단일 엔티티로 표시되며 단일 애플리케이션 뷰를 제공한다. 따라서 클러스터의 멤버별로 서로 다른 설정을 사용할 수 없다.


증분 캡처 파일 병합하기

클러스터 환경에서 $X 접미부를 사용하면 인스턴스/클러스터 멤버별로 별도의 파일이 작성된다. 각 파일에는 각 클러스터 멤버가 캡처한 SQL 문이 있다. 일부 SQL 문이 여러 파일에 공통으로 포함되어 있을 수 있으며 일부 파일에는 고유한 SQL이 포함되어 있을 수 있다. 이는 각 인스턴스의 애플리케이션 플로우에 따라 달라진다. 따라서 캡처를 완료한 후 캡처된 모든 SQL을 나중에 구성할 수 있는 단일 파일로 결합하고 정적 실행을 위한 각각의 데이터 소스에 바인드할 수 있다.

이 작업을 수행하기 위해 Merge 명령행 유틸리티를 사용할 수 있다. 이 유틸리티를 사용하면 두 개 이상의 캡처 파일을 하나의 출력 pdqxml 파일로 병합할 수 있다. (또는 Optim Development Studio를 사용하여 파일을 병합할 수 있다.) Listing 1에서는 Merge 명령을 사용하는 방법의 예제를 보여 준다.


Listing 1. Merge 명령 예제

java com.ibm.pdq.tools.Merge 
-inputPureQueryXml “c:\Program Files\capture1.pdqxml” capture2.pdqxml capture3.pdqxml 
-outputPureQueryXml merge.pdqxml

inputPureQueryXml 매개변수를 사용하여 병합할 입력 캡처 파일을 지정한다. 파일 이름을 공백으로 구분된 목록 형식으로 입력한다. 절대 또는 상대 형식을 파일 이름을 지정할 수 있다. 공백 문자가 목록 구분 기호로 사용되므로 파일 이름에 공백이 있을 경우 해당 파일 이름을 따옴표로 묶어야 한다. 입력 파일은 읽기 전용 파일로 처리된다. Listing 1의 예제에서는 세 개의 입력 파일을 지정한다.

outputPureQueryXml 매개변수를 사용하여 병합된 캡처 파일의 이름을 지정한다. Listing 1의 예제에서는 병합된 캡처 파일의 이름을 merge.pdqxml로 지정한다.

이 기사의 참고자료 섹션에 Merge 명령에 대한 제품 문서 링크가 있다.

그림 3에서는 여러 캡처 파일을 병합하는 프로세스를 보여 준다.


그림 3. 여러 캡처 파일을 병합하는 프로세스
Merge 유틸리티를 통해 세 개의 입력 캡처 파일을 병합된 단일 출력 파일로 작성하는 프로세스를 보여 주는 플로우차트.

기존 병합 캡처 파일에 증분 형식으로 캡처 추가하기

여러 입력 캡처 파일을 단일 출력 파일로 병합하고 해당 출력 파일을 구성 및 바인드한 후 추가 SQL을 증분 형식으로 캡처해야 하는 상황이 발생할 수 있다. 이러한 상황은 애플리케이션 변경 등의 이유로 발생한다. 병합된 캡처 파일을 증분 캡처를 위한 pureQueryXml로 사용할 경우에도 자원 경합 문제가 발생할 가능성이 높다.

이 문제점을 해결하기 위해 pureQueryXml 및 outputPureQueryXml 파일을 사용할 수 있다. 두 파일이 모두 지정되어 있고 파일 이름이 서로 다를 경우 이를 증분 캡처라고 한다. pureQueryXml은 입력으로 처리되며 pureQueryXml에 포함되어 있지 않은 새로운 SQL 문만 outputPureQueryXml 파일에 캡처된다. 앞에서 말했듯이, outputPureQueryXml을 $X 파일 접미부 구문과 함께 사용하여 인스턴스별로 하나씩, 여러 파일을 작성한 후 Merge 유틸리티를 사용하여 파일을 병합할 수 있다.

Listing 2에서는 증분 캡처를 사용하기 위한 특성 설정의 예제를 보여 준다. 여기서, App1_base.pdqxml은 병합된 파일의 이름이다.


Listing 2. 증분 캡처를 위한 특성 설정의 예제

pdq.pureQueryXml=App1_base.pdqxml
pdq.outputPureQueryXml=App1$X.pdqxml
pdq.captureMode=ON

원래 캡처된 SQL의 구조와 기존 패키지 이름을 유지하면서 새로운 SQL만 처리하기 위해 경우 기존에 구성되어 있는 pdqxml 파일을 시드 파일로 식별할 수 있다. 그러면 새로 캡처된 SQL이 기존 pdqxml 파일에 추가된다. 그림 4에서 이 시나리오를 보여 준다. 시드 파일을 지정하는 옵션은 -baseFile이다. 기존 패키지 이름과 구조를 유지한 채로 새 SQL을 구성하고 바인드하려면 -cleanConfigure FALSE-differenceOnly TRUE 옵션을 사용한다.


그림 4. -baseFile 옵션을 사용하여 여러 캡처 파일 병합하기
세 개의 입력 캡처 파일이 Merge 유틸리티에 입력된다. 병합된 출력 파일에서는 병합된 출력과 기본 시드 파일을 사용한다.

참고e: 위 동작의 예외로는 SELECT 문이 초기 캡처에 캡처되고 해당 위치 업데이트가 증분 캡처 모드로 캡처되는 시나리오가 있다. 그러한 경우 pureQuery 클라이언트 최적화는 위치 업데이트 문을 기존 패키지(SELECT 문이 있는 패키지)로 이동하여 정적 모드로 위치 업데이트 문을 성공적으로 실행한다. 위치 업데이트 문을 다른 패키지로 이동한 경우에는 구성을 수행해야 한다. 이전에 바인드한 패키지를 그대로 두어야 하는 경우에는 캡처 파일에서 위치 업데이트 문을 삭제할 수 있다. 그러면 런타임에 pureQuery 클라이언트 최적화가 정적 커서에 대한 동적 업데이트를 수행한다. 패키지를 유지하지 않아도 되는 경우에는 출력 파일과 입력 파일을 병합한 후에 클린(clean) 구성을 수행할 수 있다. 클린 구성을 수행하면 SELECT 문과 해당 위치 업데이트 문이 동일한 패키지에 존재하게 된다. 구성이 완료된 후 바인드를 수행하여 기존 패키지를 바꿀 수 있다.

이 기사의 병합된 캡처 파일을 이용하여 증분 캡처 사용하기 섹션에서 이 유형의 증분 캡처 시나리오에 대한 자세한 설명을 볼 수 있다.


시나리오

다음 시나리오는 클러스터링된 애플리케이션 서버 환경에서 클라이언트 최적화를 구성 및 작업하는 방법에 대해 자세히 설명하기 위한 것이다. 이 시나리오는 첫 번째 기사에서 설명한 예제와 비슷한 예제부터 시작한다. 하지만 이 경우에는 단일 애플리케이션 서버 노드로 구성된 환경 대신 클러스터 환경을 지원하도록 확장되었다.

그림 5와 같이 Application 1과 Application 2가 네 개의 멤버로 구성된 클러스터에 설치되어 있다. 네 개의 멤버는 노드당 두 개의 클러스터 멤버가 있는 두 개의 노드로 구성되어 있다. DS1, DS2 및 DS3는 클러스터에 설정된 데이터 소스이다. 각 노드에는 고유한 공통 파일 시스템이 있다. Application 1에서는 세 개의 데이터 소스(DS1, DS2 및 DS3)를 모두 사용하는 반면 Application 2에서는 하나의 데이터 소스만(DS3) 사용한다.


그림 5. 클러스터링 시나리오
클라이언트가 WAS 혼합 클러스터를 통해 소스에 연결된다. 각 노드에는 별도의 파일 시스템이 있다.

클러스터링된 환경에서 SQL 캡처하기

이 시나리오에서는 애플리케이션 레벨 특성 파일인 pdq.appwide.properties가 두 애플리케이션에 대한 SQL 문을 캡처하도록 설정되어 있다.

표 1에서는 Application 1의 데이터 소스 구성을 보여 준다.


표 1. Application 1의 구성된 데이터 소스
데이터베이스 이름구성된 dataSourceName특성 파일 이름
DB1(DB2)DS1pdq.ds1.properties
DB2(DB2)DS2pdq.ds2.properties
DB3(DB2가 아님) DS3pdq.ds3.properties

표 2에서는 Application 1의 pureQuery 특성 파일에 대한 설정을 보여 준다. 이러한 설정은 대상 데이터 소스에 대해 실행된 SQL에 상관 없이 애플리케이션에 대한 캡처 작업 및 관련된 캡처 파일의 출력 작업을 활성화한다.


표 2. Application 1의 pureQuery 특성 파일
파일 이름특성 정의영향을 받는 데이터 소스
pdq.appwide.propertiespdq.captureMode=ON pdq.executionMode=DYNAMIC DS1, DS2 및 DS3
pdq.ds1.propertiespdq.outputPureQueryXml= app1_ds1$X.pdqxmlDS1
pdq.ds2.properties pdq.outputPureQueryXml= app1_ds2$X.pdqxmlDS2
pdq.ds3.properties pdq.outputPureQueryXml= app1_ds3$X.pdqxmlDS3

표 3에서는 DS3에만 액세스하는 Application 2의 pureQuery 특성 파일에 대한 설정을 보여 준다.


표 3. Application 2의 pureQuery 특성 파일
파일 이름특성 정의영향을 받는 데이터 소스
pdq.appwide.propertiespdq.captureMode=ON pdq.executionMode=DYNAMIC DS3
pdq.ds3.properties pdq.outputPureQueryXml= app2_ds3$X.pdqxmlDS3

애플리케이션이 캡처 모드로 실행될 때 $X가 시간소인 및 애플리케이션 클래스로더의 오브젝트 ID로 대체된다. 각 클러스터에서 각 데이터 소스의 캡처에 사용할 고유한 파일을 작성한다. 표 4에서는 Application 1에 대한 SQL을 캡처할 때 작성되는 다양한 파일을 보여 준다. Tn은 시간소인을 나타내고, On은 애플리케이션의 클래스로더 ID를 나타낸다.


표 4. Application 1의 캡처 파일
데이터 소스Hclus1_1Hclus1_2Hclus2_1Hclus2_2
DS1app1_ds1T1O1.pdqxmlapp1_ds1T2O2.pdqxmlapp1_ds1T3O3.pdqxmlapp1_ds1T4O4.pdqxml
DS2 app1_ds2T5O5.pdqxmlapp1_ds2T6O6.pdqxmlapp1_ds2T7O7.pdqxmlapp1_ds2T8O8.pdqxml
DS3 app1_ds3T909.pdqxmlapp1_ds3T10O10.pdqxmlapp1_ds3T11O11.pdqxmlapp1_ds3T12O12.pdqxml

표 5에서는 Application 2에 대한 SQL을 캡처할 때 작성되는 다양한 파일을 보여 준다.


표 5. Application 2의 캡처 파일
데이터 소스Hclus1_1Hclus1_2Hclus2_1Hclus2_2
DS3app2_ds3T13O13.pdqxmlapp2_ds3T14O14.pdqxmlapp2_ds3T15O15.pdqxmlapp2_ds3T16O16.pdqxml

참고: 애플리케이션 레벨 특성 파일에 $X 접미부를 사용할 수 있다. 하지만 애플리케이션 레벨 특성 파일이 모든 데이터 소스에 영향을 미친다는 점에 유의해야 한다. 이 시나리오의 경우에는 Application 2에서 하나의 데이터 소스만 사용하고 있다. 따라서 애플리케이션 레벨 특성 파일에서 접미부를 사용하더라도 하나의 데이터 소스에만 영향을 준다.

캡처된 파일 병합하기

캡처 세션이 완료되면 파일을 구성 및 바인드하기 전에 다양한 파일을 병합할 수 있다. 이 샘플 시나리오에서는 데이터 소스 관련 파일을 해당 데이터베이스에 바인드한다. 예를 들어, DS1을 사용하는 Application 1의 경우 DS1에 해당하는 네 개의 캡처 파일(표 4 참조)을 병합한 후 병합된 파일을 구성하여 해당 데이터베이스(DB1)에 바인드할 수 있다.

Listing 3에서는 DS1과 관련된 파일을 병합하는 데 사용할 수 있는 Merge 명령의 예제를 보여 준다.


Listing 3. 예제 Merge 명령

java com.ibm.pdq.tools.Merge 
–inputPureQueryXml app1_ds1T1O1.xml app1_ds1T2O2.xml app1_ds1T3O3.xml app1_ds1T4O4.xml 
-outputPureQueryXml app1_ds1.pdqxml

위 예제에서 app1_ds1.pdqxml은 병합에 의해 생성되는 출력 파일이다. 출력 파일이 생성되면 이 파일을 구성하고 바인드할 수 있다.

이와 마찬가지로 DS2 관련 캡처 파일을 병합한 다음 출력 파일을 구성하고 DB2라는 데이터베이스에 바인드할 수 있다.

병합된 캡처 파일을 이용하여 증분 캡처 사용하기

시나리오의 이 부분은 그림 4에서 보여 주는 상황에 해당한다. Application 1에서 증분 캡처를 실행해야 하는 상황이 발생한 것으로 가정하자. 이러한 상황은 이전 캡처에서 일부 SQL이 누락되었거나 애플리케이션에 일부 추가 논리가 추가된 경우에 발생할 수 있다. 이 작업을 수행하려면 병합된 파일(app1_ds1.pdqxml)을 입력 pureQueryXml 파일로 사용하고 $X 접미부가 있는 별도의 파일을 outputPureQueryXml 파일 이름으로 지정한다.

Listing 4에서는 DS1에서 증분 캡처를 수행하기 위해 pdq.ds1.properties의 특성을 설정하는 예제를 보여 준다.


Listing 4. 새로 캡처된 SQL을 outputPureQueryXML로 지정된 파일로 이동하기
	
pdq.pureQueryXml=app1_ds1.pdqxml
pdq.outputPureQueryXml=app1_ds1$X.pdqxml

참고: outputPureQueryXml을 설정하면 pureQueryXml 파일이 자동으로 읽기 전용 입력 파일로 간주된다. 이 예제에는 명시적인 inputPureQueryXml 파일이 없다. outputPureQueryXml을 지정하지 않으면 pureQueryXml이 입력 및 출력으로 간주된다.

애플리케이션을 캡처 모드로 DS1에 대해 실행할 때 Listing 4의 설정을 사용하여 클러스터 멤버별로 하나씩, 네 개의 파일을 작성한다. 그런 다음 Merge 명령행 유틸리티를 사용하여 이러한 파일을 새로운 pureQueryXML 파일로 병합할 수 있다.

이 시나리오에서는 pdqxml에 대해 이미 구성되어 있는 설정을 겹쳐쓰지 않고 새 SQL을 기존에 구성되어 있는 pdqxml 파일과 병합하려고 한다. 이 작업을 수행하려면 기존에 구성되어 있는 pdqxml 파일을 기본 파일인 app1_ds1.pdqxml로 지정해야 한다.

Listing 5에서는 이 작업을 수행하는 데 사용할 수 있는 Merge 명령의 예제를 보여 준다.


Listing 5. DS1에 대한 파일 병합하기

java com.ibm.pdq.tools.Merge 
–inputPureQueryXml app1_ds1T1O1.pdqxml app1_ds1T2O2.pdqxml 
app1_ds1T3O3.pdqxml app1_ds1T4O4.pdqxml 
-baseFile app1_ds1.pdqxml
-outputPureQueryXml app1_ds1_V2.pdqxml

위 샘플 Merge 명령의 옵션은 모든 세 입력 파일의 새 SQL을 app1_ds1.pdqxml 파일의 현재 내용에 따라 설정된 이름이 없는 명령문에 넣은 다음 새 SQL을 app1_ds1_V2.pdqxml 출력 파일에 기록할 것이라고 지정한다. 그런 다음 -cleanConfigure FALSE 옵션을 사용하여 출력 파일을 증분 형식으로 구성한 후 -differenceOnly TRUE 옵션을 사용하여 바인드한다.


요약

클러스터링된 WebSphere Application Server 환경은 고가용성 및 성능을 위해 사용된다. pureQuery에 WAS를 위한 성능 최적화 기능이 있으므로 그러한 환경에서 pureQuery 클라이언트 최적화가 어떻게 작동되는지 이해하는 것이 중요하다. 이 기사에서는 특성과 $X 캡처 파일 접미부를 사용하여 클러스터의 멤버에서 SQL을 캡처하는 방법을 살펴보았다. 이러한 기술을 사용하면 단일 캡처 파일을 사용할 때 발생할 수 있는 자원 경합 문제를 해결할 수 있다.

또한 이 기사에서는 Merge 명령행 유틸리티를 사용하여 각 멤버의 캡처된 SQL 파일을 단일 파일로 병합한 다음 구성하고 대상 데이터베이스 서버에 있는 데이터베이스 패키지에 바인드하는 방법도 살펴보았다.


감사의 인사

이 기사의 내용을 검토해 준 Christopher M. Farrar, Kathryn Zeidenstein, Patrick Titzler 및 Kavitha Pullela에게 감사의 뜻을 표한다.


참고자료

교육

  • "No Excuses" Database Programming for Java를 읽고 정적 SQL과 그 장점에 대해 자세히 알아보자.

  • Device Manager Information Center에서 클러스터링에 대한 개요를 읽어보자.

  • 클러스터링된 환경에서 SQL을 캡처하는 방법에 대한 자세한 정보를 보려면 Integrated Data Management Information Center에 게시된 이 주제를 읽어보자.

  • Merge 유틸리티에 대한 자세한 정보를 보려면 Integrated Data Management Information Center에 게시된 이 주제를 읽어보자.

  • "통합 데이터 관리: 전체 라이프사이클에서 데이터 관리하기"(developerWorks, 2009년 6월 업데이트) 기사에서는 여러 역할의 관점에서 바라본 Integrated Data Management의 비전과 현실에 대해 살펴본다.

  • Optim Performance Management Solution 데모에서는 가상의 회사에서 Optim 솔루션을 사용하여 성능을 관리하는 방법을 보여 준다. 이 데모에 클라이언트 최적화 시나리오가 포함되어 있다.

  • Optim 솔루션에 대한 자세한 정보를 보려면 developerWorks Optim family 페이지를 참조하자. 기술 자료, 사용법 기사, 교육, 다운로드, 제품 정보 등을 찾아볼 수 있다.

제품 및 기술 얻기

  • Data Studio and Optim 무료 시험판 소프트웨어에 포함된 Optim Development Studio에 대한 링크를 통해 단일 시스템 개발 작업에 사용할 수 있는 30일 시험판 개발 환경 및 pureQuery Runtime을 다운로드할 수 있다.

  • 이 기술 자료에서 pureQuery Runtime for Linux, UNIX, and Windows 2.2.0.1의 선수조건을 확인할 수 있다.

  • 이 기술 자료에서 pureQuery Runtime for z/OS 2.2의 선수조건을 확인할 수 있다.

토론

필자소개

Photo of Charul Kapil

Charul Kapil은 소프트웨어 기술자로 IBM India Software Lab에서 3년간 근무했다. 현재, OPM-Reporting QA 팀에 소속되어 있다. 이전에는 pureQuery Client Optimization QA 팀 구성원이었다.

Photo of Jaijeet Chakravorty

Jaijeet Chakravorty는 IBM의 소프트웨어 기술자이다. 그는 캘리포니아주 산호세에 있는 IBM Silicon Valley Lab에서 근무한다. Java Common Client JDBC 드라이버, SQLJ 및 pureQuery 클라이언트 측 제품을 담당한다. Jaijeet는 제품 개발에 참여했으며 전세계에 있는 고객에게 L3 지원을 제공한다.

Manoj Sardana

Manoj Sardana는 소프트웨어 기술자로 5년 넘게 IBM India Software Lab에서 근무하고 있다. 그는 DB2 for Linux, UNIX and Windows용 애플리케이션 개발자이자 IBM 공인 고급 관리자이다. 현재, pureQuery 개발 팀에 소속되어 있다. Manoj는 NITK Surathkal에서 전산학 학사 학위를 받았다. 한가한 시간에는 음악을 듣거나 아이들을 돌본다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=Information Management, 자바, 웹 개발
ArticleID=499913
ArticleTitle=웹 애플리케이션 환경에서 pureQuery 클라이언트 최적화 관리하기, Part 2: 클러스터링된 환경에서 애플리케이션 최적화하기
publish-date=05272010
author1-email=chakapil@in.ibm.com
author1-email-cc=
author2-email=jaijeet@us.ibm.com
author2-email-cc=
author3-email=msardana@in.ibm.com
author3-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.