KR20050000342A - 분산 쿼리 엔진 파이프라인 방법 및 시스템 - Google Patents

분산 쿼리 엔진 파이프라인 방법 및 시스템 Download PDF

Info

Publication number
KR20050000342A
KR20050000342A KR1020040046668A KR20040046668A KR20050000342A KR 20050000342 A KR20050000342 A KR 20050000342A KR 1020040046668 A KR1020040046668 A KR 1020040046668A KR 20040046668 A KR20040046668 A KR 20040046668A KR 20050000342 A KR20050000342 A KR 20050000342A
Authority
KR
South Korea
Prior art keywords
query
engine
execution engine
execution
compiled
Prior art date
Application number
KR1020040046668A
Other languages
English (en)
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 KR20050000342A publication Critical patent/KR20050000342A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8358Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • 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/99933Query processing, i.e. searching
    • 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
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

분산 쿼리 엔진 파이프라인 아키텍쳐는 입력 쿼리를 받아들이는 캐스캐이드된 분석 엔진들을 포함하고, 각각은 실행 엔진으로 패스될 수 있는 입력 쿼리의 일부를 식별한다. 각 스테이지는 입력 쿼리를 재작성하여 식별된 부분을 제거하고 그것을 위치 보유자로 대체한다. 재작성된 쿼리는 캐스캐이드의 후속 분석 엔진으로 전송된다. 각 엔진은 그것이 식별한 부분을 컴파일하여 실행 엔진이 그 부분을 처리할 수 있도록 한다. 실행은 최종 분석 엔진에 의해 컴파일된 쿼리의 부분으로부터 진행하는 것이 바람직하다. 최종 분석 엔진에 대응하는 실행 엔진은 쿼리를 실행하고 선행 부분으로부터의 데이터를 위해 캐스캐이드의 후속 고차 실행 엔진에 대하여 호출을 한다. 프로세스는 입력 쿼리로부터의 결과들이 충분히 어셈블링될 때까지 계속된다.

Description

