새로운 DBMS를 GeoService-Xr에 추가하기 위한 클래스 간의 관계를 정리해 봅니다. 이번에 새롭게 추가해야할 DBMS는 PostgreSQL에 기반한 PostGIS입니다. PostGIS이므로 공간검색이나 공간 데이터에 대한 관리는 모두 PostGIS의 기능을 그대로 사용합니다. 시간 상으로 PostGIS를 깊이 있게 살펴본 상태는 아니지만.. 지금까지의 느낌으로는 깔끔합니다. 속도 역시 빠릅니다. 아래 그림은 새로운 DBMS 추가 확장에 대해 관련이 있는 클래스만을 떼어 놓은 GeoService-Xr의 클래스 관계도입니다.
보시면… GeoService-Xr이 지원하고 있는 공간 데이터의 소스가 어떤 것인지를 알 수 있습니다. 현재는 파일기반, MySQL 그리고 ArcSDE입니다. 여기에 더해질 PostGIS가 가능합니다. 또한 편집이 가능한 데이터 소스는 MySQL과 PostGIS라는 것도 파악할 수 있습니다. 즉, 편집을 위한 인터페이스를 선언하고 있는 클래스가 XrEditableSpatialAccess인데 이 클래스를 상속받고 있는 클래스가 XrMySqlAccess와 XrPostGISAccess이기 때문입니다.
공간 데이터 서비스 및 공간 데이터의 편집이 가능한 공간 DBMS를 새롭게 추가하기 위해서 XrEditableSpatialAccess를 상속받아야 하며.. 이때 구현해야할 인터페이스 매서드의 개수는 13개입니다. 먼저 최상위의 Access 클래스에 대해 구현해야할 추상 매서드는 다음과 같습니다.
- getAccessType : Access의 타입 반환함(AccessType이라는 enum 타입의 값 반환)
- connect : 파일 열기, 소켓 오픈 등과 같은 데이터 소스 접근 준비
- build : 파일이나 DB로부터 공간 쿼리가 실제 가능하도록 준비
그리고 SpatialAccess에 대해 구현해야 할 추상 매서드는 다음과 같습니다.
- getMBR : 지정된 row에 대한 MBR을 얻음
- collectConnectionInfo : 필드구성, 전체 row 수, 공간 도형 타입, MBR 정보를 얻음
- queryByMBR : MBR에 포함되는 공간 데이터를 쿼리함
그리고 최종적으로 XrEditableSpatialAccess에 대해 구현해 줘야할 추상 매서드는 다음과 같습니다. 만약 편집 기능이 필요치 않을 경우 이 클래스의 추상 매서드는 구현할 필요가 없습니다.
- updateFeature : 편집된 공간 데이터를 update 시킴
- deleteFeature : 지정된 공간 데이터를 삭제함
- insertFeature : 새로운 공간 데이터를 추가시킴
- checkExistFID : 지정한 FID가 이미 존재하는지 검사함
- checkExistFIDs : 지정한 FID 리스트가 존재하는지 검사함
- writeEditedHistoryData : 공간 데이터에 대한 편집 이력을 기록함(반드시 구현할 필요는 없음)
- getDBResource : 데이터 소스에 접근하기 위한 DB 리소스를 얻음
이상으로 XrGeoService-Xr 공간 서버에서 새로운 DBMS를 새롭게 지원하기 위해 구현해야할 인터페이스에 대한 정리였습니다.