검색 전체 메뉴
PDF
맨 위로
OA 학술지
비정형 대용량 데이터 입력 및 출력 시스템 설계 및 구현 Design and Implementation of Input and Output System for Unstructured Big Data
  • 비영리 CC BY-NC
  • 비영리 CC BY-NC
ABSTRACT
비정형 대용량 데이터 입력 및 출력 시스템 설계 및 구현

In recent years, the spread of computers is increasing, and efficient processing effort for unstructured Big Data is required. In this paper, we are proposed a system to extract the data typed in a word processor quickly by user creating and XML mapping file after converting XML data that has been entered in the office file(HWP, MS-office). In addition, we proposed a system is able to lookup the necessary data from a database by entered form in advance and convert word processor document to office files by the application program. The unstructured big data will be available to be used.

KEYWORD
대용량 데이터 , 매핑 , 비정형 데이터 , XML
  • Ⅰ. 서 론

    일반적으로 웹상의 데이터 입력은 정형화된 입력 화면을 제공하고 사용자가 화면에 데이터를 입력하면 적합성 등을 검사하고 이를 데이터베이스에 저장하고, 데이터베이스에 저장된 데이터를 웹 화면에 출력하여 사용자에게 데이터를 제공하고 있다. 그러나 비정형화 된 데이터에 대해 웹을 이용하여 데이터를 입력할 수 있는 시스템의 구축이 매우 어렵고 많은 시간이 소요된다.

    이에 따라, 일반적으로 사용자가 사용하는 아래한글이나 Microsoft-Office(워드, 파워포인트, 엑셀 등)를 이용하여 다양한 양식으로 데이터를 입력하고, 입력된 파일에 대해 웹을 통하여 업로드 하여, 데이터를 추출하여 데이터베이스에 데이터를 입력할 수 있는 시스템 개발이 요구되고 있다.

    이에, 본 논문에서는 업로드 된 바이너리(binary) 파일을 XML(eXtensible Markup Language) 파일로 변환할 수 있는 엔진을 구현하였다. 또한, 변환된 XML 파일과 Mapping XML 파일을 파싱하여 데이터베이스에 데이터를 입력하거나 또는 데이터베이스에 입력된 데이터를 양식(HWP, MS-Office) 파일로 출력할 수 있는 시스템을 설계 및 구현 하였다.

    Ⅱ. 관련연구

       2.1. 복합 파일(Compound File) 구조

    아래한글 및 Microsoft-Office 파일의 구조는 모두 복합 파일 구조를 사용하고 있으며, 내부적으로 스토리지(Storage)와 스트림(Stream)을 구별하기 위한 이름을 가진다. 하나의 스트림에는 일반적으로 바이너리나 레코드 구조로 데이터가 저장되고 스트림에 따라서 압축/암호화가 되기도 한다. 복합 파일을 사용하는 이유는 4기가(giga) 이상의 파일을 저장하기 위하여 사용한다[1].

       2.2. HWPML

    한글 워드 프로세서 문서를 기술하기 위한 W3C XML 기반의 개방형 마크업 언어이다. HWPML 엘리먼트에 대한 설명은 표 1과 같다[2,3].

    [표 1.] HWPML 엘리먼트

    label

    HWPML 엘리먼트

    처리 과정은 한글 워드프로세서의 원본 문서를 HWPML로 변경 저장하여 매핑(Mapping) XML 파일과 매핑하여 필요한 부분의 데이터를 추출한다.

       2.3. 데이터 매핑

    매핑은 두 가지의 다른 구조를 지닌 명세 형식에서, 동일하거나 비슷한 의미를 지닌 데이터 요소들을 연결하고, 필요에 따라 연결정의에 추가적인 의미를 부여하여, 두 명세 형식간의 관계를 정의하는 것이다.

    그림 1은 두 문서 구조 정보에 대해 데이터 매핑을 통해 정의한 예로 써, 보는 바와 같이 두 구조 정보는 같은 내용을 담고 있으면서도 다른 구조를 지니고 있다. BirDate이라는 엘리먼트 하위로 Year, Month, Day를 구분짓는 구조를 n:1 의 관계로 BirDate이라는 하나의 엘리먼트에 매핑하고, Address라는 엘리먼트를 1:n 의 관계로 분리하여 매핑하며, 1:1 의 관계인 속성으로 표현된 Zipcode를 엘리먼트로 표현된 Zipcode와 매핑한 모습이다.

    Ⅲ. 비정형 대용량 데이터 입력 및 출력 시스템 설계

       3.1. 시스템 구성

    비정형 대용량 데이터 입력 및 출력 시스템 구성은 다양한 O/S 환경에서 설치가 가능하도록 개발하고 또한 Active-X 방식을 사용하지 않도록 설계하여 다양한 브라우저를 지원 할 수 있도록 설계하였다. 그림 2는 전체 시스템 구성도이다.

    비정형 대용량 데이터 입력 및 출력 시스템은 비정형 자료와 XML 맵핑 규칙을 입력 받아 문서 구조를 파악하고, 파악된 데이터들 중에 필요한 정보를 추출하여 구조 분석기에서 DOM(Document Object Model) 인터페이스를 이용하여 데이터를 트리 노드에 인덱스 값으로 매핑한다.

    본 시스템의 엔진은 크게 2개 부분으로 분리하여 설계하였다. 이는 다른 시스템 구축 시에도 엔진을 각각 활용 할 수 있도록 하였으며, 두 엔진간의 통신은 IPC(Interprocess Communication)를 사용하여 서로 데이터를 송수신 할 수 있도록 하였다.

    웹서버를 지원하기 위하여 Open Source 엔진인 NODE JS 엔진을 활용하였다. NODE JS 엔진은 기존 웹서버나 웹 어플리케이션 서버보다 가볍고 JavaScript 를 사용하여 개발이 가능하며 다양한 어플리케이션에 활용이 가능하다 최근에는 계속 버전을 업그레이드하여 안전성 및 성능이 많이 향상되었다. 비정형 대용량 데이터 입력 및 출력 시스템 구성도는 그림 3과 같다.

       3.2. 원본파일 변환 엔진

    원본파일(HWP, MS-Office)을 바이너리 상태에서 바로 XML로 변환 할 수 있다. HWP 파일의 경우 한글과컴퓨터에서 제공하는 HWP 문서 파일 포맷[1]에서 정의된 파일을 원본으로 읽어들여 바로 XML로 변활할 수 있다. 또한, MS-Office 파일의 경우 다양한 오픈 API[4,5]를 이용하여 원본 파일을 바로 XML파일로 변환할 수 있다.

    변환단계는 잘 구성된(Well-formed) XML 문서로 변환하는 부분이다. 본 시스템에서 필터링 단계를 거쳐 생성된 중간 단계의 서식 파일을 읽어들인 후, DOM 인터페이스를 이용하여 태그 빌드와 내용 빌드를 생성하고 문서 구조를 검증한 후, 각각의 인덱스 값을 매핑하여 원문서의 변형없이 구조적인 XML 문서를 생성하도록 정의하였다.

       3.3. 매핑 XML 파일

    본 논문에서는 원본을 XML로 변환하여 이 변환된 XML파일에서 데이터 부분을 추출하기 위하여 매핑 XML 파일을 작성한다. 또한, 원본 XML 파일과 매핑 XML 파일을 파싱하여 원본의 XML 파일에서 데이터를 추출한다. 추출하기 전에 먼저 원본 XML파일과 매핑 XML 파일의 유효성 검증(Validation check)을 수행하여 XML 파일의 정확성을 확인하여 다음 작업을 진행 하도록 한다.

    유효성 검증 후 구조 분석이 이루어지고, DOM 인터페이스를 이용하여 데이터를 필드 단위로 각각 메모리에 적재하여 처리한다. 이는 XML 구문 규칙을 사용하고 있기 때문에 DOM 인터페이스를 제어 할 수 있다.

       3.4. 원본파일 파싱엔진 설계

    원본파일은 NODE JS 엔진 및 HTTP 프로토콜을 사용하여 서버에 업로드 할 수 있는 기능을 제공하고 HWP 컴포넌트(Component)와 MS-Office 컴포넌트를 사용하여 원본파일을 XML 파일로 변환한다. 또한, 원본파일을 바이너리 파일로 출력에 사용하기 위하여 원본파일을 파싱하여 파일의 변수부분에 데이터를 치환한다. 그리고 원본파일의 복사본을 바이너리 파일 변환하는 기능을 함께 제공할 수 있도록 설계하였다.

    변환된 XML파일을 서버의 임시영역에 저장하여 매핑 엔진에 매핑 작업을 의뢰하기 위하여 각종 정보에 대해 통신 모듈을 통하여 전달한다. 원본 파일 파싱 엔진 구성도는 그림 4와 같다.

    문서를 입력 후, 원본파일 파싱엔진에서는 문서 전체를 한 라인씩 읽어 들여 각 입력문서의 구성요소를 각각 순차적으로 비교하여 내용이 있으면 그 내용들을 임시 서식 파일에 저장한다.

       3.5. 매핑 엔진 설계

    매핑 엔진은 XML 파서를 이용하여 원본 XML 파일과 매핑 XML 파일을 검증하여 이상이 없을 때 XML 문서 생성기(XML Generator)를 이용하여 원본파일과 매핑 XML 파일을 분석한다. 다음으로 데이터베이스에 입력할 수 있는 SQL 문장을 생성한다. 만약 검증의 문제나 두 XML 파일에 오류가 발생하면 사용자에게 그 오류 코드를 사용자에게 전송한다. 매핑 엔진은 XML 파싱 및 데이터베이스에 데이터를 입출력할 수 있는 모듈을 모두 포함하여 입력 및 출력에 사용할 수 있도록 독립적인 형태로 설계하였다. XML 매핑 엔진 구성도는 그림 5와 같다.

       3.6. 문서 생성기

    문서 생성기는 구조 분석기 정보를 이용하여 XML 문서를 생성하는 역할을 담당한다. 구조 분석기에서 요구하는 엘리먼트 추출기와 속성 추출기에서는 각각의 엘리먼트와 속성 내용을 추출하여 구조체에 삽입하고, 내부 구조 생성기에서 시작 태그가 생성되기 위한 실제적 내용의 엘리먼트 이름을 엘리먼트 추출기에서 추출하여 생성한다.

    생성된 시작 태그 안에 엘리먼트 이름이 같은 속성을 하나씩 추출하여 시작 태그의 엘리먼트 이름 뒤에 속성 내용을 삽입한다. 내용추가에서는 시작태그를 생성 후, 실제적 내용부분을 추가하고, 하나의 엘리먼트가 끝나는 종료 태그를 추가하게 된다. 마지막으로, 예외처리기에서는 엘리먼트나 속성이 표현되지 못했거나, 누락되어진 부분을 표현하도록 하였다.

    Ⅳ. 비정형 대용량 데이터 입력 및 출력 시스템 구현

    4.1. 시스템 모듈화

    본 논문의 시스템은 그림 6과 같이 엔진을 분리하여 개발하였다. 분리된 엔진들은 독립적으로 실행이 가능하도록 하여 향후 다른 시스템에서 각각의 엔진을 사용할 수 있도록 구현하였다. 또한 엔진에 구현된 컴포넌트들도 독립적인 모듈로 구현하여 다른 어플리케이션에서도 라이브러리 또는 단위 어플리케이션으로 활용이 가능하도록 구현하였다.

       4.2. 비정형 대용량 데이터 입력 시스템

    비정형 대용량 데이터 입력시스템은 관리자가 원본파일을 배포하여 사용자가 원본파일에 데이터를 작성한다. 시스템에 업로드하면 원본파일과 매핑 XML 파일을 파싱하여 데이터베이스에 데이터를 입력할 수 있도록 구현하였다. 입력된 데이터는 바로 화면에 HTML 형태로 출력하여 필요시 웹 화면에서도 수정이 가능하도록 하였다. 또한, 원본파일을 수정하여 다시 업로드하여 데이터의 내용을 수정 할 수 있도록 구현하였다.

       4.3. 비정형 대용량 데이터 출력 시스템

    대용량 비정형 데이터 출력시스템은 기존 Active-X 방식의 웹 리포팅(Reporting) 툴의 처리방식과는 다르게 처리하였다. HWP, MS-Office의 양식파일을 작성하여 데이터출력 부분에 변수 명을 기입하고 데이터베이스에서 데이터를 조회하여 원본파일의 변수명과 치환하여 다시 원본파일을 작성한다. 작성된 원본파일은 HTTP 프로토콜을 사용하여 사용자에게 다운로드할 수 있는 기능을 구현하여 제공하였다.

       4.4. 매핑 XML의 정의

    매핑 XML의 내용은 여러 종류의 양식을 구분하기 위하여 formno와 테이블의 데이터를 추출하기 위하여 datapos와 같은 테그를 정의하여 매핑 XML를 정위하였다. 그림 7과 같은 양식을 구분하기 위하여 워드프로세서 파일로 최상위 1칸의 테이블을 만들고 ‘양식’이라 표기하여 양식을 구분 할 수 있도록 하였다.

    원본 파일에서 데이터를 추출하기 위하여 테이블의 위치를 지정할 수 있도록 datapos를 정의하였다. datapos의 위치는 X(수평방향), Y(수직방향)로 지정할 수 있으며 X, Y와 같이 +(칸째), *(건너띄기)의 기호를 함께 사용하여 작성 할 수 있다. datapos 태그작성 유형은 다음 표 2와 같다.

    [표 2.] Datapos 태그 유형

    label

    Datapos 태그 유형

    아래 그림 8의 예제는 datapos=Y+1의 매핑 XML정의 예제 부분이다.

    Ⅴ. 결 론

    본 논문에서 제안한 시스템은 웹상에서 비정형 대용량 데이터에 대해 다양한 양식을 통하여 시스템에 빠른 입출력을 제공할 수 있는 프로그램으로 사용자나 관리자 모두에게 편리한 방식의 데이터 입력 시스템으로 사용할 수 있다. 따라서, 매우 편리하게 사용이 가능 할 것으로 예상된다. 개발자는 다양한 양식을 입력 받기 위하여 프로그램을 개발이나 변경이 거의 없으므로 시스템 구축 시 많은 시간을 단축시킬 수 있을것이다.

    본 논문에서 제안한 시스템은 하나의 독립된 솔루션으로 구축이 가능하여 향후 어플라이언스 서버에 소프트웨어를 탑재하여 단독으로 다양한 포맷의 데이터를 개발이 가능할 것이다.

    하지만 이 시스템은 사용자가 매핑 XML 파일을 규칙에 맞도록 작성하여야 하므로 매핑 XML 파일 작성방법을 습득하여야하는 단점이 있다. 이를 해결하기 위하여 사용자가 매핑 XML 파일을 쉽게 작성할 수 있도록 GUI 어플리케이션을 작성하여 제공한다면 이 단점도 해결이 가능하리라 사료된다.

