KR20060103827A - 에러에 대해 사용자 정의 타입(udt) 프래그먼트를평가하는 것을 용이하게 하는 시스템 및 방법 - Google Patents

에러에 대해 사용자 정의 타입(udt) 프래그먼트를평가하는 것을 용이하게 하는 시스템 및 방법 Download PDF

Info

Publication number
KR20060103827A
KR20060103827A KR1020060011045A KR20060011045A KR20060103827A KR 20060103827 A KR20060103827 A KR 20060103827A KR 1020060011045 A KR1020060011045 A KR 1020060011045A KR 20060011045 A KR20060011045 A KR 20060011045A KR 20060103827 A KR20060103827 A KR 20060103827A
Authority
KR
South Korea
Prior art keywords
udt
data
fragment
fragments
data blocks
Prior art date
Application number
KR1020060011045A
Other languages
English (en)
Other versions
KR101169099B1 (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 KR20060103827A publication Critical patent/KR20060103827A/ko
Application granted granted Critical
Publication of KR101169099B1 publication Critical patent/KR101169099B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • 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/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 데이터 전체를 복사하지 않고서 데이터의 스트림을 이용하여 사용자 정의 타입(UDT) 프래그먼트의 일관성 검사를 수행하는 시스템 및 방법에 관한 것이다. 스트리밍 일관성 검사는 UDT 프래그먼트 전체가 판독, 저장, 분석 등이 수행될 필요가 없도록 유효하지 않은 프래그먼트를 가능한 한 빨리 발견하는 것을 용이하게 한다. 부가적으로, UDT 프래그먼트는 완전히 구체화되지 않고서 평가될 수 있다. 따라서, 본 발명을 이용하는 시스템 및/또는 방법은 요구되는 자원을 감소시키고 유효하지 않은 구조를 더욱 신속하게 검출하게 함으로써 기존의 기술에 비하여 성능을 개선할 수 있다.
UDT 프래그먼트, 프래그먼트 타입, 스트리밍 일관성 검사

Description

에러에 대해 사용자 정의 타입(UDT) 프래그먼트를 평가하는 것을 용이하게 하는 시스템 및 방법{SYSTEMS AND METHODS FOR PERFORMING STREAMING CHECKS ON DATA FORMAT FOR UDTs}
도 1은 본 발명의 양상에 따라 데이터 구조를 분석하여 에러의 존재를 판정하는 것을 용이하게 하는 시스템의 블럭도.
도 2는 본 발명의 양상에 따라 스트리밍 검사를 이용함으로써 UDT 프래그먼트의 분석 및/또는 확인을 용이하게 하는 시스템의 블럭도.
도 3은 본 발명의 양상에 따라 각 UDT 프래그먼트 타입에 대해 개개의 검사 객체를 이용함으로써 스트리밍 검사를 수행하여 유효하지 않은 구조를 검출하는 시스템의 블럭도.
도 4는 본 발명의 양상에 따라 최소의 데이터를 저장할 수 있는 스트리밍 검사를 이용하여 UDT 프래그먼트의 유효성을 평가하는 시스템의 블럭도.
도 5는 본 발명의 양상에 따라 대응하는 UDT 프래그먼트 타입을 평가하기 위해 이용될 수 있는 검사 객체를 생성하는 시스템의 블럭도.
도 6은 본 발명의 양상에 따라 스트리밍 검사를 이용하여 에러에 대해 UDT 프래그먼트를 평가하는 것을 용이하게 하는 예시적인 방법의 흐름도.
도 7은 본 발명의 양상에 따라 검사의 프로세스를 평가함으로써 UDT 프래그 먼트에 대한 스트리밍 일관성 검사를 수행하는 것을 용이하게 하는 예시적인 방법의 흐름도.
도 8은 본 발명의 양상에 따라 에러에 대해 UDT 프래그먼트를 분석하고, 에러의 식별 시 스트리밍 검사를 중지하는 것을 용이하게 하는 예시적인 방법의 흐름도.
도 9는 본 발명의 새로운 양상들이 이용될 수 있는 예시적인 네트워킹 환경을 도시하는 도면.
도 10은 본 발명의 새로운 양상들이 이용될 수 있는 예시적인 운영 환경을 도시하는 도면.
<도면의 주요부분에 대한 부호의 설명>
105: 데이터 구조 스트리밍 검사기
110, 115, 120: 데이터 블럭
125: 데이터 블럭 프로세싱 컴포넌트
130: 검사 객체
본 발명은 일반적으로 일관성 검사(consistency checking)에 관한 것이며, 보다 상세하게는 데이터 전체를 복사하지 않고서 데이터의 스트리밍 검사를 통해 사용자 정의 타입(UDT) 프래그먼트의 일관성을 분석 및 확인하는 것을 용이하게 하 는 시스템 및 방법에 관한 것이다.
데이터베이스는 데이터베이스 관리 시스템(DBMS)에 의해 미리 정의된 포맷으로 생성 및 관리되는 관련 파일 또는 데이터의 컬렉션이다. 예를 들어, DBMS는 행 및 열을 포함하는 테이블에 배열될 수 있다. 데이터베이스에 있는 테이블의 컨텐츠를 액세스하기 위하여 질의가 질의 언어(예를 들어, 구조화된 질의 언어(SQL))에 따라 구성될 수 있다. 마찬가지로, 데이터는 외부 소스를 통해 테이블에 입력(예를 들어, 임포팅)될 수 있다. 전통적으로, DBMS는 텍스트, 이미지, 사운드 및 비디오를 포함하여 임의의 형태의 데이터를 관리할 수 있다. 이에 따라, 데이터베이스 및 파일 구조는 소프트웨어 어플리케이션에 의해 결정된다.
DBMS는 내부에 저장된 데이터의 종류에 의해 결정되는 변수의 카테고리를 일컬을 수 있는 미리 정의된 단순한 데이터 타입을 이용할 수 있다. 예를 들어, 정수, 부동 소수점, 스트링, 날짜, 바이너리, 부울, 문자, 쇼트(short) 및 롱(long)은 일반적인 단순한 데이터 타입이다. 최근에, DBMS 저장 유연성 및 관리능력을 증가시키기 위해 사용자 정의 타입(UDT)의 이용에 노력을 기울여오고 있다. 보다 상세하게는, UDT의 기능은 (예를 들어, 선언적 언어를 통해) 특정 데이터베이스 어플리케이션과 호환가능한 UDT를 생성하기 위한 유연성을 개발자 및 사용자에게 제공한다.
UDT는 저장 환경(예를 들어, DBMS) 내에서 복합 타입의 모델링 및 조작을 가능하게 한다. UDT는 또한 상속(inheritance), 포함(containment) 및 다중-값 임베 딩(multi-valued embedding)과 같은 개념을 제공한다. UDT는 일련의 상이한 타입들(예를 들어, 정수, 부동 소수점, 스트링, 날짜, 바이너리, 부울, 문자, 쇼트, 롱 등)의 프래그먼트들을 포함할 수 있다. 예를 들어, UDT 프래그먼트는 관련 메타데이터(예를 들어, 사람에 관련된 UDT에 대해, 한 프래그먼트는 그 사람의 이름을 보유할 수 있고, 또다른 프래그먼트는 그 사람의 주소에 관련될 수 있음)를 갖는 UDT의 일부일 수 있다. UDT 프래그먼트의 크기는 그것의 타입 및/또는 관련 페이로드에 따라 다를 수 있다. UDT는 데이터 페이지(들)에 저장될 수 있고/거나 데이터 패킷(들)의 일부로서 전달될 수 있다. 변화하는 크기로 인하여, UDT 및/또는 UDT 프래그먼트는 저장될 때 상이한 데이터 페이지들 사이(또는 전달되는 동안 데이터 패킷들 사이)에 분리될 수 있다. 예를 들어, 한 데이터 페이지 내에 UDT 및/또는 UDT 프래그먼트를 저장하기에 충분한 여유 공간이 없는 경우에, UDT 및/또는 UDT 프래그먼트가 분리될 수 있다. 예를 들어, 10,000바이트 UDT는 하나의 8192바이트 데이터 페이지에 저장될 수 없다. 따라서, 그러한 UDT는 데이터 페이지들 사이에 분리된다. 부가적으로, UDT 분리의 위치에 따라, UDT 프래그먼트의 부분들이 상이한 데이터 페이지들 사이에 분리될 수 있다. UDT 프래그먼트의 분리는 단순한 데이터 타입이 분리되도록 할 수 있다. 예로서, 4바이트 정수가 첫번째 바이트는 첫번째 데이터 페이지에 저장되고 나머지 3바이트는 하나 이상의 다른 데이터 페이지에 저장되도록 저장될 수 있다.
전통적으로, 일관성 검사가 프래그먼트에 대해 수행될 수 있기 전에, 전체 프래그먼트가 메모리에 구체화(materializing)되어야 한다. 따라서, 두 개의 상이 한 데이터 페이지 또는 데이터 패킷 사이에 분리된 프래그먼트의 경우에, 추후의 프로세싱을 위해서는 프래그먼트의 두 섹션 모두 메모리의 또다른 영역으로 복사되어야 할 것이다. 따라서, 현재 이용되는 기술은 메모리 및 프로세싱 자원의 관점에서 비용이 비싸다. 부가적으로, 이러한 비용은 프래그먼트 크기(및 따라서 데이터 페이지 또는 데이터 패킷의 관련 수)가 증가함에 따라 증가한다.
다음은 본 발명의 소정 양상에 대한 기본적인 이해를 제공하기 위해 본 발명의 단순화된 요약을 제공한다. 이 요약은 본 발명의 포괄적인 개요가 아니다. 본 발명의 주요 또는 결정적인 구성요소를 식별하거나 본 발명의 범위를 서술하기 위한 것도 아니다. 유일한 목적은 나중에 제공되는 보다 상세한 설명에 대한 도입부로서 단순화된 형태로 본 발명의 소정 개념을 제공하는 것이다.
본 발명은 데이터 전체를 복사하지 않고서 데이터의 스트림을 이용하여 사용자 정의 타입(UDT) 프래그먼트의 일관성 검사를 수행하는 시스템 및 방법에 관한 것이다. 스트리밍 일관성 검사는 유효하지 않은 프래그먼트를 가능한 한 빨리 발견하는 것을 용이하게 하여 전체 UDT 프래그먼트가 판독, 저장, 분석 등이 행해질 필요가 없도록 한다. 부가적으로, UDT 프래그먼트는 완전히 구체화되지 않고서 평가될 수 있다. 따라서, 본 발명을 이용하는 시스템 및/또는 방법은 요구되는 자원을 감소시키고 유효하지 않은 구조의 신속한 검출을 가능하게 함으로써 기존의 기술에 비교하여 성능을 개선시킬 수 있다.
본 발명의 양상에 따르면, 에러에 대해 사용자 정의 타입(UDT) 프래그먼트를 평가하는 것을 용이하게 하는 시스템이 제공된다. 시스템은 UDT 프래그먼트를 포함하는 데이터 블럭들의 스트림을 수신하고, UDT 프래그먼트 각각에 대해 프래그먼트 타입을 식별하며(예를 들어, 새로운 프래그먼트의 시작이 발견될 때), 그것들이 프로세싱되면 데이터 블럭들을 폐기하는 데이터 블럭 프로세싱 컴포넌트를 포함한다. 부가적으로, 시스템은 대응하는 식별된 프래그먼트 타입에 부분적으로 기초하여 UDT 프래그먼트를 검사하고, 적합한 때에 에러의 표시를 생성하는 검사 객체를 포함한다. 예를 들어, 검사 객체는 데이터 블럭들 사이에 분리되었던 기본 데이터 타입을 구체화하는 것을 용이하게 할 수 있다.
본 발명의 또다른 양상에 따르면, UDT의 일관성 검사를 용이하게 하는 방법이 제공된다. 방법은 UDT 프래그먼트들을 포함하는 데이터 블럭들을 수신하는 것, UDT 프래그먼트들의 타입을 식별하는 것, 개개의 검사 객체를 이용하여 UDT 프래그먼트들 중 임의의 것이 에러를 포함하는지를 판정하는 것, 및 데이터 블럭들이 프로세싱되면 그것들을 폐기하는 것을 포함할 수 있다.
본 발명의 또다른 양상에 따라, 에러에 대해 데이터 구조를 분석하는 시스템이 제공될 수 있다. 시스템은 데이터 구조를 포함하는 데이터 블럭들의 스트림을 수신하기 위한 수단, 데이터 구조의 상이한 타입들을 식별하기 위한 수단, 개개의 검사 객체를 이용하여 데이터 구조 내에 포함된 에러를 식별하기 위한 수단, 및 데이터 블럭들이 프로세싱되면 스트림으로부터 데이터 블럭들을 폐기하기 위한 수단을 포함할 수 있다.
다음 설명 및 첨부된 도면은 본 발명의 특정 예시적인 양상들을 상세하게 언 급한다. 그러나, 이러한 양상들은 본 발명의 원리가 이용될 수 있는 다양한 방식 중 단지 소수를 나타내며, 본 발명은 그러한 양상 및 그들의 등가물 모두를 포함하도록 의도된다. 본 발명의 다른 이점 및 새로운 특성들은 도면과 함께 고려될 때 본 발명의 후술되는 상세한 설명으로부터 명백해질 것이다.
본 발명은 데이터 전체를 복사하지 않고서 데이터의 스트림을 이용하여 사용자 정의 타입(UDT) 프래그먼트의 일관성 검사를 수행하는 시스템 및 방법에 관한 것이다. 스트리밍 일관성 검사는 유효하지 않은 프래그먼트를 가능한 한 빨리 발견하는 것을 용이하게 하여 전체 UDT 프래그먼트가 판독, 저장, 분석 등이 행해질 필요가 없도록 한다. 부가적으로, UDT 프래그먼트는 완전히 구체화되지 않고서 평가될 수 있다. 따라서, 본 발명을 이용하는 시스템 및/또는 방법은 요구되는 자원을 감소시키고 유효하지 않은 구조의 신속한 검출을 가능하게 함으로써 기존의 기술에 비교하여 성능을 개선시킬 수 있다.
본 출원에서 이용될 때, "컴포넌트", "시스템", "객체", "검출기", "검사기", "활성화기", "생성기" 등의 용어는 하드웨어든지, 소프트웨어(예를 들어, 실행 중인 소프트웨어), 및/또는 펌웨어든지, 컴퓨터-관련 엔터티를 일컫기 위한 것이다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 프로세스, 프로세서, 객체, 실행파일, 프로그램, 및/또는 컴퓨터일 수 있다. 예로서, 서버상에서 실행되는 어플리케이션 및 그 서버 둘 다 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 하나의 프로세스 내에 상주할 수 있고, 하나의 컴포넌트는 하나의 컴퓨터상에 로컬화될 수 있고/거나 둘 이상의 컴퓨터 사이에 분산될 수 있다.
본 발명은 곳곳의 유사한 구성요소를 참조하기 위해 유사한 참조 번호가 사용되는 도면들을 참조하여 기술된다. 후술되는 설명에서는 설명을 위하여, 본 발명의 완전한 이해를 제공하기 위해 여러 특정 세부사항이 언급된다. 그러나, 본 발명이 이러한 특정 세부사항없이 실행될 수 있음은 명백할 수 있다. 다른 경우들에, 본 발명의 설명을 용이하게 하기 위하여 잘 알려진 구조 및 장치가 블럭도의 형태로 도시된다.
도 1은 본 발명의 양상에 따라 데이터 구조를 분석하여 에러의 존재를 판정하는 것을 용이하게 하는 시스템(100)을 도시한다. 시스템(100)은 데이터(예를 들어, 데이터 블럭 1(110), 데이터 블럭 2(115), ..., 데이터 블럭 N(120), 여기서 N은 임의의 양수 전체이며, 이하 데이터 블럭(110-120)이라 칭함)의 스트림을 수신하여, 데이터 구조 일관성 검사 결과를 제공하는 데이터 구조 스트리밍 검사기(105)를 포함한다. 데이터 구조 스트리밍 검사기(105)는 데이터 블럭(110-120) 내에 포함된 데이터 전체를 저장하지 않고서 인커밍 데이터 블럭(110-120)의 스트림 내에 포함되는 데이터 구조(예를 들어, 사용자 정의 타입(UDT) 프래그먼트)를 평가한다. 데이터 구조 스트리밍 검사기(105)에 의해 생성된 데이터 구조 일관성 검사 결과는 에러 통지, 에러가 없음을 알리는 표시 등일 수 있다. 데이터 구조 일관성 검사 결과는 시스템(100)(예를 들어, 데이터 블럭(110-120)의 스트림을 중지하기 위해, 데이터 구조 스트리밍 검사기(105)에 의한 프로세싱을 멈추기 위해 등의 목적으로 이용될 수 있는 피드백으로서), 다른 소프트웨어 어플리케이션(도시되지 않음), 및/또는 하드웨어 장치(도시되지 않음)에 의해 이용될 수 있다. 부가적으로 또는 대안적으로, 데이터 구조 일관성 검사 결과가 사용자에게 제공될 수 있다(예를 들어, 경보, 시각적 디스플레이, 로그 파일 등을 통해).
데이터 구조 스트리밍 검사기(105)는 데이터 블럭 프로세싱 컴포넌트(125) 및 검사 객체(130)를 포함한다. 데이터 블럭 프로세싱 컴포넌트(125)는 데이터 블럭(110-120)을 수신하여 프로세싱한다. 예로서, 데이터 블럭 프로세싱 컴포넌트(125)는 데이터 블럭 1(110)이 소모될 때까지 데이터 블럭 1(110)을 수신 및 프로세싱할 수 있고, 그 후 데이터 블럭 1(110)을 폐기할 수 있다. 그 후, 유사하게, 데이터 블럭 프로세싱 컴포넌트(125)는 그러한 모든 데이터 블럭이 소모될 때까지 부가적인 데이터 블럭(115-120)을 수신, 프로세싱한 후 폐기할 수 있다. 데이터 블럭 1(110)(및 유사하게 나머지 데이터 블럭들(115-120))을 프로세싱하는 동안, 데이터 블럭 프로세싱 컴포넌트(125)는 데이터 블럭 1(110) 내의 현재의 위치를 추적하여, 데이터 블럭 1(110) 내의 특정 위치에 있는 데이터 구조에 관련된 관련 검사 객체(130)를 활성화할 수 있다.
검사 객체(130)는 활성화되었던 데이터 구조에 대해 일관성 검사를 수행한다. 예를 들어, 검사 객체(130)는 데이터 구조 내의 에러의 존재를 판정하기 위해 이용될 수 있다. 검사 객체(130)는 전체 데이터 구조를 구체화할 필요없이 스트리밍 방식으로 데이터 구조를 평가할 수 있는 반면, 기존의 기술은 전형적으로 전체 데이터 구조를 메모리에 복사한 후 저장된 데이터 구조를 평가해야만 한다. 검사 객체(130)는 또한 다른 데이터 블럭들(110-120) 사이에 분리되었던 데이터 구조에 관련된 기본 데이터 타입을 구체화하는 것을 용이하게 할 수 있다.
데이터 블럭(110-120)은 임의의 수의 데이터 구조(예를 들어, UDT 프래그먼트(들))를 포함할 수 있다. 데이터 블럭(110-120) 각각은 온-디스크 포맷에 따라 저장되고, 데이터 구조(들)를 저장하기 위해 이용되는 데이터 페이지일 수 있다. 부가적으로 또는 대안적으로, 데이터 블럭(110-120) 각각은 네트워크 환경의 장치들 사이 등에 전달될 수 있는(예를 들어, 유선 포맷 등으로) 데이터 패킷일 수 있다.
데이터 블럭(110-120)은 길이가 알려지고/거나 결정될 수 있는 한, 임의의 길이(예를 들어, 1바이트, 무한한 길이 등)일 수 있다. 예를 들어, 데이터 블럭(110-120)의 크기는 데이터 블럭 프로세싱 컴포넌트(125)에 의해 알려진 미리 설정된 길이일 수 있다. 대안적으로, 데이터 블럭 프로세싱 컴포넌트(125)는 데이터 블럭(110-120)의 길이를 식별할 수 있다. 데이터 블럭(110-120)의 크기는 프로세싱 동안 데이터 블럭(110-120)의 끝을 검출하기 위하여 데이터 블럭 프로세싱 컴포넌트(125) 및/또는 검사 객체(130)에 의해 이용된다. 일례에 따르면, 데이터 페이지(및/또는 데이터 패킷)는 8킬로바이트 크기일 수 있지만, 본 발명은 그렇게 제한되지는 않는다.
데이터 블럭(110-120)(예를 들어, 데이터 페이지, 데이터 패킷 등) 내에 저장된 데이터 구조의 크기는 데이터 타입 및/또는 관련 페이로드에 따라 다를 수 있다. 대안적으로, 데이터 구조 중 몇몇은 설정된 길이 및/또는 구조를 가질 수 있다. 데이터 구조는 단일 데이터 블럭(예를 들어, 데이터 블럭 1(110)) 내에 전부 다 저장될 필요는 없다. 데이터 구조는 임의의 수의 데이터 블럭(들)(110-120) 및 /또는 데이터 블럭(들)(110-120)의 부분들에 관련될 수 있다. 일례에 따르면, 하나의 데이터 구조의 절반이 첫번째 데이터 블럭(예를 들어, 데이터 블럭 1(110))의 끝에 있을 수 있고, 프래그먼트의 나머지 절반은 다음 데이터 블럭(예를 들어, 데이터 블럭 2(115)) 내에 존재할 수 있다. 데이터 구조 분리의 위치는 데이터 블럭(예를 들어, 데이터 블럭 1(110))에 관련된 이용가능한 공간의 양의 함수일 수 있고, 따라서 데이터 구조의 나머지 부분은 필요한 만큼 후속하는 데이터 블럭(들)(예를 들어, 데이터 블럭 2(115),...,데이터 블럭 N(120)) 내에 존재한다.
도 2를 참조하면, 본 발명의 양상에 따라 스트리밍 검사를 이용함으로써 UDT 프래그먼트의 분석 및/또는 확인을 용이하게 하는 시스템(200)이 도시된다. 시스템(200)은 인커밍 데이터 블럭(예를 들어, 데이터 블럭 1(210), 데이터 블럭 2(215),..., 데이터 블럭 N(220))의 스트림을 분석하여 UDT 일관성 검사 결과를 생성하는 프래그먼트 스트리밍 검사기(205)(예를 들어, 데이터 구조 스트리밍 검사기(105))를 포함한다. 프래그먼트 스트리밍 검사기(205)는 예를 들어 데이터 블럭(210-220) 내에 포함된 UDT 프래그먼트가 하나 이상의 에러를 포함함, 또는 UDT 프래그먼트는 에러가 없음을 판정할 수 있다. 생성될 수 있는 에러의 예는 UDT 프래그먼트가 알려지지 않은 타입을 가지고, 그 타입에 대한 최소 길이보다 짧고/거나, 예약된 비트에 대해 부적합한 값을 가지는 것일 수 있지만, 본 발명은 그렇게 제한되지는 않는다.
프래그먼트 스트리밍 검사기(205)는 데이터 블럭(210-220)의 인커밍 스트림을 수신하는 데이터 블럭 프로세싱 컴포넌트(225), 및 검사 객체(230)를 포함한다. 데이터 블럭 프로세싱 컴포넌트(225)는 프래그먼트 타입 검출기(235)를 더 포함한다. 프래그먼트 타입 검출기(235)는 데이터 블럭 프로세싱 컴포넌트(225)를 통해 수신된 데이터 블럭(210-220)에 관련된 데이터를 평가한다. 특히, 프래그먼트 타입 검출기(235)는 프래그먼트의 데이터 타입을 판정하기 위하여 데이터 블럭(210-220) 내의 특정 UDT 프래그먼트의 고유한 구조적 속성을 식별한다. 예를 들어, 프래그먼트 타입 검출기(235)는 프래그먼트 타입을 나타낼 수 있는 UDT 프래그먼트의 시작 부분의 타입 워드(type word)를 분석할 수 있지만, 본 발명은 그렇게 제한되지는 않는다.
따라서, 예로서, 데이터 블럭 프로세싱 컴포넌트(225)는 데이터 블럭 1(210)을 수신할 수 있고, 그것은 프레그먼트 타입 검출기(235)에 제공될 수 있다. 프래그먼트 타입 검출기(235)는 UDT 프래그먼트가 데이터 블럭(210) 내의 특정 위치에 있다고 판정할 수 있다. 게다가, 프래그먼트 타입 검출기(235)는 각 UDT 프래그먼트에 관련된 데이터 타입(예를 들어, 정수, 부동 소수점, 스트링, 날짜, 바이너리, 부울, 문자, 쇼트, 롱 등), 및/또는 UDT 프래그먼트가 컬렉션의 시작인지, 컬렉션의 끝인지, 널 값인지, 또는 UDT 시작인지를 식별할 수 있지만, 본 발명은 그렇게 제한되지는 않는다. 그 후 프래그먼트 타입 검출기(235)는 식별된 타입 정보를 검사 객체(230)에 제공할 수 있고, 검사 객체는 그 타입에 기초하여 UDT 프래그먼트를 적합하게 검사할 수 있다. 대안적으로 또는 부가적으로, 프래그먼트 타입 검출기(235)는 식별된 타입에 관련된 특정 검사 객체(230)를 시작할 수 있다. 이후, 검사 객체(230)는 특정 UDT 프래그먼트에 대해 일관성 검사를 수행하여, UDT 일관 성 검사 결과를 생성할 수 있다.
프래그먼트 스트리밍 검사기(205)는 데이터 블럭(210-220) 내에 존재하는 UDT 프래그먼트를 분석할 수 있다. UDT는 저장 환경 내에서 복합 타입의 모델링 및 조작을 가능하게 하는 데이터베이스 확장성 메커니즘(database extensibility mechanism)이다. UDT는 일련의 다른 타입들(예를 들어, 정수, 부동 소수점, 스트링, 날짜, 바이너리, 부울, 문자, 쇼트, 롱 등)의 프래그먼트들을 포함할 수 있다. UDT 프래그먼트는 프래그먼트 타입을 나타내는 메타데이터를 포함할 수 있다. 이 메타데이터는 프래그먼트 타입을 판정하기 위하여 프래그먼트 타입 검출기(235)에 의해 이용될 수 있다. 예를 들어, 판정된 프래그먼트 타입에 기초하여 개개의 검사 객체(230)가 이용될 수 있다. 부가적으로 또는 대안적으로, 검사 객체(230)는 판정된 프래그먼트 타입의 관점에서 UDT 프래그먼트를 평가하여 에러의 존재를 식별할 수 있다. 프래그먼트의 크기는 데이터 타입 및/또는 관련 페이로드에 따라 다를 수 있다. 대안적으로, 프래그먼트 중 몇몇은 설정된 길이 및/또는 구조를 가질 수 있다.
제한을 가하지 않는 예로서, UDT는 사람에 관련된 정보를 나타내기 위하여 이용될 수 있다. 따라서, UDT는 이름, 성, 나이, 성별, 전화 번호 리스트, 주소 리스트, 관련인 리스트(예를 들어, 친척, 동료 등) 등에 관련하여 상이한 프래그먼트들을 가질 수 있다. 이 예에 따라, 이름 및 성에 관련된 프래그먼트에 대해서는 문자 데이터 타입이 이용될 수 있고, 나이를 나타내기 위해서는 정수 데이터 타입이 이용될 수 있으며, 성별에 대해서는 부울 데이터 타입이 사용될 수 있다(예를 들어, 남성 또는 여성). 부가적으로, 전화 번호는 리스트로서 저장될 수 있고, 전화 번호 각각은 문자 데이터 타입을 이용한다. 또한, 주소는 번지, 거리, 아파트 번호, 읍/시, 주, 우편번호, 국가 등을 포함할 수 있기 때문에, 각 주소는 다양한 타입의 조합일 수 있다. UDT는 또한 데이터 블럭(210-220) 내에서 UDT의 시작을 나타내는 시작 프래그먼트, 각각 리스트의 시작 및 끝을 나타내는 컬렉션 시작 및 컬렉션 끝, 및/또는 널 구성요소를 가질 수 있다. 시작 프래그먼트, 컬렉션 시작, 컬렉션 끝 및/또는 널 구성요소는 설정된 길이 및/또는 구조를 가질 수 있다. 컬렉션의 한 예는 전화 번호의 리스트이며, 컬렉션 시작 및 컬렉션 끝은 컬렉션의 구성원들 중에 특정 UDT 프래그먼트들을 지정할 수 있다.
UDT 프래그먼트는 하나의 데이터 페이지 내에 전부 다 저장될 필요는 없다. 예를 들어, 한 프래그먼트의 절반은 한 데이터 페이지의 끝에 있을 수 있고, 프래그먼트의 나머지 절반은 다음 데이터 페이지에 저장될 수 있다. 본 발명은 UDT 프래그먼트가 데이터 페이지의 임의의 부분 및/또는 임의의 수의 데이터 페이지에 이를 수 있다고 생각한다. 프래그먼트가 분리되는 위치가 임의적일 수 있고, 따라서 이용가능한 공간이 존재하는 한 UDT 프래그먼트는 첫번째 데이터 페이지에 저장되고, 나머지는 다른 데이터 페이지에 저장된다. 설명에 따라, UDT 프래그먼트가 6000바이트이지만 데이터 페이지는 2000바이트의 이용가능한 공간만을 갖는 경우(예를 들어, 데이터 블럭 1(210)은 2000바이트만이 이용가능함), 나머지 4000바이트는 다른 데이터 페이지에 저장될 것이다(예를 들어, 데이터 블럭 2(215)가 나머지를 저장할 수 있음). 이 예에 따라, 프래그먼트 스트리밍 검사기(205)는 데이터 블럭(210-220)이 스트리밍되고 있을 때 데이터 구조 일관성 검사 결과를 제공할 수 있다. UDT 프래그먼트가 다른 데이터 블럭들(210-220) 사이에 분리될 때, 검사 객체(230)는 첫번째 데이터 블럭(예를 들어, 데이터 블럭 1(210))이 소모된 지점에서 얼마나 많은 UDT 프래그먼트에 대해 검사가 진행되었는지를 추적할 수 있고, 다음 데이터 블럭(예를 들어, 데이터 블럭 2(215))에서 시작하는 UDT 프래그먼트의 나머지를 검사하는 것을 용이하게 하기 위하여 UDT 프래그먼트에 관련된 최소의 메타데이터만을 저장할 수 있다. 저장된 메타데이터는 검사 객체(230)가 첫번째 데이터 블럭(예를 들어, 데이터 블럭 1(210))에 관련하여 이전에 분석된 부분을 재평가할 필요없이 UDT 프래그먼트의 나머지를 계속하여 검사할 수 있게 할 수 있다. 부가적으로, 메타데이터는 UDT 프래그먼트의 열 값을 저장하는 것에 대조적인 것으로서 UDT 프래그먼트의 구조를 기술할 수 있다. 이와 달리, 상기 예와 관련하여 기존의 기술은 2000바이트 섹션 및 4000바이트 섹션 둘 다 메모리에 복사하고, 그 후 데이터를 프로세싱할 것이다.
UDT 프래그먼트는 전송을 위해 이용되는 데이터 패킷 내에서 유사하게 포맷화될 수 있다. 현재 데이터 패킷의 일관성 검사를 위해 이용되는 기술은 부가적인 비용을 생성하며, 그것은 저장되는 데이터 페이지에 관하여 초래되는 것이 아니라, 네트워크로부터 전체 프래그먼트가 수신될 때까지 프래그먼트의 유효성을 판정할 수 없는 무능에 관련된다. 이러한 비용은 본 발명에 관련하여 이용된 프래그먼트 스트리밍 검사기(205)를 통해 부가적으로 경감된다.
도 3을 참조하면, 본 발명의 양상에 따라 각 UDT 프래그먼트 타입에 대해 개 개의 검사 객체를 이용함으로써 스트리밍 검사를 수행하여 유효하지 않은 구조를 검출하는 시스템(300)이 도시된다. 시스템(300)은 데이터 블럭(310, 315, 320)을 수신 및 프로세싱하여 UDT 일관성 검사 결과를 결정하는 프래그먼트 스트리밍 검사기(305)를 포함한다. 프래그먼트 스트리밍 검사기(305)는 특정 시각에 데이터 블럭(310-320)의 집합으로부터 하나의 데이터 블럭을 수신할 수 있다. 따라서, 이 예에 따라, 프래그먼트 스트리밍 검사기(305)는 첫번째 데이터 블럭(예를 들어, 데이터 블럭 1(310))을 수신할 수 있고, 그것은 소모될 때까지 프로세싱된 후 폐기될 수 있다. 그때에, 프래그먼트 스트리밍 검사기(305)에 의해 두번째 데이터 블럭(예를 들어, 데이터 블럭 2(315))이 순차적으로 획득되어 유사하게 완전히 평가되고 삭제될 수 있다.
프래그먼트 스트리밍 검사기(305)는 데이터 블럭(310-320)을 수신 및 프로세싱하는 데이터 블럭 프로세싱 컴포넌트(325)를 포함한다. 데이터 블럭 프로세싱 컴포넌트(325)는 프래그먼트 타입 검출기(330), 위치 추적 컴포넌트(335), 및 검사 객체 활성화기(340)를 포함할 수 있다. 프래그먼트 스트리밍 검사기(305)는 부가적으로 각각이 특정 프래그먼트 타입을 평가하는 검사 객체들(예를 들어, 검사 객체 1(345), .., 검사 객체 M(350), 여기서 M은 임의의 양의 정수 전체, 이하 검사 객체(345-350)라 칭함)의 집합을 포함한다.
예를 들어, 데이터 블럭 프로세싱 컴포넌트(325)는 동시에 데이터 블럭들(310-320)의 집합으로부터 하나의 데이터 블럭(예를 들어, 데이터 블럭 1(310))을 수신할 수 있다. 위치 추적 컴포넌트(335)는 수신된 데이터 블럭 1(310) 내에서 평가되고 있는 현재의 위치를 추적한다. 현재 평가된 위치에서, 프래그먼트 타입 검출기(330)는 UDT 프래그먼트의 타입(예를 들어, 정수, 부동 소수점, 스트링, 날짜, 바이너리, 부울, 문자, 쇼트, 롱, 컬렉션 시작, 컬렉션 끝, 널 값, UDT 시작 등)을 식별한다. UDT 프래그먼트의 타입은 검사 객체 활성화기(340)에 의해 이용되며, 검사 객체 활성화기는 검사 객체(345-350)의 집합으로부터 관련 검사 객체(예를 들어, 검사 객체 1(345))를 활성화 및 호출할 수 있다. 호출된 검사 객체(예를 들어, 검사 객체 1(345))는 데이터 블럭 1(310) 내의 UDT 프래그먼트를 임의의 에러에 대해 평가하여, UDT 일관성 검사 결과를 생성한다. 검사 객체(예를 들어, 검사 객체 1(345))는 UDT 프래그먼트의 평가가 완료되었음을 나타내는 통지를 데이터 블럭 프로세싱 컴포넌트(325)에 제공할 수 있다. 부가적으로 또는 대안적으로, 위치 추적 컴포넌트(335)는 현재 평가되고 있는 위치가 데이터 블럭 1(310)의 끝이라고 판정하든지, 또는 검사 객체(예를 들어, 검사 객체 1(345))가 호출되었던 UDT 프래그먼트의 외부에 있다고 판정할 수 있다. 게다가, 위치 추적 컴포넌트(335)는 활성인 검사 객체(예를 들어, 검사 객체 1(345))가 다른 데이터 블럭으로부터 UDT 프래그먼트의 또다른 부분을 대기하고 있다고 판정할 수 있다. UDT 프래그먼트의 이러한 부가적인 부분이 데이터 블럭 프로세싱 컴포넌트(325)에 의해 수신되지 않는 경우, UDT 프래그먼트가 불완전함을 나타내는 신호가 생성될 수 있다.
관련 검사 객체(검사 객체(345-350) 중 하나)에 의해 UDT 프래그먼트의 평가가 완료되면, 위치 추적 컴포넌트(335)는 데이터 블럭 1(310)의 다음 위치에 또다른 UDT 프래그먼트(예를 들어, 전체 프래그먼트, 프래그먼트의 일부 등)가 존재하 는지, 또는 데이터 블럭 1(310)이 소모되었는지를 판정한다. 예를 들어, 데이터 블럭 1(310)이 UDT 프래그먼트의 적어도 또다른 부분을 포함하는 경우, 프래그먼트 타입 검출기(330) 및 검사 객체 활성화기(340)가 다시 이용되어 검사 객체(345-350)의 집합으로부터 적합한 검사 객체를 결정하며, 검사 객체는 UDT 프래그먼트를 평가하기 위해 이용된다. 대안적으로, 위치 추적 컴포넌트(335)가 데이터 블럭 1(310)이 소모되었음을 나타내는 경우, 데이터 블럭 프로세싱 컴포넌트(325)에 의해 데이터 블럭 1(310)이 폐기되고, 또다른 데이터 블럭 2(315)가 스트림의 일부인 경우 후속 데이터 블럭 2(315)가 수신 및 프로세싱된다. 일례에 따라, 프래그먼트 스트리밍 검사기(305)는 데이터 블럭들(310-320)의 스트림의 끝을 나타내는 신호를 수신할 수 있고/거나 스트림의 끝을 식별할 수 있다. 스트림의 끝을 나타내는 신호를 수신하면, 예를 들어, 프래그먼트 스트리밍 검사기(305)는 에러를 생성할 수 있고/거나(예를 들어, 마지막 UDT 프래그먼트가 불완전한 경우 등) 실행을 중지할 수 있다.
도 4는 본 발명의 양상에 따라 최소의 데이터를 저장할 수 있는 스트리밍 검사를 이용하여 UDT 프래그먼트의 유효성을 평가하는 시스템(400)을 도시한다. 시스템(400)은 데이터 블럭들(410, 415, 420)(예를 들어, 데이터 페이지, 데이터 패킷 등)의 스트림을 수신 및 분석하여 UDT 프래그먼트 일관성 검사 결과를 생성하는 프래그먼트 스트리밍 검사기(405)를 포함한다. 데이터 블럭(410-420)은 여러 UDT 프래그먼트를 포함할 수 있고, 그것은 다양한 크기를 가질 수 있다. 부가적으로, UDT 프래그먼트는 데이터 블럭의 부분(예를 들어, 데이터 블럭 1(410)의 부분) 내 에 포함될 수 있고, 첫번째 데이터 블럭(예를 들어, 데이터 블럭 1(410))의 부분인 섹션, 및 두번째 데이터 블럭(예를 들어, 데이터 블럭 2(415))의 부분인 섹션을 가질 수 있으며, 또는 임의의 수의 데이터 블럭(410-420)의 부분으로서 포함될 수 있다.
프래그먼트 스트리밍 검사기(405)는 또한 데이터 블럭 프로세싱 컴포넌트(425), 임의의 수의 검사 객체(430), 및 데이터 스토어(435)를 포함한다. 데이터 블럭 프로세싱 컴포넌트(425)는 데이터 블럭들(410-420)의 인커밍 스트림을 수신 및 프로세싱한다. 데이터 블럭 프로세싱 컴포넌트(425)는 데이터 블럭(예를 들어, 데이터 블럭 1(410)) 내의 현재의 위치를 추적하고, 그 현재의 위치에 있는 UDT 프래그먼트의 타입을 판정할 수 있다. 부가적으로, UDT 프래그먼트 타입에 특유한 적합한 검사 객체(430)를 시작하기 위하여 프래그먼트 타입 정보가 이용될 수 있다. 데이터 블럭 프로세싱 컴포넌트(425)는 에러가 발견되거나 데이터 블럭(예를 들어, 데이터 블럭 1(410))이 소모될 때까지 추적, 프래그먼트 타입 판정, 및 관련 검사 객체(430) 활성화를 반복할 수 있다. 데이터 블럭 프로세싱 컴포넌트(425)는 프래그먼트 타입 검출기(330)(도 3), 위치 추적 컴포넌트(335)(도 3), 및/또는 검사 객체 활성화기(340)(도 3)를 포함할 수 있음을 잘 알아야 한다.
검사 객체(들)(430)는 데이터 블럭 프로세싱 컴포넌트(425)를 통해 지시될 때 특정 UDT 프래그먼트를 검사하기 위해 이용된다. 일례에 따라, 데이터 블럭 프로세싱 컴포넌트(425)에 의해 데이터 블럭들(410-420)의 스트림이 수신 및 프로세싱되고 있을 때, 검사 객체(들)(430)는 유효하지 않은 UDT 프래그먼트 구조를 식별 할 수 있다. 에러 검출 시(예를 들어, 데이터 블럭 전체(410-420)를 구체화하지 않고서), 검사 객체(들)(430)는 UDT 프래그먼트가 에러를 포함함을 나타내는 신호를 제공할 수 있다. 예를 들어, 검사 객체(들)(430)에 의해 이와 같이 판정되면, 데이터 블럭 프로세싱 컴포넌트(425)는 에러를 포함하는 특정 데이터 블럭(410-420) 및/또는 UDT 프래그먼트의 프로세싱을 멈출 수 있다.
검사 객체(들)(430)는 부가적으로 UDT 프래그먼트 검사의 진행상황을 추적할 수 있다. 따라서, 특정 검사 객체(430)는 예를 들어 둘 모두 유효성이 확인되어야 하는 두 개의 단일 바이트 값을 나타내는 2바이트의 데이터를 갖는 고정 포맷을 갖는 데이터 타입에 관련될 수 있다. 이 예에 따르면, 검사 객체(430)는 예를 들어 한 바이트에 대한 검사가 진행되었고, 아직 에러가 있는지를 밝혀야 함을 식별할 수 있다. 식별된 진행상황(예를 들어, 유효성을 확인할 또다른 바이트 값이 남아있음)이 데이터 스토어(435)에 저장될 수 있으며, 데이터 블럭 프로세싱 컴포넌트(425)에 제공된다(예를 들어, 후속하는 데이터 블럭들(410-420)이 UDT 프래그먼트의 나머지를 포함해야 함을 알리기 위해). 따라서 지금까지 프로세싱된 바이트 값이 저장될 필요가 없음을 유의해야 한다.
또다른 예로서, 데이터 타입은 스트링 길이를 나타내는 정수 값을 포함하는 고정 포맷을 가질 수 있고, 스트링의 마지막 문자는 특정 값(예를 들어, '*')을 포함해야 한다. 정수 값이 프로세싱되었으면, 검사 객체(430)는 스트링의 끝에 있는 문자가 검사될 것이라는 것을 안다. 스킵된 데이터의 양이 스트링의 길이로 저장된다. 검사 객체(430)는 데이터 블럭(예를 들어, 데이터 블럭 1(410))의 끝까지 읽고, 얼마나 더 많은 바이트의 스트링이 읽혀져야 최종 문자에 도달하는지를 추적한다. 따라서, 지금까지 프로세싱된 전체 스트링을 저장하는 것과 대조적으로, 아직 읽혀져야 할 스트링 길이 및 바이트의 수가 데이터 스토어(435)에 저장될 수 있다. 다음 데이터 블럭(예를 들어, 데이터 블럭 2(415))이 수신되어 검사 객체(430)에 전달되면, 스트링의 최종 문자에 도달하여 유효성을 확인할 때까지 계속하여 읽는다. 따라서, 전체 프래그먼트가 완전히 구체화될 필요가 없기 때문에, 기존의 기술에 비하여 저장량이 감소된다.
검사 객체(들)(430)는 또한 UDT 프래그먼트의 나머지를 검사하는 데에 필수적인 임의의 데이터를 데이터 스토어(435)에 저장할 수 있다. 일례에 따르면, 데이터 블럭 프로세싱 컴포넌트(425)는 데이터 블럭(예를 들어, 데이터 블럭 1(410))이 4바이트 정수인 UDT 프래그먼트를 포함한다고 판정할 수 있다(예를 들어, 프래그먼트 타입 검출기(330)(도 3)를 통해). 데이터 블럭 프로세싱 컴포넌트(425)는 특히 정수 타입 프래그먼트를 검사하는 관련 검사 객체(430)를 활성화할 수 있다(예를 들어, 검사 객체 활성화기(340)(도 3)를 통해). 활성화된 검사 객체(430)는 임의의 에러의 존재에 대해 UDT 프래그먼트를 평가하고, 동시에 평가의 진행상황을 추적할 수 있다. 정수를 이루는 총 4바이트로부터 1바이트만이 읽혀지고 데이터 블럭(예를 들어, 데이터 블럭 1(410))의 끝에 도달한 경우, 활성화된 검사 객체(430)는 데이터 스토어(435)에 진행상황(예를 들어, 지금까지 단일 바이트가 읽혔음)을 저장할 수 있다. 부가적으로, 읽혀진 1바이트에 관련된 메타데이터가 데이터 스토어(435)에 저장될 수 있다(예를 들어, 1바이트가 읽혀졌고, 정수 값이 인스 턴스화 및 유효성 확인될 수 있기 전에 3바이트가 더 읽혀져야 함). 다음 데이터 블럭(예를 들어, 데이터 블럭 2(415))이 프로세싱될 때, 저장된 메타데이터가 데이터 스토어(435)로부터 획득되어 나머지 3바이트를 읽을 때 이용될 수 있다. 이들이 읽혀지면, 정수를 이루는 모든 4바이트가 이용가능하며, 인스턴스화 및 유효성 확인될 수 있다. 또다른 예에 따르면, 검사 객체(들)(430)가 UDT 프래그먼트를 분석하는 것과 동시에, 구조의 일부를 기술하는 메타데이터가 데이터 스토어(435)에 저장될 수 있다.
예를 들어, 데이터 스토어(435)는 휘발성 메모리 또는 비휘발성 메모리일 수 있고, 또는 휘발성 메모리 및 비휘발성 메모리 둘 모두 포함할 수 있다. 제한을 가하지 않는 예로서, 비휘발성 메모리는 ROM, 프로그래밍가능한 ROM(PROM), 전기적으로 프로그래밍가능한 ROM(EPROM), 전기적으로 소거가능한 ROM(EEPROM), 또는 플래시 메모리를 포함할 수 있다. 휘발성 메모리는 외장 캐시 메모리로 동작하는 RAM을 포함할 수 있다. 제한을 가하지 않는 예로서, RAM은 동기식 RAM(SRAM), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 더블 데이터율 SDRAM(DDR SDRAM), 강화된 SDRAM(ESDRAM), 싱크링크 DRAM(SLDRAM), 및 다이렉트 램버스 RAM(DRRAM)과 같은 다양한 형태로 이용가능하다. 본 발명의 시스템 및 방법의 데이터 스토어(435)는 이들 및 임의의 다른 적합한 타입의 메모리를 포함하도록 의도되며, 이들로 제한되지는 않는다. 본 발명은 데이터 스토어(435)가 도시된 바와 같이 프래그먼트 스트리밍 검사기(405)의 일부, 검사 객체(들)(435)의 일부, 개별적인 컴포넌트, 또는 이들의 조합일 수 있다고 생각한다. 부가적으로, 예를 들어, 데이터 스토어(435)는 하드 디스크에 저장되고 실행 시 메모리에 로드되는 파일 및/또는 데이터베이스를 포함할 수 있다.
도 5를 참조하면, 본 발명의 양상에 따라 대응하는 UDT 프래그먼트 타입을 평가하기 위해 이용될 수 있는 검사 객체를 생성하는 시스템(500)이 도시된다. 시스템(500)은 여러 검사 객체(들)(510)를 더 포함하는 프래그먼트 스트리밍 검사기(505)를 포함한다. 검사 객체(들)(510) 각각은 상기 기술된 바와 같이 대응하는 UDT 프래그먼트 타입을 평가하기 위해 이용된다. 본 발명은 임의의 수의 검사 객체(들)(510)의 사용을 고려한다.
시스템(500)은 부가적으로 새로운 프래그먼트 타입이 도입되는 경우 프래그먼트 스트리밍 검사기(505)의 확장성을 전체적으로 가능하게 하는 검사 객체 생성기(515)를 포함한다. 검사 객체 생성기(515)는 새로운 UDT 프래그먼트 타입(예를 들어, 대응하는 검사 객체가 이전에 검사 객체(들)(510)의 집합에 존재하지 않았던 UDT 프래그먼트 타입)에 대응하는 새로운 검사 객체를 생성할 수 있고, 그것은 검사 객체(들)(510)의 기존의 집합에 추가될 수 있다. 따라서, 프래그먼트 스트리밍 검사기(505)가 새로운 타입을 갖는 UDT 프래그먼트를 평가할 때, 검사 객체 생성기(515)를 통해 생성된 새로운 검사 객체가 그 프래그먼트를 평가하기 위해 이용된다. 검사 객체 생성기(515)는 새로운 프래그먼트 타입이 도입될 때 자동으로 새로운 검사 객체를 생성할 수 있다. 대안적으로, 사용자는 새로운 검사 객체를 생성하기 위한 정보를 제공할 수 있다.
도 6-8은 본 발명에 따른 방법을 나타낸다. 설명의 단순화를 위해, 방법은 일련의 동작들로 도시 및 기술된다. 본 발명이 도시된 동작들, 및/또는 동작들의 순서에 의해 제한되지 않음을 잘 이해하고 알아야 하며, 예를 들어, 동작들은 다양한 순서로 발생할 수 있고/거나 본원에 제공 및 기술되지 않은 다른 동작들과 동시에 발생할 수 있다. 게다가, 본 발명에 따른 방법을 구현하기 위해 도시된 모든 동작들이 필요하지는 않을 수도 있다. 또한, 방법이 대안적으로 상태도 또는 이벤트를 통해 일련의 상호관련된 상태들로서 나타내어질 수 있음을 본 분야에서 숙련된 기술을 가진 자들은 잘 이해하고 알 것이다.
도 6은 본 발명의 양상에 따라 스트리밍 검사를 이용하여 에러에 대해 사용자 정의 타입(UDT) 프래그먼트를 평가하는 것을 용이하게 하는 방법(600)을 나타낸다. 단계(610)에서, UDT 프래그먼트를 포함하는 데이터 블럭이 수신된다. 데이터 블럭은 예를 들어 정보를 저장하기 위해 이용된 데이터 페이지, 및/또는 정보를 전송하기 위해 이용된 데이터 패킷일 수 있다. 예를 들어, 첫번째 데이터 블럭이 수신되어 완전히 프로세싱된 후 두번째 데이터 블럭이 수신 및 프로세싱 되는 등의 방식이 되도록, 데이터 블럭은 한번에 하나씩 수신될 수 있다. 데이터 블럭은 네트워크 연결(예를 들어, 무선 연결, 유선 연결, 이들의 조합 등)을 통해 수신될 수 있다. 대안적으로 또는 부가적으로, 데이터 블럭은 저장장치(예를 들어, 데이터베이스 등)로부터 수신될 수 있다. 단계(620)에서 UDT 프래그먼트 타입이 식별된다. 예로서, UDT 프래그먼트의 시작부분의 타입 워드를 평가함으로써 UDT 프래그먼트 타입이 판정될 수 있지만, 본 발명이 그렇게 제한되지는 않는다. 단계(630)에서, 개개의 검사 객체를 이용하여 UDT 프래그먼트 내의 에러를 식별한다. 각 UDT 프래 그먼트 타입은 그 특정 타입의 스트리밍 데이터의 검사를 용이하게 하는 관련 검사 객체를 가질 수 있다. 부가적으로, 단계(640)에서, 데이터 블럭들이 프로세싱되면, 그들이 폐기될 수 있다. 이것은 전형적으로 UDT 프래그먼트 전체를 메모리에 구체화한 후 저장된 데이터를 에러에 대해 분석하는 기존의 기술과는 다르다.
도 7을 참조하면, 본 발명의 양상에 따라 검사의 진행상황을 평가함으로써 UDT 프래그먼트에 대해 스트리밍 일관성 검사를 수행하는 것을 용이하게 하는 방법(700)을 나타낸다. 단계(710)에서, UDT 프래그먼트를 포함하는 데이터 블럭이 수신된다. 단계(720)에서, UDT 프래그먼트 타입이 식별된다. 예를 들어, 데이터 블럭이 프로세싱되면 각 UDT 프래그먼트의 타입이 판정될 수 있다. 부가적으로, 데이터 블럭에 대한 진행상황이 추적될 수 있다. 단계(730)에서, UDT 프래그먼트가 임의의 에러를 포함하는지를 식별하기 위해 검사 객체들의 집합으로부터 하나의 검사 객체가 이용된다. 검사 객체들의 집합에 있는 각 검사 객체는 특정 UDT 프래그먼트 타입에 지정될 수 있다. 단계(740)에서 UDT 프래그먼트 검사의 진행상황이 추적된다. 단계(750)에서, UDT 프래그먼트에 대한 일관성 검사를 완료하기 위해 이용될 수 있는 메타데이터가 저장된다. 일례에 따르면, UDT 프래그먼트가 부분적으로 첫번째 데이터 블럭 내에 있고, UDT 프래그먼트의 나머지는 두번째 데이터 블럭의 일부인 경우, 첫번째 데이터 블럭과 관련하여 수행된 평가에 관련되는 메타데이터가 저장될 수 있다. 따라서, 실제 열 값을 저장하는 것(기존의 기술에 의해 전형적으로 수행됨)과 대조적으로, UDT 프래그먼트의 구조의 일부를 기술하는 메타데이터가 저장될 수 있다. 단계(760)에서, 데이터 블럭들이 프로세싱되면, 그것들 이 폐기될 수 있다.
도 8은 본 발명의 양상에 따라 UDT 프래그먼트를 에러에 대해 분석하고, 에러의 식별 시 스트리밍 검사를 중지하는 것을 용이하게 하는 방법(800)을 나타낸다. 단계(810)에서, UDT 프래그먼트를 포함하는 데이터 블럭이 수신된다. 단계(820)에서, 수신된 데이터 블럭 내의 UDT 프래그먼트가 검사되어, 프래그먼트 타입이 판정된다. 단계(830)에서, 식별된 UDT 프래그먼트 타입에 관련된 개개의 검사 객체가 이용된다. 단계(840)에서, UDT 프래그먼트가 에러를 포함하는지를 판정한다. 이러한 판정은 예를 들어 UDT 프래그먼트 전체를 구체화하지 않고서 행해질 수 있다. UDT 프래그먼트에서 에러가 식별되는 경우, 단계(850)에서, 스트리밍 검사가 중지될 수 있고, 에러가 식별되었음을 나타내는 에러 플래그가 발행될 수 있다. 이와 달리, 어떠한 에러도 식별되지 않으면, 단계(860)에서 데이터 블럭이 소모되었는지를 판정한다. 데이터 블럭이 소모되지 않았으면, 방법은 다음 UDT 프래그먼트의 타입을 판정하기 위하여 단계(820)로 리턴한다. 그러나, 단계(860)에서 데이터 블럭이 소모된 것으로 판정되면, 단계(870)에서 데이터 블럭이 폐기된다.
본 발명의 다양한 양상을 구현하기 위한 부가적인 문맥을 제공하기 위하여, 도 9-10 및 후술되는 논의는 본 발명의 다양한 양상이 구현될 수 있는 적합한 컴퓨팅 환경에 대한 간략하고 일반적인 설명을 제공하도록 의도된다. 본 발명이 로컬 컴퓨터 및/또는 원격 컴퓨터에서 실행되는 컴퓨터 프로그램의 컴퓨터-실행가능 명령어의 일반적인 문맥으로 상기에 기술되었지만, 본 분야에서 숙련된 기술을 가진 자들은 본 발명이 다른 프로그램 모듈들과의 조합으로도 구현될 수 있음을 인식할 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고/거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다.
게다가, 본 분야에서 숙련된 기술을 가진 자들은 본 발명의 방법이 개인용 컴퓨터, 포켓형 컴퓨팅 장치, 마이크로프로세서-기반 및/또는 프로그래밍가능 가전기기뿐 아니라 단일 프로세서 또는 멀티-프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타 컴퓨터 시스템 구성에서 실행될 수 있으며, 이들 각각은 하나 이상의 관련 장치와 동작가능하게 통신할 수 있음을 잘 알 것이다. 본 발명의 예시된 양상들은 통신 네트워크를 통해 링크되는 원격 프로세싱 장치에 의해 특정 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 그러나, 본 발명의 모든 양상은 아니더라도 몇몇 양상은 독립형 컴퓨터에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및/또는 원격 메모리 저장 장치에 위치될 수 있다.
도 9는 본 발명이 상호작용할 수 있는 예시적인 컴퓨팅 환경(900)의 개략적 블럭도이다. 시스템(900)은 하나 이상의 클라이언트(들)(910)를 포함한다. 클라이언트(들)(910)는 하드웨어 및/또는 소프트웨어일 수 있다(예를 들어, 스레드, 프로세스, 컴퓨팅 장치). 시스템(900)은 또한 하나 이상의 서버(들)(920)를 포함한다. 서버(들)(920)는 하드웨어 및/또는 소프트웨어일 수 있다(예를 들어, 스레드, 프로세스, 컴퓨팅 장치). 서버(920)는 예를 들어 본 발명을 이용함으로써 변환을 수행하기 위해 스레드를 보관할 수 있다.
클라이언트(910)와 서버(920) 사이의 하나의 가능한 통신은 둘 이상의 컴퓨 터 프로세스 사이에 전송되도록 적응된 데이터 패킷의 형태를 가질 수 있다. 시스템(900)은 클라이언트(들)(910)와 서버(들)(920) 사이의 통신을 용이하게 하기 위해 이용될 수 있는 통신 프레임워크(940)를 포함한다. 클라이언트(들)(910)는 클라이언트(들)(910)에 로컬인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 클라이언트 데이터 스토어(들)(950)에 동작가능하게 연결된다. 유사하게, 서버(들)(920)는 서버(920)에 로컬인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 서버 데이터 스토어(들)(930)에 동작가능하게 연결된다.
도 10을 참조하면, 본 발명의 다양한 양상을 구현하기 위한 예시적인 환경(1000)은 컴퓨터(1012)를 포함한다. 컴퓨터(1012)는 프로세싱 유닛(1014), 시스템 메모리(1016) 및 시스템 버스(1018)를 포함한다. 시스템 버스(1018)는 시스템 메모리(1016)를 포함하지만 이것으로 제한되지는 않는 시스템 컴포넌트를 프로세싱 유닛(1014)에 연결한다. 프로세싱 유닛(1014)은 다양한 이용가능한 프로세서 중 임의의 것일 수 있다. 듀얼 마이크로프로세서 및 기타 멀티프로세서 아키텍처 또한 프로세싱 유닛(1014)으로서 이용될 수 있다.
시스템 버스(1018)는 메모리 버스 또는 메모리 제어기, 주변 버스 또는 외부 버스, 및/또는 산업 표준 아키텍처(ISA), 마이크로-채널 아키텍처(MSA), 확장된 ISA(EISA), 지능적 드라이브 전자(IDE), VESA 로컬 버스(VLB), 주변 컴포넌트 인터커넥트(PCI), 카드 버스, USB, 진보된 그래픽 포트(AGP), 개인용 컴퓨터 메모리 카드 국제 협회 버스(PCMCIA), Firewire(IEEE 1394), 및 소형 컴퓨터 시스템 인터페이스(SCSI)를 포함하지만 이들로 제한되지는 않는 다양한 이용가능한 버스 아키텍 처 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 타입의 버스 구조(들) 중 임의의 것일 수 있다.
시스템 메모리(1016)는 휘발성 메모리(1020) 및 비휘발성 메모리(1022)를 포함한다. 시작할 때 등에 컴퓨터(1012) 내의 구성요소들 사이에 정보를 전달하기 위한 기본 루틴을 포함하는 기본 입력/출력 시스템(BIOS)은 비휘발성 메모리(1022)에 저장된다. 제한을 가하지 않는 예로서, 비휘발성 메모리(1022)는 ROM, PROM, EPROM, EEPROM, 또는 플래시 메모리를 포함할 수 있다. 휘발성 메모리(1020)는 위부 캐시 메모리로서 동작하는 RAM을 포함한다. 제한을 가하지 않는 예로서, RAM은 동기식 RAM(SRAM), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 더블 데이터율 SDRAM(DDR SDRAM), 강화된 SDRAM(ESDRAM), 싱크링크 DRAM(SLDRAM) 및 다이렉트 램버스 RAM(DRRAM)과 같은 여러 형태로 이용가능하다.
컴퓨터(1012)는 또한 분리형/비분리형 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 도 10은 예로서 디스크 저장장치(1024)를 도시한다. 디스크 저장장치(1024)는 자기 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, 재즈 드라이브(Jaz drive), 집 드라이브(Zip drive), LS-100 드라이브, 플래시 메모리 카드 또는 메모리 스틱을 포함하지만 이들로 제한되지는 않는다. 또한, 디스크 저장장치(1024)는 저장 매체를 개별적으로 포함할 수 있고, 또는 CD-ROM 장치, CD-R 드라이브, CD-RW 드라이브, 또는 DVD-ROM 드라이브와 같은 광 디스크 드라이브를 포함하지만 이것으로 제한되지는 않는 기타 저장 매체와의 조합으로 포함할 수 있다. 디스크 저장 장치(1024)의 시스템 버스(1018)에의 연결을 용이하게 하기 위하 여, 인터페이스(1026)와 같은 분리형 또는 비분리형 인터페이스가 전형적으로 사용된다.
도 10은 사용자와, 적합한 운영 환경(1000)에 기술된 기본 컴퓨터 자원 사이에 중개자로서 동작하는 소프트웨어를 기술함을 잘 알아야 한다. 그러한 소프트웨어는 운영 시스템(1028)을 포함한다. 디스크 저장장치(1024)에 저장될 수 있는 운영 시스템(1028)은 컴퓨터 시스템(1012)의 자원을 제어 및 할당하기 위해 동작한다. 시스템 어플리케이션(1030)은 시스템 메모리(1016) 또는 디스크 저장장치(1024)에 저장된 프로그램 모듈(1032) 및 프로그램 데이터(1034)를 통해 운영 시스템(1028)에 의한 자원의 관리를 이용한다. 본 발명은 다양한 운영 시스템, 또는 운영 시스템들의 조합으로 구현될 수 있음을 잘 알 것이다.
사용자는 입력 장치(들)(1036)를 통해 컴퓨터(1012)에 명령어 또는 정보를 입력한다. 입력 장치(1036)는 마우스와 같은 포인팅 장치, 트랙볼, 스타일러스, 터치 패드, 키보드, 마이크, 조이스틱, 게임 패드, 위성 디쉬, 스캐너, TV 튜너 카드, 디지털 카메라, 디지털 비디오 카메라, 웹 카메라 등을 포함하지만 이들로 제한되지는 않는다. 이들 및 기타 입력 장치는 인터페이스 포트(들)(1038)를 통해 시스템 버스(1018)를 거쳐 프로세싱 유닛(1014)에 연결한다. 인터페이스 포트(들)(1038)는 예를 들어 직렬 포트, 병렬 포트, 게임 포트 및 USB를 포함한다. 출력 장치(들)(1040)는 입력 장치(들)(1036)와 동일한 타입의 포트 중 몇몇을 사용한다. 따라서, 예를 들어, 컴퓨터(1012)에 입력을 제공하기 위해, 그리고 컴퓨터(1012)로부터 출력 장치(1040)에 정보를 출력하기 위해 USB 포트가 사용될 수 있다. 출력 어댑터(1042)는 출력 장치(1040)들 중에 특수 어댑터를 필요로 하는 모니터, 스피커 및 프린터와 같은 몇몇 출력 장치(1040)가 존재함을 나타내기 위해 제공된다. 출력 어댑터(1042)는 제한을 가하지 않는 예로서 출력 장치(1040)와 시스템 버스(1018) 사이에 연결의 수단을 제공하는 비디오 및 사운드 카드를 포함한다. 기타 장치, 및/또는 장치들의 시스템은 원격 컴퓨터(들)(1044)와 같이 입력 및 출력 기능 둘다 제공함을 유의해야 한다.
컴퓨터(1012)는 원격 컴퓨터(들)(1044)와 같은 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(들)(1044)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 워크스테이션, 마이크로프로세서 기반 기기, 피어 장치, 또는 기타 일반적인 네트워크 노드 등일 수 있으며, 전형적으로 컴퓨터(1012)에 관련하여 기술된 구성요소 중 다수 또는 모두를 포함한다. 간략화를 위하여, 원격 컴퓨터(들)(1044)와 함께 메모리 저장 장치(1046)만이 도시된다. 원격 컴퓨터(들)(1044)는 네트워크 인터페이스(1048)를 통해 컴퓨터(1012)에 논리적으로 연결되고, 그 후 통신 연결(1050)을 통해 물리적으로 연결된다. 네트워크 인터페이스(1048)는 근거리 통신망(LAN) 및 광역 통신망(WAN)과 같은 유선 및/또는 무선 통신 네트워크를 포함한다. LAN 기술은 FDDI(Fiber Distributed Data Interface), CDDI(Copper Distributed Data Interface), 이더넷, 토큰 링 등을 포함한다. WAN 기술은 점대점 링크, ISDN(Integrated Services Digital Network) 및 그 변형과 같은 회선 교환망, 패킷 교환망 및 디지털 가입자 라인(DSL)을 포함하지만 이들로 제한되지는 않는다.
통신 연결(들)(1050)은 네트워크 인터페이스(1048)를 버스(1018)에 연결하기 위해 이용된 하드웨어/소프트웨어를 일컫는다. 설명을 명확히 하기 위하여 통신 연결(1050)이 컴퓨터(1012) 내에 도시되지만, 컴퓨터(1012) 외부에 존재할 수도 있다. 네트워크 인터페이스(1048)에의 연결에 필수적인 하드웨어/소프트웨어는 단지 예로서 보통 전화 등급 모뎀, 케이블 모뎀 및 DSL 모뎀을 포함하는 모뎀, ISDN 어댑터 및 이더넷 카드와 같은 내부 및 외부 기술을 포함한다.
상기 기술된 것은 본 발명의 예들을 포함한다. 물론, 본 발명을 기술하기 위한 컴포넌트 또는 방법의 생각할 수 있는 모든 조합을 기술하는 것은 불가능하지만, 본 분야에서 숙련된 기술을 가진 자들은 본 발명의 여러 다른 조합 및 순열이 가능함을 인식할 수 있다. 따라서, 본 발명은 첨부된 특허청구범위의 취지 및 범위 내에 속하는 그러한 모든 변경, 수정 및 변형을 포함하도록 의도된다.
특히 상기 기술된 컴포넌트, 장치, 회로, 시스템 등에 의해 수행된 다양한 기능에 관하여, 그러한 컴포넌트들을 기술하기 위해 사용된 용어들("수단"에의 참조를 포함함)은 달리 알려지지 않으면 개시된 구조에 구조적으로 동일하지는 않더라고, 기술된 컴포넌트의 명기된 기능을 수행하는 임의의 컴포넌트(예를 들어, 기능적 등가물)에 대응하도록 의도되며, 그것은 본원에 기술된 본 발명의 예시적인 양상의 기능을 수행한다. 이러한 점에서, 본 발명은 또한 시스템뿐 아니라 본 발명의 다양한 방법의 동작 및/또는 이벤트를 수행하기 위한 컴퓨터-실행가능 명령어들을 갖는 컴퓨터-판독가능 매체도 포함함을 인식할 것이다.
또한, 본 발명의 특정 특성이 여러 구현 중 단지 하나의 구현에 관하여 개시 되었을 수 있지만, 임의의 주어진 또는 특정 어플리케이션에 대해 바람직할 수 있고 이점이 있을 수 있기 때문에, 그러한 특성이 다른 구현의 하나 이상의 기타 특성과 결합될 수 있다. 게다가, "포함한다(include)" 및 "포함하는(including)"이라는 용어 및 이들의 변형이 상세한 설명 또는 특허청구범위에서 사용되는 한, 이러한 용어들은 "포함하는(comprising)"이란 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
데이터 전체를 복사하지 않고서 데이터의 스트리밍 검사를 통해 사용자 정의 타입(UDT) 프래그먼트의 일관성을 분석 및 확인할 수 있게 된다.

Claims (20)

  1. 에러에 대해 사용자 정의 타입(UDT) 프래그먼트를 평가하는 것을 용이하게 하는 컴퓨터 구현 시스템으로서,
    UDT 프래그먼트들을 포함하는 데이터 블럭들의 스트림을 수신하고, 상기 UDT 프래그먼트들 각각에 대한 프래그먼트 타입을 식별하며, 상기 데이터 블럭들이 프로세싱되면 상기 데이터 블럭들을 폐기하는 데이터 블럭 프로세싱 컴포넌트, 및
    상기 식별된 대응하는 프래그먼트 타입에 부분적으로 기초하여 상기 UDT 프래그먼트들을 검사하고, 에러에 대한 표시를 생성하는 검사 객체(check object)
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 검사 객체는 상기 UDT 프래그먼트들을 완전히 구체화(materializing)하지 않고서 상기 UDT 프래그먼트들을 검사하는 시스템.
  3. 제1항에 있어서,
    적어도 하나의 UDT 프래그먼트는 다른 데이터 블럭들 사이에 분리되는 시스템.
  4. 제1항에 있어서,
    새로 제공된 프래그먼트 타입에 대응하는 제2 검사 객체를 생성하는 컴포넌트를 더 포함하는 시스템.
  5. 제1항에 있어서,
    상기 검사 객체는 상기 UDT 프래그먼트들 중 한 UDT 프래그먼트의 섹션의 구조에 관련된 메타데이터를 더 저장하며, 상기 메타데이터를 이용하여 상기 UDT 프래그먼트들 중 상기 한 UDT 프래그먼트의 나머지를 계속하여 검사하는 시스템.
  6. 제1항에 있어서,
    상기 검사 객체는 상기 UDT 프래그먼트가 검사되는 정도를 결정하며, 상기 검사를 완료하는 데에 필수적인 데이터를 저장하는 시스템.
  7. 제1항에 있어서,
    상기 UDT 프래그먼트들 각각의 시작부분에 있는 타입 워드(type word)를 분석함으로써 상기 UDT 프래그먼트들 각각에 대한 프래그먼트 타입을 식별하는 프래그먼트 타입 검출기(fragment type detector)를 더 포함하는 시스템.
  8. 제1항에 있어서,
    상기 데이터 블럭들 각각에 대한 일관성 검사(consistency check)의 진행상황을 추적하는 위치 추적 컴포넌트(position tracking component)를 더 포함하는 시스템.
  9. 제8항에 있어서,
    상기 위치 추적 컴포넌트는 특정 데이터 블럭이 소모되었는지(exhausted)를 더 판정하는 시스템.
  10. 제1항에 있어서,
    특정 프래그먼트 타입을 분석하기 위하여 특정 검사 객체를 시작시키는 검사 객체 활성화기(check object activator)를 더 포함하는 시스템.
  11. 제1항에 있어서,
    상기 데이터 블럭 프로세싱 컴포넌트는 상기 데이터 블럭들의 스트림을 순차적으로 수신 및 프로세싱하는 시스템.
  12. 사용자 정의 타입(UDT)의 일관성 검사를 용이하게 하기 위한 컴퓨터 구현 방법으로서,
    UDT 프래그먼트들을 포함하는 데이터 블럭들을 수신하는 단계,
    상기 UDT 프래그먼트들의 타입들을 식별하는 단계,
    개개의 검사 객체를 이용하여 상기 UDT 프래그먼트들 중 임의의 UDT 프래그먼트가 에러를 포함하는지를 판정하는 단계, 및
    상기 데이터 블럭들이 프로세싱되면 상기 데이터 블럭들을 폐기하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    프래그먼트 검사의 진행상황을 추적하고 상기 프래그먼트 검사를 완료하는 데에 필수적인 데이터를 저장하는 단계를 더 포함하는 방법.
  14. 제12항에 있어서,
    UDT 메타데이터에 관련된 값의 일부를 저장하고 다음 데이터 블럭으로부터 상기 값의 나머지를 추출하는 단계를 더 포함하는 방법.
  15. 제12항에 있어서,
    상기 데이터 블럭들의 부분집합을 공통 UDT에 대응하는 상기 UDT 프래그먼트들의 함수로서 관련시키는 단계를 더 포함하는 방법.
  16. 제12항에 있어서,
    특정 검사 객체를 지정하여 특정 프래그먼트 타입을 검사하는 단계를 더 포함하는 방법.
  17. 제12항에 있어서,
    상기 UDT 프래그먼트들에 관련된 공통 구조적 양상 및 고유 구조적 양상들을 식별하는 단계를 더 포함하는 방법.
  18. 제12항에 있어서,
    상기 데이터 블럭들에 저장된 데이터를 순차적으로 프로세싱하는 단계를 더 포함하는 방법.
  19. 에러에 대해 데이터 구조를 분석하는 컴퓨터 구현 시스템으로서,
    데이터 구조를 포함하는 데이터 블럭들의 스트림을 수신하기 위한 수단,
    데이터 구조의 다른 타입들을 식별하기 위한 수단,
    개개의 검사 객체들을 이용하여 상기 데이터 구조 내에 포함된 에러를 식별하기 위한 수단, 및
    상기 데이터 블럭들이 프로세싱되면 상기 스트림으로부터 상기 데이터 블럭들을 폐기하기 위한 수단
    을 포함하는 시스템.
  20. 제19항에 있어서,
    상기 데이터 구조의 일부를 저장하지 않고서 상기 에러의 존재를 발견하면, 상기 식별된 에러에 관련된 표시를 제공하기 위한 수단을 더 포함하는 시스템.
KR1020060011045A 2005-03-28 2006-02-06 사용자 정의 타입(udt)의 데이터 포맷에 대한 스트리밍 검사를 수행하기 위한 시스템 및 방법 KR101169099B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/091,080 2005-03-28
US11/091,080 US7571153B2 (en) 2005-03-28 2005-03-28 Systems and methods for performing streaming checks on data format for UDTs

Publications (2)

Publication Number Publication Date
KR20060103827A true KR20060103827A (ko) 2006-10-04
KR101169099B1 KR101169099B1 (ko) 2012-07-26

Family

ID=36955233

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060011045A KR101169099B1 (ko) 2005-03-28 2006-02-06 사용자 정의 타입(udt)의 데이터 포맷에 대한 스트리밍 검사를 수행하기 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US7571153B2 (ko)
EP (1) EP1710718B1 (ko)
JP (1) JP4989086B2 (ko)
KR (1) KR101169099B1 (ko)
CN (1) CN1841378B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512522B2 (en) * 2007-02-28 2009-03-31 International Business Machines Corporation Methods and apparatus for assessing health of memory utilization of a program
US20140129526A1 (en) * 2012-11-06 2014-05-08 International Business Machines Corporation Verifying data structure consistency across computing environments
GB2525774A (en) 2013-02-28 2015-11-04 Murata Manufacturing Co Semiconductor device
JP5843045B2 (ja) 2013-02-28 2016-01-13 株式会社村田製作所 半導体装置
US20150019451A1 (en) * 2013-07-09 2015-01-15 Sap Ag Decision basis for benefits program

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101402A (en) * 1988-05-24 1992-03-31 Digital Equipment Corporation Apparatus and method for realtime monitoring of network sessions in a local area network
US6233256B1 (en) * 1996-03-13 2001-05-15 Sarnoff Corporation Method and apparatus for analyzing and monitoring packet streams
JPH1040179A (ja) 1996-07-18 1998-02-13 Sumitomo Metal Ind Ltd メッセージ変換方法およびその変換方法に使用する階層的データ構造体
WO2000079415A2 (en) 1999-06-18 2000-12-28 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
US6782394B1 (en) * 1999-11-22 2004-08-24 Oracle International Corporation Representing object metadata in a relational database system
US6594651B2 (en) * 1999-12-22 2003-07-15 Ncr Corporation Method and apparatus for parallel execution of SQL-from within user defined functions
US6708186B1 (en) * 2000-08-14 2004-03-16 Oracle International Corporation Aggregating and manipulating dictionary metadata in a database system
US6732354B2 (en) * 2002-04-23 2004-05-04 Quicksilver Technology, Inc. Method, system and software for programming reconfigurable hardware
US20040006575A1 (en) * 2002-04-29 2004-01-08 Visharam Mohammed Zubair Method and apparatus for supporting advanced coding formats in media files
ES2297178T3 (es) * 2002-07-23 2008-05-01 Samsung Electronics Co., Ltd. Estructura de indice de metadatos, metodo para suministrar indices de metadatos, metodo de busqueda de metadatos y dispositivo que utiliza dichos indices de metadatos.
US7092933B1 (en) * 2002-12-17 2006-08-15 Ncr Corporation Supporting user-defined datatypes
US7103811B2 (en) * 2002-12-23 2006-09-05 Sun Microsystems, Inc Mechanisms for detecting silent errors in streaming media devices
US7168063B2 (en) * 2003-06-10 2007-01-23 Microsoft Corporation Systems and methods for employing tagged types in a dynamic runtime environment
EP1665126A2 (en) * 2003-08-19 2006-06-07 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method and apparatus for automatic online detection and classification of anomalous objects in a data stream
US7284010B2 (en) * 2003-10-23 2007-10-16 Microsoft Corporation System and method for storing and retrieving a field of a user defined type outside of a database store in which the type is defined
US7213015B1 (en) * 2003-12-31 2007-05-01 Ncr Corporation Storing and delivering program code for manipulation of a user-defined data type
US7440966B2 (en) * 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US20050210027A1 (en) * 2004-03-16 2005-09-22 International Business Machines Corporation Methods and apparatus for data stream clustering for abnormality monitoring
US20050234986A1 (en) * 2004-04-09 2005-10-20 Microsoft Corporation Systems and methods for fragment-based serialization
US7548901B2 (en) * 2004-06-29 2009-06-16 Microsoft Corporation System and method for delayed fetching of designated members of a user defined type

Also Published As

Publication number Publication date
US7571153B2 (en) 2009-08-04
EP1710718A3 (en) 2009-12-23
JP4989086B2 (ja) 2012-08-01
EP1710718B1 (en) 2017-09-06
US20060218144A1 (en) 2006-09-28
JP2006277742A (ja) 2006-10-12
KR101169099B1 (ko) 2012-07-26
EP1710718A2 (en) 2006-10-11
CN1841378B (zh) 2012-06-20
CN1841378A (zh) 2006-10-04

Similar Documents

Publication Publication Date Title
US10169337B2 (en) Converting data into natural language form
Breitinger et al. Approximate matching: definition and terminology
JP4829794B2 (ja) 表現式のグループ化および評価
KR101204128B1 (ko) 고성능의 구조적 데이터 변환을 위한 하드웨어/소프트웨어파티션
JP4942489B2 (ja) 構造化されたデータ変換用デバイス
KR20160141872A (ko) 레코드 포맷 정보의 관리
WO2017028789A1 (zh) 网络攻击检测方法和设备
US6915344B1 (en) Server stress-testing response verification
WO2020237872A1 (zh) 语义分析模型准确度的校验方法、装置、存储介质及设备
KR101169099B1 (ko) 사용자 정의 타입(udt)의 데이터 포맷에 대한 스트리밍 검사를 수행하기 위한 시스템 및 방법
US11385988B2 (en) System and method to improve results of a static code analysis based on the probability of a true error
KR20230130089A (ko) 취약한 소프트웨어 패키지의 선택 및 발견을 위한 시스템및 방법
CN115066674A (zh) 使用源代码元素的数值数组表示来评估源代码的方法
Zhuang et al. Just-in-time defect prediction based on AST change embedding
Jiang et al. Scalable processing of contemporary semi-structured data on commodity parallel processors-a compilation-based approach
KR102081867B1 (ko) 역 색인 구성 방법, 역 색인을 이용한 유사 데이터 검색 방법 및 장치
CN111427870B (zh) 一种资源管理方法、装置及设备
US20230259699A1 (en) Method and apparatus for tracking the provenance of information
CN108920700A (zh) 一种虚假图片识别方法及装置
US20230100418A1 (en) Metadata-driven data ingestion
Longo Advanced data management on Distributed Ledgers: design and implementation of a Telegram BOT as a front end for a IOTA cryptocurrency wallet.
Rochester Clojure data analysis cookbook
Becker Analyzing a Computer’s Ability to Monitor Data Provenance Events
CN117540711A (zh) 文档缺陷检测方法
CN116450416A (zh) 软件测试用例的冗余校验方法、装置、电子设备及介质

Legal Events

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

Payment date: 20160616

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 8