JDBC 중개자 생성 조회

SQL(Structured Query Language) SELECT 명령문을 제공하지 않으면, DMS(Data Mediator Service)는 인스턴스 작성 시 제공된 메타데이터를 사용하여 생성합니다.

내부 조회 엔진은 테이블, 열, 관계, 필터 및 order-bys에 대한 정보를 메타데이터에서 사용합니다. 중개자가 DataGraph에 작성된 변경사항을 다시 데이터베이스로 커미트하면 제공된 조회로, UPDATE, DELETE 및 INSERT 명령문은 적용될 각 DataObject에 대해 자동으로 생성됩니다.

필터

필터는 매개변수 마커를 포함할 수 있는 SQL WHERE 절을 정의합니다. DataGraph SELECT 명령문 WHERE 절에 추가됩니다. 필터는 있는 그대로 사용됩니다. 구문 분석되거나 해석되지 않으므로 오류 검사는 없습니다. 잘못된 이름 또는 술어를 사용하는 경우, 발견되지 않으며 생성된 조회는 유효하지 않습니다. Filter WHERE 절이 매개변수 마커를 포함하는 경우, 해당 매개변수 이름과 유형은 Filter 인수를 사용하여 정의됩니다. 그래프가 검색되기 전에 매개변수 DataObjects는 이 매개변수를 채웁니다. 생성된 조회에 대한 Filters 및 매개변수 DataObjects의 예는 다음과 같습니다.

제한사항: DataGraph의 트리와 유사한 네이처 때문에, 분기의 테이블은 모든 경로에 표시되는 루트 테이블이 있는 최종 유니온에서 둘 이상의 부속조회로 표시됩니다. 기타 모든 경로와 상관없이 둘 이상의 경로에 표시되는 테이블에서 필터링할 수 없음을 의미합니다. 특정 테이블에서 정의된 모든 필터는 부울 AND로 결합되며 테이블이 표시되는 모든 곳에서 사용됩니다.

생성된 조회에 대한 매개변수 DataObject

클라이언트는 매개변수 DataObject를 사용하여 DMS 메타데이터에 제공된 필터에 적용된 인수를 제공합니다. 매개변수 DataObject는 DataObject지만 DataGraph의 일부가 아닙니다. 클라이언트에서 요청하면 JDBC DMS에서 구성됩니다. 생성된 조회에 대한 매개변수 DataObject는 중개자의 메타데이터를 바탕으로 작성됩니다. 모든 테이블의 모든 필터의 모든 인수는 매개변수 DataObject로 입력됩니다. 제공된 조회 매개변수 DataObject와 달리, 매개변수에는 Filter 인수에서 지정된 이름이 있습니다. 매개변수 DataObject는 이 이름을 사용하여 매개변수를 맵핑하여 채웁니다. 다음 샘플 코드는 필터가 중개자 메타데이터의 테이블에 대해 작성되는 방법을 설명합니다. 또한 필터 매개변수 값을 중개자 인스턴스에 전달하는 매개변수 DataObject의 사용을 설명합니다. 샘플은 고객 테이블이 이미 정의되었다고 가정합니다.
// The factory is a MetadataFactory object
Filter filter = factory.createFilter();
filter.setPredicate("CUSTSTATE = ? AND CUSTZIP = ?");

FilterArgument arg0 = factory.createFilterArgument();
arg0.setName("customerState");
arg0.setType(Column.String);
queryInfo.getFilterArguments().add(arg0);

FilterArgument arg1 = factory.createFilterArgument();
arg1.setName("customerZipCode");
arg1.setType(Column.Integer);
queryInfo.getFilterArguments().add(arg1);

// custTable is the Customer Table object
custTable.setFilter(filter);


..... // setting up mediator 


DataObject parameters = mediator.getParameterDataObject();

// Notice the first parameter is the name given to the 
// argument by the FilterArgument.
parameter.setString("customerState", "NY");
parameter.setInt("customerZipCode", 12345);
DataObject graph = mediator.getGraph(parameters);

Order-by

