KR20120037413A - 계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배 - Google Patents

계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배 Download PDF

Info

Publication number
KR20120037413A
KR20120037413A KR1020117030858A KR20117030858A KR20120037413A KR 20120037413 A KR20120037413 A KR 20120037413A KR 1020117030858 A KR1020117030858 A KR 1020117030858A KR 20117030858 A KR20117030858 A KR 20117030858A KR 20120037413 A KR20120037413 A KR 20120037413A
Authority
KR
South Korea
Prior art keywords
query
node
producer
producer node
results
Prior art date
Application number
KR1020117030858A
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 KR20120037413A publication Critical patent/KR20120037413A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Abstract

생산자 노드(122)는 계층적, 트리 구조의 처리 아키텍처(102)에 포함될 수 있으며, 상기 아키텍처는 미리 규정된 하위 세트의 생산자 노드(122, 126, 129) 내에서의 생산자 노드(122) 및 적어도 하나의 다른 생산자 노드(126)에의 분배를 포함하여, 상기 아키텍처(102) 내에서의 쿼리(106)를 분배하도록 구성된 적어도 하나의 분배자 노드(120)를 포함한다. 상기 분배자 노드(120)는 상기 생산자 노드(122)로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과를 수신해서 거기로부터 컴파일 결과(108)를 출력하도록 더 구성되어 있다. 상기 생산자 노드(122)는, 상기 분배자 노드(120)로부터 수신된 쿼리(106)를 처리해서, 상기 생산자 노드(122)와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징(402-406)을 사용하는 쿼리 표시를 얻도록 구성됨으로써, 상기 생산자 노드(122)로부터의 결과를 얻는 쿼리 전처리기(134)와, 상기 쿼리 표시를 입력하고, 그에 의거하여, 상기 미리 규정된 하위 세트의 생산자 노드(122, 126, 129) 내에서의 상기 적어도 하나의 다른 생산자 노드(126, 129)에 의한 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드(126, 129)의 결과를 상기 컴파일 결과(108) 내에 포함되게 해야 하는지의 여부에 대한 예견을 출력하도록 구성되는 쿼리 분류기(142)를 포함한다.

Description