참고문헌
  • 1. Rentz D “Microsoft Compound Document File Format,” [Internet] google
  • 2. Hangul document file formats Open project [Internet] google
  • 3. Yun J. H., Park J. H., Lee S. J. 2011 “Methods for Investigating of Edit History about MS PowerPoint Files That Using the OOXML Formats,” [Journal of Korea Information Processing Society] Vol.19C P.215-224 google cross ref
  • 4. Apache[Internet] google
  • 5. Han S. M. 2010 “Open Source DBMS based Design and Implementation of Query and Transformation Processor for Geo-Spatial Information Metadata,” M. S. dissertation google
OAK XML 통계
이미지 / 테이블
  • [ 표 1. ]  HWPML 엘리먼트
    HWPML 엘리먼트
  • [ 그림 1. ]  데이터 매핑
    데이터 매핑
  • [ 그림 2. ]  전체 시스템 구성도
    전체 시스템 구성도
  • [ 그림 3. ]  비정형 대용량 데이터 입력 및 출력 시스템 구성도
    비정형 대용량 데이터 입력 및 출력 시스템 구성도
  • [ 그림 4. ]  원본 파일 파싱엔진 구성도
    원본 파일 파싱엔진 구성도
  • [ 그림 5. ]  XML 매핑 엔진 구성도
    XML 매핑 엔진 구성도
  • [ 그림 6. ]  비정형 대용량 데이터 입출력 시스템 구성도
    비정형 대용량 데이터 입출력 시스템 구성도
  • [ 그림 7. ]  예제 양식 및 Mapping XML 정의
    예제 양식 및 Mapping XML 정의
  • [ 표 2. ]  Datapos 태그 유형
    Datapos 태그 유형
  • [ 그림 8. ]  매핑 XML datapos=Y+1 예제
    매핑 XML datapos=Y+1 예제
(우)06579 서울시 서초구 반포대로 201(반포동)
Tel. 02-537-6389 | Fax. 02-590-0571 | 문의 : oak2014@korea.kr
Copyright(c) National Library of Korea. All rights reserved.