KR20060088473A - 미처리 데이터를 한 데이터 구조로부터 동일한 아이템을나타내는 다른 데이터 구조로 전송하는 메카니즘 - Google Patents

미처리 데이터를 한 데이터 구조로부터 동일한 아이템을나타내는 다른 데이터 구조로 전송하는 메카니즘 Download PDF

Info

Publication number
KR20060088473A
KR20060088473A KR1020050122499A KR20050122499A KR20060088473A KR 20060088473 A KR20060088473 A KR 20060088473A KR 1020050122499 A KR1020050122499 A KR 1020050122499A KR 20050122499 A KR20050122499 A KR 20050122499A KR 20060088473 A KR20060088473 A KR 20060088473A
Authority
KR
South Korea
Prior art keywords
data structure
field
data
source
target data
Prior art date
Application number
KR1020050122499A
Other languages
English (en)
Other versions
KR101183296B1 (ko
Inventor
도날드 에프. 박스
더글라스 엠. 퍼디
고팔라 크리시나 알. 카키바야
나타샤 에이치. 제타난다니
소우미 케이. 스리니바산
스테판 에이치. 페리스
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060088473A publication Critical patent/KR20060088473A/ko
Application granted granted Critical
Publication of KR101183296B1 publication Critical patent/KR101183296B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 소스 데이터 구조로부터 동일한 아이템을 나타내는 타겟 데이터 구조로 미처리 데이터를 전송하는 것에 관한 것이다. 데이터 전송 동안에, 소스 데이터 구조에 의해 공급된 필드에 대응하지 않는 타겟 데이터 구조 내의 소정의 필드가 있으면, 전송 메카니즘은 소스 데이터 구조가 그 필드를 공급하는 것이 필수인지 여부를 판정한다. 필수라면, 전송은 실패한다. 그렇지 않으면, 전송은 계속된다. 타겟 데이터 구조의 필드에 대응하지 않는 소스 데이터 구조의 필드가 있으면, 전송 메카니즘은 타겟 데이터 구조가 그 필드를 갖는 것이 필수인지 여부를 판정한다. 필수라면, 전송은 실패한다. 그렇지 않으면, 대응하는 데이터는 미지의 데이터에 전용인 타겟 데이터 구조의 잔여 필드에 제공될 수 있다.
소스 데이터 구조, 타겟 데이터 구조, 템플릿, 데이터 타입, 선택성 필드, 필수 이해 필드

Description

미처리 데이터를 한 데이터 구조로부터 동일한 아이템을 나타내는 다른 데이터 구조로 전송하는 메카니즘{MECHANISMS FOR TRANSFERRING RAW DATA FROM ONE DATA STRUCTURE TO ANOTHER REPRESENTING THE SAME ITEM}
도 1은 본 발명의 특징을 구현할 수 있는 적합한 컴퓨팅 시스템을 도시한 도면.
도 2는 본 발명의 원리에 따른 전송 메카니즘을 사용하는 소스 데이터 구조에서 타겟 데이터 구조로의 미처리 데이터의 전송을 도시한 도면.
도 3은 데이터 필드 타입의 식별, 선택성 필드 및 "필수 이해(must understand)" 필드를 포함하는 데이터 필드 템플릿을 개략적으로 도시한 도면.
도 4는 본 발명의 원리에 따라 소스 데이터 구조에서 타겟 데이터 구조로 미처리 데이터를 전송하는 방법의 플로우차트를 도시한 도면.
도 5a는 관련된 타겟 필드가 요구되는지 여부에 따라 소스 필드를 처리하는 방법의 플로우차트를 도시한 도면.
도 5b는 관련된 소스 필드가 요구되는지 여부에 따라 타겟 필드를 처리하는 방법의 플로우차트를 도시한 도면.
도 6은 본 발명의 원리에 따른 정렬 메카니즘을 사용하는 정렬 프로세스를 개략적으로 도시한 도면.
도 7은 본 발명의 원리에 따라 정렬하는 방법의 플로우차트를 도시한 도면.
도 8은 본 발명의 원리에 따라 역정렬 메카니즘을 사용하는 역정렬 프로세스를 개략적으로 도시한 도면.
도 9는 본 발명의 원리에 따라 역정렬하는 방법의 플로우차트를 도시한 도면.
도 10은 본 발명의 원리에 따라 서비스의 능력을 표현하는 방법의 플로우차트를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
201 : 소스 데이터 구조
202 : 타겟 데이터 구조
203 : 전송 메카니즘
300 : 데이터 필드 템플릿
301 : 데이터 타입
302 : 선택성 필드
303 : 필수 이해 필드
601 : 정렬 엔진
602, 802 : 포매터
801 : 역정렬 엔진
본 발명은 컴퓨팅 기술에 관한 것으로, 보다 구체적으로는 미처리 데이터를 한 데이터 구조로부터 동일한 아이템을 나타내는 다른 데이터 구조로 전송하는 메카니즘에 관한 것이다.
컴퓨팅 기술은 우리가 일하고 노는 방식을 변화시켰다. 컴퓨팅 시스템은 이제, 데스크탑 컴퓨터, 랩탑 컴퓨터, 터블릿 PC, 개인 휴대 정보 단말기(PDA), 가전 장치 등을 포함하여 광범위한 형태를 갖는다. 컴퓨팅 시스템의 기능은 소프트웨어에 의해 정해진다. 소프트웨어는 실행시에 컴퓨팅 시스템이 기능을 실행하게 하는 일련의 컴퓨터 실행가능 명령어들이다.
객체 지향 프로그래밍은 서로 상호작용하는 객체라 불리우는 논리 유닛을 사용하여 소프트웨어의 제작을 조직화하는 메카니즘으로서 개발되었다. 객체는 객체의 특성을 나타내는 하나 이상의 데이터 필드, 및 객체의 비헤비어(behavior)에 관한 컴퓨터 실행가능 코드를 포함하는 0개 이상의 메소드(또는 메소드로의 포인터)를 포함한다. 객체는 다른 객체에 의해 노출되는 메소드를 호출함으로써 상호작용할 수 있다. 그러한 객체는 여기에서 "데이터 객체" 또는 "데이터 구조"로도 칭해질 수 있다.
메모리 내에 있을 때, 데이터 구조는 관련된 데이터 필드 및 메소드의 집합이다. 그러나, 종종, 미처리 데이터를 그 데이터 구조로부터 동일한 아이템을 나타내는 다른 데이터 구조로 전송할 필요가 있다. 이것은 타겟 데이터 구조 내에 존재하지 않는 소스 데이터 구조 내의 데이터 필드용의 미처리 데이터가 있는 경 우, 또는 소스 데이터 구조 내에 제공되지 않는 타겟 데이터 구조 내의 데이터 필드용의 미처리 데이터가 있는 경우에 문제가 될 수 있다. 이러한 경우에 전송은 전형적으로 실패하게 된다.
유리하게 될 수 있는 것은 이상적으로 전송될 수 있는 모든 필드가 양쪽 데이터 구조 내에 포함되지 않은 경우라도 미처리 데이터를 한 데이터 구조에서 다른 데이터 구조로 전송하는 메카니즘이다.
종래 기술이 갖는 상기 문제점은 소스 데이터 구조에서 타겟 데이터 구조로 미처리 데이터를 전송하는 것에 관한 본 발명의 원리에 의해 극복된다. 데이터 구조는 동일한 코어 아이템(예를 들어, 사람)을 각각 나타낼 수 있지만, 데이터 구조의 상이한 버전들을 나타낼 수 있다.
데이터 전송 동안, 소스 데이터 구조에 의해 공급된 필드에 대응하지 않는 타겟 데이터 구조 내의 소정의 필드가 있으면, 전송 메카니즘은 소스 데이터 구조가 그 필드를 공급하는 것이 필수인지 여부를 판정한다. 그 필드에 대응하는 데이터 계약은, 예를 들어, 이것이 필수인지를 지정하는 "선택성" 필드를 지정할 수 있다. 소스 데이터 구조가 소정의 필드에 대응하는 필드를 공급하는 것이 필수라면, 전송은 실패한다. 한편, 소스 데이터 구조가 그 필드를 공급하는 것이 필수가 아니라면, 전송은 그 데이터없이 계속된다.
또한, 타겟 데이터 구조의 필드에 대응하지 않는 소스 데이터 구조의 필드가 있으면, 전송 메카니즘은 타겟 데이터 구조가 그 필드를 갖는 것이 필수인지 여부 를 판정한다. 데이터 필드는 타겟 데이터 구조가 대응하는 필드를 가져야 하는지 여부를 지정하는 "필수 이해" 필드를 그 자신이 지정할 수 있다. 타겟 데이터 구조가 그러한 대응하는 필드를 갖는 것이 필수라면, 전송은 실패한다. 한편, 타겟 데이터 구조가 그러한 대응하는 필드를 갖는 것이 필수가 아니라면, 데이터는 미지의 데이터에 전용인 타겟 데이터 구조의 잔여 필드 내로 미지의 데이터로서 제공될 수 있다.
따라서, 각 필드마다 "선택성" 및 "필수 이해" 필드를 설정함으로써, 원한다면 데이터 구조의 상이한 버전들 간에 전송이 달성될 수 있고, 또는 적절하다면 버전 양립성이 불가능하게 될 수 있다. 본 발명의 추가적인 특징 및 장점은 다음의 상세한 설명에서 설명될 것이고, 부분적으로 그 상세한 설명으로부터 명백해지거나, 또는 본 발명의 실시에 의해 알게 될 수 있다. 본 발명의 특징 및 장점은 첨부된 청구범위에서 특별히 지적된 기기 및 조합에 의해 실현되고 달성될 수 있다. 본 발명의 이들 및 다른 특징은 다음의 상세한 설명 및 첨부된 청구범위로부터 더우 완전히 이해되거나, 이후 설명되는 본 발명의 실시에 의해 알게 될 수 있다.
본 발명의 상기 및 그 밖의 장점 및 특징이 얻어질 수 있는 방식을 설명하기 위해, 간단하게 앞에서 설명된 본 발명을 첨부된 도면에 도시된 특정 실시예를 참조하여 더욱 구체적으로 설명하겠다. 이들 도면은 본 발명의 전형적인 실시예만을 도시한 것이므로 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다는 것을 알기바라며, 첨부 도면을 사용하여 본 발명의 특이성 및 상세가 설명될 것이다.
본 발명의 원리는 소스 데이터 구조로부터 그 아이템을 나타내는 타겟 데이터 구조로의 미처리 데이터의 전송에 관한 것이다. 데이터 구조는 동일한 코어 아이템을 각각 나타낼 수 있지만, 데이터 구조의 상이한 버전들을 나타낼 수 있다. 데이터 전송 동안, 소스 데이터 구조에 의해 공급된 필드에 대응하지 않는 타겟 데이터 구조 내의 소정의 필드가 있으면, 전송 메카니즘은 소스 데이터 구조가 그 필드를 공급하는 것이 필수인지 여부를 판정한다. 필수라면, 전송은 실패한다. 그렇지 않으면, 전송은 계속된다. 타겟 데이터 구조의 필드에 대응하지 않는 소스 데이터 구조의 필드가 있으면, 전송 메카니즘은 타겟 데이터 구조가 그 필드를 갖는 것이 필수인지 여부를 판정한다. 필수라면, 전송은 실패한다. 그렇지 않으면, 대응하는 데이터는 미지의 데이터에 전용인 타겟 데이터 구조의 잔여 필드로 제공될 수 있다.
도면을 참조하면, 유사한 참조 번호는 유사한 구성요소를 나타내고, 본 발명은 적합한 컴퓨팅 환경에서 구현되는 것으로 도시된다. 다음 설명은 본 발명의 예시적인 실시예에 기초하고, 여기에서 명시적으로 설명되지 않은 대안적인 실시예에 관해 본 발명을 제한하는 것으로 간주되어서는 안된다.
다음의 상세한 설명에서, 본 발명은 달리 나타내지 않는 한, 하나 이상의 컴퓨터에 의해 실행되는 동작 및 연산의 기호적 표현과 관련하여 설명된다. 그와 같이, 때때로 컴퓨터 실행가능한 것으로 칭해지는 그러한 동작 및 연산은 구조화된 형태로 데이터를 나타내는 전기 신호의 컴퓨터의 프로세싱 유닛에 의한 조작처리를 포함한다. 이 조작처리는 데이터를 변환시키거나, 컴퓨터의 메모리 시스템 내의 위치에 그들을 유지시켜, 본 분야에 숙련된 기술자들에게 잘 알려진 방식으로 컴퓨터의 연산을 재구성하거나 다르게 변경한다. 데이터가 유지되는 데이터 구조는 데이터의 포맷에 의해 정해진 특정 특성을 갖는 메모리의 물리적 위치이다. 그러나, 본 발명은 앞의 설명과 관련하여 설명되는데, 제한하고자 하는 것은 아니며, 본 분야에 숙련된 기술자들이라면 후술되는 몇가지 동작 및 연산이 또한 하드웨어로 구현될 수 있다는 것을 알 수 있을 것이다. 도 1은 이들 장치를 위해 사용가능한 예시적인 컴퓨터 아키텍처의 개략도를 도시한 것이다.
설명을 위해, 도시된 아키텍처는 적합한 환경의 한 예일 뿐이고, 본 발명의 사용 또는 기능의 범위에 어떤 제한을 두고자 하는 것은 아니다. 컴퓨팅 시스템은 도 1에 도시된 구성요소들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 다수의 기타 범용 또는 전용 컴퓨팅 또는 통신 환경 또는 구성과 함께 동작가능하다. 본 발명과 함께 사용하기에 적합한 널리 공지된 컴퓨팅 시스템, 환경 및 구성의 예는 이동 전화, 포켓 컴퓨터, 퍼스널 컴퓨터, 서버, 멀티프로세서 시스템, 마이크로프로세서 기반의 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 임의의 상기 시스템 또는 장치를 포함하는 분산 컴퓨팅 환경을 포함하는데, 이것에 제한되지는 않는다.
가장 기본적인 구성으로, 컴퓨팅 시스템(100)은 전형적으로 최소한 하나의 프로세싱 유닛(102) 및 메모리(104)를 포함한다. 메모리(104)는 (RAM과 같은) 휘발성, (ROM, 플래시 메모리 등과 같은) 비휘발성, 또는 이 둘의 소정의 조합일 수 있다. 이러한 가장 기본적인 구성은 도 1에 점선(106)으로 도시된다.
저장 매체 장치는 추가 특징 및 기능을 가질 수 있다. 예를 들어, 그들은 PCMCIA 카드, 자기 및 광 디스크, 및 자기 테이프를 포함하는 추가 저장장치(분리식 및 비분리식)를 포함할 수 있는데, 이것에 제한되지는 않는다. 그러한 추가 저장장치는 도 1에서 분리식 저장장치(108) 및 비분리식 저장장치(110)로 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리식 및 비분리식 매체를 포함한다. 메모리(104), 분리식 저장장치(108) 및 비분리식 저장장치(110)는 컴퓨터 저장 매체의 모든 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리, 기타 메모리 기술, CD-ROM, DVD(digital versatile disks), 기타 광 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치, 기타 자기 저장 장치, 및 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 시스템에 의해 액세스될 수 있는 임의의 기타 매체를 포함하는데, 이것에 제한되지는 않는다.
여기에서 사용되는 바와 같이, "모듈" 또는 "컴포넌트"라는 용어는 컴퓨팅 시스템 상에서 실행되는 소프트웨어 객체 또는 루틴을 칭할 수 있다. 여기에서 설명된 서로 다른 컴포넌트, 모듈, 엔진 및 서비스는 (예를 들어, 분리된 스레드로서) 컴퓨팅 시스템 상에서 실행되는 객체 또는 프로세스로서 구현될 수 있다. 여기에서 설명된 시스템 및 방법이 양호하게 소프트웨어로 구현되지만, 소프트웨어와 하드웨어 또는 하드웨어로의 구현도 또한 가능하고 고려된다.
컴퓨팅 시스템(100)은 또한 호스트가 네트워크(120)를 통해 다른 시스템 및 장치와 통신할 수 있게 하는 통신 채널(112)을 포함할 수 있다. 통신 채널(112)은 통신 매체의 예이다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 또는 기타 전송 메카니즘과 같은 변조 데이터 신호 내에 구현하고, 임의의 정보 전달 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체와, 음향, 라디오, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하는데, 이것에 제한되지는 않는다. 여기에서 설명된 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 둘다를 포함한다.
컴퓨팅 시스템(100)은 또한 키보드, 마우스, 펜, 음성-입력 컴포넌트, 접촉식-입력 장치 등과 같은 입력 컴포넌트(114)를 가질 수 있다. 출력 컴포넌트(116)는 화면 표시장치, 스피커, 프린터 등과, 그들을 구동하기 위한 렌더링 모듈(흔히 "어댑터"라고 함)을 포함한다. 컴퓨팅 시스템(100)은 전원 공급 장치(118)를 갖는다. 이들 모든 컴포넌트는 본 분야에 잘 알려져 있으므로, 여기에서 장황하게 설명될 필요가 없다.
도 2는 소스 데이터 구조(201)로부터의 하나 이상의 필드가 전송 메카니즘(203)을 사용하여 타겟 데이터 구조(202)로 전송되고 있는 환경(200)을 도시한 것이다. 소스 데이터 구조(201) 및 타겟 데이터 구조(202)는 동일한 아이템을 상이한 방식으로 나타낼 수 있다. 예를 들어, 데이터 구조들은 특정 사람, 조직, 항공 좌석 예약, 또는 관련 데이터를 가질 수 있는 임의의 기타 가능한 객체 또는 엔티 티를 각각 나타낼 수 있다. 소스 데이터 구조(201) 및 타겟 데이터 구조(202)는 임의의 매체(심지어, 무선 통신과 같은 무형의 매체) 상에 구현될 수 있고, 요구되지는 않지만, 심지어 또 다른 데이터 구조의 정렬 표현일 수 있다.
데이터 구조들의 몇몇 데이터 필드는 동일할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 소스 데이터 구조(201)는 타겟 데이터 구조(202) 내의 데이터 필드(202A)와 동일한 데이터를 포함하는 데이터 필드(201A)를 포함한다. 예를 들어, 데이터 구조들이 특정 사람과 관련된 데이터를 각각 나타낸다고 하자. 소스 데이터 구조(201)의 데이터 필드(201A)는 그 사람의 이름을 나타낼 수 있는 반면에, 데이터 필드(202A)는 전송 메카니즘(203)에 의해 포함될 이름 필드이다.
한편, 소스 데이터 구조(201)는 타겟 데이터 구조(202) 내에 존재하지 않는 필드(예를 들어, 필드(201B))를 가질 수 있다. 예를 들어, 타겟 데이터 구조(202) 내에는 필드(202B)가 없다. 특정 예에서, 필드(201B)는 관련된 사람이 살아있는지 여부를 나타내는 부울 값을 나타내는 반면, 타겟 데이터 구조(202)는 그러한 필드를 갖지 않는다고 가정하자.
나중에 설명되는 한 예시적인 구현예에서, "데이터 계약"은 특정 엔티티(예를 들어, 사람)를 나타낼 때 데이터 구조 내에 어떤 필드가 포함될지 설명하기 위해 사용된다. 소스 데이터 구조(201) 및 타겟 데이터 구조(202)는 "사람" 데이터 계약의 상이한 버전들을 따를 수 있는데, 소스 데이터 구조(201)가 따르는 버전은 그 사람이 살아있는지 여부를 나타내는 필드가 데이터 구조 내에 포함될 것을 지정한다. 이와 대조적으로, 타겟 데이터 구조가 따르는 사람 데이터 계약의 버전을 따르는 사람 데이터 계약의 버전은 그 사람이 살아있는지 여부를 나타내는 필드가 데이터 구조 내에 포함될 것을 지정하지 않는다. 데이터 계약의 상이한 버전들은 시간에 따라 특정 엔티티를 위한 상이한 데이터 필드들의 요구가 변함에 따라 개발될 수 있다.
그러한 데이터 계약은 도 2, 3, 4, 5a 및 5b와 관련하여 본 발명의 일반적인 원리를 설명할 때 일반적인 용어로 설명될 것인데, 그것은 본 발명의 가장 넓은 원리가, 데이터 구조가 데이터 계약을 따르는지 여부에 상관없이, 소스 데이터 구조에서 타겟 데이터 구조로의 일반적인 데이터 전송에 관한 것이기 때문이다. 그럼에도 불구하고, 완전하게 하기 위해, 데이터 계약의 개념은 도 6 내지 10에서 더욱 상세하게 설명될 것이다.
방금 언급한 바와 같이, 소스 데이터 구조(201)는 데이터 구조가 데이터 계약의 상이한 버전을 따르기 때문에 타겟 데이터 구조(202)와 다른 필드를 포함할 수 있다. 데이터 계약의 상이한 버전은 또한 타겟 데이터 구조(202)가 소스 데이터 구조(201)와 다른 필드를 포함하게 할 수 있다. 예를 들어, 타겟 데이터 구조는 데이터 필드(202C)를 포함하는 것으로 도시되는 반면에, 소스 데이터 구조는 대응하는 데이터 필드(201C)를 포함하지 않는다. 사람 데이터 계약의 예에서, 데이터 필드(202C)는, 타겟 데이터 구조(202)가 따르는 사람 데이터 계약의 버전에는 표시되지만, 소스 데이터 구조(201)가 따르는 사람 데이터 계약의 버전에는 표시되지 않는 사회 보장 번호(Social Security Number: SSN)를 나타낼 수 있다.
소스 데이터 구조(201) 및 타겟 데이터 구조(202)는 데이터 구조들 간에 공 통인 하나의 필드(소스 데이터 구조(201) 내의 필드(201A), 및 타겟 데이터 구조(202) 내의 필드(202A))(이후 "공통 데이터 필드"라 함)를 포함하는 것으로 도시된다. 또한, 소스 데이터 구조(201)는 타겟 데이터 구조(202) 내에 포함되지 않는 데이터 필드(예를 들어, 데이터 필드(201B))(이후, "소스-전용 데이터 필드"라 함)를 포함하는 것으로 도시된다. 마지막으로, 타겟 데이터 구조(202)는 소스 데이터 구조(201) 내에 포함되지 않는 데이터 필드(예를 들어, 데이터 필드(202C))(이후, "타겟-전용 데이터 필드"라 함)를 포함하는 것으로 도시된다.
그러나, 소스 데이터 구조(201)는 (예를 들어, 데이터 구조(201 및 202) 각각이 따르는 데이터 계약 버전의 차이가 주어지면) 적절하게, 임의의 수의(0개 이상의) 공통 데이터 필드, 및 임의의 수의(0개 이상의) 소스 전용 데이터 필드를 포함할 수 있다. 더욱이, 타겟 데이터 구조(202)는 (예를 들어, 계약 버전 차이에 의해 지시된 바와 같이) 적절하게, 임의의 수의(0개 이상의) 공통 데이터 필드, 및 임의의 수의(0개 이상의) 타겟 전용 데이터 필드를 포함할 수 있다. 수직 생략점(201D 및 202D)은 단순히, 소스 및 타겟 데이터 구조(201 및 202)가 각각 적절하게 더 많은 데이터 필드를 포함할 수 있다는 것을 나타내기 위해 도시된 것이다. 타겟 데이터 구조(202)는 또한 잔여 필드(202E)를 포함하는 것으로 도시된다. 이 잔여 필드(202E)의 목적은 도 5a와 관련하여 더욱 상세하게 설명될 것이다.
도 4는 본 발명의 원리에 따라 소스 데이터 구조에서 타겟 데이터 구조로 데이터를 전송하는 컴퓨터 구현 방법(400)의 플로우차트를 도시한 것이다. 방법(400)의 일부로서, 소스 및 타겟 데이터 구조가 액세스된다(동작(401)). "데이터 구조"라는 용어는 여기에서, 데이터 구조가 구현되는 매체에 상관없이, 하나 이상의 필드를 포함하는 임의의 구조적 데이터(심지어, 정렬 데이터)를 포함하는 것으로 광범위하게 정의된다. 예를 들어, 컴퓨팅 시스템은 방법(400)이 타겟 컴퓨팅 시스템 상에서 실행되는 경우에, 네트워크를 통해 소스 데이터 구조를 액세스할 수 있다. 예를 들어, 타겟 컴퓨팅 시스템이 도 1의 컴퓨팅 시스템(100)이면, 타겟 컴퓨팅 시스템은 네트워크(120)를 통해 소스 데이터 구조를 액세스할 수 있다. 그러나, 컴퓨팅 시스템은 또한, 예를 들어 휘발성 또는 비휘발성 메모리와 같은 다른 데이터 저장 매체로부터 소스 데이터 구조를 액세스할 수도 있다. 도 1의 경우에, 타겟 데이터 구조는 시스템 메모리(104) 및/또는 저장장치(108 또는 110)로부터 액세스될 수 있다.
임의의 공통 데이터 필드에 대해, 컴퓨팅 시스템은 단순히 소스 필드에서 대응하는 타겟 필드로 데이터를 복사한다. 물론, 복사는 인코딩 포맷의 소정의 변환을 수반할 수 있다. 컴퓨팅 시스템은 또한 타겟 데이터 구조 내에 포함되지 않는 소스 데이터 구조 내의 임의의 소스 전용 데이터 필드를 식별한다(동작(402A)). 그러한 임의의 소스 전용 필드에 대해, 컴퓨팅 시스템은 도 5a의 방법(500A)을 실행한다(도 5a와 관련된 동작(403A)). 컴퓨팅 시스템은 또한 소스 데이터 구조 내에 포함되지 않는 타겟 데이터 구조 내의 임의의 타겟 전용 데이터 필드를 식별한다(동작(402B)). 그러한 임의의 타겟 전용 필드에 대해, 컴퓨팅 시스템은 도 5b의 방법(500B)을 실행한다(도 5b와 관련된 동작(403B)).
도 5a의 방법(500A)을 참조하면, 임의의 식별된 소스 전용 데이터 필드에 대 해, 컴퓨팅 시스템은 타겟 데이터 구조가 전송이 성공적으로 되게 하기 위해 타겟 데이터 구조 내에 소스 전용 데이터 필드에 대응하는 필드를 갖는 것이 필수인지 여부를 판정한다(판정블록(501A)). 필수라면(판정 블록(501A)에서 필수), 컴퓨팅 시스템은 전송을 하지 못한다(동작(502A)). 필수가 아니라면(판정 블록(501A)에서 비필수), 컴퓨팅 시스템은 소스 전용 데이터 필드에서 잔여 필드로 데이터를 제공한다(동작(503A)). 잔여 필드(예를 들어, 도 2의 잔여 필드(202E))는 타겟 데이터 구조에 의해 알지못한 소스 데이터 구조로부터의 모든 데이터를 보유하는 논리적 컨테이너이다. 잔여 필드 내의 데이터는 각각의 데이터가 추출된 필드 타입이 나중에 식별될 수 있도록 태그될 수 있다. 잔여 필드 내의 데이터는 데이터 구조가 또 다른 타겟 데이터 구조로 다시 보내지면 재전송될 수 있고, 이로 인해 데이터 계약의 이전 버전으로부터 데이터를 보존한다.
도 3은 데이터 필드 타입(301)(예를 들어, 사람 데이터 계약의 경우에 이름), 전송이 성공적으로 되게 하기 위해 소스 데이터 구조가 타겟 데이터 구조 내에 포함된 특정 필드를 가져야 하는지 여부를 정하는 선택성 필드(302), 및 전송이 성공적으로 되게 하기 위해 타겟 데이터 구조가 소스 데이터 구조 내에 포함된 특정 필드를 가져야 하는지 여부를 정하는 필수 이해 필드(303)를 정하기 위한 데이터 계약의 일부로서 사용될 수 있는 데이터 필드 템플릿(300)을 도시한 것이다. 템플릿(300)에 의해 정해진 것과 동일한 데이터 타입의 데이터 필드를 포함하는 소스 데이터 구조가 전송되거나 저장될 때, 데이터 타입(301)과 관련된 미처리 데이터는 템플릿에 의해 정해진 관련된 필수 이해 표시(303)와 함께 전송되거나 저장된다. 따라서, 소스 전용 데이터 필드가 필수인지 여부는 소스 전용 데이터 필드 자체와 관련된 필수 이해 필드로부터 알게 될 수 있다.
도 5b의 방법(500B)을 참조하면, 임의의 식별된 타겟 전용 데이터 필드에 대해, 컴퓨팅 시스템은 전송이 성공적으로 되게 하기 위해 소스 데이터 구조가 타겟 전용 필드에 대응하는 필드를 공급하는 것이 필수인지 여부를 판정한다(판정 블록(501B)). 필수라면(판정 블록(501B)의 필수), 컴퓨팅 시스템은 전송을 하지 못한다(동작(502B)). 필수가 아니라면(판정 블록(501B)의 비필수), 컴퓨팅 시스템은 계속 전송한다(동작(503B). 예를 들어, 컴퓨팅 시스템은 다음 필드를 평가하고, 소스 및 타겟 필드 모두가 평가되었으면, 성공적으로 전체 전송을 완료한다.
타겟 전용 데이터 구조가 필수인지 여부는 타겟 전용 데이터 필드 자체와 관련된 메타데이터로부터 알게 될 수 있다. 예를 들어, 타겟 전용 데이터 필드가 도 3의 데이터 필드(300)로 도시된 바와 같이 구성된다고 하자. 타겟 전용 데이터 필드(또는 타겟 전용 데이터 필드와 관련된 구조(예를 들어, 데이터 계약))는 소스 데이터 구조가 관련 필드를 공급해야 하는지 여부에 대한 부울 표현일 수 있는 선택성 필드(302)를 포함할 수 있다. 판정 블록(501B)에서의 판정은 선택성 필드(302)에 기초하여 행해질 수 있다.
본 발명의 일반적 원리를 설명했으므로, 이제 본 발명의 특정 실시예가 도 6 내지 10을 참조하여 설명되는데, 데이터 계약이 정렬 및 역정렬 동안 데이터 구조의 형태를 정의하기 위해 사용된다.
도 6은 정렬 메카니즘을 사용하는 정렬 프로세스를 개략적으로 도시한 것이 다. 정렬 메카니즘(600)은 정렬 엔진(601) 및 포매터(602)를 포함한다. 정렬 엔진(601) 및 포매터(602)는 동일한 루틴 내에 통합되거나, 또는 본 발명의 원리에 영향을 미치지 않고 분리된 루틴에 의해 구현될 수 있다. 정렬 엔진(601) 및 포매터(602)는 도 1의 컴퓨팅 시스템(100)의 환경에서 실행된 컴포넌트일 수 있다. 그러나, 본 발명의 원리는 임의의 특정 하드웨어 환경에 무관하고, 그러한 환경에 제한되지 않는다. 도 6에 도시된 나머지 구조는 본 발명의 원리에 따라 정렬하는 방법의 플로우차트를 도시한 도 7과 관련하여 설명될 것이다.
이 실시예에서, 데이터 객체는 추상 데이터 주변의 구조를 정렬하기보다는, 단지 데이터 객체로부터 추출된 추상 데이터를 정렬함으로써 정렬된다. 따라서, 정렬 데이터를 액세스하는 엔티티는 데이터가 추출된 데이터 객체의 구조를 알 필요가 없다. 또한, 정렬은 데이터 객체의 형태에 관한 아마도 민감한 정보를 드러내지 않는다.
도 7을 참조하면, 정렬될 데이터 객체가 액세스된다(동작(701)). 예를 들어, 도 6의 정렬 엔진(601)은 데이터 객체(631)를 액세스할 수 있다. 데이터 객체(631)는 임의의 데이터 객체 타입일 수 있다. 예시를 위해, 데이터 객체(631)는 수직 생략점(631D)으로 표시된 바와 같이 잠재적으로 가능한 다른 것들 중에서 데이터 필드(631A 내지 631C)를 포함하는 것으로 도시된다.
그 다음, 데이터 객체가 "데이터 계약"과 관련된다고 판정된다(동작(702)). 이 설명 및 청구범위에서, "데이터 계약"은 정렬될 데이터 필드에 대응하는 하나 이상의 데이터 필드 타입의 식별정보로서 정의된다.
예를 들어, 정렬 엔진(601)은 임의의 수의 데이터 계약을 포함할 수 있는 데이터 계약들(611)의 집합으로 액세스한다. 도시된 바와 같이, 데이터 계약(611)은 생략점(611E)으로 표시된 바와 같이 잠재적으로 가능한 다른 많은 것들 중에서 데이터 계약(611A 내지 611D)을 포함한다. 데이터 계약은 특정 논리 엔티티 타입에 대응할 수 있다. 예를 들어, 데이터 계약(611A)은 사람 데이터 타입에 대응할 수 있다. 그러나, 대응하는 데이터 계약을 가질 수 있는 데이터 객체의 타입에 제한은 없다.
도 6은 다수의 데이터 필드 타입(621)을 포함하는 데이터 계약(611A)을 분해도로 도시한 것이다. 각각의 데이터 필드 타입은 데이터 필드 타입 식별(622) 뿐만 아니라 데이터 타입에 관한 하나 이상의 다른 지정자(623)를 포함할 수 있다. 예를 들어, 데이터 계약(611A)이 일반적으로 사람 데이터 객체에 대응한다고 하자. 데이터 필드 타입(621A)은, 예를 들어 이름 데이터 타입일 수 있고, 데이터 필드 타입(621B)은 나이 데이터 타입일 수 있으며, 데이터 필드 타입(621C)은 성별 데이터 타입일 수 있고, 데이터 필드 타입(621D)은 주소 데이터 타입 등일 수 있다. 도시된 지정자는 앞에서 설명된 바와 같이 "필수 이해"용으로 "MU"를 포함하고, "선택성"용으로 O를 포함한다. 지정자는 또한 타겟에게 알려져 있지 않는 데이터가 잔여 필드(예를 들어, 도 2의 잔여 필드(202E)) 내에 배치되어야 하는지 여부를 나타내는 "RT" 지정자를 포함할 수 있다.
다시 도 7을 참조하면, 그 다음에, 데이터 객체가 데이터 계약 내에서 식별된 데이터 필드 타입에 대응하는 데이터 필드를 갖는지 여부가 판정된다(판정 블록 (703)). 예를 들어, 도 6의 정렬 엔진(601)이 데이터 계약(611A)을 액세스된 데이터 객체(631)와 관련되는 것으로 식별했다고 하자. 정렬 엔진(601)은 데이터 필드 타입(621A)을 평가해서, 그 데이터 필드 타입(621A)에 대응하는 데이터 객체(631)의 임의의 데이터 필드(631A 내지 631D) 중에 임의의 관련된 데이터 필드가 있는지 판정할 수 있다. 예를 들어, 데이터 필드 타입(631A)이 이름 데이터 타입이라고 하자. 정렬 엔진(601)은 데이터 객체(631)의 모든 데이터 필드를 평가하여, "이름" 필드가 있는지 판정할 수 있다.
데이터 객체가 데이터 필드 타입에 대응하는 데이터 필드를 갖는다고 판정되면(판정 블록(703)에서 예(YES)), 대응하는 데이터는 데이터 객체로부터 추출된다(동작(704)). 예를 들어, 데이터 추출기 컴포넌트(641)는 데이터 객체로부터 데이터 필드 타입(예를 들어, 이름 데이터 타입)에 대응하는 적절한 데이터 필드(들)(예를 들어, 특정 이름 또는 이름들)을 추출할 수 있다. 이 추출 과정의 일부로서, 추출된 데이터 필드들 각각에 대한 관련된 필수-이해 필드가 또한 추출된다.
데이터 계약 내에 지정된 데이터 필드 타입이 더 이상 없으면(판정 블록(705)에서 아니오(NO)), 임의의 추출된 데이터 필드(및 그 관련 필수-이해 필드)가 정렬된다(동작(706)). 대안적으로, 데이터 필드는 추출된 직후 정렬될 수 있다. 예를 들어, 정렬(동작(706))은 모든 데이터 필드가 추출될 때까지 기다리기 보다는(판정 블록(705)에서 아니오), 추출 직후 발생할 수 있다(동작(704)). 추출된 데이터는 도 6에서 추상 데이터(642)로 표시된다. 이 데이터는 데이터 객체에 무관하고, 전체 데이터 객체가 아니라 추출된 데이터만을 포함한다. 포매터(602)는 그 다음에, 어떤 정렬 포맷으로 정렬할 것인지 결정하고, 컨버터 라이브러리(612)로부터 그 정렬 포맷에 대응하는 적절한 컨버터를 선택한다. 예를 들어, 컨버터 라이브러리(612)는 생략점(612E)으로 표시된 바와 같이 그외 다른 것들 중에서 대응하는 컨버터(612A, 612B, 612C, 612D)를 포함하는 것으로 도시된다. 정렬 포맷의 예는 종래의 것이든, 아직 존재하지 않는 것이든 임의의 기타 정렬 포맷들 중에서, 예를 들어 이진, XML(eXtensible Markup Language)을 포함한다. 그 다음, 포매터(602)는 적절한 컨버터 컴포넌트(예를 들어, 컨버터 컴포넌트(612A))를 사용하여, 추상 데이터(642)를 적절한 정렬 포맷으로 정렬한다.
도 7을 참조하면, 평가하기 위한 데이터 계약 내의 데이터 필드 타입이 아직 더 있으면(판정 블록(705)에서 예), 흐름은 판정 블록(703)으로 진행하여, 데이터 계약 내의 다음 데이터 필드 타입에 대해, 데이터 필드 타입에 대응하는 데이터 객체 내의 임의의 데이터 필드가 있는지 판정되고(동작(703)), 프로세스는 반복된다.
어떤 시점에서, 데이터 계약 내에서 찾은 데이터 필드 타입에 대응하는 데이터 객체 내의 데이터 필드가 없으면(판정 블록(703)에서 아니오), 그 데이터 필드 타입이 필수인지 선택적인지 판정된다(판정 블록(707)). 이 판정은 데이터 계약 내의 대응하는 데이터 필드 타입 내의 지정자(623)를 참조함으로써 행해질 수 있다.
데이터 필드 타입이 선택적이면(판정 블록(707)에서 예), 흐름은 다시 판정 블록(705)으로 진행하여, 평가될 데이터 계약 내의 데이터 필드 타입이 더 이상 하나도 없으면, 정렬이 실행되고(동작(706)), 또는 평가될 데이터 필드 타입이 더 있 으면, 다음 데이터 필드 타입이 평가된다(판정 블록(703)).
한편, 데이터 필드 타입이 송신기측 관점에서 선택적이 아니고 필수라면(판정 블록(707)에서 아니오), 데이터 객체에 대응하는 보충 데이터 구조가 관련 데이터 필드의 존재를 찾기 위해 검색될 수 있다(동작(708)). 예를 들어, 도 6의 정렬 엔진(601)은 데이터 계약 내의 현재의 데이터 필드 타입에 대응하는 데이터 필드의 존재를 찾기 위해 데이터 객체(631)와 관련된 보충 데이터 구조(644)를 검색할 수 있다. 그러한 데이터 필드가 보충 데이터 구조 내에 있으면(판정 블록(709)에서 예), 그 데이터 필드는 추출되고(동작(704)), 추상 데이터의 집합에 추가된다. 그러한 데이터 필드가 보충 데이터 구조 내에 없으면(판정 블록(709)에서 아니오), 정렬 엔진(601)은 정렬이 실패했다고 표시한다(동작(710)). 물론, 동작(710)의 정렬 에러는 데이터 필드가 보충 데이터 구조 내에 항상 있다는 것을 정렬 메카니즘이 보증하는 경우에는 결코 발생하지 않을 것이다. 그러한 보충 데이터 구조의 예는 도 2의 잔여 필드(202E)이다. 보내질 객체는 이전의 데이터 전송 시도 중에 객체 내로 수신될 데이터를 이전에 인식하지 못했을 때 미지의 데이터를 그 잔여 필드(202E) 내에 배치했을 수 있다. 대안적으로, 정렬 프로세스는 그들의 선택성 상태에 상관없이 모든 데이터 필드를 단순히 정렬하고, 전송이 수신 종료에 이르지 못할 것인지 여부에 관한 형식적 평가를 남겨둘 수 있다.
선택적으로, 보충 데이터 구조(644)는 또한 데이터 필드 타입이 선택적인 것으로 판정되면(판정 블록(707)에서 선택적) 검색될 수 있다. 그 경우에, 대응하는 데이터 필드가 보충 데이터 구조 내에 없으면, 흐름은 단순히 판정 블록(705)으로 진행하여, 평가될 데이터 계약 내의 데이터 필드 타입이 더 있는지 여부가 판정된다.
도 7의 점선 박스(711)는 데이터 계약으로부터 평가될 각 데이터 타입에 대한 평가 프로세스를 나타낸다. 프로세스는 대응하는 데이터 필드가 없는 필수 데이터 필드 타입에 봉착하게 될 때까지(판정 블록(709)에서 아니오), 또는 모든 데이터 필드 타입이 평가되었을 때까지(판정 블록(705)에서 아니오) 반복될 수 있다.
따라서, 방법(700)은 데이터 계약에 대응하는 데이터 객체로부터 추상 데이터를 추출하는 동작을 하고-추상 데이터의 특성은 데이터 계약에 의해 정의됨-, 데이터 객체 포맷에 무관한 방식으로 그러한 추상 데이터를 정렬하는 동작을 한다. 방법(700)은 상이한 데이터 계약이 그들 이외의 다른 데이터 객체와 관련되는지 여부에 상관없이, 그리고 사용될 정렬 포맷에 상관없이, 다수의 데이터 객체에 대해 반복될 수 있다. 그러한 추상 데이터는 또한 전송이 성공적으로 되게 하기 위해 소정의 필드가 타겟에 의해 이해되어야 하는 지에 관한 정보를 포함할 수 있다. 그러한 추상 데이터는 도 2, 3, 4, 5a 및 5b와 관련하여 상술된 소스 데이터 구조의 예이다.
역정렬의 설명으로 진행하기 전에, 데이터 객체의 특정예는 데이터 계약이 그 데이터 객체와 관련되는 방법 및 대응하는 데이터 필드가 데이터 객체 내에서 식별될 수 있는 방법에 관한 특정 표시와 함께 설명될 것이다. 다음은 명확하게 하기 위해 라인 번호가 붙여진 예시적인 데이터 객체의 C#(C sharp) 소스 코드이다:
Figure 112005072802390-PAT00001
데이터 객체와 관련된 데이터 계약은 데이터 계약의 이름공간과 이름의 결합에 의해 식별될 수 있다. 라인 2는 데이터 계약을 식별하기 위해 필요한 모든 정보를 포함하는 메타데이터를 나타낸다. 구체적으로, 데이터 계약의 이름공간은 "Example"이다. 데이터 계약의 이름은 "Person"이다. 그러므로, 데이터 계약이 식별된다.
데이터 객체는 하나의 데이터 필드만을 포함하는 클래스 "AnotherPersonThatSomeOneElseCreated"(라인 3 참조)로 이루어진다. 데이터 필드는 이름 "FullNameOfThisPerson"(라인 5 참조)을 갖는 스트링이다. 그러나, 이전의 라인(라인 4)은 이 스트링 데이터 필드가 데이터 계약을 평가하기 위해 타입 "_name"인 것으로 간주되어야 한다는 것을 나타낸다. 따라서, 데이터 필드 타입 "string_name"이 평가될 때, 스트링 "FullNameOfThisPerson"이 그 데이터 필드 타입에 대응한다고 해석할 수 있다. 그 다음, 그 스트링은 정렬될 추상 데이터로서 추출될 수 있다.
다음은 다른 예시적인 데이터 객체를 나타낸다:
Figure 112005072802390-PAT00002
Figure 112005072802390-PAT00003
이 예에서, 데이터 객체 및 데이터 계약에 대한 이름공간의 이름은 동일하게 "Example"이다. 따라서, 라인 2에 데이터 계약 이름공간을 더 지정할 필요가 없다. 더욱이, 데이터 계약의 이름 및 데이터 객체의 이름은 동일하게 "Person"이다. 따라서, 라인 2에 데이터 계약 이름을 더 지정할 필요가 없다. 마지막으로, 데이터 객체에 지정된 데이터 필드의 이름, 및 데이터 필드 타입은 동일하게 "string_name"이다. 그러므로, 라인 4에 데이터 필드 타입을 더 지정할 필요가 없다.
도 8은 본 발명의 원리에 따라 역정렬 메카니즘을 사용하는 역정렬 프로세스를 개략적으로 도시한 것이다. 도 8의 역정렬 메카니즘(800)은 도 6의 정렬 메카니즘(600)과 유사하다. 역정렬 메카니즘(800)은 또한 도 6의 정렬 엔진(601)과 유사할 수 있는 역정렬 엔진(801)을 포함한다. 포매터(802)는 도 6의 포매터(602)와 동일할 수 있다. 포매터(802)는 또한 컨버터 라이브러리(612)로 액세스할 수 있는 반면, 역정렬 엔진(801)은 또한 데이터 계약(611)으로 액세스할 수 있다. 도 8의 나머지는 본 발명의 원리에 따라 역정렬하는 방법(900)의 플로우차트를 도시한 도 9와 관련하여 설명될 것이다.
먼저, (도 2의 전송 메카니즘(203)의 한 예인) 역정렬 메카니즘(800)은 정렬 포맷을 갖는 정렬된 데이터 구조를 수신한다(동작(901)). 예를 들어, 포매터(802)는 특정 정렬 포맷으로 된 정렬 데이터(843)를 수신한다.
역정렬 메카니즘(800)은 정렬 데이터 구조와 관련된 데이터 계약을 식별한다(동작(902)). 이 식별은 정렬 문서와 관련된 메타데이터를 평가함으로써 실행될 수 있다. 식별은 규칙에 근거하여 이루어질 수 있다. 예를 들어, 규칙은 정렬된 문서가 특정 송신기로부터 수신되었다는 것, 및 특정 데이터 계약에 대응하는 특정 문서 이름을 갖는 것을 지정할 수 있다. 이들 규칙은 관리자에 의해 설정되거나, 소프트웨어 개발자에 의해 하드-코드화될 수 있거나, 소정의 다른 방식으로 설정될 수 있다.
또한, 역정렬 메카니즘은 데이터 계약에 의해 식별된 하나 이상의 데이터 필드 타입으로 이루어진 정렬 데이터 구조로부터 하나 이상의 데이터 필드를 복원한다(동작(903)). 포매터(802)는 정렬된 데이터(843)의 정렬 포맷에 대응하는 컨버터들(612) 중의 적절한 것을 선택함으로써 이것을 달성할 수 있다. 포매터(802)는 이와 같이 추상 데이터(842)를 복원한다.
데이터 계약에서 식별된 데이터 필드 타입에 대응하는 각각의 추출된 데이터 필드에 대해, 역정렬 엔진은 데이터 필드가 데이터 객체 내로 포함될 수 있는지 판정한다(판정 블록(904)). 이것은 데이터 팝퓰레이터(populator)(841)에 의해 판정될 수 있다. 데이터 필드가 대응하는 데이터 객체 내로 포함될 수 있으면(판정 블 록(904)에서 예), 데이터 팝퓰레이터(841)는 데이터 객체 내로 포함될 데이터 아이템의 집합에 이 데이터 필드를 추가하거나(동작(905)), 또는 대안적으로 그 데이터 필드를 데이터 객체에 즉시 포함시킨다. 데이터 객체 내로 포함될 데이터 필드가 더 이상 없으면(판정 블록(906)에서 아니오), 데이터 객체는 포함된다(동작(907)). 그렇지 않으면(판정 블록(906)에서 예), 다음 복원된 데이터 필드가 평가되고(판정 블록(904)), 여기에서 프로세스가 반복된다.
소정의 시점에, 복원된 데이터 필드가 데이터 객체 내로 포함될 수 없다면(판정 블록(904)에서 아니오), 데이터 필드가 필수인지 선택적인지 판정된다(판정 블록(908)). 이것은 대응하는 데이터 계약 내의 대응하는 데이터 필드를 검토함으로써 판정될 수 있다. "필수 이해" 플래그 "MU"가 설정되면, 데이터 필드 타입은 데이터 객체에 의해 이해되어야 되고, 데이터 필드는 필수인 것으로 판정된다. 필수 이해 필드가 설정되지 않으면, 데이터 필드 타입은 수신 종료 시에 선택적이다.
데이터 필드가 선택적이면(판정 블록(908)에서 선택적), 데이터 필드는 데이터 객체 대신에 보충 데이터 구조(예를 들어, 도 2의 잔여 필드(202E)) 내로 포함된다. 예를 들어, 데이터 팝퓰레이터(841)는 데이터 필드를 보충 데이터 구조(844) 내로 제공할 수 있다. 한 실시예에서, 동작(909)는 라운드 트립(round trip) 지정자(RT)가 데이터 계약의 대응하는 데이터 필드 타입 내에 설정되는 경우에만 실행된다. 어떠한 경우든, 흐름은 판정 블록(906)으로 진행하여, 포함될 데이터 필드가 더 있는지 판정된다(판정 블록(906)). 한편, 데이터 필드가 필수이면(판정 블록(908)에서 필수), 역정렬은 실패한 것으로 표시된다(동작(910)).
점선 박스(911) 내에 포함된 이러한 프로세스는 평가될 데이터 필드가 더 이상 없을 때까지(판정 블록(906)에서 아니오), 또는 역정렬이 실패할 때까지(동작(910)), 모든 복원된 데이터 필드에 대해 반복될 수 있다. 점선 박스(911) 내의 프로세스는 또한, 이제 설명되는 바와 같이 흐름의 특성이 약간 변경되더라도, 데이터 객체에 대해 검색된 대응하는 데이터 필드가 없는 데이터 필드 타입에 대해 반복될 수 있다. 구체적으로, 데이터 필드는 존재하지 않기 때문에 데이터 객체 내로 포함될 수 없다(판정 블록(904)에서 아니오). 데이터 필드 타입이 선택적이면(판정 블록(908)에서 선택적), 흐름은 바로 판정 블록(906)으로 진행하여, 평가될 임의의 검색된 데이터가 더 있는지 또는 검색된 대응 데이터 필드가 존재하지 않는 임의의 데이터 필드 타입이 더 있는지 판정된다. 데이터 필드 타입이 필수이면(판정 블록(908)에서 필수), 역정렬은 실패한다(동작(910)).
방법(900)은 정렬된 문서의 포맷에 상관없이, 그리고 정렬된 문서와 어떤 데이터 계약이 관련되는지 상관없이, 임의의 수신된 정렬 문서에 대해 반복될 수 있다.
따라서, 본 발명의 원리는 추상 데이터가 데이터 객체로부터 추출되고, 전체 데이터 객체의 정렬과 반대로 정렬되는 정렬 메카니즘을 제공한다. 이와 유사하게, 역정렬 메카니즘은 추상 데이터를 복원하고, 전체 데이터 객체를 역정렬하기 보다는 데이터 객체 내로 추상 데이터를 포함시킨다. 따라서, 정렬 및 역정렬 메카니즘은 메모리 내에서 처리되는 데이터 객체 타입의 특성을 노출시킬 필요없이, 다수의 정렬 포맷 및 데이터 객체 타입과 양립할 수 있다.
도 10은 본 발명의 원리에 따라 서비스의 능력을 표현하는 방법의 플로우차트를 도시한 것이다. 이 프로세스는 상술된 정렬 및 역정렬 이전에 실행될 수 있다. 방법(1000)은 요구되지는 않지만, 서비스의 능력의 표현에 대한 요청을 수신하면 실행될 수 있다.
먼저, 서비스 객체는 서비스 객체에 의해 제공된 하나 이상의 메소드를 식별하기 위해 평가된다(동작(1001)). 이 서비스 객체는, 예를 들어 전체 웹 서비스일 수 있다. 그 다음에, 메소드(들)의 파라미터는 어느 것이 관련된 데이터 계약을 갖는지 판정하기 위해 평가된다(동작(1002)). 각각의 데이터 계약에 대해, 데이터 계약은 그 다음에 파라미터의 스키마화 설명으로 변환된다(동작(1003)). 예를 들어, 정렬 메카니즘(600)은 관련된 데이터 계약에 기초하여 각 파라미터마다 XSD(XML Schema Description) 문서를 생성하도록 구성될 수 있다. 그 다음, 서비스는 (예를 들어, 각 파라미터에 대해 XSD 문서의 형태로) 허용된 파라미터의 관련 스키마화 설명과 함께 (예를 들어, WSDL(Web Services Description Language)의 형태의) 메소드의 스키마화 설명을 제공할 수 있다.
본 발명의 전송 메카니즘에 따르면, 양쪽 데이터 구조 모두에 데이터 필드가 포함되지 않은 경우라도 미처리 데이터를 한 데이터 구조에서 다른 데이터 구조로 전송할 수 있다.
본 발명은 본 발명의 기술적 사상 또는 본질적인 특징을 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 설명된 실시예들은 모든 점에서 제한적인 것이 아닌 예시적인 것으로 간주되어야 한다. 그러므로, 본 발명의 범위는 상기 설명에 의해서가 아니라 첨부된 청구범위에 의해 나타내진다. 청구범위의 등가물의 의미 및 범위에 드는 모든 변경은 본 발명의 범위 내에 포함될 수 있다.

Claims (20)

  1. 소스 데이터 구조에서 타겟 데이터 구조로 데이터를 전송하는 컴퓨터화된 방법으로서,
    상기 타겟 데이터 구조에 대응하는 소정의 필드에 대해, 상기 소정의 필드가 상기 소스 데이터 구조 내의 관련 필드를 갖지 않는다고 판정하고, 이에 응답하여,
    상기 전송이 성공적이기 위해 상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 제공하는 것이 필수적인지 여부를 판정하는 동작과,
    상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 제공하는 것이 필수적인 경우에, 상기 전송을 하지않는 동작과,
    상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 공급하는 것이 필수적이지 않은 경우에, 상기 전송을 계속하는 동작
    을 실행하는 동작; 및
    상기 소스 데이터 구조의 소정의 필드에 대해, 상기 타겟 데이터 구조 내의 대응하는 필드가 없다고 판정하고, 이에 응답하여,
    상기 전송이 성공적이기 위해 상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수인지 여부를 판정하는 동작과,
    상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필
    드에 대응하는 필드를 갖는 것이 필수적인 경우에, 상기 전송을 하지 않는 동작과,
    상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수적이지 않은 경우에, 제1 데이터 구조의 다른 필드로부터 제2 데이터 구조의 잔여 필드 내로 데이터를 제공하는 동작
    을 실행하는 동작
    을 포함하는 방법.
  2. 제1항에 있어서,
    상기 소스 데이터 구조는 네트워크를 통해 소스 컴퓨팅 시스템으로부터 제공되고, 상기 타겟 데이터 구조는 타겟 데이터 구조 상에 존재하며, 상기 컴퓨터화된 방법은 타겟 컴퓨팅 시스템 상에서 실행되는 방법.
  3. 제1항에 있어서,
    상기 소스 데이터 구조는 데이터 저장장치로부터 컴퓨팅 시스템에 의해 판독되고, 상기 타겟 데이터 구조는 상기 컴퓨팅 시스템 상의 메모리 내에 표시되는 방법.
  4. 제1항에 있어서,
    상기 타겟 데이터 구조는 폼 템플릿(form template)인 방법.
  5. 제1항에 있어서,
    상기 타겟 데이터 구조에 대응하는 상기 소정의 필드는 상기 전송이 성공적이기 위해 상기 소정의 필드가 소스 컴퓨팅 시스템에 의해 제공되어야 하는지 여부를 나타내는 방법.
  6. 제1항에 있어서,
    상기 소스 데이터 구조의 상기 소정의 필드는 상기 타겟 데이터 구조가 상기 전송이 성공적이기 위해 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수적인지 여부를 지정하는 방법.
  7. 제1항에 있어서,
    상기 소스 데이터 구조가 상기 전송이 성공적이기 위해 상기 소정의 필드에 대응하는 필드를 제공하는 것이 필수적이라고 판정되는 방법.
  8. 제7항에 있어서,
    상기 소스 데이터 구조의 상기 소정의 필드에 대한 상기 타겟 데이터 구조 내의 대응하는 필드가 존재하지 않는 것으로 판정되는 방법.
  9. 제1항에 있어서,
    상기 소스 데이터 구조의 상기 소정의 필드에 대한 상기 타겟 데이터 구조 내의 대응하는 필드가 존재하지 않는 것으로 판정되는 방법.
  10. 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 소스 데이터 구조에서 타겟 데이터 구조로 데이터를 전송하는 방법을 상기 컴퓨팅 시스템이 실행하게 하는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 방법은,
    상기 타겟 데이터 구조에 대응하는 소정의 필드에 대해, 상기 소정의 필드가 상기 소스 데이터 구조 내의 관련 필드를 갖지 않는다고 판정하고, 이에 응답하여,
    상기 전송이 성공적이기 위해 상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 제공하는 것이 필수적인지 여부를 판정하는 동작과,
    상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 공급하는 것이 필수적인 경우에, 전송을 하지 않는 동작과,
    상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 공급하는 것이 필수적이지 않는 경우에, 전송을 계속하는 동작
    을 실행하는 동작 및
    상기 소스 데이터 구조의 소정의 필드에 대해, 상기 타겟 데이터 구조 내의 대응하는 필드가 없다고 판정하고, 이에 응답하여,
    상기 전송이 성공적이기 위해 상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수인지 여부를 판 정하는 동작과,
    상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수적인 경우에, 전송을 하지않는 동작과,
    상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수적이지 않은 경우에, 제1 데이터 구조의 다른 필드로부터 제2 데이터 구조의 잔여 필드 내로 데이터를 제공하는 동작
    을 실행하는 동작
    을 포함하는 컴퓨터 프로그램 제품.
  11. 제10항에 있어서,
    상기 소스 데이터 구조는 네트워크를 통해 소스 컴퓨팅 시스템으로부터 제공되고, 상기 타겟 데이터 구조는 타겟 데이터 구조 상에 존재하며, 상기 컴퓨터화된 방법은 타겟 컴퓨팅 시스템 상에서 실행되는 컴퓨터 프로그램 제품.
  12. 제10항에 있어서,
    상기 소스 데이터 구조는 데이터 저장장치로부터 컴퓨팅 시스템에 의해 판독되고, 상기 타겟 데이터 구조는 상기 컴퓨팅 시스템 상의 메모리 내에 표시되는 컴퓨터 프로그램 제품.
  13. 제10항에 있어서,
    상기 타겟 데이터 구조는 폼 템플릿인 컴퓨터 프로그램 제품.
  14. 제10항에 있어서,
    상기 타겟 데이터 구조에 대응하는 상기 소정의 필드는 상기 전송이 성공적이기 위해 상기 소정의 필드가 상기 소스 컴퓨팅 시스템에 의해 제공되어야 하는지 여부를 나타내는 컴퓨터 프로그램 제품.
  15. 제10항에 있어서,
    상기 소스 데이터 구조의 상기 소정의 필드는 상기 전송이 성공적이기 위해 상기 타겟 데이터 구조가 상기 소스 데이터 구조 내의 상기 소정의 필드에 대응하는 필드를 갖는 것이 필수적인지 여부를 지정하는 컴퓨터 프로그램 제품.
  16. 제10항에 있어서,
    상기 전송이 성공적이기 위해 상기 소스 데이터 구조가 상기 소정의 필드에 대응하는 필드를 제공하는 것이 필수적인 것으로 판정되는 컴퓨터 프로그램 제품.
  17. 제16항에 있어서,
    상기 소스 데이터 구조의 상기 소정의 필드에 대한 상기 타겟 데이터 구조 내의 대응하는 필드가 없다고 판정되는 컴퓨터 프로그램 제품.
  18. 제10항에 있어서,
    상기 소스 데이터 구조의 상기 소정의 필드에 대한 상기 타겟 데이터 구조 내의 대응하는 필드가 없다고 판정되는 컴퓨터 프로그램 제품.
  19. 다수의 필드를 포함하는 데이터 구조를 가지는 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 다수의 필드는,
    제1 필드- 상기 제1 필드가 타겟 데이터 구조로 전송될 때 상기 필드가 타겟 데이터 구조 내에서 필수적인 것인지 여부를 지정하는 속성을 상기 제1 필드가 포함함 -와,
    상기 데이터 구조로의 이전의 전송 동안에 인식되지 않은 데이터를 포함하는 잔여 영역을 나타내는 제2 필드
    를 포함하는 하나 이상의 컴퓨터 판독가능 매체.
  20. 제19항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 매체인 하나 이상의 컴퓨터 판독가능 매체.
KR1020050122499A 2005-02-01 2005-12-13 미처리 데이터를 한 데이터 구조로부터 동일한 아이템을나타내는 다른 데이터 구조로 전송하는 메카니즘 KR101183296B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/049,108 US7574516B2 (en) 2005-02-01 2005-02-01 Mechanisms for transferring raw data from one data structure to another representing the same item
US11/049,108 2005-02-01

Publications (2)

Publication Number Publication Date
KR20060088473A true KR20060088473A (ko) 2006-08-04
KR101183296B1 KR101183296B1 (ko) 2012-09-14

Family

ID=36384426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050122499A KR101183296B1 (ko) 2005-02-01 2005-12-13 미처리 데이터를 한 데이터 구조로부터 동일한 아이템을나타내는 다른 데이터 구조로 전송하는 메카니즘

Country Status (5)

Country Link
US (1) US7574516B2 (ko)
EP (1) EP1686487B1 (ko)
JP (1) JP4890869B2 (ko)
KR (1) KR101183296B1 (ko)
CN (1) CN100543737C (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904491B2 (en) * 2007-07-18 2011-03-08 Sap Ag Data mapping and import system
US8949783B2 (en) 2010-06-30 2015-02-03 International Business Machines Corporation Method and system for lazy data serialization in computer communications
JP5810719B2 (ja) * 2011-07-29 2015-11-11 富士通株式会社 データ配置変更プログラム、データ配置変更方法およびデータ配置変更装置
FR3021787B1 (fr) * 2014-05-30 2023-08-18 Amadeus Sas Systeme de gestion de contenu
US10042871B2 (en) 2014-05-30 2018-08-07 Amadeaus S.A.S. Content management in a travel management system
US10019588B2 (en) 2016-01-15 2018-07-10 FinLocker LLC Systems and/or methods for enabling cooperatively-completed rules-based data analytics of potentially sensitive data
US9672487B1 (en) 2016-01-15 2017-06-06 FinLocker LLC Systems and/or methods for providing enhanced control over and visibility into workflows where potentially sensitive data is processed by different operators, regardless of current workflow task owner
US9904957B2 (en) * 2016-01-15 2018-02-27 FinLocker LLC Systems and/or methods for maintaining control over, and access to, sensitive data inclusive digital vaults and hierarchically-arranged information elements thereof
US11157341B1 (en) 2020-07-01 2021-10-26 Adp, Llc Data contracts

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0454303A3 (en) * 1990-04-02 1991-11-13 Texas Instruments Incorporated Electronic data format conversion system and method
CA2110243C (en) * 1992-12-31 1998-08-11 Philip Steven Winterbottom Apparatus and methods for making a portion of a first name space available as a portion of a second name space
EP2270687A2 (en) * 1995-04-11 2011-01-05 Kinetech, Inc. Identifying data in a data processing system
US5857194A (en) 1996-11-07 1999-01-05 General Electric Company Automatic transmission of legacy system data
US6151608A (en) 1998-04-07 2000-11-21 Crystallize, Inc. Method and system for migrating data
US6381600B1 (en) * 1999-09-22 2002-04-30 International Business Machines Corporation Exporting and importing of data in object-relational databases
DE10035955A1 (de) 2000-07-21 2002-01-31 Thomson Brandt Gmbh Verfahren zum Identifizieren eines reservierten Datenbereichs sowie entsprechendes Gerät
US7257820B2 (en) 2001-04-14 2007-08-14 Siebel Systems, Inc. Method and system for using integration objects with enterprise business applications
US6912549B2 (en) 2001-09-05 2005-06-28 Siemens Medical Solutions Health Services Corporation System for processing and consolidating records
US7404186B2 (en) * 2003-05-28 2008-07-22 Microsoft Corporation Signature serialization
US7302678B2 (en) * 2003-09-10 2007-11-27 Sap Aktiengesellschaft Symmetric transformation processing system
US7409693B2 (en) * 2003-10-30 2008-08-05 International Business Machines Corporation Method and system for providing version control of parameters in a command-based API using Java serialization
US7349910B2 (en) * 2004-08-20 2008-03-25 International Business Machines Corporation Method for inserting records into a database

Also Published As

Publication number Publication date
EP1686487A3 (en) 2007-04-18
JP2006216027A (ja) 2006-08-17
US7574516B2 (en) 2009-08-11
EP1686487A2 (en) 2006-08-02
CN1815474A (zh) 2006-08-09
JP4890869B2 (ja) 2012-03-07
EP1686487B1 (en) 2018-06-06
KR101183296B1 (ko) 2012-09-14
CN100543737C (zh) 2009-09-23
US20060173933A1 (en) 2006-08-03

Similar Documents

Publication Publication Date Title
KR101183296B1 (ko) 미처리 데이터를 한 데이터 구조로부터 동일한 아이템을나타내는 다른 데이터 구조로 전송하는 메카니즘
US8151192B2 (en) Context sensitive help
US7483959B2 (en) Method and system for extensible data gathering
US9462042B2 (en) System and method for enabling application discovery by automation needs
US5878419A (en) Method for creating a relational description of a formatted transaction
US10509854B2 (en) Annotation processing of computer files
US10509858B1 (en) Data processing in spreadsheet worksheets
US11392431B2 (en) Synchronous ingestion pipeline for data processing
EP3586290B1 (en) Systems and methods for tracking assets across a distributed network environment
US7103885B2 (en) Comment driven processing
EP1426877A2 (en) Importing and exporting hierarchically structured data
US20070203926A1 (en) Scalable transformation and configuration of EDI interchanges
US20070011437A1 (en) System and method for pipelet processing of data sets
CN106326129A (zh) 一种程序异常信息生成方法及装置
KR20040081790A (ko) 애스펙트 패턴 내의 일반 기능과 개체와의 연결
US7730041B2 (en) Data abstraction based serialization
US8776098B2 (en) Exchanging data using data transformation
US20160210553A1 (en) Predicting the Impact of Change on Events Detected in Application Logic
US9275085B2 (en) Data processing system and method
US20110246967A1 (en) Methods and systems for automation framework extensibility
US7178150B1 (en) Serialization method for transmitting data via CORBA interceptors
US20110239185A1 (en) Representing the structure of a data format using a class-based representation
US20040054676A1 (en) Systems and methods for automatically processing text information
CN117707547B (zh) 一种解析java项目间引用关系的方法
US8521753B2 (en) Unified formats for resources and repositories for managing localization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 7