계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배{PRODUCTIVE DISTRIBUTION FOR RESULT OPTIMIZATION WITHIN A HIERARCHICAL ARCHITECTURE}
본원은, 35 U.S.C. §119(e) 하에서, 2009년 6월 10일자로 출원된, 발명의 명칭이 "계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배"인 미국 특허 가출원 제61/185,978호에 대한 우선권을 주장하는, 2009년 10월 30일자로 출원된, 발명의 명칭이 "계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배"인 미국 특허 출원 제12/609,788호에 대한 우선권을 주장하는 계속 출원이며, 양자 모두 그 내용이 본원에 참조로서 포함된다.
본원은 컴퓨터 네트워크의 계층적 아키텍처 내에서의 잡 분배에 관한 것이다.
데이터 검색 및 처리를 위한 종래의 시스템은, 결과 생산성의 정확도 및 시기성(timeliness), 연산 자원의 이용 등의 특징을 최적화하려 하고 있으며, 또한 시스템의 유저 지식 및 시스템과의 유저 상호작용을 최소화하려 하고 있다. 이러한 시도와 관련하여 다양한 도전이 이루어지고 있다.
예를 들어, 데이터 검색에 있어서, 잠재적 유저가 가장 정확한 데이터에 가장 근사치로(또한 그에 따라 적시에) 액세스할 수 있도록, 모든 필요한 데이터를 데이터의 잠재적인 유저에게 가까운 위치에 저장하는 것은 이론적으로 가능하다. 그러나, 많은 시스템에 있어서는, 유저가 분포되고, (유저의 분포와 결합된) 데이터의 사이즈 때문에 어떤 단일의 위치에 저장을 할 수 없는 경우가 발생할 수 있다. 또한, 특정한 사이즈의 데이터는 정확하고 시기적절한 방식으로 서치하기 어려워지고, 데이터가 과도하게 통합되면 연산 자원은 병목 현상을 경험하게 될 수 있다.
그 결과, 많은 시스템에 있어서는, 데이터(및 그 처리)는 상술한 어려움을 반영하는 방식으로 분배된다. 예를 들어, 특정 타입의 데이터 또는 하위세트의 데이터를 상이한 기하학적 위치에 분배함으로써, 분배된 유저의 액세스가 용이해질 수 있으며, 연산 자원이 보다 효율적으로 할당될 수 있다. 특히, 상기 분배 시스템은 구조화되고 체계화된 방식으로 데이터 분배를 제공하는 계층적 또는 트리 구조의 아키텍처에 의존할 수 있다.
그러나, 이렇게 분배된 시스템은 그 자신과 연관된 어려움을 가지는 것이 일반적이다. 예를 들어, 이렇게 분배된 시스템은, 예를 들어 쿼리(query) 및 결과(result)가 네트워크를 통해 전달되어야만 하기 때문에, 추가적인 레이턴시(latency)를 도입하는 것이 일반적이다. 또한, 이렇게 분배된 시스템은, 보다 작고 빠른 데이터베이스가 더 많은/상이한 위치에서 복제되므로, 더 크고 느린 데이터베이스보다 더 빠르고 규칙적으로 액세스하는 바와 같은, 데이터의 분배를 구성할 수 있다. 보다 일반적으로, 이렇게 분배된 시스템은 다른 자원에 비해 상대적으로 액세스하는데 비용이 더 많이 드는 몇몇 자원을 가질 수 있다. 이러한 점에서, 상기 비용은, 당해 시스템 내의(또는 그와 연관된) 시간, 돈, 연산 자원, 또는 임의의 제한된 자원 면에서의 비용을 의미할 수 있다. 결과적으로, 시스템으로부터 얻은 결과를 최적화하는 보다 넓은 최적화 환경에서는 상기 비용을 관리하는 것이 어려울 수 있다.
하나의 일반적인 양태에 따르면, 생산자 노드(producer node)는 계층적, 트리 구조의 처리 아키텍처에 포함될 수 있으며, 상기 아키텍처는 미리 규정된 하위 세트의 생산자 노드들 내에서의 상기 생산자 노드 및 적어도 하나의 다른 생산자 노드에의 분배를 포함하여, 상기 아키텍처 내에서의 쿼리를 분배하도록 구성된 적어도 하나의 분배자 노드(distributor node)를 포함한다. 상기 분배자 노드는 상기 생산자 노드로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드로부터의 결과를 수신해서 거기로부터 컴파일 결과(compiled result)를 출력하도록 더 구성될 수 있다. 상기 생산자 노드는, 상기 분배자 노드로부터 수신된 쿼리를 처리해서, 상기 생산자 노드와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징을 이용하는 쿼리 표시(query representation)를 얻도록 구성됨으로써, 상기 생산자 노드로부터의 결과를 얻는 쿼리 전처리기와, 상기 쿼리 표시를 입력하고, 그에 의거하여, 상기 미리 규정된 하위 세트의 생산자 노드들 내에서의 상기 적어도 하나의 다른 생산자 노드에 의한 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드의 결과를 상기 컴파일 결과 내에 포함되게 해야 하는지의 여부에 대한 예견(prediction)을 출력하도록 구성되는 쿼리 분류기를 포함한다.
구현예는 하나 이상의 하기의 특징을 포함할 수 있다. 예를 들어, 상기 쿼리 분류기는, 상기 생산자 노드 및 상기 적어도 하나의 다른 생산자 노드는 그들의 각각의 결과를 상기 분배자 노드에 병렬적으로 제공하도록, 상기 쿼리 표시를 얻는 것과 함께, 또한 상기 생산자 노드로부터의 결과를 생산하기 전에, 상기 분배자 노드에 상기 예견을 제공하도록 구성될 수 있다.
상기 쿼리 분류기는 상기 아키텍처 내에서의 복수의 다른 생산자 노드로부터 적어도 하나의 다른 생산자 노드를 결정하고, 상기 적어도 하나의 다른 생산자 노드를 상기 쿼리가 전달되어야 하는 목표 노드로서 식별하도록 구성될 수 있다. 상기 쿼리 분류기는 상기 쿼리 표시와 연관된 적어도 두 개의 쿼리 특징을 입력하고, 그것에 의거하여 상기 예견을 연산하도록 구성될 수 있다. 상기 쿼리 분류기는 상기 쿼리 표시와 연관된 쿼리 특징의 세트로부터 적어도 두 개의 쿼리 특징을 선택하도록 구성될 수 있다. 상기 적어도 두 개의 쿼리 특징 중 적어도 하나는 상기 쿼리 내에 있는 용어들의 용어 카운트를 포함할 수 있다.
상기 쿼리 분류기는 상기 적어도 하나의 다른 생산자 노드가 상기 컴파일 결과 내에 포함되기 쉬운 정도를 나타내는 범위 내의 값을 포함하는 상기 예견을 제공하도록 구성될 수 있다. 상기 쿼리 분류기는 상기 적어도 하나의 다른 생산자가 상기 적어도 하나의 다른 생산자 노드로부터의 결과를 제공하는데 사용될 쿼리를 처리해야 하는 정도를 나타내는 범위 내의 값을 포함하는 상기 예견을 제공하도록 구성될 수 있다.
상기 생산자 노드는 상기 쿼리 표시와 연관된 쿼리 특징, 상기 적어도 하나의 다른 생산자 노드로부터의 결과, 및 복수의 기계 학습 알고리즘의 하나를 포함하는 분류 데이터를 입력하도록 구성되고, 그것에 의거하여, 상기 예견을 출력하는데 사용하기 위해 상기 쿼리 분류기에 출력하기 위한 분류 모델을 구성하도록 구성되는 분류 관리자를 포함할 수 있다. 상기 분류 관리자는 상기 적어도 하나의 다른 노드로부터의 결과를 추적해서 그것과 함께 상기 분류 데이터 및 상기 분류 모델을 업데이트하도록 구성될 수 있다. 부가적으로, 또는 선택적으로, 상기 생산자 노드는 상기 쿼리 분류기에 의한 지시 여부에 따라 상기 적어도 하나의 다른 생산자 노드에 상기 쿼리의 하위 세트를 주기적으로 송신하기 위해 상기 분배자 노드를 기동하고, 그것에 의거하여 상기 분류 데이터를 업데이트하도록 구성된 모니터를 포함할 수 있다.
상기 생산자 노드로부터의 결과는 상기 생산자 인덱스를 사용하여 상기 생산자 노드와 연관된 데이터 소스로부터 얻어지고, 상기 적어도 하나의 다른 생산자 노드로부터의 결과는 상응하는 인덱스를 사용하여 상기 적어도 하나의 다른 생산자 노드와 연관된 데이터 소스로부터 얻어지며, 상기 적어도 하나의 다른 생산자 노드는 상기 생산자 노드에 비해 액세스 비용 효율이 낮다.
다른 일반적인 양태에 따르면, 적어도 하나의 프로세서가 적어도 하기의 작업을 수행하는 컴퓨터 구현 방법은, 계층적, 트리 구조의 처리 아키텍처 내의 적어도 하나의 분배자 노드로부터 쿼리를 생산자 노드에서 수신하는 작업을 포함할 수 있고, 상기 아키텍처는 상기 생산자 노드 및 적어도 하나의 다른 생산자 노드에의 분배를 포함하여 상기 아키텍처 내에서의 쿼리를 분배하도록 구성된 상기 적어도 하나의 분배자 노드를 포함하고, 또한 상기 분배자 노드는 상기 생산자 노드로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드로부터의 결과를 수신해서 거기로부터 컴파일 결과를 출력하도록 더 구성된다. 또한, 상기 방법은, 상기 생산자 노드와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징을 이용하여 쿼리 표시를 얻기 위해 상기 분배자 노드로부터 수신된 상기 쿼리를 전처리해서, 상기 생산자 노드로부터의 결과를 얻는 전처리 작업, 및 상기 적어도 하나의 다른 생산자 노드에 의한 상기 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드의 결과를 상기 컴파일 결과 내에 포함되게 해야 하는지의 여부에 대한 예견을, 상기 쿼리 표시에 의거하여 출력하게 되도록 상기 쿼리 표시를 이용하여 상기 쿼리를 분류하는 작업을 포함할 수 있다.
구현예는 하나 이상의 하기의 특징을 포함할 수 있다. 예를 들어, 상기 쿼리를 분류하는 작업은, 상기 생산자 노드 및 상기 적어도 하나의 다른 생산자 노드가 그들의 각각의 결과를 상기 분배자 노드에 병렬적으로 제공하도록, 상기 쿼리 표시를 얻는 것과 함께, 또한 상기 생산자 노드로부터 상기 결과를 생산하기 전에 상기 분배자 노드에 상기 예견을 제공하는 단계를 포함할 수 있다.
부가적으로, 또는 선택적으로, 상기 쿼리를 분류하는 작업은, 상기 쿼리 표시와 연관된 쿼리 특징, 상기 적어도 하나의 다른 생산자 노드로부터의 결과, 및 복수의 기계 학습 알고리즘의 하나를 포함하는 분류 데이터를 입력하는 단계, 및 그것에 의거하여, 상기 예견을 출력하는데 이용하기 위한 분류 모델을 구성하는 단계를 포함할 수 있다. 부가적으로, 상기 쿼리를 분류하는 작업은, 상기 예견에 의한 지시 여부에 따라 상기 적어도 하나의 다른 생산자 노드에 상기 쿼리의 하위 세트를 주기적으로 송신하고, 그것에 의거하여 상기 분류 데이터를 업데이트하기 위해 상기 분배자 노드를 기동하는 단계를 포함할 수 있다.
다른 일반적인 양태에 따르면, 컴퓨터 프로그램 제품은, 컴퓨터 가독 매체상에 유형으로 구현될 수 있고, 실행시에, 데이터 처리 장치에 하기의 단계를 실행시키도록 구성된 실행 코드를 포함할 수 있으며, 상기 단계로서는, 계층적, 트리 구조의 처리 아키텍처 내의 적어도 하나의 분배자 노드로부터 쿼리를 생산자 노드에서 수신하는 단계를 포함하고, 상기 아키텍처는 상기 생산자 노드 및 적어도 하나의 다른 생산자 노드에의 분배를 포함하여 상기 아키텍처 내에서의 쿼리를 분배하도록 구성된 상기 적어도 하나의 분배자 노드를 포함하고, 또한 상기 분배자 노드는 상기 생산자 노드로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드로부터의 결과를 수신해서 거기로부터 컴파일 결과를 출력하도록 더 구성되고, 또한 상기 단계로서는, 상기 생산자 노드와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징을 이용하여 쿼리 표시를 얻기 위해 상기 분배자 노드로부터 수신된 상기 쿼리를 전처리해서, 상기 생산자 노드로부터의 결과를 얻는 전처리 단계, 및 상기 적어도 하나의 다른 생산자 노드에 의한 상기 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드의 결과를 상기 컴파일 결과 내에 포함되게 해야 하는지의 여부에 대한 예견을, 상기 쿼리 표시에 의거하여 출력하게 되도록 상기 쿼리 표시를 이용하여 상기 쿼리를 분류하는 단계를 또한 포함한다.
구현예는 하나 이상의 하기의 특징을 포함할 수 있다. 예를 들어, 상기 쿼리를 분류하는 단계에서, 실행 명령이, 상기 생산자 노드 및 상기 적어도 하나의 다른 생산자 노드가 그들의 각각의 결과를 상기 분배자 노드에 병렬적으로 제공하도록, 상기 쿼리 표시를 얻는 것과 함께, 또한 상기 생산자 노드로부터 상기 결과를 생산하기 전에 상기 분배자 노드에 상기 예견을 제공하는 단계를, 상기 데이터 처리 장치에 실행시킬 수 있다.
상기 쿼리를 분류하는 단계에서, 실행 명령이, 상기 쿼리 표시와 연관된 쿼리 특징, 상기 적어도 하나의 다른 생산자 노드로부터의 결과, 및 복수의 기계 학습 알고리즘의 하나를 포함하는 분류 데이터를 입력하는 단계, 및 그것에 의거하여, 상기 예견을 출력하는데 이용하기 위한 분류 모델을 구성하는 단계를, 상기 데이터 처리 장치에 실행시킬 수 있다. 상기 쿼리를 분류하는 단계에서, 실행 명령이, 상기 예견에 의한 지시 여부에 따라 상기 적어도 하나의 다른 생산자 노드에 상기 쿼리의 하위 세트를 주기적으로 송신하도록 상기 분배자 노드를 기동하는 단계, 및 그것에 의거하여 상기 분류 데이터를 업데이트하는 단계를, 상기 데이터 처리 장치에 실행시킬 수 있다.
도 1a는 계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배 시스템의 블럭도.
도 1b는 도 1a의 시스템의 예시적인 작업을 도시하는 플로우차트.
도 2는 도 1a의 생산자 노드의 예시적인 작업을 도시하는 플로우차트.
도 3은 도 1a의 시스템의 분류 관리자의 추가의 예시적인 연산을 도시하는 플로우차트.
도 4a 내지 도 4c는 분류 모델을 구성하는데 사용된 분류 데이터를 도시하는 테이블.
도 5는 도 1a의 시스템이 작동할 수 있는 예시적인 연산 환경의 블럭도.
하나 이상의 구현예는 첨부도면 및 하기에서 상세히 설명된다. 다른 특징들은 발명의 상세한 설명, 첨부도면 및 청구범위로부터 분명해질 것이다.
도 1a는 계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배 시스템(100)의 블럭도이다. 도 1a에서는, 유저(104)가 원하는 서치 및 그 외의 작업을 용이하게 하기 위한 계층적, 트리 구조의 아키텍처가 도시된다. 특히, 아키텍처(102)는 쿼리(106)를 수용해서 컴파일 결과(108)를 유저에게 반환하는데, 아키텍처(102)의 작업의 자원 및 그와 연관된 비용을 동시에 효율적으로 관리하면서 컴파일 결과(108)의 유용함/정확도를 최적화하는 방식으로, 그와 같이 행할 수 있다.
도 1a의 예에 있어서, 유저(104)는 쿼리(106)를 제공하고 그와 관련된 컴파일 결과(108)를 수용할 수 있도록 적절한 그래픽 유저 인터페이스(GUI) 또는 그 외의 인터페이스가 실행될 수 있는 디스플레이(109)를 조작하는 것을 이해할 수 있다. 예를 들어, 디스플레이(109)는 임의의 통상적인 모니터, 프로젝터, 또는 다른 시각 디스플레이, 및 인터넷 브라우저 또는 다른 GUI를 포함할 수 있는 상응하는 인터페이스를 의미할 수 있다. 물론, 디스플레이(109)는 명료화 및 간결화를 위해 도 1a에서는 특별히 도시되지 않은 적절한 연산 자원(예를 들어, 랩톱 컴퓨터, 퍼스널 컴퓨터, 또는 핸드헬드 컴퓨터)과 연관될 수 있다. 예시적인 실시에 있어서, 유저(104) 및 디스플레이(109)는 쿼리(106)를 생성하고 컴파일 결과(108)를 예측하는 다른 연산 시스템(들)으로 대체될 수 있다.
위에서 살펴본 바와 같이, 일반적으로 말해서, 아키텍처(102)는 아래에서 상세하게 기술되는 바와 같이, 다수의 가능한 데이터 소스를 포함할 수 있다. 그 결과, 컴파일 결과(108)는 이들 데이터 소스 중에서 상이한 소스로부터의 결과를 포함할 수 있다. 특히, 도시된 바와 같이, 컴파일 결과(110, 112, 116)는 하나의 데이터 소스("S")와 연관되는 반면, 컴파일 결과(114)는 다른 데이터 소스("T")와 연관된다. 아키텍처(102) 내에서의 복수의 가용 데이터 소스에 의하면, 아키텍처(102)에 액세스하기 전에는, 아키텍처(102)의 유저(104)도 오퍼레이터도, 어느 데이터 소스가 다양한 컴파일 결과(110-116)를 포함할지에 대한, 그리고, 가용 결과가 컴파일 결과(108)에 나타나도록 충분한 품질의 것인지에 대한 특별한 지식을 가질 수 없다는 것을 이해할 수 있다.
아키텍처(102)에서는, 쿼리 및 그 외의 잡 요청을, 적절한 생산자 노드, 예를 들어, 생산자 노드(122)(데이터 소스 "S"(124)에 연관됨), 생산자 노드(126)(데이터 소스 "T"(128)에 연관됨), 및 생산자 노드(129)(데이터 소스 "U"(130)에 연관됨) 중 하나에 전달 처리하도록 구성되는 분배자 노드(118) 및 분배자 노드(120)가 도시된다. 분배자 노드(118, 120)는 하나 이상의 생산자 노드(122, 126, 129)로부터의 편집물에 대한 반환 결과를 컴파일 결과(108) 내로 수용하도록 구성될 수도 있다. 따라서, 아키텍처(102)는 보다 일반적인 경우의 간략화된 예시를 나타내고, 그 경우에 있어서의 계층적, 트리 구조의 아키텍처는 쿼리 결과의 생산자인 복수의 리프 노드(leaf node) 중에서 쿼리를 분배 및 수집하는 복수의 내부 분배자 노드를 포함한다.
도 1a 및 이제까지의 설명에 있어서, 아키텍처(102)는 주로 데이터 소스(124, 128, 130)를 서치하기 위한 쿼리에 대하여 논의되고 있다. 그러나, 이러한 맥락에서의 쿼리라는 용어는 보다 넓은 의미를 가지는 것이며, 더 일반적으로는, 전술한 아키텍처(102)의 특별한 예 또는 주제 내에서의 분배에 적절할 수 있는 임의의 잡 또는 태스크를 가상으로 나타내고 있는 것으로 고려될 수 있음을 이해할 수 있다. 예를 들어, 상기 잡은 레포트의 생성, 달성될 태스크가 수행되는 계산, 또는 생산자 노드(122, 126, 129)가 결과를 생산할 수 있는 가상의 임의의 잡을 포함할 수 있다.
이제, 본 기재의 목적에 대하여, 생산자(122, 126, 129)가, 상응하는 데이터 소스(124, 128, 130)에 관련되며 데이터 소스(124, 128, 130)의 문서의 실제 콘텐츠 내에서의 서치에 대한 필요성을 완화하거나 방지하는 인덱스를 포함하거나, 그와 연관될 수 있다고 가정한다. 이와 관련하여, 문서라는 용어는, 데이터 소스(124, 128, 130) 내에 저장될 수 있으며, 본 예에서는, 문서의 용이한 서치를 위해 상응하는 생산자 노드(122, 126, 129)와 관련하여 인덱스될 수 있는 임의의 이산 데이터 조각 또는 데이터 구조를 의미하는 것으로 이해되어야 한다.
즉, 예를 들어, 각각의 상기 인덱스는, 예컨대 문서 내의 단어 또는 구, 또는 콘텐츠(오디오, 비디오, 또는 그래픽 콘텐츠)를 특정하는 메타-데이터를 포함하는 상응하는 데이터 소스 내의 문서의 콘텐츠에 대한 구조화된 정보를 포함할 수 있다. 상기 인덱싱 기술의 예는 본 기술분야에 잘 알려져 있으며 본 발명의 이해를 돕는데 필요한 것을 제외하고는 여기에 더 기재하지 않는다.
상술한 바와 같이, 데이터 소스(124, 128, 130)가 아키텍처(102)의 내에 포함되고, 그에 따라 아키텍처의 다른 요소와 호환될 수 있는 경우로 되는 것이 일반적일 수 있다. 즉, 예를 들어, 아키텍처(102) 전체에 걸쳐 분배된 쿼리는 다양한 분배자 노드(118) 및 생산자 노드(122, 126, 129)에 의해 사용되어, 결국 컴파일 결과(108)로 컴파일되게 되는 결과를 얻을 수 있다.
그러나, 그렇게 함에 있어서, 전술한 바와 같이, 상이한 생산자 노드(122, 126, 129) 및 연관된 데이터 소스(124, 128, 130)는 그 액세스와 연관된 비용의 관점에서 명백한 차이점을 가질 수 있음을 이해해야 한다. 예를 들어, 생산자 노드(126)는 기하학적으로 분배자 노드(120) 및/또는 생산자 노드(122)로부터 멀리 떨어져 있고, 그에 따라 생산자 노드(126)에 액세스하기 위해 중개 네트워크(들)를 가로지르는 것에 연관된 액세스 레이턴시를 도입하게 되는 경우가 발생할 수 있다. 다른 예에서, 생산자 노드(129)는 쿼리에의 응답에 대한 제한된 기억용량을 가질 수 있거나, 또는 그것이 너무 커서 그에 따른 서치 시간이 받아들일 수 없게 길어질 수 있다(응답시에 계산된 레이턴시를 도입). 또 다른 예로서, 일부 경우에 있어서는, 특정한 데이터 소스에 액세스하는 것과 연관된 기본적인 재정 비용이 있을 수 있다.
아키텍처(102)의 특정한 생산자 노드에 액세스하는 액세스 비용과 연관된 이들 및 관련된 어려움을 완화하기 위해, 아키텍처(102)의 오퍼레이터는 일부 데이터(및 연관된 데이터 소스)가 보다 폭넓게 액세스된 원하는 데이터를 포함하고, 그에 따라 다른 데이터 소스(예를 들어, 도 1a의 예에서, 데이터 소스(124)가 상기 데이터 소스로 대표될 수 있음)보다 높게(그에 따라, 보다 쉽게 그리고 보다 빈번하게 액세스 가능하게) 위치되어야 한다는 일반 상식을 가질 수 있다. 또한, 보다 폭넓게 액세스되고 보다 빈번하게 원하는 결과를 가질 수 있는 상기 데이터 소스는 업데이트, 액세스 및 서치를 상대적으로 빠르고 쉬워지게 하기 위해, 가능한 전체 결과를 보다 적게 포함하도록 구성될 수 있다. 반대로, 액세스함에 있어서 상당히 더 크거나, 더 멀리 떨어져 있거나 또는 그렇지 않으면 더 비용이 많이 들 수 있는 그 밖의 데이터 소스는 아키텍처(102) 내에서 더 낮게 위치되고, 그에 따라 덜 빈번하게 액세스될 수 있다. 예를 들어, 도 1a에 있어서, 생산자 노드(126) 및 데이터 소스(128)는 기하학적으로 멀리 떨어져 있는 반면에, 생산자 노드(129) 및 데이터 소스(130)는 쿼리에의 응답에 대한 제한된 기억용량을 가지는 일이 발생할 수 있다.
이러한 아키텍처에 있어서, 원하는 쿼리 결과를 가장 포함하기 쉬운, 및/또는 적시에 가장 비용 효율적인 방식으로 상기 결과를 제공할 수 있는 소스로 되는 생산자 노드(122)에 쿼리(106)가 우선 분배될 수 있음이 분명하다. 물론, 생산자 노드(122) 및 데이터 소스(124)는, 실제로는, 쿼리(106)에 대한 결과의 완전한 또는 최상의 세트를 포함하지는 않을 수 있다. 이러한 시나리오에서는, 하나의 옵션은, 데이터 소스(124)로부터 얻은 결과의 양 또는 품질을 판정하는 것을 대기하고, 이후, 필요하다고 생각되면, 나머지 생산자 노드(126, 129)의 하나 이상에 액세스하도록 처리하는 것이다.
그러나, 이러한 옵션에 있어서, 이와 같은 쿼리 결과의 양 또는 품질이 생산자 노드(126, 129)의 상기 액세스와 연관된 비용 및 노력을 보증한다고는 말하기 어렵다. 특히, 분배자 노드(118, 120)가 아키텍처(102) 내에서의 쿼리의 분배(예컨대, 라우팅)를 담당하는 범위까지, 상기 분배자 노드가 생산자 노드(122, 126, 129)의 자원에 관한 지능적인 결정을 거기에 쿼리(106)를 전달하기 위해 선택하게 하는 정보 또는 연산 자원을 가지는 것은 어려울 수 있다. 상기 정보는 하나 이상의 생산자 노드(122, 126, 129)에 국한될 수 있고, 예컨대 분배자 노드(120)에는 쉽게 이용될 수 없다. 그 결과, 분배자 노드(120)가, 예컨대 생산자 노드(126)에의 쿼리(106)의 분배가 쿼리(106) 및 컴파일 결과(108)에 대하여 유용해질 지의 여부를 결정하기는 어려울 수 있다.
이와 관련하여, 그리고 전문용어로 말하면, 아키텍처(102)의 데이터 소스는, 컴파일 결과(108)에 내포되는 쿼리 결과를 반환할 때 생산적(productive)이 된다고 할 수 있다. 예를 들어, 도 1a에 있어서, 표시된 컴파일 결과(110-116)가 쿼리(106)에 대한 가장 이용 가능한 쿼리 결과를 나타낸다고 이해할 수 있다. 도시 및 기재된 바와 같이, 결과(114)는 데이터 소스(128)로부터 얻어지므로, 생산자 노드(126)가 쿼리(106) 및 컴파일 결과(108)에 대하여 생산적이었다고 말할 수 있다. 상기 컴파일 결과(108)를 제공함에 있어서 생산자 노드(129)가 액세스되었다고 가정하면, 데이터 소스(124, 128)로부터의 결과에 대하여 랭크될 때, 데이터 소스(130)가 컴파일 결과 내에 포함할 만하게 여겨지는 임의의 결과를 제공하지 않았으므로, 생산자 노드(129)는 쿼리(106) 및 컴파일 결과(108)에 대하여 비생산적(non-productive)인 것으로 간주된다고 이해할 수 있다.
이러한 전문용어를 이용하면, 쿼리(106)에 대한 생산적인 결과를 반환하지 않는 생산자 노드(126, 129)의 임의의 액세스는, 유저가 액세스에 착수하는데 필요한 노력의 대가로 상기 액세스로부터 아무런 이득도 받지 못했기 때문에, 유저(104)에게는 자원의 낭비 및 있을 수 있는 불편(예컨대, 연산 및/또는 액세스 레이턴시에 기인함)으로 간주될 수 있음이 분명하다. 예를 들어, 처음에는 데이터 소스(124)가 다수의 결과를 생산하는 일이 발생할 수 있고, 상기 결과가 생산자(126, 129)에 액세스함으로써 향상될 수 있는지, 즉 상기 결과가 현저하게 향상되거나, 또는 미미하게 향상되거나, 또는 전혀 향상되지 않게 되는지에 대하여 말하기 어려울 수 있다.
미미한 향상 또는 전혀 향상되지 않는 후자의 두 가지 경우에 있어서, 기재한 바와 같이, 생산자(126, 129) 중 하나 또는 둘 모두에의 액세스는 일반적으로 자원의 열악한 사용이 되는 것으로 여겨질 수 있다. 또한, 이러한 시나리오에 있어서, 생산자 노드(122)의 액세스가 이차 생산자 노드(126, 129)의 액세스가 필요하다는 강력한 지시를 제공하는 상황에서조차, 그리고 상기 액세스의 결과가 생산적으로 되는 경우에조차, 여전히 상기 지시가 이루어지거나/제공될 때와 이차 생산자 노드(126, 129)가 실제로 액세스되어 그로부터 결과가 얻어질 때 사이에는 불리한 지연이 발생하는 것을 이해할 수 있다.
그 결과, 도 1a의 시스템(100)에 있어서, 생산자 노드(122)에는 생산자 노드(126, 129)의 액세스가 바람직해질 수 있는 시기(예를 들어, 상기 액세스가 생산적으로 될 수 있고, 생산적인 결과들에 있어서의 결과가 컴파일 결과(108)에의 포함을 위해 그로부터 얻어지는 시기)를 미리 예견하는 능력이 제공된다. 또한, 도 1a에 있어서, 상기 예견은 생산자 노드(122) 자신에 의해 데이터 소스(124)의 액세스 전에(및/또는 액세스와 함께) 이루어질 수 있다. 이러한 방식에서는, 생산자 노드(122, 126, 및/또는 129)에 의한 쿼리 처리는 본질적으로 병렬적으로 처리될 수 있으며, 또한 생산자 노드(126, 129)로부터의 생산적 결과 및 아키텍처(102) 내의 자원의 효율적인 이용을 더 제공하기 쉬울 수 있다.
특히, 도시된 바와 같이, 생산자(122)는 연산 장치(132)를 이용하여, 또는 그와 관련하여 실행될 수 있다. 연산 장치(132)는, 도 5에 대하여 아래에서 더 상세히 기술되는 바와 같이, 내부에 기술된 태스크를 수행하기에 적합한 가상의 임의의 연산 장치일 수 있음을 이해할 수 있다.
도 1a에는, 쿼리(106)를 수신하고, 생산자 노드(122)의 상응하는 인덱스와 함께 사용하기 위해 쿼리(106)를 준비해서, 데이터 소스(124)로부터 결과를 얻도록 구성되는 쿼리 전처리기(query pre-processor)(134)가 도시된다. 즉, 쿼리 전처리기(134)는 쿼리를 입력하고, 생산자 노드(122)(및 연관 인덱스) 및 데이터 소스(124)에 대하여 쿼리의 보다 완전한 및/또는 보다 호환적인 표현인 쿼리 표시(query representation)를 출력한다.
이러한 쿼리 전처리의 예는 일반적으로 본 기술분야에 공지되어 있으며, 기재의 이해를 돕는데 필요한 것을 제외하고는 본원에서 상세하게 기술하지 않는다. 그렇지만, 일반적으로, 상기 쿼리 전처리는 쿼리(106)와 연관된 쿼리 특징 세트를 얻기 위해 쿼리(106)의 분석을 포함할 수 있음을 이해해야 한다. 단지 비제한적인 예로서, 몇 가지의 상기 쿼리 특징은, 예를 들어 쿼리의 길이(즉, 다수의 문자), 쿼리에서의 다수의 용어, 쿼리의 불의 구조(Boolean structure), 쿼리의 하나 이상의 용어의 동의어, 쿼리에서의 용어의 의미와 어의적으로 유사한 의미를 가진 단어, 쿼리에서의 용어와 유사한 철자(또는 오자(misspelling))를 가진 단어, 및/또는 쿼리의 구 분석(phrase analysis)을 포함할 수 있다.
후자에 관하여, 상기 구 분석은, 예를 들어 각 구(들)의 길이, 쿼리 내에서 단어들이 서로 인접해 있는지의 분석, 및/또는 쿼리(106) 내에서 인접해 있는 두 개 이상의 단어가 다른 설정(예컨대, 일반적으로 인터넷 상에서)에서 서로 인접하여 나타나는 경향에 대한 빈도의 분석을 포함할 수 있다. 상기 분석은 쿼리와 관련되는 것으로 간주될 수 있는 특정한 토픽 또는 주제(예컨대, 코퍼스(corpus) 기반 지식, 특히 특정한 구 또는 그 밖의 단어 관계를 포함하는 경향이 있는 특정 타입의 결과 문서를 포함하는 전문화된 코퍼스)를 고려할 수 있다. 다른 예에서는, 상기 분석은 상기 코퍼스 기반 지식의 고려를 신중하게 회피할 수 있고, 일반적으로 모든 가용의/적합한 주제에 대하여 용어들 및 그 용어들의 서로에 대한 관계를 고려할 수 있다.
일반적으로, 상기 쿼리 처리는 유저(104)가 데이터 소스(124)로부터 원하는 결과를 얻을 가능성을 높일 수 있다. 예를 들어, 쿼리(106)의 동의어 및 잠재적인 오자를 포함함으로써, 생산자 노드(122)는 데이터 소스(124)로부터 상대적으로 큰 결과 세트를 얻을 수 있다. 이후, 이러한 결과가 소팅/필터링/랭크되거나, 그 밖의 처리를 받게 되면, 상기 결과는 동의어 및 오자가 포함되지 않는 경우보다 더 바람직한 결론을 제공하게 될 수 있다. 일반적으로, 처리 시간 및/또는 연산 자원이 제한되는 범위까지, 모든 또는 대부분의 이들 쿼리 특징을 고려하기는 어렵거나 바람직하지 않을 수 있고, (유사하게) 쿼리 특징이 고려/수행되는 범위를 제한하는 것이 바람직해질 수 있다(다수의 동의어가 포함되는 것을 제한하는 것이 바람직할 수 있음).
상술한 바와 같이, 종래의 시스템은 데이터 소스(124)의 인덱스에 대하여 다양한 방식 및 다양한 범위로 상기 쿼리 전처리의 일반적인 개념을 이용하는 것이 있다. 도 1a의 예에서는, 생산자 노드(122)는 데이터 소스(124)의 인덱스를 액세스하기 위해서 뿐만 아니라 상기 쿼리(106)의 분류를 만들어 데이터 소스(124)에의 액세스와 함께 생산자 노드(126, 129)에 액세스하는데 필요하거나 바람직할 수 있는지에 대한 예견을 제공하기 위해서 상기 쿼리 전처리의 일부 또는 모든 결과를 이용한다. 이후, 상기 예견을 이용하면, 분배자 노드(120)는 쿼리(106)에 대하여 생산자 노드(126, 129)에 액세스할 지의 여부 및 시기에 대하여 더 정확한 정보를 알게 될 수 있다.
그 결과, 예를 들어, 상기 액세스는, 발생시에 보다 생산적으로 되기 쉬우며, 생산적으로 되지 않게 되는 경우(그에 따라 시스템 자원 및/또는 유저 시간을 낭비하게 됨)는 쉽게 발생하지 않는다. 또한, 생산자 노드(126, 129)에의 상기 액세스는 개시 전에 생산자 노드(122)의 액세스가 완료하기를 기다릴 필요가 없고, 오히려 컴파일 결과(108)가 효율적 및 시간 효율적인 방식으로 제공될 수 있도록 본질적으로 병렬적으로 처리될 수 있다.
특히, 도 1a의 예에서는, 모델을 구성하도록 분류 데이터(138)에 액세스하는 분류 관리자(140)가 포함되고, 그것에 의해 쿼리(106)의 컴파일 결과에 대하여 생산자 노드(126, 129)의 액세스가 생산적으로 되는지에 대하여 쿼리 분류기(142)가 상술한 바와 같은 예견을 이룰 수 있게 된다. 예를 들어, 도 3 및 도 4에 대하여 상세하게 후술되는 바와 같이, 분류 관리자(140)는 쿼리 분류기(142)에 의해 수행되는 분류 모델을 구성하기 위해 기계 학습 기술을 수행할 수 있다.
일반적으로, 분류 관리자(140)는 생산자 노드(122)에서 수신된 상대적으로 많은 수의 쿼리를 하나 이상의 다른 생산자 노드(126, 129)에 송신함으로써 작동할 수 있다. 이후, 모니터(136)는 상기 쿼리의 결과를 관찰 및 추적하고, 그 결과를 분류 관리자(140)에게 보고하는데 사용될 수 있다. 따라서, 분류 데이터(138)는, 예를 들어, 쿼리 전처리에 의해 사용된 다양한 쿼리 특징의 타입 또는 성질, 생산자 노드(122)에서 수신된 쿼리에 대한 상기 쿼리 특징의 실제값, 및 저장된 쿼리 및 쿼리 특징(및 그 값)에 대하여 하나 이상의 생산자 노드(126, 129)로부터 모니터(136)에 의해 추적된 결과를 포함할 수 있다.
이후, 분류 관리자(140)는 쿼리 분류기(142)에 출력되어 사용될 분류 모델(도 3 및 도 4에 대하여 후술됨)을 구성할 수 있다. 이후, 쿼리(106)가 생산자 노드(122)에 의해 실제로 수신될 때, 쿼리 분류기(142)는 분류 관리자(140)로부터의 분류 모델 뿐만 아니라 쿼리 전처리기(134)로부터의 쿼리(106)의 전처리를 입력할 수 있고, 이 정보를, 쿼리(106)가 생산자 노드(126, 129)에 송신되어야 하는지(컴파일 결과(108)에 대하여 생산적으로 되기 쉬움) 또는 송신되지 않아야 하는지(비생산적으로 되기 때문에 연산 자원 및 유저 시간을 잠재적으로 낭비하기 쉬움)에 대한 예견을 이루는데 사용할 수 있다.
이와 관련하여, 전술한 바와 같이, 쿼리 전처리기는 사전에 규정된 일부 또는 모든 쿼리 특징을 고려해서 그와 함께 데이터 소스(124)의 인덱스를 액세스하기 위한 쿼리(106)를 처리한다는 것을 이해할 것이다. 쿼리 전처리기(134)의 결과도 사용하는 쿼리 분류기(142) 및 분류 관리자(140)에 관하여, 쿼리 전처리기(134)는 쿼리(106)의 쿼리 표시를 제공한다고 말할 수 있다.
즉, 상기 쿼리 표시는, 쿼리에 관련되며 또한 사전에 규정된 쿼리 특징에 관련되는 데이터 또는 메타 데이터를 포함하는 확장된(또는 어떤 경우에는 축소된) 및/또는 분석된 버전의 쿼리(106)로 되도록 고려될 수 있다. 일부 경우에, 분류 관리자(140)/쿼리 분류기(142)에 의해 사용된 상기 쿼리 표시는 데이터 소스(124)에 액세스하기 위해 생산자 노드(122)의 인덱스에 의해 사용된 것과 동일한 쿼리 표일 수 있다. 다른 예에서는, 분류 관리자(140)/쿼리 분류기(142)에 의해 사용된 쿼리 표시는 데이터 소스(124)에 액세스하기 위해 생산자 노드(122)의 인덱스에 의해 사용된 것과 상이한 쿼리 표시일 수 있다(예컨대, 분류 모델을 구성하기 위해 상이한 하위 세트의 쿼리 특징 및 그 값을 사용할 수 있음). 특히, 분류 모델은 아키텍처(102)의 동적 성질 및 그 내용을 반영하도록 시간의 경과에 따라 업데이트될 수 있고, 그에 따라 상이한 하위 세트의 쿼리 특징을 분류 모델의 상이한 실시예에서 필요로 하거나 사용할 수 있다. 한편, 데이터 소스(124)에 액세스하기 위해 생산자 노드(122)의 인덱스에 의해 사용된 쿼리 표시는 상대적으로 정적이거나 보다 느리게 변화되는 것일 수 있으며, 보다 일정한 쿼리 특징 세트를 사용할 수 있다.
따라서, 쿼리 전처리기(134)로부터의 쿼리 표시 및 분류 관리자(140)로부터의 분류 모델(및 모니터(136)로부터의 연관 데이터 및/또는 분류 데이터(138))에 의거하여, 쿼리 분류기(142)는, 본질적으로, 예를 들어, 생산자 노드(126)에의 쿼리(106)의 분류가 컴파일 결과(108)에 대하여 생산적으로 되는지에 대한 예견을 제공하는 쿼리(106)의 분류를 만들 수 있다.
특히, 쿼리 분류기(142)는 상기 분류/예견을 분배자 노드(120)에 전달할 수 있고, 이후에 분배자 노드는 상응하는 쿼리를 전달하거나 전달하지 않을 수 있다. 일부 예시적인 실시예에 있어서, 분배자 노드(120)는 단순히 예견을 수신해서 그에 상응하는 쿼리(106)를, 예컨대 쿼리 전달자(168)를 이용해서 전달하거나 또는 전달하지 않도록 구성될 수 있다. 다른 예시적인 실시예에 있어서는, 분배자 노드(120)는 다른 생산자 노드에 쿼리(106)를 분배할 지의 여부, 시기 및 방법에 관한 보다 높은 수준의 결정을 하도록 구성될 수 있다.
후자에 관하여, 예를 들어, 분배자 노드(120)는 쿼리 분류기(142)로부터의 예견을 처리해서 쿼리 전달자(168)에 의해 쿼리(106)의 전달에 관한 지능적인 결정을 하도록 구성되는 쿼리 리졸버(resolver)(166)를 포함할 수 있다. 예를 들어, 일부 예시적인 실시예에 있어서, 쿼리 분류기(142)는 생산자 노드(126)에의 쿼리(106)의 전달이 생산적으로 되는지의 여부에 대한 단순한 예/아니오 결정으로서 쿼리의 분류를 제공할 수 있다. 다른 실시예에서는, 쿼리 분류기(142)는 식별된 생산자 노드(들)가 생산적인 결과를 포함할 것 같은지의 여부의 상대적인 가능성을 지시하는 범위 내의 값으로서 상기 예견을 제공할 수 있다(여기서, 일부 경우에는, 생산적인 결과의 가능성은 첫 페이지 내로 될 것으로 예견되는 "매우 생산적인" 쿼리 또는 다른 상위 세트의 컴파일 결과(108) 등의 예견된 생산성 범위를 지시하는 카테고리들로 더 분류될 수 있음).
이후, 쿼리 리졸버(166)는 상기 정보와 쿼리(106)의 분배 여부, 시기 및 방법를 입력할 수 있다. 예를 들어, 쿼리 리졸버(166)는 네트워크가 현재 혼잡한지의 여부, 또는 특정 쿼리를 가진 특정 생산자 노드의 특정 액세스가 얼마의 비용으로 이루어지는지와 같은 인자를 검토할 수 있다. 따라서, 쿼리 리졸버(166)는, 예를 들어 예견된 가능성 및 그로부터 얻은 결과의 유용성의 범위에 비해 주어진 생산자 노드를 액세스함에 있어서의 공지된/예견된 비용을 사용하는 본질적으로 비용 면에서 유리한 분석을 수행할 수 있다.
도 1a에서는, 다양한 구성요소가 이산/분리된 위치(예컨대, 상이한 기하학적 위치 및/또는 상이한 네트워크 위치)에서 이산 요소로서 도시된다. 예를 들어, 직전에 살펴본 바와 같이, 쿼리 리졸버(166)는 분배자 노드(120)와 같은 장소에 배치되는 것으로 도시되어 있으며, 이는 분배자 노드(120)가 현재의 네트워크 조건 또는 아키텍처(102)와 관련된 다른 상태 정보에 대하여 상대적으로 통지받기에 좋은 위치에 배치되거나, 및/또는 아키텍처(102)의 계층 내에서 하위에 있는 모든 생산자 노드(122, 126, 129)에 관하여 그와 같이 통지받을 수 있기 때문이다. 결과적으로, 쿼리 리졸버(166)는 쿼리(106)의 전달 여부, 시기 및 방법에 대하여 전술한 결정을 할 수 있다. 유사하게, 쿼리 전처리기(134) 및 쿼리 분류기(142)는 생산자 노드(122)의 단일의 연산 장치(132) 내에 포함되는 것으로 도시된다.
그러나, 다양한 실제 구현에 있어서는, 도 1a의 다양한 변경이 가능하다. 특히, 전술한 다양한 기능은 각각 단일의 구성요소/장치 내에서 수행되거나, 또는 쿼리 전처리기(134)가 일부 또는 모든 전처리 기능을 수행할 때와 같은 분산된 방식(예컨대, 다중 장치를 사용)으로 별개의(예컨대, 제조 단계에서의) 장치에서 수행될 수 있다. 반대로, 다중 장치/요소 상에 도시된 기능은 실제로는 단일의 장치 상에서 실행될 수 있다(예컨대, 쿼리 리졸버(166), 또는 그 적어도 일부의 기능은 생산자 노드(122)와 연관되는 것으로 도시된 연산 장치(132) 상에서 실행될 수 있음). 또한, 자체적으로 본 기술분야에 공지되어 있는 특정한 요소(예컨대, 두 개 이상의 생산자 노드(122, 126, 129)로부터의 결과를 컴파일 결과(108)에 컴파일하기 위한 분배자 노드(120)의 컴파일러 등)는, 명료화 및 간결화를 위해 도 1a에서는 명시적으로 도시되지 않는다. 따라서, 일부의 또는 모든 도시된 구성요소(및 그 변형)와 함께 상기 공지된 구성요소를 사용하는, 시스템(100)의 또 다른 실행도 본 기술분야의 기술자에게는 명백하다.
도 1b는 도 1a의 시스템의 예시적인 작업을 도시하는 플로우차트(100)이다. 도시된 바와 같이, 플로우차트(100)의 작업은, 명료화 및 이해를 위해 도 1a에서의 상응하는 참조 번호로 동일하게 도시되어 구별된다.
따라서, 도 1a 및 도 1b에서, 쿼리(106)는 유저(104)로부터, 예를 들어 분배자 노드(118)에서 수신된다(144). 분배자 노드(118)는 쿼리(106)를 분배자(120)에 전달하고(146), 이어서 쿼리(106)를 생산자 노드(122)에 전달한다(148). 특히, 전술한 바와 같이, 본원에서는, 생산자 노드(122)가 아키텍처(102) 내의 쿼리(106)에 대한 가장 많이 액세스된, 가장 바람직한, 가장 쉽게 액세스된, 최소한의 및/또는 가장 새로운 결과를 포함한다고 여겨지는 것을 분배자(120)가 알고 있는 예(들)를 취한다. 그 결과, 상기 모든 쿼리는 생산자 노드(122)에 대하여 가장 먼저 그리고 즉시 통과될 수 있다.
그것을 받는 즉시, 생산자 노드(122)는, 예를 들어 쿼리 전처리기(134)를 사용하여 쿼리(106)의 전처리를 개시할 수 있다(149, 150). 즉, 전술한 바와 같이, 쿼리 전처리기(134)는 데이터 소스(124)의 인덱스를 액세스하는데 사용하기 위한 쿼리 표시를 얻기 위해 쿼리(106) 및 쿼리 전처리기(134)와 연관된 쿼리 특징을 분석할 수 있다(149). 동시에 및/또는 동일 처리의 일부로서, 쿼리 전처리기(134)는 쿼리 특징을 분석해서 분류 데이터(138) 및 분류 관리자(140)의 분류 모델과 함께 쿼리 분류기(142)에 의해 사용된 것과 동일한 또는 상이한 쿼리 표시를 출력하여, 쿼리 분류를 제공한다(150). 이후, 생산자 노드(122)는 쿼리 분류를 분배자 노드(120)에 전달하고(151), 그에 따라 하나 이상의 다른 생산자 노드(126, 129)를 액세스함에 있어서의 생산성의 가능성에 관한 예견을 제공한다.
이러한 기재로부터는, 데이터 소스(124)의 인덱스를 액세스하기 위한 쿼리(106)의 전처리 전에 및/또는 그와 함께, 그리고 데이터 소스(124)에 대한 쿼리(106)의 실제 답변 전에, 생산자 노드(122), 예를 들어 쿼리 분류기(142)가 쿼리 분류의 예견을 분배자 노드(120)에 송신하도록 구성되어 있다는 점을 알 수 있다(152). 즉, 도시된 바와 같이, 상기와 같은 쿼리 답변(152)은 본질적으로 생산자 노드(126, 129)에 쿼리(106)를 전달함에 있어서 분배자 노드(120)의 작업과 병렬적으로 처리할 수 있다. 결과적으로, 예를 들어 아키텍처(102)의 응답 시간이 컴파일 결과(108)의 품질과 함께 쿼리(106)에 대하여 개선될 수 있도록, 분배자 노드(120)가 쿼리(106)에 대한 결정(들)을 전달하기 위해 데이터 소스(124)로부터 얻은 실제 결과를 기다릴 필요가 없음을 알 수 있다.
또한, 도 1b에 있어서, 생산자 노드(122)는 데이터 소스(124)에 대한 쿼리(106)의 답변을 완료하여(152), 그 결과를 분배자 노드(120)에 제공할 수 있다(154). 직전에 설명한 바와 같이, 이들 작업은, 생산자 노드(126)에의 쿼리(106)의 전달(156), 및 생산자(126)가 데이터 소스(124)의 결과를 분배자(120)에게 전달하는 것(160)으로 자연스럽게 이어지는 생산자 노드(126)에 의한 데이터 소스(128)에 대한 쿼리(106)의 후속 답변(158)과 병렬적으로, 예를 들어 오버랩될 수 있다.
도 1b의 예에서의 적어도 두 개의 생산자 노드(122, 126)로부터 결과가 수신되면, 분배자(120)는 그 결과를 분배자(118)에게 전달하기 위해 컴파일 결과(108)에 병합하고(162), 최후에 유저(104)에게 전달할 수 있다(164).
도 1b에서는, 생산자 노드(126)에의 쿼리(106)의 후속 전달로 도시된 바와 같이, 생산자 노드(126)의 생산성에 대하여 쿼리 분류기(142)가 긍정적인 예견을 출력하는 예가 주어진다. 컴파일 결과(108)가 행하는 것이, 실제로 데이터 소스(124)로부터의 결과(110, 112, 116) 내에 데이터 소스(128)로부터의 결과(114)를 포함하는 것이기 때문에, 상기 예견은 정확한 것으로 도시된다.
다른 예에서는, 물론, 상기 예견은 부정적(예를 들어, 다른 생산자 노드(들)는 어떠한 생산적 결과도 제공하지 않는다는 강한 기대)일 수 있다. 그러한 경우에, 적어도 하나의 다른 생산자 노드의 기대 생산성에 관한 적어도 명목상 긍정적인 예견이 긍정적으로 제공되지 않는 한, 분배자 노드(120)는 생산자 노드(122) 이외에는 쿼리(106)를 전달하지 않는 디폴트 거동으로 구성될 수 있고, 이러한 경우에는, 쿼리 분류기(142)는 분배자 노드(120)에 어떠한 분류/예견을 전달할 필요가 없을 수 있다.
다른 예에서는, 도 1a에서와 같이, 쿼리(106)가 전달되도 되는 다수의 가능한 다른 생산자 노드(126, 129)가 존재하는 일이 발생할 수 있다. 이러한 상황에서는, 쿼리 분류기(142)는 단지 일부의 가용 생산자 노드에 대한 생산적 결과를 산출하도록 예견(예를 들어, 생산자 노드(129)가 아닌 생산자 노드(126)로부터 생산적 결과를 산출하도록 예견)되는 대로 쿼리(106)를 분류할 수 있다. 이러한 경우에 및 유사한 시나리오에 있어서, 생산자 노드(122)는 쿼리(106)가 전달되는 목표 노드로서의 적어도 하나의 다른 생산자 노드의 식별과 함께 쿼리 분류를 전달할 수 있다. 즉, 예를 들면, 분류 관리자(140) 및 모니터(136)와, 그에 따른 쿼리 분류기(142)는, 동일한 쿼리(106)의 결과적인 분류/예견이 상이한 가용 생산자 노드에 대하여 상이해질 수 있도록, 상이한 가용의 관련 생산자 노드(126, 129)의 독립적인 분석에 의거한 개개의 기능을 수행할 수 있다.
도 2는 도 1a의 생산자 노드(122)의 예시적인 작업을 도시하는 플로우차트(200)이다. 도 2에서는, 일련의 이산, 선형 작업으로서의 예시적인 작업을 제공하는 작업(202, 204, 206)이 도시된다. 그러나, 예시적인 작업은, 실제로는, 오버랩되거나, 및/또는 부분적으로는 병렬적으로 처리되거나, 또는 도 2에 도시된 것과는 상이한 순서로 발생할 수 있다(본원에서 요구되지 않는 한 특정 순서가 되는 범위까지)는 것을 이해해야 한다. 또한, 도 2에는 명백하게 도시되지 않은 추가적인 또는 선택적인 작업이 포함될 수 있다.
도 2에서의 상기 작업은 계층적, 트리 구조의 처리 아키텍처 내의 적어도 하나의 분배자 노드로부터 쿼리를 생산자 노드에서 수신하는 작업(202)을 포함하고, 상기 아키텍처는 생산자 노드 및 적어도 하나의 다른 생산자 노드에의 분배를 포함하여 상기 아키텍처 내에서의 쿼리를 분배하도록 구성된 적어도 하나의 분배자 노드를 포함하고, 또한 상기 분배자 노드는 생산자 노드로부터의 결과 및 적어도 하나의 다른 생산자 노드로부터의 결과를 수신해서 거기로부터 컴파일 결과를 출력하도록 구성된다. 예를 들어, 도 1a 및 도 1b에 대하여 상술한 바와 같이, 쿼리(106)는 아키텍처(102)의 분배자 노드(120)로부터 생산자 노드(122)에서 수신될 수 있고, 여기서 분배자 노드(120)는, 도시된 바와 같이 생산자 노드(122, 126, 129)에의 분배를 포함하여 아키텍처(102) 내에서의 쿼리를 분배하고, 이들 중 적어도 두 개로부터 결과를 수신해서 거기로부터 컴파일 결과(108)를 제공하도록 구성된다.
상기 작업은 생산자 노드와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징을 이용하여 쿼리 표시를 얻음으로써 생산자 노드로부터 결과를 얻기 위해 분배자 노드로부터 수신된 쿼리를 전처리하는 작업(204)를 더 포함할 수 있다. 예를 들어, 쿼리 전처리기(134)는 데이터 소스(124)의 인덱스에 대한 처리를 위한 쿼리(106)를 준비하도록, 특정 쿼리(106) 내에서의 특정한 쿼리 특징의 실제값에 관하여, 상기 특정한 쿼리 특징을 이용할 수 있다. 동시에, 쿼리 전처리기(134)는 데이터 소스(124)의 인덱스를 액세스하는데 사용된 결과적으로 동일한 또는 상이한 쿼리 표시로 될 수 있는 쿼리 표시를 구성하기 위해 동일한 쿼리 특징(예컨대, 그 특징의 동일한 또는 상이한 하위 세트)을 이용할 수 있다.
마지막으로, 도 2에서, 상기 작업은 적어도 하나의 다른 생산자 노드에 의한 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드의 결과를 컴파일 결과 내에 포함되게 해야 하는지의 여부에 대한 예견을 그것에 의거하여 출력하게 되도록 상기 쿼리 표시를 이용하여 쿼리를 분류하는 작업(206)을 포함할 수 있다. 예를 들어, 쿼리 분류기(142)는, 쿼리(106)의 특정 연관값과 함께 쿼리 표시를 입력하고, 분류 관리자(140) 및 모니터(136)와, 상응하는 분류 데이터(138)로부터 분류 모델을 입력하며, 그에 따라 예견으로서 기능하는 쿼리(106)의 분류를 분배자 노드(120)에 출력하도록 구성될 수 있다. 전술한 바와 같이, 상기 예견은 쿼리(106)가 적어도 하나의 다른 생산자 노드(126)에 전달될 경우에 생산적 결과를 제공하게 될 가능성 및/또는 범위에 대한 지시를 제공한다.
따라서, 도 2는 생산자 노드(122)의 일부 예로서의 기본 작업을 도시한다. 이미 설명한 바와 같이, 다수의 추가적인 또는 선택적인 변형이 가능하다. 예를 들어, 아키텍처(102)는 도 1a에 도시된 것보다 현저하게 크거나 더욱 복잡할 수 있다. 예를 들어, 추가적인 생산자 노드가 분배자 노드(118, 120)와 통신할 수 있고, 또한 이 예에 도시된 것보다 많은 분배자 노드가 포함될 수 있다.
또한, 도 1a에서는, 단지 생산자 노드(122)만이 본원에서 기술된 쿼리 분류/예견 기능성을 포함하는 것으로서 도시되어 있다. 그러나, 아키텍처(102)의 두 개 이상의 생산자 노드가 일부 또는 모든 상기 기능성이나, 그 변형을 포함할 수 있는 경우가 발생할 수 있다. 상기 특징은, 예를 들어 각각의 생산자 노드가 당해 생산자 노드에 의해서는 쉽게 얻을 수 있는 반면, 아키텍처(102)의 다른 요소(분배자 노드 또는 생산자 노드)에 대하여 얻는데는 어려움이 있거나 비용이 들게 되는 국부적으로 이용 가능한 정보를 가질 수 있기 때문에, 이점을 제공할 수 있다. 다른 예에서, 가장 맞춤형으로 최적화된 예견을 제공하기 위해, 아키텍처(102)의 상이한 부분들 내에서는 상이한 분류 모델이 구현될 수 있다.
도 3은 도 1a의 시스템의 분류 관리자(140)의 추가의 예시적인 작업을 도시하는 플로우차트(300)이다. 특히, 도 3에 있어서, 분류 관리자(140)는 지도 기계 학습(SML: supervised machine learning) 기술을 실행하는 것으로서 도시되고, 상기 기술은 외부의 예시로부터 추론하여 일반적인 가설을 생성하는 방식, 예를 들어 생산자 노드(126, 129)에의 쿼리의 과거의 분배로부터 추론하여, 생산자 노드(126, 129)에 분배된 현재의 또는 미래의 쿼리가 컴파일 결과(108)에 대하여 생산적으로 되는지에 대한 일반적인 예견을 얻는 방식을 나타내는 것이 일반적이다.
도 3에서는, 쿼리 특징이 결정된다(302). 예를 들어, 분류 관리자(140)는 쿼리 전처리기 및/또는 분류 데이터(138)와 통신하여, 분류 모델을 구성하는데 유용할 수 있는 쿼리 전처리기(134)에 의해 사용된 모든 가능한 쿼리 특징을 식별할 수 있다.
이후, 이들 쿼리 특징에 대하여, 값이 결정될 수 있다(304). 예를 들어, 모니터(136)는 생산자 노드(126)(및/또는 생산자 노드(129))에 쿼리 세트(예를 들어, 1,000 쿼리)를 송신(또는 송신되도록 기동)할 수 있다. 이후, 데이터 소스(128)(및/또는 데이터 소스(130))로부터의 이들 쿼리의 결과가 모니터(136)에 의해 추적 및 측정될 수 있으며, 쿼리 특징의 값이, 예를 들어 분류 데이터(138)에 저장될 수 있다. 예를 들어, 쿼리 특징이 쿼리 내의 다수의 용어를 포함하면, 모니터(136)는 그 쿼리 특징의 값으로서 쿼리의 용어들의 실제 카운트를 결정할 수 있다. 유사하게, 쿼리 특징이 특정한 구 또는 그 밖의 쿼리 구조에 할당된 스코어를 포함하면, 각각의 쿼리에 대한 상기 스코어의 실제값은 획득 및 저장될 수 있다.
이후, 트레이닝 데이터 세트가 규정될 수 있다(306). 예를 들어, 분류 관리자(140)는 하위 세트의 쿼리 특징 및 그에 상응하는 값뿐만 아니라, 쿼리/쿼리 특징에 대하여 생산자 노드(126, 129)로부터 얻은 상응하는 쿼리 결과를 선택할 수 있다. 상이한 하위 세트의 쿼리 특징 및 쿼리값이 상응하는 쿼리 결과에 관련시키기 위한 작업(300)의 상이한 반복 중에 선택될 수 있음을 이해해야 한다. 어떤 경우에는, 경량으로 되어 연산 및 추적이 용이하다는 장점을 갖는, 상대적으로 소수의 쿼리 특징/값이 사용될 수 있다. 다른 경우에는, 보다 다수가 사용되어, 보다 정확한 또는 포괄적인 분류 결과를 제공할 수 있다.
이어서, 분류 알고리즘이 선택될 수 있다(308). 다수의 상기 분류 알고리즘이 존재하며, 필요에 따라 본원에서 선택될 수 있다. 전술한 바와 같이, 분류 알고리즘(및 결과로서의 분류 모델)의 성공 또는 효용성의 기준은, 생산자 모델(126, 129)에의 쿼리(106)의 통과가 컴파일 결과(108)에 대하여 생산적으로 될지에 대한 예견에 있어서 실제로 상기 알고리즘/모델이 성공적인지의 여부이다. 그러나, 추가적인 또는 선택적인 기준이 존재할 수 있다.
예를 들어, 아래에서 더 상세히 설명하는 바와 같이, 분류 관리자(140), 및 궁극적으로 쿼리 분류기(142)는 실수를, 예를 들어 부정확한 예견을 할 수 있음을 이해해야 한다. 즉, 쿼리 분류기(142)는, 예를 들어 실제로는 생산자 노드(126)에의 쿼리(106)의 송신이 컴파일 결과(108)에 대하여 생산적으로 되지 않은 경우임에도, 쿼리(106)가 생산자 노드(126)에 송신되어야 한다고 예견할 수 있다. 한편, 쿼리 분류기(142)는, 예를 들어 실제로 생산자 노드(126)에의 쿼리(106)의 송신이 컴파일 결과(108)에 대하여 생산적으로 된 경우임에도, 쿼리(106)가 생산자 노드(126)에 송신되지 않아야 한다고 예견할 수 있다.
전자의 경우에는, 단지 비생산적 결과를 얻게 된 쿼리(106)의 송신 실수의 대가는 현재의 시스템과 유사한 생산자 노드(126)와의 무익한 통신에 불필요하게 사용된 네트워크 자원의 손실이다(전술한 바와 같이, 쿼리(106)는 생산자 노드(122, 126)에서 병렬적으로 처리되기 때문에 약간의 지연은 제외함). 한편, 생산적 결과가 얻어졌을 때의 쿼리(106)를 송신하지 않는 실수는 잠재적으로 더욱 문제가 된다. 이러한 실수는 본원에서는 손실을 의미하고, 결국 제공되었어야 할 유용한 결과가 유저에게 주어지지 않게 된다.
따라서, 생산적 쿼리의 송신을 최대화하는 반면 손실로 되는 쿼리/결과를 최소화하려는 분류 알고리즘이 선택될 수 있다. 반면에, 이러한 분류 알고리즘의 예는 일반적으로 잘 알려져 있기 때문에, 본원에서는 상세히 설명하지 않는다. 상기 예는, 예를 들어 결정 트리(decision tree)의 노드가 분류된 쿼리 결과에서의 특징을 나타내는 한편, 그 트리의 브랜치(branch)가 노드가 취하는 값을 나타내도록, 쿼리 결과가 쿼리 특징값에 의거하여 소팅되는 결정 트리 알고리즘을 포함할 수 있다. 이후, 트리를 통해 루트(root) 노드로부터 결정 트리를 가로지르고 그 각각의 값을 이용하여 노드를 소팅함으로써, 결과가 분류될 수 있다. 결정 트리는, 예를 들어 루트 노드로부터 상응하는 리프(leaf) 노드까지의 각 경로의 규칙을 생성함으로써, 분류 규칙 세트(결국, 분류 모델을 형성할 수 있음)로 해석될 수 있다.
다른 분류 알고리즘이 존재하고, 그로부터 결과를 유도하는 다른 기술이 공지되어 있다. 예를 들어, 뉴럴(neural) 네트워크, 통계적 학습 알고리즘(예컨대, 베이스(Bayesian) 네트워크), 예시 기반 학습, 및/또는 서포트 벡터 머신 뿐만 아니라 단층 또는 다층 퍼셉트론(perceptron) 기술이 사용될 수 있다. 한편, 이들 또는 다른 알고리즘의 하나 이상이 선택되어 테스트되고, 결국 생산적 결과를 예견함에 있어서의 성공 및/또는 손실적 결과를 회피함에 있어서의 성공에 의거하여 수행된다.
분류 알고리즘이 선택되면, 상응하는 트레이닝 데이터세트가 평가될 수 있다(310). 예를 들어, 분류 관리자(140)는 쿼리 특징, 쿼리값, 및 상응하는 쿼리 결과의 선택된 트레이닝 데이터세트(하위 세트)를 사용하여 분류 알고리즘을 수행하도록 구성될 수 있다. 예를 들어, 제 1 트레이닝 데이터세트는 생산자 노드(126)에 대하여 쿼리의 결과에 대응할 수 있고, 제 2 트레이닝 데이터세트는 생산자 노드(129)에 대하여 쿼리의 결과에 대응할 수 있다. 또한, 처리(300)의 상이한 반복에 있어서 각각의 생산자 노드에 대해서는 상이한 트레이닝 세트가 테스트될 수 있다.
결과가 만족스러우면(312), 그 결과는 현재 및 미래의 쿼리를 평가하는데 사용하기 위해, 도시된 바와 같이, 분류 모델로서 정형화되어 쿼리 분류기(142)를 통과할 수 있다. 그렇지 않으면, 도시된 바와 같이, 플로우차트(300)의 작업을 재개하여 만족스러운 결과(312)를 얻기 위해, 임의의 작업(302-310)이 선택 및 변경될 수 있다.
전술한 바와 같이, 상기 작업(300)은 초기 분류 모델을 정형화하기 위해 적시에 초기 지점에서 실행될 수 있다. 이후, 쿼리 분류기(142)는 일정 기간 동안 분류 모델을 수행할 수 있다. 그러나, 시간이 경과하면, 분류 모델이 구식이 되어 유입하는 쿼리를 분류함에 있어서 효율이 떨어지는 일이 발생할 수 있다.
이러한 상황을 피하기 위해, 모니터(136)는 생산자 노드(126, 129)를 주기적으로 기동해서, 거기로부터의 결과를 테스트하고 및/또는 그에 따른 분류 모델을 업데이트할 수 있다. 즉, 예를 들어, 모니터(136)는 쿼리 분류기가 거기로부터 생산적 결과를 예견하는지의 여부에 관계없이 생산자 노드(126)에 쿼리를 송신한다. 이후, 분류 관리자(140)는 상기 결과를 예견된 결과와 비교하여, 분류 모델이 만족스러운 상태로 유지되고 있는지 또는 업데이트될 필요가 있는지의 여부를 결정할 수 있다.
도 4a 내지 도 4c는 분류 모델을 구성하는데 사용된 분류 데이터를 도시하는 테이블이다. 도 4a에서는, 쿼리 특징1(402)과 쿼리 특징2(404)의 두 개의 특징을 고려하는 것(예컨대, 쿼리 전처리기(134)에 의해 결정됨)으로 가정한다. 제 3 쿼리 특징인, 쿼리 특징3(406)은 나타나 있기는 하지만, 테스트된 특정 트레이닝 데이터세트로 고려되지는 않은 것으로 도시된다. 도시된 바와 같이, 쿼리 특징(402)은 A 또는 B의 값을 가질 수 있는 반면, 쿼리 특징(404)은 C 또는 D의 값을 가질 수 있다.
이후, 총 1,000개의 쿼리가, 예를 들어 생산자 노드(126)에 송신될 수 있다. 이 경우에, 칼럼(408, 410)은 그와 같이 행한 결과를 추적한다. 예를 들어, 1,000개의 쿼리 중 제 1 쿼리는 생산자 노드(126)에 송신될 수 있으며, 생산적 결과가 얻어지면, 그 결과는 쿼리가 송신(SEND)되어야(되었어야) 함을 지시하는 칼럼(408) 내에서 한 차례 카운트된다. 한편, 제 2 쿼리가 쿼리 특징 AC로 송신되고, 비생산적 결과에 이르면, 그 결과는 쿼리가 드롭(DROP)되어야(되었어야) 함을 지시하는 칼럼(410) 내에서 한 차례 카운트된다.
따라서, 상기 1,000개의 쿼리의 송신은 지속될 수 있으며, 그 결과는 칼럼(408, 410)이 채워질 때까지 추적될 수 있다. 이후, 새롭게 수신한 쿼리에 취해질 향후 동작에 관한 결정이 이루어질 수 있다.
예를 들어, 쿼리 특징 조합(쿼리 표시) AC에 대해서는, 87개의 결과가 송신으로 지시된 반면, 45개의 결과는 드롭으로 지시되었음을 알 수 있다. 그 결과, 특징 AC를 갖는 향후의 쿼리는, 칼럼(412)에 도시된 바와 같이, 송신되어야 한다는 결정이 이루어질 수 있다. 유사하게, 쿼리 특징 BD에 대해서는, 92개의 "송신되어야 함"의 결과 및 28개의 "드롭되어야 함"의 결과는 상기 쿼리의 향후 예시가 송신되어야 한다는 것을 지시한다. 반대로, 쿼리 특징 AD에 대해서는, 20개의 "송신되어야 함"의 결과 및 198개의 "드롭되어야 함"의 결과는 상기 쿼리의 향후 예시가 드롭되어야 한다는 것을 지시한다.
특징 BC를 갖는 쿼리의 경우에는, 224개의 쿼리는 "송신되어야 함"으로서 지시되어 있는 반면, 307개의 쿼리는 "드롭되어야 함"으로서 지시되어 있다. 그 결과, 향후 쿼리에 대하여 어떤 동작이 취해져야 할지가 분명하지 않을 수 있다.
도 4b에서의 추가 분석에 있어서, 1,000개의 쿼리는 특징 BC로 송신되고, 칼럼(414)에서는, 상기 쿼리가 모두 송신되면, 실제로는 403개가 송신되었어야 함(생산적 결과가 얻어졌기 때문)을 알 수 있는 반면, 칼럼(416)에서는, 상기 쿼리가 송신될 때, 실제로는 380개의 쿼리가 드롭되었어야 함을 알 수 있다. 반대로, 드롭될 때, 칼럼(414)은 송신되었어야 할 20개의 쿼리 및 드롭되었어야 할 198개의 쿼리를 지시하고 있다.
따라서, 송신되었어야 하지만 그렇지 못했던 상기 20개의 쿼리는 유저(104)에게 생산적 결과를 주지 않은 손실된 쿼리를 나타낸다. 한편, 상기 198개의 쿼리는 드롭된 또한 드롭되었어야 하는(어쨌든, 생산적 결과를 산출하지 않을) 쿼리를 나타내므로, 네트워크 트래픽 및 자원의 절약을 나타낸다. 따라서, 생산적 쿼리의 2%는 네트워크 트래픽의 19.8%를 절약하기 위해 손실된다.
유사한 분석을 도 4c에 적용하고, 그 결과는 쿼리 특징 BC로 1,000개의 쿼리를 드롭하는 효과에 대하여 상정된다. 여기서는, 생산적으로 되는 244개의 결과(24.4%)가 드롭되므로 손실인 반면, 505개의 결과(50.5%)가 정확하게 드롭(대응하는 양의 네트워크 트래픽이 절약됨)되었음을 칼럼(418, 420)으로부터 알 수 있다.
도 5는 도 1a의 시스템이 작동할 수 있는 예시적인 연산 환경의 블럭도이다. 특히, 도 5는 도 1a의 시스템을 실행하는데 사용될 수 있는 예시적이거나 대표적인 연산 장치 및 연관 요소를 도시하는 블럭도이다.
특히, 도 5는 본원에 설명된 기술이 사용될 수 있는 일반적인 컴퓨터 장치(500) 및 일반적인 모바일 컴퓨터 장치(550)의 예를 도시한다. 연산 장치(500)는 랩톱, 데스크톱, 워크스테이션, 피디에이, 서버, 블레이드 서버, 메인프레임, 및 그 밖의 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내는 것이다. 연산 장치(550)는 피디에이, 휴대 전화, 스마트폰, 및 그 밖의 유사한 연산 장치와 같은 다양한 형태의 모바일 장치를 나타내는 것이다. 여기에 도시된 구성요소들, 그들의 접속 및 관계와, 기능은 예시일 뿐이며, 이 문헌에 기술된 및/또는 청구된 발명의 구현을 제한하려는 것은 아니다.
연산 장치(500)는 프로세서(502), 메모리(504), 기억 장치(506), 메모리(504) 및 고속 확장 포트(510)에 접속되는 고속 인터페이스(508), 및 저속 버스(514) 및 기억 장치(506)에 접속되는 저속 인터페이스(512)를 포함한다. 각각의 구성요소(502, 504, 506, 508, 510, 및 512)는 다양한 버스를 사용하여 상호 접속되고, 공통의 마더보드에 또는 적절한 다른 방식으로 실장될 수 있다. 프로세서(502)는 고속 인터페이스(508)에 결합된 디스플레이(516) 등의 외부 입력/출력 장치상에 GUI의 그래픽 정보를 디스플레이하기 위해 메모리(504)에 또는 기억 장치(506)에 저장된 명령을 포함하는, 연산 장치(500) 내에서의 실행을 위한 명령을 처리할 수 있다. 다른 구현예에서, 다중 프로세서 및/또는 다중 버스가 다중 메모리 및 다중 메모리 타입과 함께 적절히 사용될 수 있다. 또한, 각각의 장치가 필요한 연산의 부분(예컨대, 서버 뱅크, 블레이드 서버 그룹, 또는 다중 프로레서 시스템)을 제공하는 형태의 다중 연산 장치(500)가 접속될 수 있다.
메모리(504)는 연산 장치(500) 내의 정보를 저장한다. 일 구현예에 있어서, 메모리(504)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현예에 있어서, 메모리(504)는 비휘발성 메모리 유닛 또는 유닛들이다. 또한, 메모리(504)는 자기 또는 광 디스크 등의 다른 형태의 컴퓨터 가독 매체일 수도 있다.
기억 장치(506)는 연산 장치(500)에 대용량 기억을 제공할 수 있다. 일 구현예에 있어서, 기억 장치(506)는 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 또는 테이프 장치 등의 컴퓨터 가독 매체, 플래시 메모리, 또는 그 밖의 유사한 고체 상태 메모리 장치, 또는 기억 영역 네트워크 또는 그 밖의 구성에 장치를 포함하는 장치 어레이이거나, 또는 이들을 포함할 수 있다. 컴퓨터 프로그램 제품이 정보 캐리어 내에 유형으로 구현될 수 있다. 또한, 컴퓨터 프로그램 제품은 상술한 것들과 같이, 실행시에 하나 이상의 방법을 수행시키는 명령을 포함할 수도 있다. 정보 캐리어는 메모리(504), 기억 장치(506), 또는 프로세서(502)상의 메모리와 같은 컴퓨터 또는 기계 가독 매체이다.
고속 제어기(508)는 연산 장치(500)의 대역폭 집약적 작업을 관리하는 한편, 저속 제어기(512)는 보다 낮은 대역폭 집약적 작업을 관리한다. 이러한 기능 할당은 예시일 뿐이다. 일 구현예에 있어서, 고속 제어기(508)는 메모리(504), 디스플레이(516)(예컨대, 그래픽 프로세서 또는 액셀러레이터를 통해), 및 다양한 확장 카드(도시되지 않음)를 수용할 수 있는 고속 확장 포트(510)에 결합된다. 상기 구현예에서, 저속 제어기(512)는 기억 장치(506) 및 저속 확장 포트(514)에 결합된다. 다양한 통신 포트(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트는 키보드, 포인팅 디바이스, 스캐너 등의 하나 이상의 입력/출력 장치, 또는 스위치 또는 라우터 등의 네트워크 장치에, 예를 들어 네트워크 어댑터를 통해 결합될 수 있다.
연산 장치(500)는, 도면에 도시된 바와 같이, 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 상기 장치는 표준 서버(520)로서 구현되거나 상기 서버로 이루어진 다수 배의 그룹으로서 구현될 수 있다. 또한, 랙 서버 시스템(524)의 일부로서 구현될 수도 있다. 또한, 랩톱 컴퓨터(522)와 같은 퍼스널 컴퓨터로 구현될 수 있다. 선택적으로, 연산 장치(500)로부터의 구성요소는 장치(550)와 같은 모바일 장치 내의 다른 구성요소(도시되지 않음)와 결합될 수 있다. 각각의 상기 장치는 하나 이상의 연산 장치(500, 550)를 포함할 수 있으며, 전체 시스템은 서로 통신하는 다중 연산 장치(500, 550)로 이루어질 수 있다.
연산 장치(550)는 여러 구성요소 중에서도, 프로세서(552), 메모리(564), 디스플레이(554)와 같은 입력/출력 장치, 통신 인터페이스(566), 및 트랜스시버(568)를 포함한다. 상기 장치(550)에는 마이크로드라이브 또는 그 밖의 장치 등의 기억 장치가 제공되어, 추가의 저장을 제공할 수도 있다. 각각의 구성요소(550, 552, 564, 554, 566, 및 568)는 다양한 버스를 사용하여 상호접속될 있고, 상기 구성요소의 일부는 공통의 마더보드상에 또는 다른 적절한 방식으로 실장될 수 있다.
프로세서(522)는 메모리(564)에 저장된 명령을 포함하는, 연산 장치(50) 내에서의 명령을 실행할 수 있다. 상기 프로세서는 개별 및 다중 아날로그 및 디지털 프로세서를 포함하는 칩의 칩셋으로서 구현될 수 있다. 상기 프로세서는, 예를 들어, 유저 인터페이스의 제어, 장치(550)에 의한 애플리케이션의 가동, 및 장치(550)에 의한 무선 통신 등의 장치(550)의 다른 구성요소의 조정을 제공한다.
프로세서(552)는 디스플레이(554)에 결합된 디스플레이 인터페이스(556) 및 제어 인터페이스(558)를 통해 유저와 통신할 수 있다. 디스플레이(554)는, 예를 들어, TFT-LCE(Thin-Film-Transistor Liquid Crystal Display) 또는 OLED(Organic Light Emitting Diode) 디스플레이, 또는 그 밖의 적절한 디스플레이 기술로 될 수 있다. 디스플레이 인터페이스(556)는 유저에게 그래픽 정보 및 그 밖의 정보를 나타내기 위해 디스플레이(554)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(558)는 유저로부터 커맨드를 수신해서 프로세서(552)에 제공하기 위해 변환할 수 있다. 또한, 외부 인터페이스(562)는 장치(550)가 다른 장치와 근거리 통신을 할 수 있게 하기 위해, 프로세서(552)와의 통신을 제공할 수 있다. 외부 인터페이스(562)는, 예를 들어, 일부 구현예에서는 유선 통신을, 또는 다른 구현예에서는 무선 통신을 제공할 수 있으며, 다중 인터페이스가 사용될 수도 있다.
메모리(564)는 연산 장치(550) 내에서의 정보를 저장한다. 메모리(564)는 하나 이상의 컴퓨터 가독 매체 또는 미디어, 휘발성 메모리 유닛 또는 유닛들, 또는 비휘발성 메모리 유닛 또는 유닛들로서 구현될 수 있다. 확장 메모리(574)는, 예를 들어, SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(572)를 통해 장치(550)에 제공되어 접속될 수도 있다. 상기 확장 메모리(574)는 장치(550)에 여분의 기억 공간을 제공할 수 있거나, 또는 장치(550)의 애플리케이션 또는 그 밖의 정보를 저장할 수도 있다. 특히, 확장 메모리(574)는 상술한 처리를 수행 또는 보충하는 명령을 포함할 수 있으며, 보안 정보도 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(574)는 장치(550)에 보안 모듈로서 제공될 수 있으며, 장치(550)의 안전한 사용을 허용하는 명령으로 프로그램될 수 있다. 또한, 보안 애플리케이션이 SIMM 카드상의 공간 식별 정보와 같은 추가적인 정보와 함께 SIMM 카드를 통해 해킹 불가능한 방식으로 제공될 수 있다.
메모리는, 후술하는 바와 같이, 예를 들어, 플래시 메모리 및/또는 NVRAM 메모리를 포함할 수 있다. 일 구현예에서, 컴퓨터 프로그램 제품은 정보 캐리어 내에 유형으로 구현된다. 컴퓨터 프로그램 제품은, 실행시에, 상술한 바와 같은 하나 이상의 방법을 수행하는 명령을 포함한다. 정보 캐리어는, 예를 들어 트랜스시버(568) 또는 외부 인터페이스(562)를 거쳐 수신될 수 있는, 메모리(564), 확장 메모리(574), 또는 프로세서(552)상의 메모리와 같은 컴퓨터 또는 기계 가독 매체이다.
장치(550)는 필요에 따라 디지털 신호 처리 회로를 포함할 수 있는 통신 인터페이스(566)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(566)는 여럿 중에서도 GSM 보이스 셀, SMS, EMS, 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000, 또는 GPRS 등의 다양한 모드 또는 프로토콜 하에서의 통신을 제공한다. 상기 통신은, 예를 들어, 무선 주파수 트랜스시버(568)를 통해 발생할 수 있다. 또한, 블루투스, 와이파이, 또는 그 밖의 트랜스시버(도시되지 않음) 등을 사용하여 근거리 통신을 발생할 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(570)은, 장치(550)상에서 가동하는 애플리케이션에 의해 적절하게 사용될 수 있는, 추가적인 내비게이션 및 위치 관련 무선 데이터를 장치(550)에 제공할 수 있다.
또한, 장치(550)는 유저로부터 음성 정보를 수신해서 그것을 유효한 디지털 정보로 변환할 수 있는 오디오 코덱(560)을 사용하여 청취 가능하게 통신할 수도 있다. 오디오 코덱(560)은, 예를 들어 장치(550)의 핸드셋에 있는 스피커를 통하는 바와 같이, 유저가 들을 수 있는 사운드를 발생할 수 있다. 상기 사운드는 음성 전화기 셀로부터의 사운드를 포함할 수 있으며, 저장된 사운드(예컨대, 음성 메시지, 음악 파일 등)를 포함할 수 있고, 또한 장치(550)상에서 작동하는 애플리케이션에 의해 발생된 사운드를 포함할 수도 있다.
연산 장치(550)는, 도면에 도시된 바와 같이, 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 휴대 전화기(580)로서 구현될 수 있다. 또한, 스마트폰(582), PDA, 또는 그 밖의 유사한 모바일 디바이스의 일부로서 구현될 수도 있다.
본원에 개시된 시스템 및 기술의 다양한 구현예는 디지털 전자 회로, 집적 회로, 주문 설계된 ASIC(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 그들의 조합으로 실현될 수 있다. 이들 다양한 구현예는, 기억 장치, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치로부터의 데이터 및 명령을 수신하거나, 거기에 데이터 및 명령을 전송하도록 결합된, 특정한 또는 일반적인 목적으로 될 수 있는, 적어도 하나의 프로그래머블 프로세서를 포함하는 프로그래머블 시스템상에서 실행 가능하거나 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램에서의 구현을 포함할 수 있다.
이들 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로서도 공지됨)은 프로그래머블 프로세서의 기계 명령을 포함하고, 높은 수준의 절차적인 및/또는 객체 지향형의 프로그래밍 언어로, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에서 사용되는, "기계 가독 매체", "컴퓨터 가독 매체"라는 용어는, 기계 가독 신호로서 기계 명령을 수신하는 기계 가독 매체를 포함하는, 프로그래머블 프로세서에 기계 명령 및/또는 데이터를 제공하는데 사용된 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크, 광 디스크, 메모리, 프로그래머블 로직 디바이스(PLD))를 의미한다. "기계 가독 신호"라는 용어는, 기계 명령 및/또는 데이터를 프로그래머블 프로세서에 제공하는데 사용된 임의의 신호를 의미한다.
유저에게 상호 작용을 제공하기 위해, 본원에 개시된 시스템 및 기술은, 유저에게 정보를 디스플레이하기 위한 디스플레이 장치(예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터) 및 유저가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에서 구현될 수 있다. 그 외에, 유저에게 상호 작용을 제공하기 위해, 다른 종류의 장치가 사용될 수 있으며, 예로서, 유저에게 제공된 피드백은 임의의 형태의 감각 피드백(예컨대, 시각 피드백, 청각 피드백, 또는 촉각 피드백)으로 될 수 있으며, 유저로부터의 입력은 음향, 음성, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
본원에 개시된 시스템 및 기술은, 백 엔드(back end) 구성요소(예컨대, 데이터 서버)를 포함하거나, 또는 미들웨어 구성요소(예컨대, 애플리케이션 서버)를 포함하거나, 또는 프런트 엔드(front end) 구성요소(예컨대, 유저가 본원에 개시된 시스템 및 기술의 구현과 상호작용할 수 있게 하는 그래픽 유저 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 상기 백 엔드, 미들웨어, 또는 프런트 엔드 구성요소의 임의의 조합을 포함하는 연산 시스템으로 구현될 수 있다. 상기 시스템의 구성요소들은 디지털 데이터 통신(예컨대, 통신 네트워크)의 임의의 형태 또는 매체에 의해 상호 접속될 수 있다. 통신 네트워크는, 예로서 근거리 통신망("LAN"), 광역 통신망("WAN"), 및 인터넷을 포함한다.
연산 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 서로 떨어져 있는 것이 일반적이며, 통상 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터상에서 가동하며 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램 때문에 발생한다.
또한, 도면에 묘사된 임의의 로직 플로우는 바람직한 결과를 달성하기 위해 도시된 특정 순서, 또는 연속하는 순서를 필요로 하는 것은 아니다. 또한, 개시한 시스템에 다른 단계가 제공되거나, 또는 그로부터 단계가 배제될 수 있고, 개시한 시스템에 다른 구성요소가 추가되거나, 또는 그로부터 제거될 수 있다. 그 결과, 다른 실시예는 하기의 청구범위 내에 포함된다.
특히 상세히 기술된 상기 실시예는 단순히 예시이거나 가능한 실시예일 뿐이며, 본원에 포함될 수 있는 다수의 다른 조합, 추가, 또는 변경이 가능하다는 것을 이해해야 한다.
또한, 구성요소, 용어의 대문자화, 속성, 데이터 구조, 또는 임의의 다른 프로그래밍 또는 구조적 양태의 특정 명칭은 강제적이거나 의미를 가지는 것은 아니며, 본 발명 또는 그 특징을 구현하는 메카니즘은 상이한 이름, 포맷, 또는 프로토콜을 가질 수 있다. 또한, 상기 시스템은, 전술한 대로 하드웨어와 소프트웨어의 조합에 의해, 또는 전적으로 하드웨어 요소로 구현될 수 있다. 또한, 본원에 개시된 다양한 시스템 구성요소들간의 기능성의 특정 분류는 예시일 뿐이며, 필수적인 것은 아니고, 단일의 시스템 구성요소에 의해 수행되는 기능이 다중 구성요소에 의해 수행될 수도 있고, 다중 구성요소에 의해 수행되는 기능이 단일의 구성요소에 의해 수행될 수도 있다.
상술한 일부 부분은 정보에 대한 작업의 알고리즘 및 기호 표시에 관한 특징을 나타낸다. 이러한 알고리즘 기재 및 표시는 데이터 처리 기술 분야의 기술자에 의해 사용되어, 본 기술분야의 다른 기술자에게 그 작업의 요지를 가장 효과적으로 전달할 수 있다. 기능적으로 및 논리적으로 기재된 이들 작업은 컴퓨터 프로그램에 의해 수행되는 것으로 이해된다. 또한, 일반성을 저해하지 않고, 모듈로서 또는 기능적인 이름으로 이들 작업의 조정에 대하여 언급하는 것도 때때로 편리할 수 있다.
상술한 바로부터 분명한 바와 같이, 특별히 다르게 언급하지 않는 한, 기재 전반에서, "처리" 또는 "연산" 또는 "계산" 또는 "결정" 또는 "디스플레이" 또는 "제공" 등의 용어를 이용하는 것은, 컴퓨터 시스템 메모리 또는 레지스터 또는 그 밖의 정보 기억, 전송 또는 디스플레이 장치 내의 물리(전자)량으로서 표현되는 데이터를 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 연산 장치의 동작 및 처리를 의미한다는 것을 이해해야 한다.
특정한 양태의 작업 및 명령은 본원에서는 알고리즘의 형태로 기재되었다. 처리 작업 및 명령은 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 소프트웨어에서 구현될 경우에는, 실시간 네트워크 작동 시스템에 의해 사용된 상이한 플랫폼 상에서 다뤄지도록 다운로드될 수 있다는 점에 유의해야 한다.
본원에서의 작업을 수행하기 위한 장치는 필요한 목적에 맞게 구성될 수 있거나, 또는 상기 컴퓨터에 의해 액세스될 수 있고, 또한 다목적 컴퓨터를 상기 개시한 작업 또는 유사한 작업을 실행하도록 설계된 특수 목적 컴퓨터로 만들 수 있는 컴퓨터 가독 매체상에 저장된 컴퓨터 프로그램에 의해 선택적으로 기동되거나 재구성되는 다목적 컴퓨터를 포함할 수 있다. 상기 컴퓨터 프로그램은, 전자 명령을 저장하기에 적합하며 각각 컴퓨터 시스템 버스에 결합되는, 플로피 디스크, 광 디스크, CD-ROM, 자기-광 디스크를 포함하는 임의의 타입의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 응용 주문형 집적 회로(ASIC), 또는 임의의 타입의 매체와 같은 컴퓨터 가독 기록 매체에 저장될 수 있지만, 그것에 한정되는 것은 아니다. 또한, 본 명세서에서 참조된 컴퓨터는 단일의 프로세서를 포함할 수 있거나, 또는 연산 능력의 증가를 위해 다중 프로세서 설계를 채용한 아키텍처일 수 있다.
구현예는 연산 시스템으로 구현될 수 있으며, 상기 시스템은, 예를 들어 데이터 서버로서의 백 엔드 구성요소를 포함하거나, 또는 예를 들어 애플리케이션 서버로서의 미들웨어 구성요소를 포함하거나, 또는 예를 들어 유저가 구현예와 상호작용할 수 있게 하는 그래픽 유저 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터로서의 프런트 엔드 구성요소를 포함하거나, 또는 상기 백 엔드, 미들웨어, 또는 프런트 엔드 구성요소의 임의의 조합을 포함한다. 구성요소들은 디지털 데이터 통신, 예를 들어 통신 네트워크의 임의의 형태 또는 매체에 의해 상호 접속될 수 있다. 통신 네트워크는, 예로서 근거리 통신망("LAN") 및 광역 통신망("WAN"), 예를 들어 인터넷을 포함한다.
본원에 나타내는 알고리즘 및 작업은 임의의 특정 컴퓨터 또는 그 밖의 장치에 고유하게 관련되는 것은 아니다. 다양한 다목적 시스템은 본원의 기술에 따른 프로그램이 사용될 수도 있거나, 또는 상기 개시된 작업 또는 유사한 작업을 수행하기 위해 더욱 특화된 장치를 구성하는 것이 편리할 수 있다. 다양한 이들 시스템의 구조는 동등한 변경과 함께 본 기술분야의 기술자에게는 명백할 것이다. 또한, 본원의 기재는 임의의 특정한 프로그래밍 언어를 참조로 기재되지는 않는다. 다양한 프로그래밍 언어가 본원의 기재의 기술을 구현하는데 사용될 수 있으며, 특정 언어에 대하여 명시적이거나 암시적인 참조가 예로서 제공됨을 이해해야 한다.
본원에 개시된 바와 같이, 상기 기재의 구현예의 특정한 특징이 도시되었지만, 많은 변형, 대체, 변경 및 동등물이 본 기술분야의 기술자에 의해 이루어질 수 있다. 그러므로, 청구범위는 실시예의 범위 내에서 상기한 모든 변형 및 변경을 포함하는 것으로 이해되어야 한다.

Claims (20)

  1. 컴퓨터 가독 매체에 저장된 명령을 포함하는 컴퓨터 시스템(100)으로서,
    계층적, 트리 구조의 처리 아키텍처(102)의 생산자 노드(producer node)(122)를 포함하고, 상기 아키텍처는 미리 규정된 하위 세트의 생산자 노드(122, 126, 129) 내에서의 상기 생산자 노드(122) 및 적어도 하나의 다른 생산자 노드(126, 129)에의 분배를 포함하여, 상기 아키텍처 내에서의 쿼리(query)(106)를 분배하도록 구성된 적어도 하나의 분배자 노드(distributor node)(120)를 포함하며, 또한 상기 분배자 노드(120)는 상기 생산자 노드(122)로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드(126, 129)로부터의 결과를 수신해서 거기로부터 컴파일 결과(compiled results)(108)를 출력하도록 더 구성되어 있고,
    상기 생산자 노드(122)는,
    상기 분배자 노드(120)로부터 수신된 쿼리(106)를 처리해서, 상기 생산자 노드(122)와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징(402-406)을 이용하는 쿼리 표시(query representation)를 얻도록 구성됨으로써, 상기 생산자 노드(122)로부터의 결과를 얻는 쿼리 전처리기(134)와,
    상기 쿼리 표시를 입력하고, 그에 의거하여, 상기 미리 규정된 하위 세트의 생산자 노드(122, 126, 129) 내에서의 상기 적어도 하나의 다른 생산자 노드(126, 129)에 의한 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드(126, 129)의 결과를 상기 컴파일 결과(108) 내에 포함되게 해야 하는지의 여부에 대한 예견(prediction)을 출력하도록 구성되는 쿼리 분류기(142)를 포함하는 컴퓨터 시스템.
  2. 제 1 항에 있어서,
    상기 쿼리 분류기(142)는, 상기 생산자 노드(122) 및 상기 적어도 하나의 다른 생산자 노드(126, 129)가 그들의 각각의 결과를 상기 분배자 노드(120)에 병렬적으로 제공하도록, 상기 쿼리 표시를 얻는 것과 함께, 또한 상기 생산자 노드(122)로부터의 결과를 생산하기 전에, 상기 분배자 노드(120)에 상기 예견을 제공하도록 구성되는 시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 쿼리 분류기(142)는 상기 아키텍처 내에서의 복수의 다른 생산자 노드(126, 129)로부터 적어도 하나의 다른 생산자 노드(126)를 결정하고, 상기 적어도 하나의 다른 생산자 노드(126)를 상기 쿼리가 전달되어야 하는 목표 노드로서 식별하도록 구성되는 시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 쿼리 분류기(142)는 상기 쿼리 표시와 연관된 적어도 두 개의 쿼리 특징(402-406)을 입력하고, 그것에 의거하여 상기 예견을 연산하도록 구성되는 시스템.
  5. 제 4 항에 있어서,
    상기 쿼리 분류기(142)는 상기 쿼리 표시와 연관된 쿼리 특징(402-406)의 세트로부터 적어도 두 개의 쿼리 특징(402-406)을 선택하도록 구성되는 시스템.
  6. 제 4 항에 있어서,
    상기 적어도 두 개의 쿼리 특징(402-406) 중 적어도 하나는 상기 쿼리(106) 내에 있는 용어들의 용어 카운트를 포함하는 시스템.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 쿼리 분류기(142)는 상기 적어도 하나의 다른 생산자 노드(126, 129)가 상기 컴파일 결과 내에 포함되기 쉬운 정도를 나타내는 범위 내의 값을 포함하는 상기 예견을 제공하도록 구성되는 시스템.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 쿼리 분류기(142)는 상기 적어도 하나의 다른 생산자 노드(126)가 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과를 제공하는데 사용될 쿼리를 처리해야 하는 정도를 나타내는 범위 내의 값을 포함하는 상기 예견을 제공하도록 구성되는 시스템.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 생산자 노드(122)는 상기 쿼리 표시와 연관된 쿼리 특징, 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과, 및 복수의 기계 학습 알고리즘의 하나를 포함하는 분류 데이터(138)를 입력하도록 구성되고, 그것에 의거하여, 상기 예견을 출력하는데 사용하기 위해 상기 쿼리 분류기(142)에 출력하기 위한 분류 모델을 구성하도록 구성되는 분류 관리자(140)를 포함하는 시스템.
  10. 제 9 항에 있어서,
    상기 분류 관리자(140)는 상기 적어도 하나의 다른 노드(126)로부터의 결과를 추적해서 그것과 함께 상기 분류 데이터 및 상기 분류 모델을 업데이트하도록 구성되는 시스템.
  11. 제 9 항에 있어서,
    상기 생산자 노드(122)는 상기 쿼리 분류기(142)에 의한 지시 여부에 따라 상기 적어도 하나의 다른 생산자 노드(126)에 상기 쿼리의 하위 세트를 주기적으로 송신하기 위해 상기 분배자 노드(120)를 기동하고, 그것에 의거하여 상기 분류 데이터를 업데이트하도록 구성된 모니터(136)를 포함하는 시스템.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 생산자 노드(122)로부터의 결과는 상기 생산자 인덱스를 사용하여 상기 생산자 노드(122)와 연관된 데이터 소스(124)로부터 얻어지고, 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과는 상응하는 인덱스를 사용하여 상기 적어도 하나의 다른 생산자 노드(126)와 연관된 데이터 소스(128)로부터 얻어지며, 상기 적어도 하나의 다른 생산자 노드(126)는 상기 생산자 노드(122)에 비해 액세스 비용 효율이 낮은 시스템.
  13. 적어도 하나의 프로세서가 적어도 하기의 작업들을 수행하는 컴퓨터 구현 방법(200)으로서,
    계층적, 트리 구조의 처리 아키텍처(102) 내의 적어도 하나의 분배자 노드(120)로부터 쿼리(106)를 생산자 노드(122)에서 수신하는 작업(202)을 포함하고, 상기 아키텍처는 상기 생산자 노드(122) 및 적어도 하나의 다른 생산자 노드(126)에의 분배를 포함하여 상기 아키텍처(102) 내에서의 쿼리를 분배하도록 구성된 상기 적어도 하나의 분배자 노드(120)를 포함하고, 또한 상기 분배자 노드(120)는 상기 생산자 노드(122)로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과를 수신해서 거기로부터 컴파일 결과(108)를 출력하도록 더 구성되고,
    상기 생산자 노드(122)와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징(402-406)을 이용하여 쿼리 표시를 얻기 위해 상기 분배자 노드(120)로부터 수신된 상기 쿼리(106)를 전처리해서, 상기 생산자 노드(122)로부터의 결과를 얻는 전처리 작업(204), 및
    상기 적어도 하나의 다른 생산자 노드(126)에 의한 상기 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드의 결과를 상기 컴파일 결과(108) 내에 포함되게 해야 하는지의 여부에 대한 예견을, 상기 쿼리 표시에 의거하여 출력하게 되도록 상기 쿼리 표시를 이용하여 상기 쿼리를 분류하는 작업(206)을 또한 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 쿼리를 분류하는 작업(206)은,
    상기 생산자 노드(122) 및 상기 적어도 하나의 다른 생산자 노드(126)가 그들의 각각의 결과를 상기 분배자 노드(120)에 병렬적으로 제공하도록, 상기 쿼리 표시를 얻는 것과 함께, 또한 상기 생산자 노드(122)로부터 상기 결과를 생산하기 전에 상기 분배자 노드(120)에 상기 예견을 제공하는 단계를 포함하는 방법.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 쿼리를 분류하는 작업(206)은,
    상기 쿼리 표시와 연관된 쿼리 특징, 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과, 및 복수의 기계 학습 알고리즘의 하나를 포함하는 분류 데이터(138)를 입력하는 단계, 및
    그것에 의거하여, 상기 예견을 출력하는데 이용하기 위한 분류 모델을 구성하는 단계를 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 쿼리를 분류하는 작업(206)은,
    상기 예견에 의한 지시 여부에 따라 상기 적어도 하나의 다른 생산자 노드(126)에 상기 쿼리의 하위 세트를 주기적으로 송신하기 위해 상기 분배자 노드(120)를 기동하고, 그것에 의거하여 상기 분류 데이터를 업데이트하는 단계를 포함하는 방법.
  17. 실행시에, 데이터 처리 장치에 하기의 단계를 실행시키도록 구성된 실행 코드를 포함하고 컴퓨터 가독 매체상에 유형으로 구현되는 컴퓨터 프로그램 제품으로서,
    계층적, 트리 구조의 처리 아키텍처(102) 내의 적어도 하나의 분배자 노드(120)로부터 쿼리(106)를 생산자 노드(122)에서 수신하는 단계(202)를 포함하고, 상기 아키텍처는 상기 생산자 노드(122) 및 적어도 하나의 다른 생산자 노드(126)에의 분배를 포함하여 상기 아키텍처(102) 내에서의 쿼리를 분배하도록 구성된 상기 적어도 하나의 분배자 노드(120)를 포함하고, 또한 상기 분배자 노드(120)는 상기 생산자 노드(122)로부터의 결과 및 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과를 수신해서 거기로부터 컴파일 결과(108)를 출력하도록 더 구성되고,
    상기 생산자 노드(122)와 연관된 생산자 인덱스를 서치하는 것과 호환 가능한 쿼리 특징(402-406)을 이용하여 쿼리 표시를 얻기 위해 상기 분배자 노드(120)로부터 수신된 상기 쿼리(106)를 전처리해서, 상기 생산자 노드(122)로부터의 결과를 얻는 전처리 단계(204), 및
    상기 적어도 하나의 다른 생산자 노드(126)에 의한 상기 쿼리의 처리가 상기 적어도 하나의 다른 생산자 노드의 결과를 상기 컴파일 결과(108) 내에 포함되게 해야 하는지의 여부에 대한 예견을, 상기 쿼리 표시에 의거하여 출력하게 되도록 상기 쿼리 표시를 이용하여 상기 쿼리를 분류하는 단계(206)를 또한 포함하는 컴퓨터 프로그램 제품.
  18. 제 17 항에 있어서,
    상기 쿼리를 분류하는 단계(206)에서, 실행 명령이,
    상기 생산자 노드(122) 및 상기 적어도 하나의 다른 생산자 노드(126)가 그들의 각각의 결과를 상기 분배자 노드(120)에 병렬적으로 제공하도록, 상기 쿼리 표시를 얻는 것과 함께, 또한 상기 생산자 노드(122)로부터 상기 결과를 생산하기 전에 상기 분배자 노드(120)에 상기 예견을 제공하는 단계를, 상기 데이터 처리 장치에 실행시키는 컴퓨터 프로그램 제품.
  19. 제 17 항 또는 제 18 항에 있어서,
    상기 쿼리를 분류하는 단계(206)에서, 실행 명령이,
    상기 쿼리 표시와 연관된 쿼리 특징, 상기 적어도 하나의 다른 생산자 노드(126)로부터의 결과, 및 복수의 기계 학습 알고리즘의 하나를 포함하는 분류 데이터(138)를 입력하는 단계, 및
    그것에 의거하여, 상기 예견을 출력하는데 이용하기 위한 분류 모델을 구성하는 단계를, 상기 데이터 처리 장치에 실행시키는 컴퓨터 프로그램 제품.
  20. 제 19 항에 있어서,
    상기 쿼리를 분류하는 단계에서, 실행 명령이,
    상기 예견에 의한 지시 여부에 따라 상기 적어도 하나의 다른 생산자 노드에 상기 쿼리의 하위 세트를 주기적으로 송신하도록 상기 분배자 노드(120)를 기동하는 단계, 및
    그것에 의거하여 상기 분류 데이터(138)를 업데이트하는 단계를, 상기 데이터 처리 장치에 실행시키는 컴퓨터 프로그램 제품.
KR1020117030858A 2009-06-10 2010-06-10 계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배 KR20120037413A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US18597809P 2009-06-10 2009-06-10
US61/185,978 2009-06-10
US12/609,788 2009-10-30
US12/609,788 US20100318516A1 (en) 2009-06-10 2009-10-30 Productive distribution for result optimization within a hierarchical architecture

Publications (1)

Publication Number Publication Date
KR20120037413A true KR20120037413A (ko) 2012-04-19

Family

ID=43307241

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030858A KR20120037413A (ko) 2009-06-10 2010-06-10 계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배

Country Status (9)

Country Link
US (1) US20100318516A1 (ko)
EP (1) EP2441008A1 (ko)
JP (1) JP2012530289A (ko)
KR (1) KR20120037413A (ko)
CN (1) CN102597979A (ko)
AU (1) AU2010258725A1 (ko)
BR (1) BRPI1013121A2 (ko)
CA (1) CA2765097A1 (ko)
WO (1) WO2010144692A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713024B2 (en) 2010-11-22 2014-04-29 Microsoft Corporation Efficient forward ranking in a search engine
US9342582B2 (en) 2010-11-22 2016-05-17 Microsoft Technology Licensing, Llc Selection of atoms for search engine retrieval
US9529908B2 (en) 2010-11-22 2016-12-27 Microsoft Technology Licensing, Llc Tiering of posting lists in search engine index
US9424351B2 (en) 2010-11-22 2016-08-23 Microsoft Technology Licensing, Llc Hybrid-distribution model for search engine indexes
US9195745B2 (en) * 2010-11-22 2015-11-24 Microsoft Technology Licensing, Llc Dynamic query master agent for query execution
SG192246A1 (en) * 2011-02-10 2013-09-30 Tradelegg Llc Method and system for providing a decision support framework relating to financial trades
CN102693274B (zh) * 2011-03-25 2017-08-15 微软技术许可有限责任公司 用于查询执行的动态查询主代理
US9959522B2 (en) * 2012-01-17 2018-05-01 The Marlin Company System and method for controlling the distribution of electronic media
US8843470B2 (en) 2012-10-05 2014-09-23 Microsoft Corporation Meta classifier for query intent classification
US9342557B2 (en) * 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
WO2014188500A1 (ja) 2013-05-20 2014-11-27 富士通株式会社 データストリーム処理の並列化プログラム、及びデータストリーム処理の並列化システム
US9189212B2 (en) * 2014-03-31 2015-11-17 International Business Machines Corporation Predicted outputs in a streaming environment
JP6442951B2 (ja) 2014-09-25 2018-12-26 富士通株式会社 データ処理方法、データ処理プログラム及びデータ処理装置
CN106909529B (zh) * 2015-12-22 2020-12-01 阿里巴巴集团控股有限公司 一种机器学习工具中间件及机器学习训练方法
US9495137B1 (en) * 2015-12-28 2016-11-15 International Business Machines Corporation Methods and systems for improving responsiveness of analytical workflow runtimes

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09503080A (ja) * 1993-09-13 1997-03-25 タリジェント インコーポレイテッド マルチメディア・データ・ルーチング・システム
US5907837A (en) * 1995-07-17 1999-05-25 Microsoft Corporation Information retrieval system in an on-line network including separate content and layout of published titles
US6311194B1 (en) * 2000-03-15 2001-10-30 Taalee, Inc. System and method for creating a semantic web and its applications in browsing, searching, profiling, personalization and advertising
GB0019341D0 (en) * 2000-08-08 2000-09-27 Easics Nv System-on-chip solutions
US7536472B2 (en) * 2001-09-13 2009-05-19 Network Foundation Technologies, Llc Systems for distributing data over a computer network and methods for arranging nodes for distribution of data over a computer network
AU2003272028A1 (en) * 2002-11-15 2004-06-15 International Business Machines Corporation Network traffic control in peer-to-peer environments
US7200837B2 (en) * 2003-08-21 2007-04-03 Qst Holdings, Llc System, method and software for static and dynamic programming and configuration of an adaptive computing architecture
US7756801B2 (en) * 2004-11-15 2010-07-13 Palo Alto Research Center Incorporated Systems and methods for architecture independent programming and synthesis of network applications
US7672930B2 (en) * 2005-04-05 2010-03-02 Wal-Mart Stores, Inc. System and methods for facilitating a linear grid database with data organization by dimension
US7761407B1 (en) * 2006-10-10 2010-07-20 Medallia, Inc. Use of primary and secondary indexes to facilitate aggregation of records of an OLAP data cube
US20080195597A1 (en) * 2007-02-08 2008-08-14 Samsung Electronics Co., Ltd. Searching in peer-to-peer networks
US7889651B2 (en) * 2007-06-06 2011-02-15 International Business Machines Corporation Distributed joint admission control and dynamic resource allocation in stream processing networks
US7962650B2 (en) * 2008-04-10 2011-06-14 International Business Machines Corporation Dynamic component placement in an event-driven component-oriented network data processing system

Also Published As

Publication number Publication date
WO2010144692A1 (en) 2010-12-16
BRPI1013121A2 (pt) 2019-06-25
EP2441008A1 (en) 2012-04-18
JP2012530289A (ja) 2012-11-29
AU2010258725A1 (en) 2012-01-12
CA2765097A1 (en) 2010-12-16
CN102597979A (zh) 2012-07-18
US20100318516A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
KR20120037413A (ko) 계층적 아키텍처 내에서의 결과 최적화를 위한 생산적 분배
US11651043B2 (en) Leveraging analytics across disparate computing devices
US11423082B2 (en) Methods and apparatus for subgraph matching in big data analysis
US11282020B2 (en) Dynamic playback of synchronized narrated analytics playlists
US20180329935A1 (en) Distributed storage and processing of hierarchical data structures
KR101793222B1 (ko) 어플리케이션 검색들을 가능하게 하기 위해 사용되는 검색 인덱스의 업데이트
JP2021534493A (ja) 限られた知識ドメイン内でナレッジグラフを構築するための技術
US20160110657A1 (en) Configurable Machine Learning Method Selection and Parameter Optimization System and Method
US7747556B2 (en) Query-based notification architecture
WO2018205881A1 (en) Estimating the number of samples satisfying a query
US20080313131A1 (en) Parameter-sensitive plans for structural scenarios
US9110984B1 (en) Methods and systems for constructing a taxonomy based on hierarchical clustering
US11544502B2 (en) Management of indexed data to improve content retrieval processing
WO2017166944A1 (zh) 一种提供业务访问的方法及装置
US20210191938A1 (en) Summarized logical forms based on abstract meaning representation and discourse trees
US20130325770A1 (en) Probabilistic language model in contextual network
US20220019586A1 (en) Predicted properties for database query planning
US20220019902A1 (en) Methods and systems for training a decision-tree based machine learning algorithm (mla)
US20220179910A1 (en) Using graph queries to obtain results from machine learning models
US11238095B1 (en) Determining relatedness of data using graphs to support machine learning, natural language parsing, search engine, or other functions
US9547701B2 (en) Method of discovering and exploring feature knowledge
US20230013479A1 (en) Data catalog system for generating synthetic datasets
US11782918B2 (en) Selecting access flow path in complex queries
WO2022060868A1 (en) An automated machine learning tool for explaining the effects of complex text on predictive results
US20230142351A1 (en) Methods and systems for searching and retrieving information

Legal Events

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