분산 쿼리 엔진 파이프라인 방법 및 시스템{DISTRIBUTED QUERY ENGINE PIPELINE METHOD AND SYSTEM}
본 발명은 일반적으로 데이터 소스들에 대한 소프트웨어 쿼리 분야에 관한 것으로, 특히 상이한 데이터 모델들을 포함하는 데이터 소스들에 대한 분산 쿼리에 관한 것이다.
이질적인 데이터 소스들에 대한 쿼리는 상이한 데이터 모델들을 갖는 데이터 소스들에 대한 탐색을 수행하는 도전이다. 또한 이 도전은 이종의 데이터 소스들이 어디에서 동일한 데이터 모델들을 갖는지를 제시한다. 다수의 데이터 모델들을 갖는 다수의 데이터 소스들에 대해 쿼리하기 위해, 통상적으로 다수의 쿼리 실행 엔진들이 요구된다. 입력 쿼리는 통상적으로 어떤 첨부된 실행 엔진이 원래의 입력 쿼리중 어느 부분을 획득해야하는 지를 연역적으로 판정하는 하나의 모놀리식 프로세서에 의해 분할된다. 따라서 원래의 쿼리는 모놀리식하게 처리되어 쿼리를 별개의 실행 부분들로 분할한다. 각 실행 엔진은 특정 데이터 모델 또는 데이터 소스에 대응한다. 그 후 개별적인 쿼리 실행 엔진들은 쿼리의 일부를 실행하고 그 결과들을 모놀리식 프로세서로 리턴시킨다. 그 후 모놀리식 프로세서는 각 쿼리 실행 엔진들로부터의 개별적인 쿼리 결과들을 결합하고 그들을 함께 배열하여 완전한 쿼리 결과들의 세트를 형성하는 태스크를 갖는다.
이질적인 데이터 쿼리에 대한 이 접근법은 모든 가능한 데이터 소스들을 식별 및 조작할 수 있는 모놀리식 프로세서를 요구하는 단점을 갖는다. 이것은 상이한 데이터 소스들이 그 데이터와 상호작용하기 위해 매우 상이한 API의 모델들을 갖기 때문에 불길한 태스크이며, 모든 데이터 모듈들을 알고 있어 모든 가능한 데이터 소스들을 조작할 수 있는 모놀리식 프로세서를 구축하는 것은 일반적으로 가능하거나 바람직하지 않다. 예를 들어, SQL 데이터베이스 또는 XML 파일에 대해 쿼리하고자 한다면, XML 파일과 상호작용하는 유일한 인터페이스는 DOM(Document Object Model)이고, 데이터베이스에 대한 유일한 인터페이스는 SQL 커맨드들이다. 그 결과, 데이터 베이스 및 XML 파일과 협력할 상이한 코드가 요구될 것이다. 부가적인 데이터 모델 타입들을 그 분야에서 중요하게 여겨지는 데이터 타입들로서 다룰 수 있는 모놀리식 프로세서를 구축하고자 시도하는 경우에 문제는 악화된다. 이러한 조건들 하에서, 모놀리식 엔진 능력은 요건들을 변경함으로써 매우 증가될 수 있고, 임의의 부가적인 데이터 모델 타입들이 더해지거나 현존하는 데이터 모델 타입이 상당히 변경되는 경우에 재설계를 요구할 수 있다.
이질적인 데이터 소스 쿼리 메카니즘을 생성할때의 추가적인 문제점은 가상 쿼리이다. 데이터 소스가 하나의 데이터 모델 타입으로 용이하게 쿼리될 수 있다면, 제2 데이터 모델 쿼리 언어로 쿼리를 구성하는 것이 바람직하고, 그 후 하나의 데이터 모델 쿼리 언어 타입으로부터의 변환이 필요할 수 있다. 이 필요성은 하드웨어 및 소프트웨어 모델들의 다수의 세트들 및 대응하는 수개의 옵티마이저들을 요구하는 다수의 쿼리 언어 변환들로 하여금 효과적인 쿼리들의 코딩을 보장하게 할 수 있다.
따라서, 쿼리 언어 요건들을 변경하기 위해 적용되는 모놀리식 쿼리 프로세서를 설계 및 구축하는 문제점을 회피하는 아키텍쳐에 대한 필요성이 존재한다. 또한, 다수의 쿼리 언어들을 한가지 형태에서 다른 형태로 변환하는 것과 관련된 문제점들을 회피하는 아키텍쳐의 필요성이 있다. 본 발명은 상기한 필요성들을 다루고, 쿼리 환경 필요성들을 변경하는 것에 적용가능한 혁신적인 아키텍쳐에 의해 상기 필요성들을 해결한다.
본 발명은 분산 쿼리 엔진 파이프라인을 이용함으로써 다수의 데이터 모델 타입들을 갖는 다수의 데이터 소스들에 대한 쿼리의 문제점을 다루고 있다. 파이프라인은 모놀리식 프로세서를 사용하여 입력 쿼리를 분할하고, 각각의 부분들을 특정 실행 엔진들에 분배한 후 그 결과들을 결합하여 입력 쿼리 결과들을 형성하는 일반적인 해결책을 통해 이점을 제공한다. 본 발명은 모놀리식 프로세서 없이 캐스캐이드된 분석 엔진들을 이용하여, 특정 실행 엔진들 상에서 컴파일되고 실행될 수 있는 입력 쿼리의 부분들을 식별 및 추출한다.
본 발명의 일 실시예에서, 분석 엔진은 실행 엔진 타입과 관련되며, 캐스캐이드되더라도, 각 분석 엔진은 서로 독립적으로 동작한다. 각 분석 엔진은 2개의 출력: 즉, 엔진이 실행 엔진에 대응하는 것으로서 식별되는 컴파일된 부분, 및 식별된 부분이 제거되고 위치 보유자(placeholder)로 대체되는 재작성된 쿼리를 갖는다. 캐스캐이드에서 후속하는 분석 엔진은 재작성된 쿼리를 수신하고, 그 실행가능한 부분을 식별하고, 그것을 또 다른 위치 보유자로 대체하고, 양 위치 보유자들에 따라 2번 재작성된 쿼리를 후속 스테이지로 내려보낸다.
쿼리를 처리하는 실행 상태는 최종 분석 엔진에 대응하는 실행 엔진에 의해 시작한다. 실행 엔진은 실행 엔진에 할당된 쿼리를 샐행하고, 실행 엔진들의 캐스캐이드의 후속하는 고차 실행 엔진에 대해 호출하여 위치 보유자 쿼리 결과들을 검색한다. 각 실행 엔진은 고차의 스택된 엔진들에 대해 호출하여 위치 보유자들에 대응하는 데이터를 검색한다. 캐스캐이드된 실행 엔진들 내의 연속적인 호출들은 결과적으로 하나의 실행 엔진이 입력 쿼리에 대응하는 모든 쿼리 결과들을 축적하게 한다.
선택적으로, 파이프라인된 쿼리의 실행 상태는 최외측 또는 제1 분석 엔진 컴파일 출력의 실행에 의해 시작할 수 있다. 전과 마찬가지로, 각 실행 엔진은 그 분배된 쿼리를 실행하고 위치 보유자 데이터를 위해 연속 실행 엔진들에 대한 호출을 행할 수 있다. 입력 쿼리 리턴 결과들은 유사하다.
도 1은 본 발명의 특징들이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한 블록도.
도 2는 본 발명의 특징들이 구현될 수 있는 블록도 아키텍쳐.
도 3은 본 발명의 특징들이 구현될 수 있는 블록도 아키텍쳐.
도 4는 본 발명의 특징들에 적용할 수 있는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
210 : 언어 컴파일러
220 : 중간 언어 표시
230 : 옵티마이저
240 : 분산 쿼리 엔진 파이프라인
260 : 데이터 소스들
270 : 쿼리 결과들
첨부 도면을 참조한다면 바람직한 실시예들에 대한 다음의 상세한 설명 뿐만 아니라 상기한 요약이 보다 잘 이해될 것이다. 본 발명을 설명하기 위해, 발명의 예시적인 구성들이 도면에 도시되지만, 본 발명은 개시된 특정 방법 및 수단들에 한정되지 않는다.
개관
본 발명은 다수의 쿼리 소스들로부터의 다수의 데이터 소스들의 타입들에 대한 쿼리의 문제점을 다룬다. 가상 XML 데이터 소스들에 대한 쿼리의 문제점의 한가지 해결책은 단일 중간 언어를 사용하는 것일 수 있다. 본 발명의 문맥에서 사용되는 XML 중간 언어는 쿼리의 의미 또는 의미론을 나타낸다. XML 중간 언어는 QIL(query intermediate language)로 명명된다.
QIL은 "쿼리/뷰 합성(query/view composition)"으로 알려진 문제를 다룬다.예를 들어, XML 쿼리가 데이터의 가상 XML 뷰, XML, 가상 XML, 또는 기타 데이터 중 어느 하나에 대해 수행된다고 가정한다. 한가지 접근법은 그 데이터 소스를 XML로서 구현할 수 있지만, 이것은 매우 비효율적이고 시스템에 가용한 많은 메모리를 요구할 수 있다. 또 다른 접근법은 뷰를 가상화하고, 그 가상 뷰로 쿼리를 작성하고, 그 결과를 원래 데이터에 대한 연산들로 번역하는 것이다. 사용자는 논리 XML 데이터 모델에 대한 XML 쿼리를 보지만, 구현은 그것이 제공하는 쿼리 시스템이라면 어떤 것이라도 사용하여 본래의 데이터 포맷을 쿼리한다. 이 접근법은 SQL 뷰들에 대한 SQL 쿼리들의 관계 데이터베이스들에서 사용된다. QIL과 같은 XML 중간 언어를 사용하여, 원래의 복잡할 수 있는 뷰가 보다 작은 데이터 원소들에 대한 쿼리 동작들로 분해될 수 있다. 이러한 방식으로, 복잡한 뷰에 대한 쿼리는 쿼리와 가단한 뷰의 합에 대한 쿼리가 된다. 쿼리 합성은 이것을 단지 간단한 뷰에 대한 쿼리로 변화시킴으로써, 문제점을 단순화한다.
XML 중간 언어 QIL은 (1)XML 쿼리와 XML 뷰 모두의 균일한 표시를 제공함으로써 쿼리/뷰 합성 문제를 매우 간단히 하며, (2) 모든 뷰들을 "가상 XML"로 취급하는 것은 시스템의 인터페이스를 매우 간단히한다. 모든 가능한 언어 및 데이터 모델에 대해 하나의 API를 갖는 대신, 모든 API들은 공통 데이터 모델, XML 중간 언어 QIL의 오퍼레이터들을 공유할 수 있다.
입력 쿼리의 중간 언어 표시를 사용하면서, 본 발명은 다수의 데이터 소스들에 대한 쿼리를 수행하는 분산 아키텍쳐를 사용하는 예시적인 아키텍쳐를 개시한다. 진정한 분산 아키텍쳐는 모놀리식 프로세서가 작업을 감독할 필요없이 상이한실행 에진들에 대한 혼합된 소스 쿼리를 분배할 수 있다. 본 발명의 예시적인 분산 쿼리 엔진 파이프라인은 또한 상이한 쿼리 필요성을 수용하기 위해 아키텍쳐에 새로운 또는 수정된 실행 엔진들이 부가될 수 있다는 점에서 모듈로 될 가능성을 갖는다. 또한, 사용되는 실행 엔진들은 정확하게 동작하기 위해 다른 쿼리 실행 엔진들의 작업들에 대해 통지될 필요가 없다. 쿼리중 엔진이 이해하는 부분들만을 각 엔진이 처리 및 최적화하고, 쿼리중 나머지를 연이어서 또는 캐스캐이드로 후속 엔진에 보냄으로써 각 엔진은 서로의 상부에 스택되거나 캐스캐이드될 수 있다.
예시적인 컴퓨팅 장치
도 1 및 다음의 설명은 본 발명이 구현될 수 있는 적합한 컴퓨팅 환경의 간략한 일반적인 설명을 제공하도록 의도된다. 그러나, 본 발명과 관련하여 핸드헬드, 휴대가능 및 기타 컴퓨팅 장치들과 모든 종류들의 컴퓨팅 오브젝트들이 사용되도록 고려되는 것을 이해해야 한다. 따라서, 범용 컴퓨터가 후술되지만, 이것은 단지 하나의 예일 뿐, 본 발명은 네트워크/버스 상호 운용성 및 상호작용을 갖는 클라이언트와 같은 다른 컴퓨팅 장치들로 구현될 수 있다. 따라서, 본 발명은 거의 없거나 최소의 클라이언트 리소스들이 포함된 네트워크 호스트 서비스들의 환경, 즉 클라이언트 장치가 전기 기구 내에 배치된 오브젝트, 또는 기타 컴퓨팅 장치들 및 오브젝트들과 같은 네트워크/버스에 대한 인터페이스로서만 작용하는 네트워크 환경에서 구현될 수 있다. 본질적으로, 본 발명에 따르면, 데이터가 저장될 수 있거나 데이터가 검색될 수 있는 곳이면 어떤 곳도 바람직한, 즉 적합한 동작 환경이다.
요구되지는 않지만, 본 발명은 장치 또는 오브젝트에 대한 서비스의 개발자에 의해 사용되기 위해 오퍼레이팅 시스템을 통해 구현되고, 및/또는 본 발명에 따라 동작하는 어플리케이션 소프트웨어 내에 포함될 수 있다. 소프트웨어는 클라이언트 워크스테이션들, 서버들 또는 기타 장치들과 같은 하나 이상의 컴퓨터들에 실행되는 프로그램 모듈들과 같은 일반적인 컴퓨터 실행가능한 명령어들의 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈들은 특정 태스크를 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 일반적으로, 프로그램 모듈들의 기능은 다양한 실시예들에서 원하는 대로 결합되거나 분배될 수 있다. 또한, 본 기술분야의 당업자들은 본 발명이 다른 컴퓨터 구성들로 실행될 수 있음을 이해할 것이다. 본 발명에 사용되기에 적합할 수 있는 기타 공지된 컴퓨팅 시스템들, 환경들, 및/또는 구성들은 퍼스널 컴퓨터들(PC들), 자동 텔러 머신들, 서버 컴퓨터들, 핸드헬드 또는 랩톱 디바이스들, 멀티 프로세서 시스템들, 마이크로프로세서 기반의 시스템들, 프로그램가능한 소비자 전자 기기, 네트워크 PC들, 전기 제품들, 라이트들, 환경적 제어 소자들, 미니컴퓨터들, 메인프레임 컴퓨터들 등을 포함하지만, 이에 한정되지 않는다. 본 발명은 또한 통신 네트워크/버스 또는 기타 데이터 전송 매체를 통해 연결되는 원격 처리 장치들에 의해 태스크들이 수행되는 분산 컴퓨팅 환경들에서 실행될 수 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈들이 메모리 저장 장치들을 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 배치될 수 있고, 클라이언트 노드들은 서버 노드들로서 작용할 수 있다.
도 1은 비록 명확히 나타내지는 않았지만 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시하며, 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예로서 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터 시스템(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터 시스템(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터 시스템(110)은 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터 시스템(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 불휘발성 매체, 착탈 가능(removable) 및 착탈 불가능(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성, 착탈 가능 및 착탈 불가능 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, CDRW(compact disk-rewritable), DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치들, 또는 컴퓨터 시스템(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 불휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터 시스템(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈들 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 기타 프로그램 모듈들(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터 시스템(110)은 또한 다른 착탈 가능/착탈 불가능, 휘발성/불휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 착탈 불가능 불휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 착탈 가능 불휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM, DVD 또는 기타 광학 매체 등의 착탈 가능 불휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 착탈 가능/착탈 불가능, 휘발성/불휘발성 컴퓨터 저장 매체는 자기 테이프 카세트들, 플래쉬 메모리 카드들, DVD(Digital versatile disk)들, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 착탈 불가능 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 착탈 가능 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터 시스템(110)을 위한 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 어플리케이션 프로그램들(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트들은 오퍼레이팅 시스템(134), 어플리케이션 프로그램들(135), 기타 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 어플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치들을 통해 컴퓨터 시스템(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스(121)에 결합된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 메모리(도시하지 않음)와 통신할 수 있는 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터(191) 외에도, 컴퓨터 시스템들은 또한 출력 주변 회로 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및프린터(196) 등의 기타 주변 회로 출력 장치들을 포함할 수 있다.
컴퓨터 시스템(110)은 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터들로의 논리적 접속을 이용한 네트워크 또는 분산 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터 시스템(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크들/버스들을 포함할 수도 있다. 이러한 네트워크 환경은 가정, 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터 시스템(110)은 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터 시스템(110)은 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터 시스템(110)에 관하여 도시된 프로그램 모듈들 또는 그 일부분들은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 어플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
다양한 분산형 컴퓨팅 프레임워크들은 퍼스널 컴퓨팅 및 인터넷을 중심으로 개발되어 왔으며 개발 중에 있다. 개인 및 비즈니스 사용자를 막론하고, 컴퓨팅 활동을 점점 웹 브라우저 지향적 또는 네트워크 지향적으로 만드는 어플리케이션들 및 컴퓨팅 장치들에 대하여 이음새없이 상호 동작이 가능하고 웹 사용가능한 인터페이스(seamlessly interoperable and web-enabled interface)가 제공된다.
예를 들어, 워싱턴 98052, 레이몬드, 일 마이크로소프트 웨이, 마이크로소프트 코포레이션으로부터 이용가능한 MICROSOFT의 .NETTM플랫폼은 서버들, 웹-기반 데이터 저장과 같은 빌딩-블록 서비스들, 및 다운로드 가능한 장치 소프트웨어를 포함한다. 예시된 실시예들은 컴퓨팅 장치 상에 상주하는 소프트웨어와 관련하여 기재되지만, 본 발명에 따른 동작이 모든 .NETTM의 언어들 및 서비스들에 의해 수행될 수 있거나, 지원될 수 있거나, 이를 통해 액세스될 수 있도록, 본 발명의 하나 이상의 부분들은 오퍼레이팅 시스템, 어플리케이션 프로그래밍 인터페이스(API) 또는 코프로세서(coprocessor), 표시 장치 및 요구 오브젝트 중 어느것 사이의 "미들 맨" 오브젝트를 통해 구현될 수 있을 뿐 아니라, 기타 분산형 컴퓨팅 프레임워크에서 구현될 수도 있다.
예시적인 실시예들
도 2는 본 발명의 특징들을 구현하는 예시적인 시스템 아키텍쳐의 블록도이다. 중간 언어 컴파일러들 및 분산 실행 엔진 파이프라인을 포함한 쿼리 아키텍쳐(200)가 도시된다. 이 아키텍쳐는 다수의 데이터 소스들 및 타입들에 대한 쿼리들들 위해 데이터를 수신, 컴파일, 해석, 및 액세스하도록 구현된 예시적인 기본 블럭들을 도시한다. 복수의 프론트 엔드(front-end) 언어 컴파일러들(210)이 사용될 수 있고 일반적으로 이것은 관련 언어들일 수 있다. 예를 들면, 컴퍼일러들(210)은 XML 또는 XML 관련 기준들에 적합한 XML 관련 컴파일러들일 수 있다. 원래의 또는 입력 쿼리는 도 1에 도시된 바와 같은 복수의 입력 장치들중 어느 하나로부터 수신 또는 입력될 수 있다. 도 2를 참조하면, 프론트 엔드 컴파일러들(210)은 XML 쿼리, XML 뷰, 또는 기타 관련된 XML 언어 질문과 같은 쿼리를 수신하여 입력 쿼리의 의미의 컴파일된 중간 언어 표시(220)를 생성할 수 있다. 프런트 엔드 컴파일러들에 대한 예시적인 언어 타입들은 XPath, XSL(XML Stylesheet Language), XSLT, XML의 W3C 표준들을 포함한다. 추가의 예들은 다른 것들 중에서도 XML 뷰 컴파일러들을 포함할 것이다. 쿼리와 뷰 언어들 사이의 중간 언어 추상화 및 다수의 대상 모델들은 예를 들어 가상 XML 데이터뿐 아니라 마이크로소프트®.NETTM의 실제 데이터가 데이터 소스들로서 사용되게 한다.
도 2에 도시된 바와 같이 생성된 중간 언어는 입력 쿼리 또는 뷰의 표시이다. 따라서, 중간 언어는 쿼리의 의미의 명확한 표시이기 대문에 QIL(query intermediate language)로 명명될 수 있다. 쿼리 중간 언어는 아키텍쳐(200)에서 사용되는 모든 쿼리 및 뷰 언어 컴파일러들(210)에 걸쳐 공통인 의미론적 표시로서보여질 수 있다. 예를 들어, 입력 컴파일러들이 XML 데이터에 대해 동작하면, QIL은 다양한 상이한 대상 데이터 소스들(관계 및 비관계 데이터와 같은)에 대한 다수의 상이한 XML 쿼리 언어 및 뷰 한정 언어들(예를 들어 XPath 및 XSLT)의 추상화를 가능하게 한다. 따라서, QIL은 모든 호환가능한 XML 쿼리 언어들을 지원할 공통 구성을 가능하게 한다. 본 기술분야의 당업자들은 쿼리 아키텍쳐(200)에서 중간 언어 표시를 사용하는 이점을 인식할 것이다. 내부의 모든 동작은 명백하고 모호하지 않으며, QIL을 발생하는 것을 돕는 프론트 엔드 컴파일러들을, QIL을 사용하는 분산 쿼리 엔진 파이프라인으로부터 완전히 결합 해제하는 것이 바람직하다.
전술한 예는 분산 쿼리 엔진 파이프라인에 대한 입력으로서 XML 중간 언어 표시를 사용하는 본 발명의 문맥상의 실시예를 나타낸다. 예를 들어 몇몇을 명명하는 직접적인 LDAP, AD, XML 또는 SQL 언어 쿼리 입력들과 같은 본 발명에 대한 입력으로서는 기타 중간 언어 표시들 또는 직접적인 기본 언어들이 사용될 수 있다.
중간 언어 표시(220)는 후속 스테이지들에 의한 보다 효율적인 프로세싱을 위해 선택적으로 최적화(230)될 수 있다. 도 2의 옵티마이저는 본 발명에 대한 문맥으로서만 표시되고 엄격히 요구되지는 않는다. 입력 쿼리의 최적화되거나 최적화되지 않은 중간 언어 표시는 분산 쿼리 엔진 파이프라인(240)에 표시될 수 있다.
분산 쿼리 엔진 파이프라인은 이질적인 데이터 소스들(260)에 대한 쿼리들을 허용한다. 파이프라인의 엔진들은 중간 언어 쿼리를 특정 데이터 모델들을 갖는 실행 기계들로 분배한다. 이것은 특정 데이터 모델 내에서 쿼리 효율성을 최대화하는 실행 엔진에 의해 쿼리 실행이 달성되게 한다. 따라서, 파이프라인(240)의 실행 엔진은 각 지원된 데이터 소스 내의 데이터 모델에 적합한 데이터 소스들에서 효과적으로 작용하도록 구성될 수 있다. 예를 들어, SQL 데이터베이스 소스에 대한 실행 엔진은 SQL 데이터베이스 관리 시스템과의 관계 데이터베이스에 대해 쿼리할 때의 효율성을 위해 최적화될 수 있다. 파이프라인 내의 각 실행 엔진들은 그 자신의 데이터 모델을 포함한 특정 데이터 소스들에 대한 액세스(250)를 갖는다. 분산 쿼리 엔진은 이질적인 탐색에서 하나 이상의 데이터 모델들을 갖는 하나 이상의 데이터 소스들에 대해 쿼리할 수 있다. 분산 쿼리의 실행시, 파이프라인의 실행 엔진들은 추가의 프로세싱, 저장, 사용자에 대한 표시, 또는 후속 소프트웨어 어플리케이션에 대한 준비에 가용한 쿼리 결과들(270)을 통상적으로 생성한다.
도 3은 도 2의 분산 쿼리 엔진 파이프라인(240)의 블럭도를 도시한다. 도 3은 분산 쿼리 엔진 파이프라인의 기본 내부 아키텍쳐를 도시한다. 파이프라인은 캐스캐이드되거나 스택된 분석 엔진들(310, 320, 330) 및 실행 엔진들(370, 380, 390)로 이루어진다. 도 3의 설명은 3개의 분석 엔진들과 3개의 실행 엔진들을 나타내지만, 주어진 파이프라인 어플리케이션에 대해 아주 적게는 2개 많게는 N개의 분석/실행 엔진쌍들이 캐스캐이드될 수 있다.
분석 엔진 A(310)에 의해 입력 쿼리(300)가 수신된다. 엔진은 쿼리를 검사하고, 실행 엔진을 최적화하거나 실행 엔진으로 넘기는(312) 방법을 아는 쿼리의 부분들을 발견한다. 분석 엔진 A(310)은 식별된 부분들을 제거하고 그들을 위치 보유자로 대체한다. 따라서 엔진(310)은 쿼리를 재작성하고 쿼리의 밸런스와 위치보유자 모두를 분석 엔진 B(320)로 보낸다(314). 따라서 엔진(310)은 수정된 쿼리를 스택의 후속 엔진으로 보낸다.
분석 엔진 A(310)이 인식하는 쿼리의 부분은 컴파일되고 어큐뮬레이터(340)로 보내져서(312) 컴파일된 쿼리 부분(컴파일된 쿼리 A)를 갖는다. 분석 엔진 A(310)은 분석 엔진 B를 알지 못한다는 것을 주의하라. 엔진 A는 특정 실행 엔진에 의해 처리될 수 있는 것으로 인식될 수 있는 쿼리의 부분을 추출하여 쿼리의 밸런스를 내보낸다. 스택 내의 후속 분석 엔진은, 만일 있다면, 상이한 실행 엔진에 대응하는 쿼리의 일부만을 인식한다.
분석 엔진 B(320)는 엔진 A로부터 수정된 쿼리를 받아들이고 분석 엔진 B가 실행 엔진으로 보낼(322) 수 있는 수정된 쿼리의 어떤 부분을 확인한다. 분석 엔진 B는 그 후 확인된 부분을 제거하고, 그것을 컴파일하여 컴파일된 쿼리 B를 보유한 어큐뮬레이터(350)로 송신한다. 그리고 분석 엔진 B(320)는 분석 엔진 B가 위치 보유자와의 교체에 의해 수신한 쿼리, 및 위치 보유자에 의해 분석 엔진 B가 식별하고 추출한 부분을 재작성한다. 그리고 분석 엔진 B(320)는 2번 수정된 쿼리를 스택 내의 후속 엔진으로 보낸다(324). 그리고 분석 엔진 C(330)는 엔진 B로부터 2번 수정된 쿼리를 받아들이고 분석 엔진 C가 실행 엔진으로 보낼(322) 수 있는 수정된 쿼리의 어떤 부분을 식별한다. 분석 엔진 C는 그 후 식별된 부분을 제거하고, 그것을 컴파일하여 컴파일된 쿼리 C를 보유한 어큐뮬레이터(350)로 송신한다. 분석 엔진들의 보다 많은 층들 또는 스테이지들이 구현되는 시스템에서는, 분석 엔진 C(330)는 분석 엔진 C가 위치 보유자와의 교체에 의해 수신된 쿼리, 및 분석 엔진 C가 식별하고 추출한 부분을 재작성할 수 있다. 분석 엔진 C(330)는 3번 수정된 쿼리를 스택 내의 후속 엔진으로 보낸다(332). 이에 의해, 분산 파이프라인 분석 엔진들이 원하는 대로 캐스캐이드될 수 있는 것이 명백하다.
컴파일된 쿼리 어큐뮬레이터들(340, 350 및 360)은 함께 합성 쿼리를 형성한다. 각 쿼리 부분(A, B, C)은 특정 데이터 모델을 갖는 데이터 소스에 대한 쿼리를 효과적으로 수행하는 실행 엔진과 관련된다. 예를 들어, 컴파일된 쿼리 A(340)는 실행 엔진 A(390)에 의해 실행될 수 있다. 실행 엔진 A은 컴파일된 쿼리 A와 일치하는 데이터 모델에 대응하는 적어도 일부분을 가지는 하나 이상의 데이터 소스들(260)을 액세스한다(250).
컴파일된 쿼리들 A, B, C(340, 350, 360)의 조합에 의해 형성된 합성 쿼리는 각각 랩핑된 일련의 쿼리들로서 보일 수 있다. 예를 들어, 컴파일된 쿼리 C(360)는 서브 쿼리이기 때문에 컴파일된 쿼리 B의 일부이다. 따라서, 컴파일된 쿼리 C는 컴파일된 쿼리 B에 의해 랩핑된다. 마찬가지로, 컴파일된 쿼리 B(350)는 컴파일된 쿼리 A(340)의 서브 쿼리이기 때문에 컴파일된 쿼리 B는 컴파일된 쿼리로 랩핑된다.
컴파일된 쿼리들 A, B, C의 결과물인 컴파일되고 네스팅 또는 랩핑된 쿼리들은 본 발명의 유용한 출력들이며, 그 이유는 이들 쿼리 출력들이 장래에 사용되기 위해 저장될 수 있기 때문임을 주의해야 한다. 저장된 쿼리들은 동일하거나 상이한 컴퓨터를 즉시 또는 지연 시간을 두고 실행될 수 있다.
컴파일된 쿼리들 A, B, C의 합성 쿼리 조합을 실행하기 위해, 실행 엔진들은랩핑된 연속적인 레벨들이 노출될 수 있게 하는 순서로 작용하는 것이 바람직하다. 예를 들어, 컴파일된 쿼리 A가 충분히 실행되도록 하기 위해, 바람직하게는 컴파일된 쿼리 B가 실행되어야 한다. 그러나, 컴파일된 쿼리 B가 충분히 실행되도록 하기 위해, 바람직하게는 컴파일된 쿼리 C가 실행되어야 한다. 따라서, 언랩핑(unwraping)의 순서는 우선 가장 안쪽이 랩핑되고 연속적으로 보다 높은 레벨의 랩핑이 이어지는 것이 바람직하다. 도 3의 예에서는, 컴파일된 쿼리 B는 컴파일된 쿼리 B 이전에 실행되는 것이 바람직할 수 있고 컴파일된 쿼리 C는 컴파일된 쿼리 A 이전에 실행되는 것이 바람직할 수 있다. 도 3의 실행 엔진들은 이러한 실행 우선순위를 허용한다.
실행 엔진 C(370)는 최내측의 실행가능한 컴파일된 쿼리(360)를 수신한다(365). 그리고 실행 엔진 C는 그것의 컴파일된 쿼리를 실행한다. 호환가능한 데이터 모델을 포함하는 하나 이상의 데이터 소스들(260)이 액세스된다(373, 250). 데이터 소스들(260)은 요구된 데이터를 리턴시킨다(372). 그러나, 분석 엔진 B(320)에 의해 컴파일된 쿼리 C에 삽입된 위치 보유자의 존재는 쿼리 결과들을 완성하기 위해 추가의 정보가 필요하다는 것을 실행 엔진 C에게 지시한다. 본질적으로, 실행 엔진 C는 컴파일된 쿼리 C의 실행을 완성하기 위한 정보용 외부 소스로서 실행 엔진 B(380)를 다시 호출한다(375). 분석 엔진 B에 의해 컴파일된 쿼리 C에 삽입된 위치 보유자는 마치 그것이 외부 데이터 소스인 것처럼 이전의 실행 엔진에 대한 후출을 트리거했다.
실행 엔진 B(380)은 실행 엔진 C로부터의 호출을 수신한다(375). 그 후 실행 엔진 B는 컴파일된 쿼리 B(350)를 입력한다(355). 컴파일된 쿼리 B의 실행은 하나 이상의 데이터 소스들(260)을 액세스(382, 250)함으로써 진행한다. 데이터 소스들(260)은 요구된 데이터를 리턴시킨다(382). 그러나, 분석 엔진 A(310)에 의해 컴파일된 쿼리 C에 삽입된 위치 보유자의 존재는 쿼리 결과들을 완성하기 위해 추가의 정보가 필요하다는 것을 실행 엔진 B에게 지시한다. 실행 엔진 B는 컴파일된 쿼리 B의 실행을 완성하기 위한 정보용 외부 소스로서 실행 엔진 A(390)를 다시 호출한다(385). 분석 엔진 A에 의해 컴파일된 쿼리 B에 삽입된 위치 보유자는 마치 그것이 외부 데이터 소스인 것처럼 이전의 실행 엔진에 대한 호출을 트리거했다.
실행 엔진 A(390)은 실행 엔진 B로부터의 호출을 수신한다(385). 그 후 실행 엔진 A는 컴파일된 쿼리 A(340)를 입력한다(345). 컴파일된 쿼리 A의 실행은 하나 이상의 데이터 소소들(260)을 액세스함으로써(392, 250) 진행한다. 데이터 소스들(260)은 요구된 데이터를 리턴시킨다(392). 이 예에서는 컴파일된 쿼리 A에 미리 삽입된 위치 보유자가 없기 때문에 쿼리가 충분히 실행될 수 있다.
실행 엔진 A는 컴파일된 쿼리 A(340)를 실행 엔진 B에 제공한다. 실행 엔진 A는 실행 엔진 B로부터의 호출에 응답하여 완료한다. 실행 엔진 A로부터의 쿼리 결과들을 수신하면, 실행 엔진 B는 컴파일된 쿼리 B(350)의 실행을 완료할 수 있다. 그 후 실행 엔진 B는 실행 엔진 A로부터 획득한 정보와 실행 엔진 C에 대한 자신의 쿼리 결과들 모두를 제공함으로써(375) 응답한다. 실행 엔진 B는 실행 엔진 C로부터의 호출에 응답하여 완료한다.
실행 엔진 B로부터의 쿼리 결과들을 수신하면, 실행 엔진 C는 컴파일된 쿼리 C(360)를 완료할 수 있다. 그 후 실행 엔진 C는 실행 엔진 B로부터 획득한 정보와 자신의 쿼리 결과들 모두를 제공함으로써(395) 응답하여, 원래 입력 쿼리(300)의 완료 결과들을 형성한다. 실행 엔진 C는 이전에 추출된 모든 쿼리 결과들을 축적하여 완성된 쿼리 결과들을 형성한다.
도 4는 도 3에 대하여 설명된 예시적인 프로세스의 흐름도이다. 프로세스는 입력 쿼리를 수신함으로써 개시된다(410). 쿼리는 실행 엔진 및 데이터 모델에 대응하는 쿼리의 일부를 식별하는(415) 제1 분석 엔진에 제공된다. 입력 쿼리의 식별된 부분은 실행을 위해 컴파일되고 이후의 검색을 위해 저장 위치로 송신된다(420). 그 후 제1 분석 엔진은 입력 쿼리를 재작성하여(425) 식별된 부분을 제거하고 소실된 부분을 위치 보유자로 대체할 수 있다. 그 후 제1 분석 엔진은 쿼리의 밸런스를 처리하기 위해 재작성된 쿼리(430)를 후속 분석 엔진으로 보낼 수 있다. 최종 분석 엔진에 도달하면(435) 프로세스가 변경될 수 있다. 분석 엔진들의 캐스캐이드에서 최종 분석 엔진에 도달하지 않으면, 후속 분석 엔진 스테이지에 의해 프로세스가 계속되어(440) 후속 분석 엔진이 수용할 수 있는 재작성된 쿼리의 부분을 확인한다. 프로세스는 후속 분석 엔진에 의해 계속되어 전처럼 식별(415), 컴파일(420), 재작성(425), 및 전달(430)하는 단계들을 밟는다.
최종 분석 엔진이 태스크들을 완료하면(435), 실행 상태가 시작될 수 있다(445). 바람직하게는, 실행 상태는 저장되었던 최종 분석 엔진 컴파일에 의해 개시된다. 이 최종 컴파일은 최내측 컴파일으로도 알려져 있다. 선택적으로, 실행은 제1 분석 엔진 컴파일에 의해 개시할 수 있다. 도 4의 흐름도는 최종 분석 엔진 컴파일에 의해 실행을 개시하는 것으로 구성되었지만, 본 기술분야의 당업자들은 합성 쿼리의 실행을 개시하기 위해 제1 분석 엔진 컴파일이 사용되는 흐름을 구성할 수도 있다.
실행의 개시시(445) 컴파일된 쿼리 부분들은 시스템의 사용가능한 출력일 수 있음을 주의해야 한다. 컴파일된 쿼리들은 적합한 실행 엔진들을 채용하는 동일하거나 상이한 시스템에서 후에 사용하기 위해 컴파일된 쿼리들을 즉시 실행하거나 검색할 수 있다.
최종 분석 엔진 컴파일에 의한 실행 컴파일이 개시하면(445), 대응하는 실행 엔진은 쿼리의 대응 컴파일된 부분을 다시 호출할 수 있다(450). 엔진은 검색된 컴파일된 쿼리를 실행한다(455). 초기에는, 실행 엔진에게 정보에 대한 외부 소스 호출을 하도록 지시할 쿼리에 위치 보유자가 있을 것이다(460). 외부 소스 호출이 행해질 수 있고(465), 후속 캐스캐이드된 실행 엔진으로부터의 데이터가 요구될 것이다. 이 경우에, 외부 데이터 소스는 후속 캐스캐이드된 실행 엔진이다. 후속 엔진은 대응하는 컴파일된 쿼리를 다시 호출하고(450) 쿼리를 실행할 것이다(455). 위치 보유자가 실행된 쿼리에 직면하면 실행중인 엔진은 후속 캐스캐이드된 실행 엔진에 대한 외부 소스 데이터를 호출하도록 진행할 수 있다. 프로세스는 외부 소스에 대한 위치 보유자가 실행 엔진에 의해 외부 엔진과 마주치지 않을 때까지 하나의 캐스캐이드된 실행 엔진으로부터 후속 실행 엔진으로 계속 이동한다.
캐스캐이드에서의 실행 엔진이 외부 위치 보유자를 갖지 않기 때문에 외부호출을 할 필요가 없으면, 그 쿼리에 대한 전체 응답이 호출중인 실행 엔진(470)에 주어질 수 있다. 캐스캐이드에서의 후속의 고차 엔진은 그 후 그것의 후속 고차 실행 엔진 호출에 응답하여 네스팅된 쿼리 결과들을 모으거나 축적한다(475). 후속 고차 엔진이 또한 호출에 응답하면(480) 외부 소스 호출들의 수행은 후속 실행 엔진으로 이동한다(485). 그 후 후속 실행 엔진은 그 쿼리 결과들을 호출중인 엔진으로 돌려보내어(470) 축적되는 쿼리 결과들을 모은다(475). 외부 데이터에 대한 모든 호출들이 완료되면, 최내측 실행 엔진, 즉 기본 엔진은 모든 고차 레벨 실행들의 모든 결과들을 기본적으로 수신하고 전체 쿼리의 결과들을 축적한다(490). 이 시점에서 원래 수신된 입력 쿼리(410)로부터의 쿼리 결과들이 축적되고 후속 프로세스에 이용가능하거나 사용자에 의해 사용된다.
상술된 프로세스의 성문화된 예가 이하에 제공된다. 예를 들어 다음과 같은 쿼리를 고려한다.
이 쿼리는 컬럼 값들을 비교하는 등의 관계 오퍼레이터들을 위치와 같은 XML오퍼레이터들과 결합한다. 쿼리가 2가지 부분들로 분할되면, 하나의 부분은 SQL 서버 엔진을 사용하여 실행할 수 있고 나머지 부분은 XML 엔진을 이용하여 실행할 수 있다. XQeury는 QIL로 컴파일될 수 있고 그 후 SQL 서버에 의해 수행될 수 있는 패턴들에 대해 분석된다. 쿼리는 그 후 이들 패턴들을 제거하고 그것들을 가상 XML 문서에 대한 내비게이션으로 대체함으로써 재작성될 수 있다.
다시 한번, 이점은 동작이 절대적으로 필요한 맵핑의 일부만을 구체화한다는 것이고, 가능한 대다수의 쿼리는 SQL 서버로 푸시(push)된다. 이것은 쿼리로부터 모든 SQL 서버 동작들을 추출하고 그것들을 예를 들어 이하와 같은 가상 XML 문서에 대한 네비게이션으로 대체함으로써 달성될 수 있다:
위치 오퍼레이터는 XML 엔진이 수행할 위치에 남겨진다는 것을 주의하가. SQL 테이블들과 컬럼들을 대체한 이 가상 XML 문서는 SQL 쿼리의 결과들과 개념적으로 동일하다:
이것은 다음과 같은 XML 형상을 생성한다:
그러나, 이것은 단지 개념적으로만 사실이고 실제로 XML은 구성되지 않는다. 대신, 보통의 SQL 쿼리는 SQL 서버로 송신되어 결합 및 필터링을 수행하며, 로우세스(rowset) 결과들은 기존의 XPathNavigator 인터페이스를 통해 가상 XML로서 XML 엔진에 노출된다.
상술한 바와 같이, 본 발명의 예시적인 실시예들은 각종 컴퓨팅 장치들 및 네트워크 아키텍쳐들과 관련하여 설명되었지만, 기초를 이루는 개념들은 쿼리 시스템을 구현하기에 바람직한 임의의 컴퓨팅 장치 또는 시스템에 적용될 수 있다. 따라서, 본 발명의 방법들 및 시스템들은 다양한 어플리케이션들 및 장치들에 적용될수 있다. 예시적인 프로그래밍 언어들, 명칭들 및 예들은 본 명세서에서 각종 선택들을 대표하는 것으로서 선택되지만, 이들 언어들, 명칭들 및 예들은 한정되도록 의도되지 않는다. 본 기술 분야의 당업자들은 본 발명에 의해 실현된 동일하거나 유사하거나 등가의 시스템들 및 방법들을 실현하는 오브젝트 코드를 제공하는 수많은 방법들이 존재함을 이해할 것이다.
여기에 설명된 다양한 기술들은 하드웨어 또는 소프트웨어와 관련하여, 또는 적절하다면 이들 모두의 결합과 관련하여 구현될 수 있다. 따라서, 본 발명의 방법들 및 장치들, 또는 그 임의의 특징들 또는 부분들은 플로피 디스켓들, CD-ROM들, 하드 드라이브들, 또는 임의의 다른 기계 판독가능한 저장 매체와 같은 유형의 매체에서 구현되는 프로그램 코드(즉, 명령어들)의 형태를 취할 수 있으며, 여기서는 프로그램 코드가 컴퓨터와 같은 기계로 로딩되어 그 기계에 의해 실행되는 경우, 기계가 발명을 실행하기 위한 장치가 된다. 프로그램 가능한 컴퓨터들에서의 프로그램 코드 실행의 경우에, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 불휘발성 메모리 및/또는 저장 요소들을 포함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함할 것이다. 예를 들어 데이터 처리 API 등의 사용을 통해 본 발명의 신호 처리 서비스들을 사용할 수 있는 하나 이상의 프로그램들은 고급 절차 또는 오브젝트 지향 프로그래밍 언어에서 구현되어 컴퓨터와 통신하는 것이 바람직하다. 그러나, 원한다면, 프로그램(들)은 어셈블리 또는 기계 언어로 구현될 수 있다. 임의의 경우에, 언어는 컴파일되거나 해석된 언어일 수 있고, 하드웨어 구현들과 조합될 수 있다.
본 발명의 방법들 및 장치는 광섬유를 통한 전기적 배선 또는 케이블을 경유하는 등의 몇몇 전송 매체를 경유하여 송신되는 프로그램 코드의 형태로 구체화되는 통신들을 통해, 또는 임의의 다른 형태의 전송을 통해 구현될 수 있으며, 여기서 프로그램 코드가 수신되고 EPROM, 게이트 어레이, PLD(programmable logic device), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계로 로딩되고 그 기계에 의해 실행되는 경우, 상기 예시적인 실시예들에 기재된 바와 같은 신호 처리 능력들을 갖는 수신 기계는 발명을 구현하는 장치가 된다. 범용 프로세서에서 구현되는 경우에, 프로그램 코드는 프로세서와 결합되어 본 발명의 기능을 호출하도록 동작하는 유일한 장치를 제공한다. 또한, 본 발명과 관련하여 사용되는 임의의 저장 기술들은 항상 하드웨어와 소프트웨어의 조합일 수 있다.
본 발명은 각종 도면들의 바람직한 실시예들과 관련하여 설명되었지만, 본 발명에서 벗어나지 않고 기타 유사한 실시예들이 사용될 수 있거나 또는 본 발명의 동일한 기능을 수행하기 위해 기술된 실시예들에 변경 및 추가가 행해질 수 있음을 이해해야 한다. 또한, 특히 무선 네트워크 장치들의 수가 계속해서 급격히 증가하기 때문에, 핸드헬드 장치 오퍼레이팅 시스템들 및 기타 어플리케이션 지정 오퍼레이팅 시스템들을 포함하는 다양한 컴퓨터 플랫폼들이 고려될 수 있음이 강조되어야 한다. 따라서, 본 발명은 임의의 하나의 실시예에 제한되지 않고 첨부된 청구범위에 따른 범위 내에서 해석되어야 한다.
본 발명은 분산 쿼리 엔진 파이프라인을 이용함으로써 다수의 데이터 모델타입들을 갖는 다수의 데이터 소스들에 대한 쿼리의 문제점을 다루고 있다. 파이프라인은 모놀리식 프로세서를 사용하여 입력 쿼리를 분할하고, 각각의 부분들을 특정 실행 엔진들에 분배한 후 그 결과들을 결합하여 입력 쿼리 결과들을 형성하는 일반적인 해결책을 통해 이점을 제공한다.

Claims (16)

  1. 쿼리(query)의 부분들을 2개 이상의 실행 엔진들에 대해 분배하는 방법으로서,
    입력 쿼리를 수신하는 단계;
    제1 분석 엔진으로, 제1 실행 엔진에 의해 처리될 수 있는 상기 입력 쿼리의 일부를 식별하는 단계;
    상기 입력 쿼리의 상기 식별된 부분을 컴파일하여 제1 컴파일된 부분을 형성하는 단계 ;
    상기 입력 쿼리를 재작성하여 제1 재작성된 쿼리를 형성하는 단계 - 상기 입력 쿼리의 상기 식별된 부분은 상기 입력 쿼리로부터 제거되고 제1 위치 보유자(place holder)에 의해 대체됨 - ;
    상기 제1 재작성된 쿼리를 제2 분석 엔진으로 보내는 단계;
    상기 제2 분석 엔진으로, 제2 실행 엔진에 의해 처리될 수 있는 상기 제1 재작성된 쿼리의 일부를 식별하는 단계; 및
    상기 제1 재작성된 쿼리의 상기 식별된 부분을 컴파일하여 제2 컴파일된 부분을 발생하는 단계 - 상기 입력 쿼리는 상기 제1 실행 엔진 및 상기 제2 실행 엔진에 대해 분배됨 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 재작성된 쿼리를 재작성하여 제2 재작성된 쿼리를 형성하는 단계를 더 포함하며,
    상기 제1 재작성된 쿼리의 상기 식별된 부분은 상기 제1 재작성된 쿼리로부터 제거되고 제2 위치 보유자에 의해 대체되는 방법.
  3. 제1항에 있어서,
    상기 재작성 단계는 상기 제2 컴파일된 부분을 상기 입력 쿼리의 상기 제1 컴파일된 부분으로 랩핑(wraping)하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 제1 컴파일된 부분 및 상기 제2 컴파일된 부분은 상이한 데이터 소스들에 대해 실행될 수 있는 방법.
  5. 제1항에 있어서,
    제1 분석 엔진은 구조화 쿼리 언어 기반 엔진(structured query language based engine)이고 제2 분석 엔진은 확장성 생성 언어 기반 엔진(extensible markup language based engine)인 방법.
  6. 제1항에 있어서,
    상기 제2 실행 엔진을 사용하여 상기 제2 컴파일된 부분을 부분적으로 실행하여, 제2 중간 결과들과 상기 제1 위치 보유자의 결합을 형성하는 단계 - 상기 제1 위치 보유자는 상기 제2 컴파일된 부분의 실행되지 않은 부분을 보유함 - ;
    상기 제2 실행 엔진으로부터 상기 제1 실행 엔진으로의 호출을 발생하여 상기 제1 위치 보유자에 대응하는 데이터를 요구하는 단계;
    상기 제1 실행 엔진을 사용하여 상기 제1 컴파일된 부분을 실행하여, 상기 제1 위치 보유자에 대응하는 제1 중간 결과들을 형성하고 상기 호출을 만족시키는 단계
    상기 제1 중간 결과들을 상기 제2 실행 엔진으로 제공하는 단계; 및
    상기 제1 중간 결과들을 상기 제1 위치 보유자로 대체하여 결합된 입력 쿼리 결과들을 포함하는 제1 중간 결과들과 제2 중간 결과들의 결합을 형성하는 단계
    를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 제1 실행 엔진 및 상기 제2 실행 엔진은 상이한 데이터 모델들을 포함하는 쿼리들에 대해 동작하는 방법.
  8. 제1항에 있어서,
    상기 제1 실행 엔진을 사용하여 상기 제1 컴파일된 부분을 부분적으로 실행하여, 제1 중간 결과들을 형성하는 단계;
    상기 제1 실행 엔진으로부터 상기 제2 실행 엔진으로의 호출을 발생하여 상기 입력 쿼리의 식별되지 않은 부분에 대응하는 데이터를 요구하는 단계;
    상기 제2 실행 엔진을 사용하여 상기 제2 컴파일된 부분을 실행하여, 제2 중간 결과들을 형성하고 상기 호출을 만족시키는 단계;
    상기 제2 중간 결과들을 상기 제1 실행 엔진에 제공하는 단계; 및
    상기 제1 중간 결과들을 상기 제2 중간 결과들과 결합하여 결합된 입력 쿼리 결과들을 형성하는 단계
    를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 제1 실행 엔진 및 상기 제2 실행 엔진은 상이한 데이터 모델들을 포함하는 쿼리들에 대해 동작하는 방법.
  10. 입력 쿼리의 분배 처리를 위한 시스템으로서,
    컴파일 및 실행될 수 있는 상기 입력 쿼리의 부분들을 분리하기 위한 2개 이상의 분석 엔진들;
    상기 입력 쿼리들에 대한 동작을 위한 2개 이상의 실행 엔진들; 및
    하나 이상의 데이터 소스들에 대한 액세스 - 상기 2개 이상의 분석 엔진들은 상기 입력 쿼리의 하나 이상의 부분들을 독립적으로 식별하고 컴파일하도록 동작함 -
    를 포함하며,
    상기 2개 이상의 분석 엔진들중 적어도 하나는 상기 입력 쿼리들을 재작성하여 실행 엔진에 대응하는 상기 입력 쿼리의 일부를 제거하고,
    상기 2개 이상의 실행 엔진들은 상기 입력 쿼리의 하나 이상의 컴파일된 부분들을 처리하여 하나의 실행 엔진으로부터의 부분적인 쿼리 결과들이 후속 실행 엔진에 전달되고 전반적인 입력 쿼리 결과들을 형성하도록 결합되는 시스템.
  11. 컴퓨터에서 실행되는 경우에, 2개 이상의 실행 엔진들에 대해 쿼리의 부분들을 분배하는 방법을 실행하는 명령어들을 포함하는 컴퓨터 판독가능한 매체로서,
    상기 방법은,
    입력 쿼리를 수신하는 단계;
    제1 분석 엔진으로, 제1 실행 엔진에 의해 처리될 수 있는 상기 입력 쿼리의 일부를 식별하는 단계;
    상기 입력 쿼리의 상기 식별된 부분을 컴파일하여 제1 컴파일된 부분을 형성하는 단계 ;
    상기 입력 쿼리를 재작성하여 제1 재작성된 쿼리를 형성하는 단계 - 상기 입력 쿼리의 상기 식별된 부분은 상기 입력 쿼리로부터 제거되고 제1 위치 보유자에 의해 대체됨 - ;
    상기 제1 재작성된 쿼리를 제2 분석 엔진으로 보내는 단계;
    상기 제2 분석 엔진으로, 제2 실행 엔진에 의해 처리될 수 있는 상기 제1 재작성된 쿼리의 일부를 식별하는 단계; 및
    상기 제1 재작성된 쿼리의 상기 식별된 부분을 컴파일하여 제2 컴파일된 부분을 발생하는 단계 - 상기 입력 쿼리는 상기 제1 실행 엔진 및 제2 실행 엔진에 대해 분배됨 -
    를 포함하는 컴퓨터 판독가능한 매체.
  12. 제11항에 있어서,
    상기 제2 실행 엔진을 사용하여 상기 제2 컴파일된 부분을 부분적으로 실행하여, 제2 중간 결과들과 상기 제1 위치 보유자의 결합을 형성하는 단계 - 상기 제1 위치 보유자는 상기 제2 컴파일된 부분의 실행되지 않은 부분을 남김 - ;
    상기 제2 실행 엔진으로부터 상기 제1 실행 엔진으로의 호출을 발생하여 상기 제1 위치 보유자에 대응하는 데이터를 요구하는 단계;
    상기 제1 실행 엔진을 사용하여 상기 제1 컴파일된 부분을 실행하여 상기 제1 위치 보유자에 대응하는 제1 중간 결과들을 형성하고 상기 호출을 만족시키는 단계
    상기 제1 중간 결과들을 상기 제2 실행 엔진으로 제공하는 단계; 및
    상기 제1 중간 결과들을 상기 제1 위치 보유자로 대체하여 결합된 입력 쿼리 결과들을 포함하는 제1 중간 결과들과 제2 중간 결과들의 결합을 형성하는 단계
    를 더 포함하는 컴퓨터 판독가능한 매체.
  13. 제12항에 있어서,
    상기 제1 실행 엔진 및 상기 제2 실행 엔진은 상이한 데이터 모델들을 포함하는 쿼리들에 대해 동작하는 컴퓨터 판독가능한 매체.
  14. 제12항에 있어서,
    상기 제1 컴파일된 부분 및 상기 제2 컴파일된 부분은 상이한 데이터 소스들에 대해 실행될 수 있는 컴퓨터 판독가능한 매체.
  15. 제11항에 있어서,
    상기 제1 실행 엔진을 사용하여 상기 제1 컴파일된 부분을 부분적으로 실행하여, 제1 중간 결과들을 형성하는 단계;
    상기 제1 실행 엔진으로부터 상기 제2 실행 엔진으로의 호출을 발생하여 상기 입력 쿼리의 식별되지 않은 부분에 대응하는 데이터를 요구하는 단계;
    상기 제2 실행 엔진을 사용하여 상기 제2 컴파일된 부분을 실행하여, 제2 중간 결과들을 형성하고 상기 호출을 만족시키는 단계;
    상기 제2 중간 결과들을 상기 제1 실행 엔진에 제공하는 단계; 및
    상기 제1 중간 결과들을 상기 제2 중간 결과들과 결합하여 결합된 입력 결과들을 형성하는 단계
    를 더 포함하는 컴퓨터 판독가능한 매체.
  16. 제15항에 있어서,
    제1 분석 엔진은 구조화 쿼리 언어 기반 엔진이고 제2 분석 엔진은 확장성 생성 언어 기반 엔진인 컴퓨터 판독가능한 매체.
KR1020040046668A 2003-06-23 2004-06-22 분산 쿼리 엔진 파이프라인 방법 및 시스템 KR20050000342A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/601,730 US7472112B2 (en) 2003-06-23 2003-06-23 Distributed query engine pipeline method and system
US10/601,730 2003-06-23

Publications (1)

Publication Number Publication Date
KR20050000342A true KR20050000342A (ko) 2005-01-03

Family

ID=33418607

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040046668A KR20050000342A (ko) 2003-06-23 2004-06-22 분산 쿼리 엔진 파이프라인 방법 및 시스템

Country Status (5)

Country Link
US (1) US7472112B2 (ko)
EP (1) EP1492031A3 (ko)
JP (1) JP2005018775A (ko)
KR (1) KR20050000342A (ko)
CN (1) CN1573756A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102605929B1 (ko) * 2022-09-29 2023-11-30 스마트마인드 주식회사 서로 다른 프로세서 자원을 할당하여 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6996558B2 (en) * 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US8244702B2 (en) 2002-02-26 2012-08-14 International Business Machines Corporation Modification of a data repository based on an abstract data representation
US7822771B1 (en) * 2003-09-23 2010-10-26 Teradata Us, Inc. Search query generation
US7475257B2 (en) 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7146529B2 (en) * 2003-09-25 2006-12-05 International Business Machines Corporation System and method for processor thread acting as a system service processor
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7389508B2 (en) 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7318218B2 (en) * 2003-09-25 2008-01-08 International Business Machines Corporation System and method for processor thread for software debugging
US20050071578A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for manipulating data with a plurality of processors
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7236998B2 (en) * 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7523157B2 (en) 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7900133B2 (en) 2003-12-09 2011-03-01 International Business Machines Corporation Annotation structure type determination
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7464159B2 (en) * 2004-01-14 2008-12-09 International Business Machines Corporation Managing analysis of a degraded service in a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7860875B2 (en) * 2004-05-26 2010-12-28 International Business Machines Corporation Method for modifying a query by use of an external system for managing assignment of user and data classifications
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US8266234B1 (en) 2004-06-11 2012-09-11 Seisint, Inc. System and method for enhancing system reliability using multiple channels and multicast
US7778997B1 (en) * 2004-06-11 2010-08-17 Seisint, Inc. System and method for managing throughput in the processing of query requests in a database system
US7917495B1 (en) * 2004-06-11 2011-03-29 Seisint, Inc. System and method for processing query requests in a database system
US7873650B1 (en) 2004-06-11 2011-01-18 Seisint, Inc. System and method for distributing data in a parallel processing system
US7693826B1 (en) * 2004-06-11 2010-04-06 Seisint, Inc. System and method for pre-compiling a query and pre-keying a database system
US7801911B1 (en) 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
US7739287B1 (en) * 2004-06-11 2010-06-15 Seisint, Inc. System and method for dynamically creating keys in a database system
US7406461B1 (en) 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7797333B1 (en) 2004-06-11 2010-09-14 Seisint, Inc. System and method for returning results of a query from one or more slave nodes to one or more master nodes of a database system
US7302447B2 (en) * 2005-01-14 2007-11-27 International Business Machines Corporation Virtual columns
US7712100B2 (en) * 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
US9171100B2 (en) 2004-09-22 2015-10-27 Primo M. Pettovello MTree an XPath multi-axis structure threaded index
US8447774B1 (en) 2004-11-23 2013-05-21 Progress Software Corporation Database-independent mechanism for retrieving relational data as XML
US20060116999A1 (en) * 2004-11-30 2006-06-01 International Business Machines Corporation Sequential stepwise query condition building
US7461052B2 (en) * 2004-12-06 2008-12-02 International Business Machines Corporation Abstract query plan
US8131744B2 (en) * 2004-12-17 2012-03-06 International Business Machines Corporation Well organized query result sets
US8112459B2 (en) * 2004-12-17 2012-02-07 International Business Machines Corporation Creating a logical table from multiple differently formatted physical tables having different access methods
US7333981B2 (en) * 2004-12-17 2008-02-19 International Business Machines Corporation Transformation of a physical query into an abstract query
US7793308B2 (en) 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7533170B2 (en) * 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7668741B2 (en) 2005-01-06 2010-02-23 International Business Machines Corporation Managing compliance with service level agreements in a grid environment
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7707288B2 (en) 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7467196B2 (en) * 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7472079B2 (en) * 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
US8122012B2 (en) 2005-01-14 2012-02-21 International Business Machines Corporation Abstract record timeline rendering/display
US7624097B2 (en) * 2005-01-14 2009-11-24 International Business Machines Corporation Abstract records
US7321895B2 (en) * 2005-01-14 2008-01-22 International Business Machines Corporation Timeline condition support for an abstract database
US8095553B2 (en) * 2005-03-17 2012-01-10 International Business Machines Corporation Sequence support operators for an abstract database
US7634578B2 (en) * 2005-07-14 2009-12-15 Microsoft Corporation Node-to-node communication pipelines
JP4723301B2 (ja) * 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
US7444332B2 (en) 2005-11-10 2008-10-28 International Business Machines Corporation Strict validation of inference rule based on abstraction environment
US7440945B2 (en) 2005-11-10 2008-10-21 International Business Machines Corporation Dynamic discovery of abstract rule set required inputs
US7664742B2 (en) 2005-11-14 2010-02-16 Pettovello Primo M Index data structure for a peer-to-peer network
US8005816B2 (en) 2006-03-01 2011-08-23 Oracle International Corporation Auto generation of suggested links in a search system
US8875249B2 (en) 2006-03-01 2014-10-28 Oracle International Corporation Minimum lifespan credentials for crawling data repositories
US8433712B2 (en) 2006-03-01 2013-04-30 Oracle International Corporation Link analysis for enterprise environment
US8868540B2 (en) 2006-03-01 2014-10-21 Oracle International Corporation Method for suggesting web links and alternate terms for matching search queries
US8214394B2 (en) 2006-03-01 2012-07-03 Oracle International Corporation Propagating user identities in a secure federated search system
US7752221B2 (en) * 2006-03-01 2010-07-06 Oracle International Corp. Progressive relaxation across tiers
US8332430B2 (en) 2006-03-01 2012-12-11 Oracle International Corporation Secure search performance improvement
US8707451B2 (en) 2006-03-01 2014-04-22 Oracle International Corporation Search hit URL modification for secure application integration
US9177124B2 (en) 2006-03-01 2015-11-03 Oracle International Corporation Flexible authentication framework
US8027982B2 (en) 2006-03-01 2011-09-27 Oracle International Corporation Self-service sources for secure search
US7941419B2 (en) 2006-03-01 2011-05-10 Oracle International Corporation Suggested content with attribute parameterization
US20080065591A1 (en) * 2006-09-08 2008-03-13 Leon Guzenda Configurable software database parallel query system and method
JP5068062B2 (ja) * 2006-10-30 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを統合するためのシステム、方法、およびプログラム
US8244747B2 (en) * 2006-12-05 2012-08-14 International Business Machines Corporation Middleware for query processing across a network of RFID databases
US8140557B2 (en) 2007-05-15 2012-03-20 International Business Machines Corporation Ontological translation of abstract rules
US7996392B2 (en) 2007-06-27 2011-08-09 Oracle International Corporation Changing ranking algorithms based on customer settings
US8316007B2 (en) 2007-06-28 2012-11-20 Oracle International Corporation Automatically finding acronyms and synonyms in a corpus
US8386508B2 (en) * 2008-04-28 2013-02-26 Infosys Technologies Limited System and method for parallel query evaluation
US8171045B2 (en) * 2008-07-31 2012-05-01 Xsevo Systems, Inc. Record based code structure
US8805875B1 (en) * 2008-10-04 2014-08-12 Reflex Systems Llc Systems and methods for information retrieval
US8676808B2 (en) 2009-07-09 2014-03-18 Dillon Software Services, Llc Data store interface that facilitates distribution of application functionality across a multi-tier client-server architecture
US9081873B1 (en) 2009-10-05 2015-07-14 Stratacloud, Inc. Method and system for information retrieval in response to a query
US8631028B1 (en) 2009-10-29 2014-01-14 Primo M. Pettovello XPath query processing improvements
EP2517124A1 (en) * 2009-12-23 2012-10-31 Ab Initio Technology LLC Managing queries
US8949210B2 (en) 2010-05-13 2015-02-03 Microsoft Corporation Analysis stack for complex event flows
CN102918534B (zh) 2010-06-10 2016-05-04 惠普发展公司,有限责任合伙企业 查询管道
US20120150913A1 (en) * 2010-12-13 2012-06-14 Microsoft Corporation Multidimensional data-centric service protocol
US20120215763A1 (en) * 2011-02-18 2012-08-23 Microsoft Corporation Dynamic distributed query execution over heterogeneous sources
US8689226B2 (en) 2011-05-11 2014-04-01 Hewlett-Packard Development Company, L.P. Assigning resources to processing stages of a processing subsystem
US8725730B2 (en) 2011-05-23 2014-05-13 Hewlett-Packard Development Company, L.P. Responding to a query in a data processing system
CN102169509B (zh) * 2011-05-30 2012-07-25 中铁第一勘察设计院集团有限公司 基于关系数据库及xml文件的地铁综合管线数据储存方法
US9177021B2 (en) * 2011-06-09 2015-11-03 International Business Machines Corporation Relational query planning for non-relational data sources
US8694977B2 (en) * 2011-07-15 2014-04-08 Infineon Technologies Ag Distributed compiling process with instruction signature support
US20130060806A1 (en) * 2011-09-07 2013-03-07 Microsoft Corporation Data Solution Composition Architecture
US9053210B2 (en) 2012-12-14 2015-06-09 Microsoft Technology Licensing, Llc Graph query processing using plurality of engines
CN103106261B (zh) * 2013-01-28 2016-02-10 中国电子科技集团公司第二十八研究所 基于窄带云数据服务的分布式查询方法
US10192187B2 (en) * 2014-01-03 2019-01-29 Visier Solutions, Inc. Comparison of client and benchmark data
US9449098B2 (en) * 2014-05-30 2016-09-20 Macy's West Stores, Inc. System and method for performing a multiple pass search
CN104036007B (zh) * 2014-06-23 2017-12-12 北京京东尚科信息技术有限公司 一种分布式数据库查询方法及装置
US20170031998A1 (en) * 2015-07-31 2017-02-02 Linkedln Corporation Organizational directory access client and server leveraging local and network search
US10671607B2 (en) * 2016-09-23 2020-06-02 Futurewei Technologies, Inc. Pipeline dependent tree query optimizer and scheduler
CN109885585B (zh) * 2019-02-18 2020-01-10 星环信息科技(上海)有限公司 支持存储过程、触发器与视图的分布式数据库系统和方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873080A (en) * 1996-09-20 1999-02-16 International Business Machines Corporation Using multiple search engines to search multimedia data
US6078914A (en) * 1996-12-09 2000-06-20 Open Text Corporation Natural language meta-search system and method
US6226635B1 (en) * 1998-08-14 2001-05-01 Microsoft Corporation Layered query management
US6697799B1 (en) * 1999-09-10 2004-02-24 Requisite Technology, Inc. Automated classification of items using cascade searches
US6324534B1 (en) * 1999-09-10 2001-11-27 Requisite Technology, Inc. Sequential subset catalog search engine
WO2001067351A1 (en) * 2000-03-09 2001-09-13 The Web Access, Inc. Method and apparatus for performing a research task by interchangeably utilizing a multitude of search methodologies
WO2002035395A2 (en) 2000-10-27 2002-05-02 Entigen Corporation Integrating heterogeneous data and tools
US6834287B1 (en) * 2001-03-14 2004-12-21 Trilogy Development Group, Inc. Classification engine for managing attribute-based data
US6795832B2 (en) * 2001-10-09 2004-09-21 Hewlett-Packard Development Company, L.P. Rule based compatibility module
US7289981B2 (en) * 2002-12-10 2007-10-30 International Business Machines Corporation Using text search engine for parametric search
US6836778B2 (en) * 2003-05-01 2004-12-28 Oracle International Corporation Techniques for changing XML content in a relational database

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102605929B1 (ko) * 2022-09-29 2023-11-30 스마트마인드 주식회사 서로 다른 프로세서 자원을 할당하여 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템
WO2024071504A1 (ko) * 2022-09-29 2024-04-04 스마트마인드 주식회사 서로 다른 프로세서 자원을 할당하여 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템

Also Published As

Publication number Publication date
EP1492031A2 (en) 2004-12-29
CN1573756A (zh) 2005-02-02
EP1492031A9 (en) 2005-03-23
US7472112B2 (en) 2008-12-30
JP2005018775A (ja) 2005-01-20
US20040260685A1 (en) 2004-12-23
EP1492031A3 (en) 2005-03-23

Similar Documents

Publication Publication Date Title
KR20050000342A (ko) 분산 쿼리 엔진 파이프라인 방법 및 시스템
US7383255B2 (en) Common query runtime system and application programming interface
US7103590B1 (en) Method and system for pipelined database table functions
EP1725929B1 (en) System and method for efficient evaluation of a query that invokes a table valued function
US7921416B2 (en) Formal language and translator for parallel processing of data
US8359570B2 (en) Adaptive scripting tool
RU2441273C2 (ru) Архитектура отображения с поддержанием инкрементного представления
US8601016B2 (en) Pre-generation of structured query language (SQL) from application programming interface (API) defined query systems
JP3437849B2 (ja) オブジェクト指向プログラミングを支援するデータベース管理システム及び方法
US8726229B2 (en) Multi-language support for service adaptation
US7693913B2 (en) Method and system for remote accessing a virtual database system
US20040193575A1 (en) Path expressions and SQL select statement in object oriented language
US20140280030A1 (en) Method of converting query plans to native code
US20110161942A1 (en) Service adaptation definition language
JP2005018776A (ja) クエリ中間言語の方法およびシステム
KR20050000328A (ko) 쿼리 최적화기 시스템 및 방법
US7640238B2 (en) Query planning for execution using conditional operators
EP3384385A1 (en) Methods and systems for mapping object oriented/functional languages to database languages
AU2010241304B2 (en) Systems, methods, and software for retrieving information using multiple query languages
US7174553B1 (en) Increasing parallelism of function evaluation in a database
Boshernitsan Harmonia: A flexible framework for constructing interactive language-based programming tools
Rompf et al. A SQL to C compiler in 500 lines of code
US8321200B2 (en) Solving constraint satisfaction problems for user interface and search engine
Seco et al. A common data manipulation language for nested data in heterogeneous environments
KR100772181B1 (ko) 확장성 생성 언어 스키마 기반 개발도구 연동 방법 및시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application