XML 데이터 서버는 로컬 네트워크를 통해 액세스할 수 있는 XML 파일에 대응합니다.
XML 파일은 Sunopsis™ XML Driver (JDBC™ Edition)을 통해 액세스됩니다. 본 JDBC 드라이버는 JDBC를 통해 SQL 쿼리를 가능하게 하는 메모리에 저장된 Schema에서 관계형 구조로 XML 파일 계층 구조를 로드합니다. 또한 이것은 XML 파일에서 관계형 구조를 다시 언로드할 수 있습니다.
선결조건
JDBC 구성
XML 파일은 Sunopsis™ XML Driver (JDBC™ Edition)을 통해 액세스됩니다.
XML용 Sunopsis JDBC 드라이버
XML용 Sunopsis JDBC 드라이버는 Sunopsis와 함께 설치되며, 실행하기 위한 라이센스가 필요합니다. 본 라이센스 키 파일 (jdbcxkey.xml)은 Sunopsis 설치 폴더의 /drivers 하위 디렉토리로 복사되어야 합니다. 본 파일을 설치한 후, 라이센스 파일이 고려되도록 Sunopsis를 재 시작해야 합니다.
연결 정보
시스템 Administrator에게 다음 정보를 요청해야 합니다.
· XML 파일과 관련된 DTD 파일의 위치
· XML 파일의 위치
· XML 파일의 루트 요소의 이름
데이터 서버 생성하기
XML 데이터 서버를 생성하려면,
1. Topology Manager로 연결하십시오.
2. 트리에서 Topology > Physical Architecture > Technologies > XML을 선택하십시오.
3. 오른쪽 마우스 버튼을 클릭하고, 데이터 서버 삽입을 선택하십시오.
4. 정의 탭에서 다음 필드를 작성하십시오.
- 이름: Sunopsis에서 나타나는 것과 같은 데이터 서버의 이름.
- 사용자/비밀번호: 여기에서는 사용 안됨.
5. JDBC 탭에서 다음 필드를 입력하십시오.
- JDBC Driver: com.sunopsis.jdbc.driver.xml.SnpsXmlDriver
- JDBC URL: jdbc:snps:xml?[property=value&property=value...]
JDBC 드라이버 속성
매개변수 |
값 |
비고 |
f |
<XML File location> |
UNC 서식의 XML 파일 위치 (상대적 또는 절대적). 경로 이름에는 슬래시 "/"를 사용해야지, 파일 경로에 백슬래시 "\"를 사용하지 마십시오. |
d |
<DTD File location> |
UNC 서식의 DTD 파일 위치 (상대적 또는 절대적). 경로 이름에는 슬래시 "/"를 사용해야지, 파일 경로에 백슬래시 "\"를 사용하지 마십시오. 본 매개변수가 누락된 경우, 드라이버는 (".xml" 확장자를 ".dtd"로 교체함으로써) XML 파일로부터 DTD 파일의 이름을 생성할 것입니다. |
rt |
<Root Table> |
XML 파일의 루트 요소. Schema가 대소문자를 구분하는 경우, 테이블 이름에 대한 활자체를 유지하십시오. Schema가 대소문자를 구분하지 않는 경우, 테이블 이름에 대문자를 사용하십시오. |
ro |
true | false |
true인 경우, XML 파일이 읽기 전용 모드로 열립니다. |
s |
<schema name> |
XML 파일이 로드될 관계형 Schema의 이름. 본 매개변수가 누락된 경우, Schema 이름이 자동적으로 파일 이름으로부터 생성됩니다. |
cs |
true | false |
대소문자 구분 또는 비구분 모드에서 XML 파일을 로드하십시오. 대소문자 비구분 모드에서, DTD 파일에서의 모든 요소 이름은 명확해야 합니다 (예: 동일 파일에서 Abc 및 abc는 금지됩니다). 대소문자 구분 매개변수는 Schema에 대한 영구 매개변수입니다. 이것은 Schema 생성 후에 변경될 수 없습니다. 대소문자 비구분 모드에서 XML 파일이 열릴 때, 활자체는 XML 파일에 대해 유지된다는 것을 주의하십시오. |
예:
jdbc:snps:xml?f=../demo/xml/GEO_DIM.xml&rt=GEOGRAPHY_DIM&ro=false&case_sens=true&s=GEO
경고 ! XML 파일에 액세스하려면, 우선 파일이 잠기지 않았는지 확인하십시오. 파일이 잠겼는지 확인하려면, XML 파일의 디렉토리에서 .lck 파일을 찾으십시오.
6. 시험을 클릭하십시오.
7. 연결 시험 창에서 시험을 클릭하십시오.
8. 연결 성공을 나타내는 창이 나타나야 합니다. 확인을 클릭하십시오. 연결이 성공적이지 않은 경우, XML을 이용하는 경우의 공통 오류를 참조하십시오.
9. 데이터 서버의 생성을 확인하기 위해 확인을 클릭하십시오.
데이터 서버의 첫번째 Physical Schema에 대한 생성 창이 나타납니다.
XML Physical Schema 생성하기를 참조하십시오.
XML에 대한 Physical Schema 생성하기
Physical Schema는 XML 파일과 관련된 테이블에 대한 저장 위치입니다. Sunopsis는 각 XML 데이터 서버에 대해 하나의 Physical Schema만 필요합니다.
XML에 대한 Physical Schema를 생성하려면,
주: 데이터 서버를 방금 생성한 경우, 단계 1를 무시하십시오. Physical Schema 창이 이미 열려있어야 합니다.
1. 해당 XML 데이터 서버를 선택하고, 오른쪽 마우스 버튼을 클릭하고, Physical Schema 삽입을 선택하십시오. Physical Schema 창이 나타날 것입니다.
2. Schema 및 Work Schema를 명명하십시오. XML 데이터 서버의 JDBC URL의 s=<schema name> 속성을 갖는 Schema를 명명하는 경우, 여기에서는 동일 Schema 이름을 사용해야 한다는 것을 주의하십시오.
3. 본 Schema를 본 데이터 서버에 대한 기본 Schema로 하고자 하는 경우, 디폴트 박스를 체크하십시오 (첫번째 Physical Schema는 항상 기본 Physical Schema입니다). 추가 정보가 필요한 경우, Physical Schema를 참조하십시오. XML 파일의 경우, 다른 Physical Schema는 필요하지 않음을 주의하십시오.
4. Context 탭으로 가십시오.
5. 본 새로운 Physical Schema에 대해 Context 및 기존의 Logical Schema를 선택한 후, 단계 8로 가십시오.
XML Logical Schema가 아직 존재하지 않는 경우, 단계 6으로 가십시오.
6.
7. 왼쪽 열에서 기존의 Context를 선택하고, 오른쪽 열에 Logical Schema]의 이름을 입력하십시오. 본 XML Logical Schema는 자동적으로 생성되고, 본 Context에 있는 본 Physical Schema로 연결됩니다.
경고 ! Logical Schema는 주어진 Context에서 하나의 Physical Schema와만 연결될 수 있습니다.
8. 확인을 클릭하십시오.
XML 파일에 대한 모델 생성 및 리버스 엔지니어링
XML 파일에 대한 모델 생성하기
XML 파일 모델은 각 Datastore가 XML 파일에서 엔트리 레벨을 나타내는 일련의 Datastore로서 보여집니다. 모델은 항상 Logical Schema에 기반을 둡니다. 주어진 Context에서, Logical Schema는 Physical Schema에 대응합니다. Data Schema에 대응하는 본 Physical Schema는 본 XML 모델에 대한 테이블을 포함합니다.
XML 파일에 대한 모델을 생성하려면,
1. Designer에 연결하십시오.
2. 트리에서 모델을 선택하십시오.
3. 오른쪽 마우스 버튼을 클릭하고, 메뉴에서 모델 삽입을 선택하십시오.
4. 정의 탭에서, 이름 필드를 입력하십시오.
5. 기술 필드에서, XML을 선택하십시오.
6. Logical Schema 필드에서, 모델이 기반을 둔 Logical Schema를 선택하십시오.
7. 리버스 탭으로 가서, 모델을 리버스 엔지니어링할 때 사용될 Context를 선택하십시오. 적용을 클릭하십시오.
모델이 생성되지만, 아직 Datastore는 포함하지 않습니다.
XML 모델 리버스 엔지니어링
모델이 Datastore 없이 생성됩니다. 리버스 엔지니어링 작업은 해당 Datastore 정의를 생성하기 위해 모델의 테이블 구조를 모읍니다. 리버스 엔지니어링에는 드라이버의 기능만을 사용하는 표준 리버스 엔지니어링 및 객체 구조를 얻기 위해 Reverse Knowledge Module (RKM)을 사용하는 사용자 지정 리버스 엔지니어링이라는 두 가지 유형이 있습니다.
주: XML 파일에 대한 특별 RKM은 없습니다. XML에 대해서는 표준 리버스 엔지니어링을 사용할 것을 권장합니다.
표준 리버스 엔지니어링
XML 파일에서 표준 리버스 엔지니어링을 수행하려면,
1. XML 모델의 리버스 탭으로 가십시오.
2. 다음 필드를 작성하십시오.
- 표준
- Context: 리버스 엔지니어링을 위해 사용된 Context
- 객체 유형: 리버스 엔지니어링을 하기 위한 객체 유형 (테이블)
3. 선택적 리버스 탭으로 가십시오.
- 선택적 리버스, 새 Datastore 및 리버스 할 객체 박스를 체크하십시오.
4. 리버스 엔지니어링을 해야 될 Datastore의 목록이 나타납니다. 리버스 엔지니어링을 원하지 않는 Datastore를 체크 해제하십시오.
5. 리버스 버튼을 클릭한 후, 변경을 확인하기 위해 예를 클릭하십시오.
6. Sunopsis가 선택된 Datastore의 리버스 엔지니어링을 실행할 때 프로그레스 바가 나타납니다.
리버스 엔지니어링된 Datastore가 모델 아래에 나타납니다.
리버스 및 선택적 리버스 탭의 옵션을 이용해서 리버스 엔지니어링을 개선할 수 있습니다. 이에 관한 추가 정보가 필요한 경우, 모델을 참조하십시오.
리버스 엔지니어링의 결과
Sunopsis는 XML 파일로부터 생성된 테이블로 다음 열을 자동적으로 추가합니다.
· 상하위 관계에 대한 Primary keys (PK columns)
· 상하위 관계에 대한 Foreign keys (FK columns)
· 데이터가 XML 파일에서 나타나는 순서의 검색을 가능하게 하는 Order identifier (ORDER columns)
이들 별도 열은 Schema에 저장된 관계형 구조로 계층적 XML 구조의 매핑을 가능하게 합니다.
XML 파일을 이용하는 경우의 KM 선택
인터페이스에서 KM의 선택은 인터페이스의 기능 및 성능을 결정합니다. 아래 권장사항은 특정 상황에 따라 XML 파일에 대해 올바른 KM을 선택하는 것을 돕습니다.
KM에 관한 일반적인 정보가 필요한 경우, Knowledge Module을 참조하십시오.
주: 프로젝트로 가져온 Knowledge Module만 본 프로젝트의 인터페이스에서의 이용에 대해 사용할 수 있습니다. KM을 가져오려면, KM 가져오기를 참조하십시오.
파일 및 메모리 동기화
XML 파일에서의 데이터 및 메모리에서의 데이터를 완전히 동기시키기 위해, 특정 명령이 실행되어야 합니다.
· 데이터를 읽거나 업데이트하기 위해 XML 모델의 테이블을 사용하기 전에, XML Logical Schema에서 SYNCHRONIZE FROM FILE 명령을 사용할 것을 권장합니다. 본 작업은 관계형 메모리 Schema에서 XML 계층 데이터를 다시 로드합니다. Schema가 처음 액세스될 때 메모리에 로드되면, 메모리에 있는 데이터는 XML 파일의 콘텐츠에 의해 동기되지 않을 것입니다.
· 관계형 메모리 Schema에서 변경을 수행한 후, XML Logical Schema에서 SYNCHRONIZE ALL 또는 SYNCHRONIZE FROM DATABASE 명령을 실행함으로써 본 Schema를 XML 계층 데이터로 언로드해야 합니다.
이들 명령은 인터페이스 및 프로시져가 XML Schema를 조정하기 전 (후)에 패키지에 있는 특정 프로시져에서 실행되어야 합니다.
이들 명령에 관한 추가 정보가 필요한 경우, Sunopsis XML 드라이버 문서를 참조하십시오.
경고 ! XML 파일에 대한 Schema가 JDBC URL에서 설정되지 않은 경우, SET SCHEMA 명령은 어떤 데이터도 처리하기 전에 실행되어야 합니다.
XML에 대한 인터페이스
인터페이스의 대상으로서 XML 모델의 테이블을 사용할 때, 관계형 구조에서 XML 계층 구조를 매핑하는 별도의 열에 데이터를 삽입해야 합니다. 예를 들면, 다음과 같이 XML 구조에 Region 기록을 입력하는 경우,
<country COUNTRY_ID="6" COUNTRY_NAME="Autralia">
<region REGION_ID="72" REGION_NAME="Queensland">
</country>
Region 테이블의 REGION_ID 및 REGION_NAME 열을 입력해야 하지만, 다음 열도 입력해야 합니다.
· REGIONPK: 본 열은 각 <region> 태그의 식별을 가능하게 합니다.
· REGIONORDER: 본 열은 XML 파일에서 <region> 태그의 정렬을 가능하게 합니다 (기록은 관계형 Schema에서는 정렬이 되지 않지만, XML 태그는 정렬이 됩니다).
· COUNTRYFK: 본 열은 <country> 상위 요소와 비교하여 <region> 요소를 배치하는 것을 가능하게 합니다. 본 값은 country 테이블에서 "Autralia" 기록에 대한 COUNTRYPK 값과 동일합니다.
데이터 완전성을 보장하기 위해, Sunopsis는 XML 모델에 특정 참조 및 기본 키 제약 조건을 삽입합니다.
XML 파일에서 및 XML 파일로 데이터 로드하기
XML 파일은 인터페이스의 원본 또는 대상으로 사용될 수 있습니다. XML 파일 및 다른 유형의 데이터 서버 간에 데이터를 로드하기 위해 사용된 (인터페이스 흐름 탭에서) LKM의 선택은 인터페이스의 실행에 필수적입니다.
XML Schema에서 LKM 선택
다음 경우에 있어서의 LKM 권장사항
· 스테이징 영역에 대한 XML 원본
수 개의 솔루션이 가능한 경우, 이들은 선호도 및 성능 순으로 표시됩니다. 일반 KM은 굵게 표현됩니다.
스테이징 영역 |
권장 KM |
비고 |
Microsoft SQL Server |
LKM ISO SQL to MSSQL (bulk) |
SQL 서버의 Bulk Loader를 사용. |
Oracle |
LKM ISO SQL to Oracle |
일반 LKM 보다 빠름 (통계 사용) |
Sybase |
LKM ISO SQL to Sybase (bcp) |
Sybase의 Bulk Loader를 사용. |
All |
LKM ISO SQL to SQL |
일반 KM |
XML Schema에 대한 LKM 선택
XML이 인터페이스의 대상이고 대상을 스테이징 영역으로 사용하고자 하는 경우를 제외하고, XML Schema를 스테이징 영역으로서 사용하지 말 것을 권장합니다. 이 경우에, XML Schema로 데이터를 로드해야 할 수도 있습니다.
다음 경우에 있어서의 LKM 권장사항
· XML 스테이징 영역에 대한 원본
수 개의 솔루션이 가능한 경우, 이들은 선호도 및 성능 순으로 표시됩니다. 일반 KM은 굵게 표현됩니다.
원본 |
권장 KM |
비고 |
JMS |
LKM JMS to SQL |
|
File |
LKM ISO File to SQL |
|
All |
LKM ISO SQL to SQL |
일반 KM |
XML 파일로 데이터 통합하기
XML 파일에서의 데이터 통합 전략은 많이 있으며, 수 개의 모드를 포함합니다. 인터페이스 흐름 탭에서 IKM 선택은 통합에 대한 성능 및 가능성을 결정합니다.
XML 파일에 대한 IKM 선택
다음 경우에 있어서의 LKM 권장사항
· XML 대상에 대한 스테이징 영역
· XML 대상에 대한 XML 스테이징 영역 이 경우, 스테이징 영역이 XML 대상에 있습니다.
수 개의 솔루션이 가능한 경우, 이들은 선호도 및 성능 순으로 표시됩니다. 일반 KM은 굵게 표현됩니다.
모드 |
스테이징 영역 |
권장 KM |
비고 |
Update |
XML |
IKM ISO SQL Incremental Update |
일반 KM |
Append |
XML |
IKM ISO SQL Control Append |
일반 KM |
Append |
All RDBMS |
IKM ISO SQL to SQL Append |
일반 KM |
XML을 이용하는 경우의 공통 오류
XML에서 발생한 오류 감지
Sunopsis에서의 오류는 다음과 같은 방식으로 종종 나타납니다.
java.sql.SQLException: No suitable driver
at ...
at ...
...
java.sql.SQLException 코드는 단지 쿼리가 오류를 반환한 JDBC 드라이버를 통해 만들어진 것을 나타냅니다. 본 오류는 종종 데이터베이스 또는 드라이버 오류이며, 다음과 같은 방향으로 해석되어야 합니다.
굵게 표시된 텍스트 부분만 우선 고려되어야 합니다. 이것은 XML 드라이버 문서에서 검색되어야 합니다. 이것이 여기에서와 같이 특정 오류 코드를 포함하는 경우, 오류는 즉시 확인될 수 있습니다.
이러한 오류가 실행 로그에서 확인된 경우, 오류의 출처를 찾기 위해 데이터베이스로 보내진 SQL 코드를 분석해야 합니다. 코드는 오류가 있는 작업의 설명 탭에 표시됩니다.
XML을 이용하는 경우에 가장 공통적인 오류를 주요 원인과 함께 아래에 열거하였습니다.
공통 오류
연결 오류
No suitable driver
XML 드라이버가 올바르게 설치되지 않았거나, 드라이버 라이센스 파일이 /drivers 디렉토리에 없습니다.
The license key ExpiryDate is violated.
The license key Version is violated.
평가판 라이센스가 만료되었거나, 드라이버 버젼에 유효하지 않은 라이센스를 사용하려고 시도하고 있습니다. 유효한 라이센스 키에 대해 Sunopsis에 연락하십시오.
인터페이스에서의 오류
File <XML file> is already locked by another instance of the XML driver.
XML 파일이 다른 사용자/애플리케이션에 의해 잠겼습니다. XML 파일을 사용할 지 모를 모든 애플리케이션을 닫으십시오. 그러한 애플리케이션이 오류가 발생한 경우, XML 파일의 디렉토리에 남아있는 .lck 파일을 제거하십시오.
The DTD file "xxxxxxx.dtd" doesn't exist
이러한 예외적인 경우는 LOAD FILE 명령을 이용하여 XML 파일을 로드하려 할 때 발생할 수 있습니다. 오류 메시지는 다음과 같은 두 가지 원인을 갖습니다.
· DTD 파일의 경로가 틀립니다.
· 대응하는 XML 파일이 (예를 들면, 연결 동안에) 이미 다른 Schema에 의해 열려 있습니다.
Table not found: S0002 Table not found: <table name> in statement [<SQL statement>]
액세스하려고 하는 테이블이 Schema에 존재하지 않습니다.
Column not found: S0022 Column not found: <column name> in statement [<SQL statement>]
액세스하려고 하는 열이 명령문에서 지정된 테이블에 존재하지 않습니다.