조회 순서 결과는 테이블에서 열을 식별하여 결과를 정렬하는 OrderBy 오브젝트를 사용하여 지정됩니다. 이 순서 지정은 오름차순 또는 내림차순일 수 있습니다. OrderBy 오브젝트는 메타데이터의 일부이며 생성된 조회에 자동으로 적용됩니다. 고객 테이블 결과가 이름순으로 정렬되는 이 예는 다음과 같습니다.
// This example assumes that the custTable, a table in 
// the metadata, and factory, the MetaDataFactory 
// object, have already been created. 
Column firstName = ((TableImpl)custTable).getColumn("CUSTFIRSTNAME");
OrderBy orderBy = factory.createOrderBy();
orderBy.setColumn(firstName);
orderBy.setAscending(true);
metadata.getOrderBys().add(orderBy);
제한사항: Order-by가 메타데이터의 각 테이블에서 정의되더라도 RDBMS 모델을 사용하려면 최종 조회에 적용되어야 합니다. 여러 의미가 있습니다. 예를 들어, 테이블의 순서를 지정한 다음 다른 테이블에 대한 결합에서 이를 사용하고 첫 번째 테이블에 순서 지정을 전파할 수 없습니다. 결과 세트가 DataGraph에서 모든 테이블의 유니온이기 때문에, 단일 결과 세트의 네이처는 널로 채워져야 되며, order-bys, 특히 비-루트 테이블에 영향을 줄 수 있습니다. 예기치 않은 결과가 발생할 수 있습니다.

외부 테이블

외부 테이블은 JDBC DMS에서 리턴된 DataGraph에서 필요하지 않는 메타데이터에 정의되는 테이블입니다. 테이블의 데이터를 기반으로 하는 결과 세트를 필터링할 때 적절할 수 있지만 해당 테이블의 데이터는 결과 세트에서 필요하지 않습니다. 고객과 순서 관계를 포함한 이 예는 결과 세트를 필터링하여 해당 년도의 처음 주문 날짜로 항목의 순서를 지정한 모든 고객을 리턴합니다. 이 경우, 리턴된 주문 정보를 원하지 않지만 주문 정보를 필터링할 필요가 있습니다. 주문 테이블을 외부에서 작성하면 DataGraph에서 주문 정보를 제외하므로 DataGraph 크기를 줄여 효율성을 개선시킵니다. 테이블을 외부로 지정하려면, JDBC DMS 메타데이터의 테이블 오브젝트에서 setExternal(true) 메소드를 호출합니다. 클라이언트가 DataGraph에서 외부 테이블에 액세스하려고 하면 잘못된 인수 예외가 발생합니다.

제한사항: 여러 RDBMS는 최종 결과 세트에 orderby 열이 표시되어야 합니다. 외부 테이블의 열은 보통 결과 세트를 순서 지정하는 데 사용될 수 없습니다. Order-by는 실제로 중간 조회 결과가 아닌 결과 세트(여기서는 단어 "set"이 키임)에 적용됩니다.

생성된 조회의 일반 제한사항

JDBC DMS에서 조회 생성 기능의 제한사항을 이해하는 데 다음 두 가지를 기억해야 합니다. 첫 번째는 DataGraph는 사이클이 포함된 간접적으로, 잠재적으로 연결이 끊긴 그래프인 관계형 모델에서 사이클을 포함하지 않은 직접적으로 연결된 그래프인 모델(즉, 트리인 모델)을 적용합니다. Directed는 개발자가 루트 테이블을 선택하여 그래프의 방향을 선택함을 의미합니다. Connected는 DataGraph의 멤버인 모든 테이블이 루트에서 접근 가능함을 의미합니다. 루트에서 접근 불가능한 테이블은 DataGraph에 포함될 수 없습니다. 테이블이 루트에서 접근 가능하도록 하려면, DataGraph의 각 테이블 쌍 사이에 정의된 하나 이상의 외부 키 관계가 있어야 합니다. No cycles는 DataGraph의 테이블 쌍 사이에 하나의 외부 키 관계만 있음을 의미합니다. DataGraph의 트리 네이처는 조회가 빌드되는 방식 및 조회에서 리턴되는 데이터를 판별합니다.

기억해야 하는 두 번째 항목은 다음 조회 생성이 DataGraph에 대한 읽기 조회를 생성하는 방법의 상위 레벨 설명입니다.
  1. DataGraph가 단일 테이블 또는 다중 테이블에서 구성되는지에 관계없이 JDBC DMS는 단일 결과 세트(즉, DataGraph)를 작성합니다.
  2. 루트에서 리프까지 DMS 메타데이터의 외부 키 관계를 통한 각 경로는 별도의 경로를 표시합니다. 해당 경로에 대한 데이터는 경로의 테이블 간에 정의된 외부 키에서 결합을 사용하여 검색됩니다. 결합은 기본적으로 내부 결합입니다.
  3. 중개자에서 생성된 조회로 단일 결과 세트를 작성하기 위해 DataGraph의 모든 경로는 같이 통합되므로 서로 독립적으로 처리됩니다.
  4. 사용자 정의 필터링은 테이블에서 처음 수행됩니다. 그런 다음 결과는 나머지 경로에 결합됩니다.
  5. 관계형 데이터베이스는 일반적으로 order-bys를 중간 결과가 아닌 전체 최종 결과 세트에 적용해야 합니다.

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_sdogquery
파일 이름:rdat_sdogquery.html