KR102229011B1 - 고속 질의 응답을 위한 시스템 및 방법 - Google Patents

고속 질의 응답을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102229011B1
KR102229011B1 KR1020140124537A KR20140124537A KR102229011B1 KR 102229011 B1 KR102229011 B1 KR 102229011B1 KR 1020140124537 A KR1020140124537 A KR 1020140124537A KR 20140124537 A KR20140124537 A KR 20140124537A KR 102229011 B1 KR102229011 B1 KR 102229011B1
Authority
KR
South Korea
Prior art keywords
query
service engine
data storage
speed
request
Prior art date
Application number
KR1020140124537A
Other languages
English (en)
Other versions
KR20150032508A (ko
Inventor
스티븐 메일스
데릭 슬래거
Original Assignee
아이큐비아 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아이큐비아 인크. filed Critical 아이큐비아 인크.
Publication of KR20150032508A publication Critical patent/KR20150032508A/ko
Application granted granted Critical
Publication of KR102229011B1 publication Critical patent/KR102229011B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 전반적으로 데이터 액세스 요청을 처리하기 위한 컴퓨터 구현 방법, 소프트웨어 및 시스템을 개시하며, 이들은 주 데이터 서버에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 요청을 수신하는 단계와, 수신된 요청이, 주 데이터 서버와 상이한 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 단계와, 수신된 요청이 고속 질의 서비스 엔진에 의해 지원된다는 판정에 응답하여, 요청을 고속 질의 서비스 엔진으로 향하게 하는 단계와, 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 유지된 하나보다 많은 회신 세트로 구성된 질의 결과를 고속 질의 서비스 엔진으로부터 수신하는 단계로서, 인-메모리 데이터 스토리지의 상기 회신 세트가 주 데이터 서버와 동기화되는, 수신하는 단계와, 질의 결과를 요청을 제출한 사용자에게 제공하는 단계를 포함한다.

Description

고속 질의 응답을 위한 시스템 및 방법{SYSTEM AND METHOD FOR FAST QUERY RESPONSE}
본 발명은 고속 질의 응답을 위한 시스템 및 방법에 관한 것이다.
사용자는 데이터베이스에 대해 데이터 액세스 요청을 제출하고, 질의 결과를 획득할 수 있다.
일 양태에서, 몇몇 실시예는 데이터 액세스 요청을 처리하는 방법을 제공하며, 상기 방법은, 주 데이터 서버(primary data server)에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 요청을 수신하는 단계와, 수신된 요청이, 상기 주 데이터 서버와 상이한 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 단계와, 수신된 요청이 상기 고속 질의 서비스 엔진에 의해 지원된다는 판정에 응답하여, 상기 요청을 상기 고속 질의 서비스 엔진으로 향하게 하는 단계와, 상기 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지(in-memory data storage)에 유지된 하나보다 많은 회신 세트(answer set)로 구성된 질의 결과를 상기 고속 질의 서비스 엔진으로부터 수신하는 단계로서, 상기 인-메모리 데이터 스토리지의 상기 회신 세트가 상기 주 데이터 서버와 동기화되는, 수신하는 단계와, 상기 질의 결과를 상기 요청을 제출한 사용자에게 제공하는 단계를 포함한다.
실시예는 이하의 특징 중의 하나 이상을 포함할 수 있다. 일 구성에서, 상기 수신된 요청이 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 단계는, 상기 수신된 요청을 논리 질의 세그먼트(logic query segment)로 분해하는 단계와, 분해된 논리 질의 세그먼트의 대응하는 회신 세트가 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는지를 판정하는 단계를 포함할 수 있다. 상기 수신된 요청을 분해하는 단계는, 상기 수신된 요청을 하나 이상의 논리곱(conjunctive)에 의해 내포된(nested) 논리 질의 세그먼트로 분해하는 단계를 포함할 수 있다. 상기 수신된 요청을 분해하는 단계는, 상기 수신된 요청을 하나 이상의 논리합(disjunctive)에 의해 내포된 논리 질의 세그먼트로 분해하는 단계를 포함할 수 있다. 상기 수신된 요청을 분해하는 단계는, 상기 수신된 요청을 하나 이상의 부정(negation)에 의해 내포된 논리 질의 세그먼트로 분해하는 단계를 포함할 수 있다.
일 구성에서, 상기 방법은, 상기 요청이 상기 고속 질의 서비스 엔진에 의해 지원되지 않는다는 판정에 응답하여, 상기 요청을 상기 주 데이터 서버로 향하게 하는 단계를 더 포함할 수 있다. 상기 방법은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정하는지를 판정하는 단계를 더 포함할 수 있다. 또한, 상기 방법은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정한다는 판정에 응답하여, 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는, 수정된 데이터를 참조하는 회신 세트의 콘텐츠가 유효하지 않게 되었다는 것을 상기 고속 질의 서비스 엔진에 통보하는 단계를 더 포함할 수 있다.
또 다른 양태에서, 몇몇 실시예는 하나 이상의 프로세서를 포함하는 컴퓨터 시스템으로서, 상기 하나 이상의 프로세서가, 주 데이터 서버에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 요청을 수신하는 동작과, 수신된 요청이, 상기 주 데이터 서버와 상이한 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 동작과, 수신된 요청이 상기 고속 질의 서비스 엔진에 의해 지원된다는 판정에 응답하여, 상기 요청을 상기 고속 질의 서비스 엔진으로 향하게 하는 동작과, 상기 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 유지된 하나보다 많은 회신 세트로 구성된 질의 결과를 상기 고속 질의 서비스 엔진으로부터 수신하는 동작으로서, 상기 인-메모리 데이터 스토리지의 상기 회신 세트가 상기 주 데이터 서버와 동기화되는, 수신하는 동작과, 상기 질의 결과를 상기 요청을 제출한 사용자에게 제공하는 동작을 포함하는 동작을 수행하도록 구성되는, 컴퓨터 시스템을 제공할 수 있다.
실시예는 이하의 특징 중의 하나 이상을 포함할 수 있다. 일 구성에서, 상기 수신된 요청이 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 동작은, 상기 수신된 요청을 논리 질의 세그먼트로 분해하는 동작과, 분해된 논리 질의 세그먼트의 대응하는 회신 세트가 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는지를 판정하는 동작을 포함할 수 있다. 상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 논리곱에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함할 수 있다. 상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 논리합에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함할 수 있다. 상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 부정에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함할 수 있다.
일 구성에서, 상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 고속 질의 서비스 엔진에 의해 지원되지 않는다는 판정에 응답하여, 상기 요청을 상기 주 데이터 서버로 향하게 하는 동작을 더 포함할 수 있다. 상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정하는지를 판정하는 동작을 더 포함할 수 있다. 또한, 상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정한다는 판정에 응답하여, 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는, 수정된 데이터를 참조하는 회신 세트의 콘텐츠가 유효하지 않게 되었다는 것을 상기 고속 질의 서비스 엔진에 통보하는 동작을 더 포함할 수 있다.
또 다른 양태에서, 몇몇 실시예는 소프트웨어 명령을 포함하고 있는 컴퓨터 판독 가능 매체로서, 상기 소프트웨어 명령은 컴퓨터에 의해 실행될 시에 상기 컴퓨터로 하여금, 주 데이터 서버에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 요청을 수신하는 동작과, 수신된 요청이, 상기 주 데이터 서버와 상이한 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 동작과, 수신된 요청이 상기 고속 질의 서비스 엔진에 의해 지원된다는 판정에 응답하여, 상기 요청을 상기 고속 질의 서비스 엔진으로 향하게 하는 동작과, 상기 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 유지된 하나보다 많은 회신 세트로 구성된 질의 결과를 상기 고속 질의 서비스 엔진으로부터 수신하는 동작으로서, 상기 인-메모리 데이터 스토리지의 상기 회신 세트가 상기 주 데이터 서버와 동기화되는, 수신하는 동작과, 상기 질의 결과를 상기 요청을 제출한 사용자에게 제공하는 동작을 포함하는 동작을 수행하게 하도록 구성되는, 컴퓨터 판독 가능 매체를 제공할 수 있다.
실시예는 이하의 특징 중의 하나 이상을 포함할 수 있다. 일 구성에서, 상기 수신된 요청이 고속 질의 서비스 엔진에 의해 지원되는지를 판정하는 동작은, 상기 수신된 요청을 논리 질의 세그먼트로 분해하는 동작과, 분해된 논리 질의 세그먼트의 대응하는 회신 세트가 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는지를 판정하는 동작을 포함할 수 있다. 상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 논리곱에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함할 수 있다. 상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 논리합에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함할 수 있다. 상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 부정에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함할 수 있다.
일 구성에서, 상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 고속 질의 서비스 엔진에 의해 지원되지 않는다는 판정에 응답하여, 상기 요청을 상기 주 데이터 서버로 향하게 하는 동작을 더 포함할 수 있다. 상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정하는지를 판정하는 동작을 더 포함할 수 있다. 또한, 상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정한다는 판정에 응답하여, 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는, 수정된 데이터를 참조하는 회신 세트의 콘텐츠가 유효하지 않게 되었다는 것을 상기 고속 질의 서비스 엔진에 통보하는 동작을 더 포함할 수 있다.
또 다른 양태에서, 몇몇 실시예는 질의 핸들링을 위한 방법을 제공할 수 있으며, 상기 방법은, 주 데이터 서버 상의 데이터를 액세스하기 위해 사용자에 의해 제출된 포워딩된 질의를 수신하는 단계와, 포워딩된 질의 콤포넌트에 대한 대응하는 회신 세트가 인-메모리 데이터 스토리지에서 이용 가능한지를 판정하는 단계와, 대응하는 회신 세트가 이용 가능하다는 판정에 응답하여, 대응하는 회신 세트가 유효한지를 판정하는 단계와, 대응하는 회신 세트가 이용 가능하고 유효하다는 판정에 응답하여, 질의의 콤포넌트에 대한 대응하는 회신 세트에 기초하여 질의 결과를 구성하는 단계와, 사용자에 의해 제출된 질의에 응답하기 위해 질의 결과를 제공하는 단계를 포함한다.
실시예는 이하의 특징 중의 하나 이상을 포함할 수 있다. 상기 방법은, 사용자 제출 질의에 의해 수정되고, 인-메모리 데이터 스토리지에 유지된 하나 이상의 회신 세트에 의해 참조되는 데이터에 관한 무효성 통지(invalidation notice)를 수신하는 단계를 더 포함할 수 있다. 상기 방법은, 수정된 데이터를 참조하는 하나 이상의 회신 세트를 유효하지 않은 것으로서 등록하는 단계를 더 포함할 수 있다. 상기 방법은 상기 하나 이상의 회신 세트를 상기 인-메모리 데이터 스토리지로부터 제거하는 단계를 더 포함할 수 있다. 상기 방법은 또한 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하는 단계를 더 포함할 수 있다.
상기 방법은, 대응하는 회신 세트가 이용 가능하지만 하나 이상의 회신 세트가 유효하지 않다는 판정에 응답하여, 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠가 주 데이터 서버에서의 대응하는 데이터와 동기화될 때까지 질의 결과를 구성하는 것을 억제하는(refrain) 단계를 더 포함할 수 있다. 상기 방법은, 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하는 것을 진척시키는(expedite) 단계를 더 포함할 수 있다. 상기 방법은, 인-메모리 데이터 스토리에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하기 위해 업데이트 요청을 디스패치(dispatch)하는 단계를 더 포함할 수 있다. 상기 업데이트 요청을 디스패치하는 단계는, 주 데이터 서버로부터 업데이트된 콘텐츠를 페치(fetch)하기 위해 업데이트 요청을 디스패치하는 단계를 포함할 수 있다. 상기 방법은, 대응하는 회신 세트가 이용 가능하지만 하나 이상의 회신 세트가 유효하지 않다는 판정에 응답하여, 포워딩된 질의의 질의 결과가 차단되고 있다는 것을 나타내는 피드백을 제공하는 단계를 더 포함할 수 있다.
또 다른 양태에서, 몇몇 실시예는 질의 핸들링을 위한 컴퓨터 시스템을 제공할 수 있다. 상기 컴퓨터 시스템은 하나 이상의 프로세서를 포함할 수 있으며, 상기 프로세서가, 주 데이터 서버 상의 데이터를 액세스하기 위해 사용자에 의해 제출된 포워딩된 질의를 수신하는 동작과, 포워딩된 질의 콤포넌트에 대한 대응하는 회신 세트가 인-메모리 데이터 스토리지에서 이용 가능한지를 판정하는 동작과, 대응하는 회신 세트가 이용 가능하다는 판정에 응답하여, 대응하는 회신 세트가 유효한지를 판정하는 동작과, 대응하는 회신 세트가 이용 가능하고 유효하다는 판정에 응답하여, 질의의 콤포넌트에 대한 대응하는 회신 세트에 기초하여 질의 결과를 구성하는 동작과, 사용자에 의해 제출된 질의에 응답하기 위해 질의 결과를 제공하는 동작을 포함한 동작을 수행하도록 구성될 수 있다.
실시예는 이하의 특징 중의 하나 이상을 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은, 사용자 제출 질의에 의해 수정되고, 인-메모리 데이터 스토리지에 유지된 하나 이상의 회신 세트에 의해 참조되는 데이터에 관한 무효성 통지를 수신하는 동작을 더 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은, 수정된 데이터를 참조하는 하나 이상의 회신 세트를 유효하지 않은 것으로서 등록하는 동작을 더 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은, 상기 하나 이상의 회신 세트를 상기 인-메모리 데이터 스토리지로부터 제거하는 동작을 더 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은 또한 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하는 동작을 더 포함할 수 있다.
상기 프로세서에 의해 수행되는 동작은, 대응하는 회신 세트가 이용 가능하지만 하나 이상의 회신 세트가 유효하지 않다는 판정에 응답하여, 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠가 주 데이터 서버에서의 대응하는 데이터와 동기화될 때까지 질의 결과를 구성하는 것을 억제하는 동작을 더 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은, 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하는 것을 진척시키는 동작을 더 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은, 인-메모리 데이터 스토리에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하기 위해 업데이트 요청을 디스패치하는 동작을 더 포함할 수 있다. 상기 업데이트 요청을 디스패치하는 동작은, 주 데이터 서버로부터 업데이트된 콘텐츠를 페치하기 위해 업데이트 요청을 디스패치하는 동작을 포함할 수 있다. 상기 프로세서에 의해 수행되는 동작은, 대응하는 회신 세트가 이용 가능하지만 하나 이상의 회신 세트가 유효하지 않다는 판정에 응답하여, 포워딩된 질의의 질의 결과가 차단되고 있다는 것을 나타내는 피드백을 제공하는 동작을 더 포함할 수 있다.
또 다른 양태에서, 몇몇 실시예는 소프트웨어 명령을 포함하고 있는 컴퓨터 판독 가능 매체를 제공할 수 있으며, 상기 컴퓨터 명령은, 컴퓨터 프로세서에 의해 실행될 때에, 상기 컴퓨터 프로세서로 하여금, 주 데이터 서버 상의 데이터를 액세스하기 위해 사용자에 의해 제출된 포워딩된 질의를 수신하는 동작과, 포워딩된 질의 콤포넌트에 대한 대응하는 회신 세트가 인-메모리 데이터 스토리지에서 이용 가능한지를 판정하는 동작과, 대응하는 회신 세트가 이용 가능하다는 판정에 응답하여, 대응하는 회신 세트가 유효한지를 판정하는 동작과, 대응하는 회신 세트가 이용 가능하고 유효하다는 판정에 응답하여, 질의의 콤포넌트에 대한 대응하는 회신 세트에 기초하여 질의 결과를 구성하는 동작과, 사용자에 의해 제출된 질의에 응답하기 위해 질의 결과를 제공하는 동작을 포함한 동작을 수행하도록 한다.
실시예는 이하의 특징 중의 하나 이상을 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은, 사용자 제출 질의에 의해 수정되고, 인-메모리 데이터 스토리지에 유지된 하나 이상의 회신 세트에 의해 참조되는 데이터에 관한 무효성 통지를 수신하는 동작을 더 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은, 수정된 데이터를 참조하는 하나 이상의 회신 세트를 유효하지 않은 것으로서 등록하는 동작을 더 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은, 상기 하나 이상의 회신 세트를 상기 인-메모리 데이터 스토리지로부터 제거하는 동작을 더 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은 또한 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하는 동작을 더 포함할 수 있다.
상기 컴퓨터 프로세서에 의해 수행되는 동작은, 대응하는 회신 세트가 이용 가능하지만 하나 이상의 회신 세트가 유효하지 않다는 판정에 응답하여, 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠가 주 데이터 서버에서의 대응하는 데이터와 동기화될 때까지 질의 결과를 구성하는 것을 억제하는 동작을 더 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은, 상기 인-메모리 데이터 스토리지에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하는 것을 진척시키는 동작을 더 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은, 인-메모리 데이터 스토리에 저장된 바와 같은 하나 이상의 회신 세트의 콘텐츠를 업데이트하기 위해 업데이트 요청을 디스패치하는 동작을 더 포함할 수 있다. 상기 업데이트 요청을 디스패치하는 동작은, 주 데이터 서버로부터 업데이트된 콘텐츠를 페치하기 위해 업데이트 요청을 디스패치하는 동작을 포함할 수 있다. 상기 컴퓨터 프로세서에 의해 수행되는 동작은, 대응하는 회신 세트가 이용 가능하지만 하나 이상의 회신 세트가 유효하지 않다는 판정에 응답하여, 포워딩된 질의의 질의 결과가 차단되고 있다는 것을 나타내는 피드백을 제공하는 동작을 더 포함할 수 있다.
상기한 기술의 실시예는 방법, 컴퓨터 프로그램 제품 및 시스템을 포함한다. 컴퓨터 프로그램 제품은 비일시적인 기기 판독 가능 매체(non-transitory machine-readable medium)에 적합하게 구현되며, 하나 이상의 프로세서에 의해 실행 가능한 명령을 포함한다. 명령은 하나 이상의 프로세서로 하여금 전술한 동작들을 수행하게 하도록 구성된다.
시스템은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행할 수 있는 비일시적 기기 판독 가능 매체에 구현된 명령을 포함한다. 명령은, 실행될 때에, 하나 이상의 프로세서로 하여금 상기한 동작들을 수행하게 하도록 구성된다. 디폴트 위치는 어떠한 외부 데이터베이스도 이용하지 않지만, 시스템은 필요한 경우 데이터베이스 검사를 수행하도록 구성될 수 있다.
본 명세서에 설명되는 기술 요지의 하나 이상의 양태의 세부구성은 첨부 도면 및 이하의 상세한 설명에 나타내어져 있다. 본 발명의 기술 요지의 기타 특징, 양태 및 장점은 상세한 설명, 도면 및 청구범위로부터 명백하게 될 것이다.
도 1은 사용자 발생 질문(user-generated question)에 대한 고속 질의 응답을 제공하기 위한 몇몇 실시예에 따른 시스템을 도시하는 다이아그램이다.
도 2는 몇몇 구현에에 따라 사용자 발생 질문을 처리하는 일례의 작업 흐름도를 도시하는 도면이다.
도 3a는 몇몇 실시예에 따라 데이터 세트와 동기화되는 회신 세트를 기반으로 하는 질의 결과를 발생하는 일례의 작업 흐름도를 도시하는 도면이다.
도 3b는 몇몇 실시예에 따라 무효성 통지를 처리하는 일례의 작업 흐름도를 도시하는 도면이다.
도 4a는 몇몇 실시예에 따라 사용자 발생 질문을 수신하고 질의 결과를 제공하기 위한 일례의 사용자 인터페이스를 도시하는 도면이다.
도 4b는 몇몇 구현에에 따라 인-메모리 데이터 스토리지(106)에 유지되는 회신 세트의 상태를 보여주는 일례의 사용자 인터페이스를 도시하는 도면이다.
도 4c는 몇몇 실시예에 따른 고속 질의 랩퍼(fast query wrapper)를 실행하는 프론트-엔드 어플리케이션(front-end application) 내에 백-엔드 고속 질의 서비스 엔진을 통합하기 위해 시스템 관리자를 의한 일례의 사용자 인터페이스를 도시하는 도면이다.
본 발명은 전반적으로 사용자 발생 질문에 대한 고속 질의 결과를 제공하는 시스템 및 방법을 설명한다. 질의 결과는 관계형 데이터베이스(relational database)에 의한 직접 처리보다 빠르게 발생될 수 있다. 관계형 데이터베이스는 주 데이터 서버에 결합될 수 있다. 사용자 발생 질문은 여러 개의 논리 세그먼트를 포함할 수 있다. 몇몇 실시예에서, 특정한 사용자 발생 질문의 논리 세그먼트에 대한 회신 세트는 캐싱(caching)의 형태로서 고성능의 인-메모리 데이터 스토리지에 유지될 수 있다. 질의 결과는 인-메모리 데이터 스토리지에 "캐싱되어 있는" 회신 세트로부터 구성(composition)될 수 있다. 이러한 구성은 예컨대 종래의 관계형 데이터베이스에 의한 질의 처리를 통해 주 데이터 서버로부터 페치(fetch)될 필요가 있을 때보다 신속하게 질의 결과를 제공할 수 있다. 회신 세트의 콘텐츠는 대응하는 데이터와 일치하게 주 데이터 서버에 유지될 수 있다. 예컨대, 대응하는 데이터가 수정되고 있을 때, 그 영향을 받는 회신 세트의 콘텐츠가 유효하지 않게 될 수도 있고 또는 업데이트될 수도 있다. 업데이트는 인-메모리 데이터 스토리지와 주 데이터 서버 간의 동기화의 형태를 취할 수 있다.
도 1은 사용자 발생 질문에 대한 고속의 질의 응답을 제공하기 위한 몇몇 실시예에 따른 시스템을 도시하는 다이아그램이다. 이 시스템은 고속 질의 랩퍼(102), 고속 질의 서비스 엔진(104), 및 무효성 통지 루프를 포함할 수 있다. 고속 질의 랩퍼(FQW)(102)는 프론트-엔드 엔진으로서 작용할 수 있다. 프론트-엔드 엔진은 판독/질의 요청 및 기입/비질의 요청을 포함하는 사용자 발생 데이터 액세스 요청(110)을 포함할 수 있다. FQW(102)는 데이터 액세스 요청(110)을 제출한 사용자에게 결과(112)를 제공할 수 있다. 데이터 액세스 요청(110)은 또한 예컨대, 음성 인식 서브시스템에 의해 구동되는 검색 엔진 서비스, 동일한 사용자에 의해 발생된 이전의 질문에 의해 부분적으로 구동되는 검색 엔진 서비스 등과 같은 자연 언어 처리(natural language processing)에 의해 파싱되는(parsed) 하이 레벨 질문을 포함할 수 있다. 일반적으로, 프론트-엔드 엔진은 비지니스 레벨에서의 사용자 발생 질문에 대한 인터페이스를 제공할 수 있다. 사용자 발생 질문은 예컨대 SQL(Structured Query Language)과 같은 특정한 질의 언어(query language)로 만들어진 질의로 특정되거나 제한되지 않을 것이다. 실제로, 사용자 발생 질문은 특정한 SQL 데이터베이스에 대한 인터페이싱 언어(예컨대, PHP 또는 Python과 같은)에 의해서도 제한되지 않을 것이다.
고속 질의 랩퍼(FQW)(102)는 사용자 발생 데이터 액세스 요청(110), 예컨대 질의를 논리 질의 세그먼트로 분해할 수 있다. 몇몇 실시예에서, 사용자 발생 질의는 집합 대수 계산(set algebra calculation)과 비슷한 연산에 의해 논리 질의 세그먼트로 분할될 수 있다. 집합의 대수는 일반적으로 결합 연산(예컨대, 합집합), 중첩 연산(meet operation)(교집합), 보수 연산(예컨대, 여집합 또는 부정(negation)) 등을 포함하는 부울리안 대수 연산을 포함할 수 있다. 몇몇 실시예에서, 사용자 발생 질의는 논리합(disjunctive), 논리곱(conjunctives), 부정, 또는 논리곱, 논리합 또는 부정의 조합에 의해 결합된 질의 세그먼트로 분해될 수 있다. 예컨대, 부정은 주어진 질의 엔티티(given query entity)에 대한 모든 고유 식별자의 전체 집합 U를 유지함으로써 가능하게 될 수 있다. 그리고나서, 질의가 제약(constraint) ∼A와 함께 제출되면, 질의는 U-A를 연산함으로써 저장된 결과 A를 기반으로 처리될 수 있다. 액세스 요청이 더욱 효율적으로 처리될 수 있도록 액세스 요청을 간략화하기 위해 유사한 양상으로 다른 집합 대수 연산이 수행될 수도 있다. 분해(decomposition) 또는 최적화는 사용자 발생 데이터 액세스 요청(110), 예컨대 질의를 처리하기 위해 고속 질의 랩퍼(FQW)(102)가 주 데이터 서버(108)에 관여하는 시간의 양을 감소시킬 수 있다. 전술한 바와 같이, 사용자 발생 질의는 고레벨 또는 비지니스 레벨 질문을 포함할 수 있으며, 구조화된 질의(예컨대, SQL로 만들어진 질의)로 한정되지 않을 것이다. 사용자에 의해 제출된 바와 같은 질의에 응답하여, 몇몇 실시예는 고속 질의 서비스(FQS) 엔진(104)을 통해 고속 질의 서비스를 제공할 수 있다.
고속 질의 서비스(FQS) 엔진(104)은 백-엔드 엔진으로서 작용하는 한편, 고속 질의 랩퍼(FQW)(102)는 프론트-엔드 엔진으로서 기능한다. 고속 질의 서비스(FQS) 엔진(104)은 인-메모리 데이터 스토리지(106)를 포함할 수 있다. 인-메모리 데이터 스토리지(106)는 예컨대 동적 랜덤-액세스 메모리(DRAM), 정적 랜덤-액세스 메모리(SRAM), 비휘발성 메모리 랜덤 액세스 메모리(NVRAM) 등과 같은 고속 액세스 타임을 갖는 메모리 디바이스를 포함할 수 있다. 인-메모리 데이터 스토리지(106)는 예컨대 하드 디스크 드라이브의 스캐닝 암, 광저장장치의 스캐닝 헤드 등을 포함한 기계식으로 회전하는 부분을 갖는 저장 매체를 포함하지 않을 수도 있다. 이러한 저장 매체는 기계식으로 회전하는 부분없이도 저장 매체보다 긴 데이터 액세스 레이턴스를 야기할 수 있다. 다양한 질의 또는 질의 세그먼트에 대한 회신 세트의 콘텐츠는 인-메모리 데이터 스토리지에 저장될 수 있다. 몇몇 실시예에서, 고속 질의 서비스 엔진(104)은 고속 질의 랩퍼(FQW)(102)가 제공된 회신 세트로부터 질의 결과를 구성할 수 있도록 회신 세트의 콘텐츠를 고속 질의 랩퍼(FQW)(102)에 제공할 수 있다. 본 명세서에 설명된 바와 같이, 인-메모리 데이터 스토리지에 연관된 메모리 액세스 시간은 주 데이터 서버(108)에 연관된 메모리 액세스 시간보다 빠르게 되는 경향이 있다. 그러므로, 인-메모리 데이터 스토리지에 이미 저장된 회신 세트의 콘텐츠에 기초하여 질의 결과를 구성하는 것은 사용자 발생 질의에 대한 빠른 응답 시간을 야기할 수 있다. 몇몇 시나리오에서, 몇몇 회신 세트는 인-메모리 데이터 스토리지(106)로부터 풀링(pulling)될 수 있는 한편, 다른 회신 세트들은 주 데이터 서버(108)로부터 페치될 수 있다. 질의 결과를 발생함에 있어서의 예상된 레이턴시는 전체 회신 세트가 주 데이터 서버(108)로부터 풀링될 수 있는 시나리오에 비하여 여전히 감소될 수 있다. 고속 질의 서비스는, 본 명세서에 설명되는 바와 같이, 질의 결과를 제공함에 있어서 감소된 레이턴시의 이점을 포함할 수 있다.
이와 동시에, 고속 질의 서비스(FQS) 엔진(104)은 주 데이터 서버(108)와 통신할 수 있다. 주 데이터 서버(108)는 예컨대 관계형 데이터베이스 관리 시스템(DBMS)을 호스팅할 수 있다. 일례의 DBMS는 MySQL 데이터베이스, PostgreSQL 데이터베이스, 오라클 데이터베이스 등을 포함할 수 있다. 인-메모리 데이터 스토리지(106)와 달리, 주 데이터 서버(108)는 하드 디스크 드라이브, 자기 테이프, 광디스크 저장장치(예컨대, 컴팩트 디스크, 디지털 비디오 디스크, 블루레이 등)와 같은 회전 기계식 부분을 갖는 저장 장치를 포함할 수 있다. 주 데이터 서버(108) 상의 저장 매체는 더 낮은 저장 단위당 가격을 가질 수 있다. 주 데이터 서버(108)는 FQS(104) 상의 인-메모리 데이터 스토리지의 저장 용량보다 큰 저장 용량을 가질 수 있다. 그러나, 주 데이터 서버(108)는 인-메모리 데이터 스토리지(106)에 비하여 느린 메모리 액세스 시간을 가질 수 있다. 전술한 바와 같이, 몇몇 실시예는 인-메모리 데이터 스토리지(106)에 이미 저장된 회신 세트에 기초하여 질의 결과를 구성함으로써 사용자 발생 데이터 액세스 요청(110)에 대한 더 빠른 응답 시간을 제공할 수 있다. 더욱이, 본 명세서에 설명된 바와 같이, 인-메모리 데이터 스토리지(106)에 유지되는 회신 세트의 콘텐츠는 대응하는 데이터와 일치하게 주 데이터 서버(108) 상에 유지될 수 있다. 그러므로, 몇몇 실시예는 예컨대 일관성(consistency)을 훼손하지 않고서도 결과, 예컨대 고속 질의 결과를 제공할 수 있다.
구체적으로, 무효화 루프(invalidation loop)는 주 데이터 서버(108)와 인-메모리 데이터 스토리지(106)에 저장된 회신 세트의 콘텐츠 간의 일관성을 강화(enforce)할 수 있다. 도 1에 도시된 바와 같이, 사용자 발생 데이터 액세스 요청(110)을 수신함에 있어서, 고속 질의 랩퍼(102)는 액세스 요청을 주 데이터 서버(108)에 제출할 수 있다. 간혹, 액세스 요청은 기입 동작(116)과 비슷한 동작을 포함할 수 있다. 간혹, 액세스 요청은 판독 동작(118)과 비슷한 동작을 포함할 수 있다. 제출된 요청이 기입 동작과 비슷한 동작을 포함할 때, 주 데이터 서버(108) 상의 대응하는 데이터가 수정될 수 있다. 이러한 요청은 데이터 엔트리를 수정/업데이트하기 위한 요청, 데이터 엔트리를 생성하기 위한 요청 등을 포함할 수 있다. 다른 한편으로, 요청이 판독 동작과 비슷한 때에는, 주 데이터 서버(108) 상의 요청된 데이터 자체가 변경되지 않을 수도 있다. 그러나, 요청된 데이터가 액세스되었던 횟수를 나타내는 카운터와 같은 관련 데이터는 여전히 업데이트될 수 있다. 수정 상태(modification status)는 주 데이터 서버(108)로 하여금 무효성 통지(114)를 고속 질의 서비스(FQS) 엔진(104)에 보내도록 트리거할 수 있다. 무효성 통지(114)는 주 데이터 서버(108) 상에서 수정되었거나 수정되고 있는 데이터의 특정한 부분을 참조할 수도 있다. 무효성 통지(114)는 고속 질의 서비스 엔진(104)에 의해 수신될 수 있다. 무효성 통지(114)를 수신하는 것에 응답하여, 고속 질의 서비스(FQS) 엔진(104)은 인-메모리 데이터 스토리지(106)에 저장된 회신 세트의 콘텐츠와 주 데이터 서버(108) 상에 저장된 것과 같은 대응하는 데이터 간의 일관성을 유지하기 위한 동작을 취할 수 있다. 일 구성에서, 고속 질의 서비스(FQS) 엔진(104)은 무효성 통지에 의해 언급된 수정된 데이터를 참조하는 회신 세트의 상태를 유효하지 않은 것으로서 기록하기 위해 콘텐츠 레지스트리 테이블을 마크할 수도 있다. 또 다른 구성에서, 고속 질의 서비스(FQS) 엔진(104)은 인-메모리 데이터 스토리지(106)로부터의 수정된 데이터를 참조하는 회신 세트를 제거(purge)할 수도 있다. 또 다른 구성에서, 고속 질의 서비스(FQS) 엔진(104)은 수정된 데이터를 참조하는 회신 세트를 대체하기 위해 주 데이터 서버(108)로부터의 업데이트된 회신 세트를 선조치적으로(proactively) 페치할 수 있다. 고속 질의 서비스(FQS) 엔진(104)이 인-메모리 데이터 스토리지(106)에 저장된 회신 세트의 콘텐츠와 주 데이터 서버(108) 상에 저장된 바와 같은 대응하는 데이터 간의 데이터 일관성을 유지하기 위한 동작을 취하기는 하지만, 고속 질의 서비스(FQS) 엔진(104)은, 무효성 통지(114)에 의해, 영향을 받은 회신 세트를 액세스하기 위해 고속 질의 랩퍼(FQW)(102)로부터 포워딩되는 액세스 요청을 차단할 수도 있다. 예컨대, 무효성 통지(114)에 의해 영향을 받은 회신 세트를 액세스하려고 시도하는 사용자 발생 질의는 서비스가 "일시적으로 이용 가능하지 않음"이라는 차단 메시지를 수신할 수도 있다. 차단은 고속 질의 서비스(FQS) 엔진(104)이 영향을 받은 회신 세트를 유효하지 않은 것으로서 마킹하고 있거나, 그 회신 세트를 제거하고 있거나, 회신 세트를 업데이트하고 있는 동안에 이루어질 수 있다. 고속 질의 서비스(FQS) 엔진(104)이 마킹, 제거 또는 업데이트를 행하는 때에, 고속 질의 서비스(FQS) 엔진(104)은 포워딩된 액세스 요청에 대해 그에 따라 응답할 수 있다. 예컨대, 고속 질의 서비스(FQS) 엔진(104)은 영향을 받은 회신 세트가 유효하지 않거나 또는 영향을 받은 회신 세트의 콘텐츠가 이용 가능하지 않게 되었다는 것을 고속 질의 랩퍼(FQW)(102)에 경고할 수 있다. 영향을 받은 회신 세트의 콘텐츠가 업데이트된 때에, 고속 질의 서비스(FQS) 엔진(104)은 고속 질의 랩퍼(FQW)(102)에게, 수정되고 주 데이터 서버(108) 상에 저장된 것과 같은 대응하는 데이터와 일치하는 업데이트된 회신 세트를 제공할 수 있다.
요약하면, 무효성 통지(114)를 이용하여, 주 데이터 서버(108)와 인-메모리 데이터 스토리지(106)에 걸쳐 있는 분산 트랜잭션(distributed transaction)이 데이터 일관성이 강화되는 경우에 구현될 수 있다. 몇몇 실시예에서, 백-엔드 FQS 엔진(104)은 예컨대 코어 데이터 서버 런닝 MySQL 또는 Oracle DBMS와 같은 주 데이터 서버(108)와 맞추어보도록(collated) 구성될 수 있다. 프론트-엔드 고속 질의 랩퍼(FQW)는 온라인으로 또는 모바일 어플리케이션으로부터 데이터 액세스 요청(110)을 제공할 수도 있는 사용자와 상호작용하기 위해 어플리케이션에 통합되는 씬 클라이언트 레이어(thin client layer)로서 구현될 수도 있다.
도 2는 몇몇 실시예에 따른 사용자 발생 액세스 요청을 처리하는 일례의 작업 흐름도를 도시한다. 몇몇 실시예에서, 도 2는 프론트-엔드 고속 질의 랩퍼(FQW)(102)에 맵핑될 수 있다. 먼저, 사용자 발생 액세스 요청(110)이 수신될 수 있다(202). 사용자 발생 액세스 요청은 예컨대 스마트폰, 태블릿, 랩톱 등을 포함한 모바일 컴퓨팅 디바이스를 통해 사용자에 의해 제출될 수 있다. 사용자는 앱스토어(app store)로부터 다운로드된 모바일 앱(mobile app)을 이용하여 액세스 요청을 제출할 수도 있다. 전술한 바와 같이, 사용자 발생 액세스 요청은 사용자에 의해 제출된 하이-레벨 질문을 포함할 수 있다. 사용자 발생 액세스 요청은 SQL과 같은 특정한 언어로 작성될 필요는 없는 질의를 포함할 수 있다.
사용자 발생 액세스 요청은 예컨대 Apache 웹 서버와 같은 웹 서버에 의해 제공되는 웹-포탈(web-portal)을 통해 사용자에 의해 제출될 수도 있다. 웹-포탈은 예컨대 PHP 또는 Python과 같은 스크립팅 언어로 작성된 서버측 어플리케이션 프로그램을 포함할 수 있다. 서버측 어플리케이션 프로그램은 프론트-엔드 고속 질의 랩퍼(FQW)(102)를 구현할 수 있다. 전술한 바와 같이, 프론트-엔드 고속 질의 랩퍼(FQW)(102)는 고속 질의 서비스 엔진(104)(백-엔드로서의) 및 주 데이터 서버(108)(코어 데이터 서버로서의)와 상호작용하기 위한 클라이언트 랩퍼로서 기능할 수 있다. 몇몇 실시예에서, 프론트-엔드 고속 질의 랩퍼(FQW)(102)는 클라이언트/서버 아키텍처에 따라 백-엔드 고속 질의 서비스(FQS) 엔진(104)과 상호작용할 수 있다. 일 구성에서, 고속 질의 랩퍼(FQW)(102) 및 고속 질의 서비스(FQS) 엔진(104)은 분산 클라이언트/서버 패러다임을 따를 수 있다. 고속 질의 랩퍼(FQW)(102) 및 고속 질의 서비스(FQS) 엔진(104)은 동일한 물리적 기기 상에 모아져 있지 않을 수도 있다. 고속 질의 랩퍼(FQW)(102) 및 고속 질의 서비스(FQS) 엔진(104)은 사용자에게 향상된 응답 레이턴시 및 강화된 데이터 일관성으로 질의 결과에 대한 끊김없는 액세스를 제공하기 위해 클라우드-컴퓨팅 환경(cloud-computing environment)에 포함될 수도 있다.
사용자 발생 액세스 요청이 질의를 포함하면, FQW(102)는 사용자 발생 데이터 액세스 요청이 판독/질의 요청인지 또는 기입/비질의 요청인지를 판정할 수 있다(204). 데이터 액세스 요청이 판독/질의와 유사할 때, 요청은 고속 질의 서비스에 의해 처리될 수 있다. 본 명세서에 설명된 바와 같이, 고속 질의 서비스는 데이터 일관성을 유지하면서 감소된 레이턴시로 질의 결과를 제공할 수 있다. 고속 질의 처리를 가능하게 하기 위해, 사용자 발생 질의는 논리 세그먼트로 분해될 수 있고, 몇몇 논리 세그먼트에 대한 회신 세트가 인-메모리 데이터 스토리지에 저장될 수 있다. 몇몇 실시예에서, FQW는 특정한 논리 세그먼트가 인-메모리 데이터 스토리지(106)에 미리 저장된 회신 세트를 갖는지를 나타내는 상태 맵(status map)을 유지할 수 있다. 일 구성에서, 상태 맵은 예컨대 별도의 전용의 서비스 쓰레드(separate and dedicated service thread)에 의해 팝퓰레이트될 수 있다. 별도의 쓰레드는 이미 "캐싱된" 이용 가능한 회신 세트를 식별하기 위해 인-메모리 데이터 스토리지를 가로지를 수 있다. 일 구성에서, 별도의 쓰레드는 FQW(102) 및 FQS 엔진(104)의 부하가 비교적 낮은 때에 론칭(launching)될 수 있다. 더욱이, 쓰레드는 증분 기준(incremental basis)으로 이용 가능한 회신 세트를 위해 인-메모리 데이터 스토리지(106)를 스캔할 수 있다. 즉, 쓰레드는 최종 스캔 이후에 변경된 부분만을 스캔할 수 있다. 일 구성에서, 쓰레드는 인-메모리 데이터 스토리지(106) 상의 회신 세트가 업데이트된 때에 반응적으로(reactively) 론칭될 수도 있다.
FQW(102)가 사용자 발생 질의가 판독/질의 요청인 것으로 판정한 때에, FQW(102)는 사용자 발생 질의를 고속 질의 서비스(FQS) 엔진(104)으로 리다이렉트(redirect)할 수 있다. 일 구성에서, 리다이렉트된 질의는 분해된 논리 세그먼트, 구체적으로 인-메모리 데이터 스토리지(106)에 이미 저장된 회신 세트를 갖는 논리 세그먼트의 형태로 FQS 엔진(104)에 보내질 수 있다. 또 다른 구성에서, 리다이렉트된 질의는 FQS 엔진(104)이 논리 세그먼트로 분해할 수 있도록 FQS 엔진(104)에 보내질 수도 있다.
리다이렉트된 질의에 응답하여, FQW(102)는 FQS 엔진(104)으로부터 질의 결과를 수신할 수 있다(208). 몇몇 시나리오에서, 수신된 질의 결과는 인-메모리 데이터 스토리지(106)에 이미 저장된 회신 세트에 기초하여 FQS 엔진(104)에 의해 구성될 수 있다. 전술한 바와 같이, 인-메모리 데이터 스토리지(106)에 유지된 회신 세트는 대응하는 데이터와 일치하게 주 데이터 서버(108) 상에 유지될 수 있다. 다른 시나리오에서, 질의 결과를 구성하는 것은 적어도 부분적으로는 FQW(102)에 의해 수행될 수 있다. 이러한 시나리오에서, 사용자 발생 질의의 몇몇 논리 세그먼트에 대한 회신 세트는 인-메모리 데이터 스토리지(106)에서 이용 가능하지 않게 될 수도 있다. 회신 세트는 여러 이유로 인-메모리 데이터 스토리지(106)에서 이용 가능하지 않을 수 있다. 예컨대, 회신 세트가 아직 주 데이터 서버(108)로부터 페치되지 않았을 수도 있거나, 회신 세트가 무효성 통지(114)에 응답하여 인-메모리 데이터 스토리지(106)로부터 제거(purge)되었을 수도 있거나, 또는 회신 세트가 전술한 바와 같이 무효성 통지(114)에 응답하여 무효화될 수도 있다. 이러한 시나리오에서, 인-메모리 데이터 스토리지(106)에 있는 이용 가능하지 않은 회신 세트는 주 데이터 서버(108)로부터 획득될 필요가 있을 수도 있다. 이용 가능하지 않은 회신 세트에 대응하는 데이터가 주 데이터 서버(108)로부터 리턴될 때, 질의 결과가 그에 따라 구성될 수 있다. 몇몇 실시예에서, FQW(102)는 이용 가능하지 않은 회신 세트를 주 데이터 서버(108)로부터 획득하도록 구성될 수도 있다. 그러나, 다른 실시예에서는, FQS 엔진(104)이 이용 가능하지 않은 회신 세트를 주 데이터 서버(108)로부터 획득하도록 적합화되어, 이러한 회신 세트의 콘텐츠가 고속 응답을 위한 회신 세트의 "캐싱된" 카피를 필요로 할 수도 있는 후속의 사용자 발생 질의에 이용 가능하게 될 수 있다. 인-메모리 데이터 스토리지(106)에 이미 저장되고 주 데이터 서버(108)로부터 새로 획득된 회신 세트에 기초하여 질의 결과를 구성하는 것은 FQS 엔진(104) 또는 FQW(102)에 의해 수행될 수 있다.
그러나, FQW(102)가 사용자 발생 액세스 요청이 기입/비질의 요청과 비슷한 것으로 판정하면, FQW(102)는 주 데이터 서버(108) 상의 데이터가 사용자 발생 액세스 요청에 의해 수정될지를 판정하도록 진행할 수 있다(210).
주 데이터 서버(108) 상의 데이터가 사용자 발생 액세스 요청에 의해 수정될 것이면(210), 무효성 통지(114)가 발생되고, 고속 질의 서비스(FQS) 엔진(104)에 통보하기 위해 보내질 수 있다(212). 무효성 통지(114)는 고속 질의 서비스(FQS) 엔진(104)으로 하여금 수정된 데이터를 참조하는 회신 세트를 유효하지 않은 것으로서 마크하거나, 이러한 회신 세트를 인-메모리 데이터 스토로지로부터 제거하거나, 또는 본 명세서에 설명된 바와 같이 및 분산 트랜잭션 실시예에 따라 업데이트된 회신 세트를 획득하도록 트리거할 수 있다. 그 후, 요청은 주 데이터 서버(108)에 보내질 수 있다(214).
주 데이터 서버(108) 상의 데이터가 사용자 발생 액세스 요청에 의해 수정되지 않을 것이면(210), 프로세스는 요청을 주 데이터 서버(108)에 보내도록 진행할 수 있다(214).
결과가 주 데이터 서버(108)로부터 수신된 때(216), FQW(102)는 추가의 사용자 발생 액세스 요청을 수신하도록 진행할 수 있다(202). 즉, 사용자 발생 액세스 요청을 서비스함에 있어서, FQW(102)는 인-메모리 데이터 스토리지(106)에 유지되고 있는 데이터와 주 데이터 서버(108) 상에 저장된 데이터의 일관성을 보장하기 위해 블로킹 어프로치(blocking approach)(동기화된 어프로치로서도 알려짐)를 채용할 수 있다. 블로킹 어프로치는 본 명세서에 설명된 바와 같이 분산 트랜잭션 특징의 일부를 구현할 수 있다.
몇몇 시나리오에서, 액세스 요청의 특정 논리 세그먼트에 대한 회신 세트는 예컨대 특정 논리 세그먼트에 대한 회신 세트가 이용 가능하지 않거나, 유효하지 않거나, 인-메모리 데이터 스토리지(106)로부터 제거된 때에는 인-메모리 데이터 스토리지에 "캐싱"되지 않을 수 있다. 이러한 시나리오에서, 대응하는 회신 세트의 콘텐츠는 주 데이터 서버(108)로부터 획득될 수 있다. 이를 위해, 특정한 논리 세그먼트가 주 데이터 서버(108)에 리라우트될(rerouted) 수 있다. 몇몇 실시예에서, 리라우트된 논리 세그먼트는 주 데이터 서버(108)에서의 질의 처리를 용이하게 하기 위해 예컨대 SQL(structured query language)로 다시 작성될 수 있다. 리라우트된 논리 세그먼트에 응답하여, 대응하는 회신 세트가 수신될 수 있다. 수신된 회신 세트(인-메모리 데이터 스토리지(106) 및 주 데이터 서버(108)로부터의)에 기초하여, 질의 결과는 본 명세서의 설명에 따라 구성될 수 있다. 구성된 질의 결과는 사용자 발생 질의를 제출한 사용자에게 중계될 수 있다.
도 3a는 몇몇 실시예에 따라 데이터 세트와 동기화된 회신 세트에 기초하여 질의 결과를 발생하는 일례의 작업 흐름도를 도시하고 있다. 몇몇 실시예에서, 도 3a는 백-엔드 고속 질의 서비스(FQS) 엔진(104)에 맵핑될 수 있다. 먼저, 포워딩된 질의가 FQW(102)로부터 수신될 수 있다. 본 명세서에 설명되는 바와 같이, 포워딩된 질의는 분해된 논리 세그먼트의 형태이어도 된다. 포워딩된 질의가 분해된 논리 세그먼트의 형태가 아니면, 고속 질의 서비스(FQS) 엔진(104)은 수신된 질의를 논리 세그먼트로 분해할 수도 있다.
FQS 엔진(104)은 논리 세그먼트에 대한 회신 세트가 인-메모리 데이터 스토리지(106)에서 이용 가능한지를 판정할 수 있다(304). 임의의 회신 세트가 인-메모리 데이터 스토리지(106)에 "캐싱"되지 않았다면, FQS 엔진(104)은 이러한 이용 가능하지 않은 회신 세트를 페치하기 위해 주 데이터 서버(108)에 질의할 수 있다. 이러한 회신 세트가 주 데이터 서버(108)로부터 획득되고 있는 동안, 예컨대 회신 세트에 관한 상태 정보를 나타내기 위해 FQW(102)에 피드백 정보가 제공될 수 있다(316).
모든 회신 세트가 인-메모리 데이터 스토리지(106)에 "캐싱"되면, FQS 엔진(104)은 회신 세트의 콘텐츠가 유효한지를 판정할 수 있다. 본 명세서에 설명된 바와 같이, 회신 세트의 콘텐츠는 예컨대 주 데이터 서버(108) 상의 대응하는 데이터가 수정되었기 때문에 유효하지 않을 수도 있다. 몇몇 실시예에서, FQS 엔진(104)은 주 데이터 서버(108) 상의 대응하는 데이터의 유효성 상태(validity status)를 파악하기 위해 콘텐츠 레지스트리를 포함할 수 있다. 예컨대, 특정 회신 세트의 유효성 상태가 콘텐츠 레지스트리에서 탐색될 수도 있다. 콘텐츠 레지스트리는 본 명세서에서의 논의에 따라 각각의 무효성 통지(114)의 최근 정황(up to date with each invalidation notice 114)이 유지될 수 있다.
예컨대 주 데이터 서버(108) 상의 대응하는 데이터가 수정되었고, 인-메모리 데이터 스토리지에서의 "캐싱된" 카피가 오래되었기 때문에, 특정 회신 세트의 콘텐츠가 유효하지 않은 것으로 FQS 엔진(104)이 판정하면, FQS 엔진(104)은 주 데이터 서버(108) 및 인-메모리 데이터 스토리지(106) 상의 데이터의 카피들을 동기화함으로써 영향을 받은 회신 세트의 콘텐츠를 업데이트할 수 있다(314). 몇몇 실시예에서, FQS 엔진(104)은 주 데이터 서버(108)로부터 업데이트된 데이터를 획득하기 위해 업데이트 서비스 쓰레드를 론칭하도록 적합화된 업데이트 스케쥴러를 포함할 수 있다. 일 구성에서, 업데이트 스케줄러는 FQW(102) 상의 부하가 예컨대 80% 아래로 비교적 낮은 때에 업데이트 서비스 쓰레드를 론칭하도록 구성될 수 있다. 몇몇 구성에서, 업데이트 스케줄러는 예컨대 예측적으로(predictively) 페칭함으로써 선조치적으로(proactively) 업데이트 서비스 쓰레드를 론칭하도록 구성될 수 있다. 예컨대, 업데이트 서비스 쓰레드는 이전의 사용자 발생 질의에 의해 나타내진 데이터 액세스 패턴에 따라 후속의 사용자 발생 질의에 의해 요구될 수도 있는 데이터 세그먼트를 "추측적으로(speculatively)" 예측하도록 구성될 수도 있다. 예측은 예컨대 액세스되고 있는 데이터의 논리 어드레스를 기반으로 하는 선형 외삽 알고리즘(linear extrapolation algorithm)을 따를 수도 있다. 영향을 받은 데이터 세트의 콘텐츠가 업데이트되고 있는 동안, 업데이트 상태를 나타내기 위해 피드백 정보가 FQW(102)에 제공될 수도 있다(316). 동기화 후, FQS 엔진(104) 상의 콘텐츠 레지스트리는 업데이트된 회신 세트의 유효성 상태를 반영하도록 업데이트될 수 있다.
몇몇 실시예에서, FQS 엔진(104)은 회신 세트에 기초하여 질의 결과를 작성할 수 있다(308). 그 후, 작성된 질의 결과가 FQW(102)를 통해 사용자에게 제공될 수 있다. 그러므로, 회신 세트를 "캐싱"하기 위해 인-메모리 데이터 스토리지(106)와 결합된 분할 정복 전략(divide-and-conquer strategy)이 주 데이터 서버(108)와 일치하는(consistent with) 데이터에 기초하여 고속 질의 결과를 산출할 수 있다.
도 3b는 몇몇 실시예에 따라 무효성 통지를 처리하는 일례의 작업 흐름도를 도시하고 있다. 무효성 통지(114)는 FQS 엔진(104)에서 수신될 수 있다(320). 이에 응답하여, FQS 엔진(104)은 수정된 데이터가 인-메모리 데이터 스토리지(106)에 유지되어 있는 카피를 갖는지를 판정할 수 있다(322). 수정된 데이터가 아직 인-메모리 데이터 스토리지(106)에 유지되지 않았다면, FQS 엔진(104)은 무효성 통지를 무시하도록 선택할 수 있다(324).
그러나, 수정된 데이터가 인-메모리 데이터 스토리지(106)에 유지되고 있다면, FQS 엔진(104)은 수정된 데이터를 참조하는 회신 세트를 유효하지 않은 것으로 등록하거나, 영향을 받은 회신 세트의 콘텐츠를 인-메모리 데이터 스토리지(106)로부터 제거하거나, 또는 인-메모리 데이터 스토어(106)에 저장된 것과 같은 영향을 받은 회신 세트의 콘텐츠를 업데이트하도록 선택할 수 있다.
몇몇 실시예에서, FQS 엔진(104)은 주 데이터 서버(108) 상의 대응하는 데이터에 기초하여 인-메모리 데이터 스토리지(106)에 저장된 회신 세트의 유효성 상태를 추적하도록 구성된 콘텐츠 레지스트리를 포함할 수 있다. 수정된 데이터를 참조하는 회신 세트를 무효화하는 무효성 통지에 응답하여, 콘텐츠 레지스트리는 영향을 받은 회신 세트를 유효하지 않은 것으로서 마크하도록 업데이트될 수 있다.
다른 실시예에서, FQS 엔진(104)은 인-메모리 데이터 스토리지(106)에 저장된 회신 세트를 유지하도록 구성된 메모리 관리자를 포함할 수 있다. 수정된 데이터를 참조하여 회신 세트를 무효화하는 무효성 통지에 응답하여, 메모리 관리자는 인-메모리 데이터 스토리지(106)로부터 영향을 받은 회신 세트의 콘텐츠를 제거하도록 될 수도 있다.
다른 실시예에서, FQS 엔진(104)은 무효화된 데이터를 보다 적극적으로(diligently) 처리하도록 구성될 수 있다. 예컨대, 업데이트 스케줄러는 주 데이터 서버(108)로부터 수정된 데이터에 기초한 업데이트된 회신 세트를 획득하기 위해 호출(invoke)될 수 있다.
콘텍스트를 위해(for context), 클라우드 컴퓨팅 및 빅 데이터는 더 크고 더욱 유비쿼터스(ubiquitous)적인 것으로 성장하기 위해 헬스캐어 데이터(healthcare data)를 전자 형태로 제공하고 있다. 부분적으로, 데이터 크기에서의 성장 및 데이터 액세스에서의 향상은 대량 저장 장치의 속도 및 용량에서의 하드웨어적 향상뿐만 아니라 프로세서 및 네트워킹 속도에서의 유사한 진전에 의해 용이하게 될 수 있다. 헬스캐어 데이터베이스는 다양한 저장 기술을 갖는 별도의 데이터베이스 서버의 클러스터에 걸쳐 커다란 테이블로 분할될 수 있다. 예컨대, 고속 근거리 통싱망 및 광섬유 채널 기술에 연결된 네트워크 결합 스토리지(network-attached storage, NAS) 및 스토리지 에어리어 네트워크(storage area network, SAN)는 데이터베이스 및 분산 컴퓨팅 파워의 더 크고 더욱 느슨하게 결합된(loosely coupled) 구성을 가능하게 한다. 분산 데이터베이스 스토리지의 일례의 실시예는 X/Open XA 표준 및 Oracle RACrelies를 포함할 수 있으며, 이 둘 모두는 데이터 스토리지 서버들 간의 고속 네트워크 접속을 채용한다. 데이터 스토리지 기술을 설명하는 부분에서는, 서버, 시스템 및 디바이스가 상호 교환 가능하게 이용될 수 있다.
클라우드 컴퓨팅의 세대에서의 헬스캐어 데이터의 경우, 헬스캐어는 상이한 또는 이종의 데이터베이스 관리 시스템의 호스트에 의해 더욱 쉽게 관리될 수 있다. 이들 데이터베이스 관리 시스템은 넓은 영역에 걸쳐 있는 서버들 상에 호스팅될 수 있다. 그러므로, "캐싱된" 데이터를 후속 질의에 제공하기 위해 통상의 데이터베이스 관리 시스템에 의존하는 모노리식 솔루션(monolithic solution)은 현실적이지 않을 수도 있다. 더욱이, 모노리식 솔루션이 특정한 어플리케이션 콘텍스트를 위해 실시될 수 있는 경우에도, 모노리식 솔루션은 특정한 데이터베이스 엔진에 대한 사용자측에서의 잠금(lock)을 제공하지 못하고, 솔루션의 이식성(portability)을 방해한다. 반대로, 모듈화된 솔루션은 비용 및 모노리식 솔루션의 이식성의 상실을 초래하지 않고서도 전술한 성능 향상을 제공할 수 있다. 그럼에도 불구하고, 여기에서 개시되는 바와 같은 계층화된 또는 모듈화된 솔루션의 분명한 특징은 명백하게 되는 것과는 거리가 있다. 실제로, 모듈화된 시스템으로 분산 트랜잭션을 구현하는 순전한 복잡도(sheer complexity)는 매우 쉽지 않아서, 좀처럼 아무도 이러한 구현을 시도하지 않는다.
도 4a는 몇몇 실시예에 따라 사용자 발생 질문을 수신하고 질의 결과를 제공하는 일례의 사용자 인터페이스를 도시하고 있다. 예시된 바와 같이, 3개의 분해 가능한 질의 성분(또는 논리 세그먼트), 즉 접촉 상태, 타겟이 되는 이메일, 및 유효하게 되는 접촉 이메일은 암묵적 논리곱 스테이트먼트(implicit conjunctive statement)를 형성한다. 3개의 논리 세그먼트는 검색을 위한 기준을 형성하도록 조합된다. 3개의 논리 세그먼트 중의 하나, 즉 유효하게 되는 타겟 이메일에 대한 논리 세그먼트는 배제 기준(exclusion criterion)을 포함할 수 있다. 배제 기준은 직접적으로 부정 기준(negated criterion)(즉, ∼A) 대신에 전체 집합으로부터 포함된 기준을 감산(즉, U - A)하는 것으로서의 해석(interpretation)에 놓이게 될 수 있다. 몇몇 실시예에서, 사용자 발생 질의는 논리합에 의해 조합 가능한 논리 세그먼트로 분해될 수 있다.
도 4b는 몇몇 실시예에 따라 인-메모리 데이터 스토리지(106)에 유지되는 회신 세트의 상태를 보여주는 일례의 사용자 인터페이스를 도시하고 있다. 상태 뷰는 고속 질의 서비스(FQS) 엔진(104) 상의 시스템 관리자에게 이용 가능하게 될 수 있다. 여기에서 논의되는 바와 같이, FQS 엔진(104)은 고속 질의 서비스의 백-엔드를 형성할 수 있고, 인-메모리 데이터 스토리지(106)를 포함할 수 있다. 도 4b에 예시된 바와 같이, 데이터 스토리지(106)에 유지되는 이용 가능한 회신 세트를 참조하는 각각의 키 값에 대해, 도표는, 카운트의 수(키잉된 엔트리(keyed entry)가 액세스된 횟수를 나타냄), 키잉된 엔트리가 이용 가능한지의 여부, 키잉된 엔트리가 주 데이터 서버(108) 상의 대응하는 데이터와 일치하는지의 여부, 키잉된 엔트리가 겟 연산(get operation)에서 최종적으로 판독된 때의 타임 스탬프, 키잉된 엔트리가 셋 연산(set operation)에서 최종적으로 수정된 때의 타임 스탬프, 키잉된 엔트리가 최종적으로 무효화된 때의 타임 스탬프, 업데이트 정책(update policy), 및 특정한 키잉된 엔트리에 관한 시스템 관리자에 대해 이용 가능한 동작을 보여주고 있다. 업데이트 정책은 레이지(lazy)(예컨대, 단지 콘텐츠를 유효하지 않은 것으로서 마킹함), 뉴트럴(예컨대, 메모리 데이터 스토리지로부터 콘텐츠를 제거함), 또는 딜리전트(diligent)(예컨대, 무효화된 회신 세트의 콘텐츠를 선조치적으로 리프레시)를 포함할 수 있다. 예시된 바와 같이, 시스템 관리자에 대해 이용 가능한 동작은 키잉된 엔트리의 콘텐츠를 보는 것, 키잉된 엔트리의 콘텐츠를 유효하지 않은 것으로서 마킹하는 것, 및 키잉된 엔트리의 콘텐츠를 인-메모리 데이터 스토리지로부터 제거하는 것을 포함할 수 있다.
도 4c는 몇몇 실시예에 따라 고속 질의 랩퍼를 실행하는 프론트-엔드 어플리케이션 내에 백-엔트 고속 질의 서비스 엔진을 통합하기 위한 시스템 관리자를 위한 일례의 사용자 인터페이스를 도시하고 있다. 예시된 바와 같이, 사용자 인터페이스는 기기 그룹(machine group)이 특정한 인터넷 프로토콜(IP) 어드레스로부터 고속 질의 서비스 요청을 받아들이도록 할 수 있다. 고속 질의 서비스는 판독 액세스 및 기입 액세스 둘 모두를 포함할 수 있다. 더욱이, 어플리케이션의 씬 레이어(thin layer)와 같은 고속 질의 랩퍼는 고속 탐색 서버와 같은 고속 질의 서비스 엔진을 연결하기 위한 클라이언트로서 기능할 수 있다.
본 명세서에서 설명되는 기술 요지 및 기능 동작의 실시예는 디지털 전자 회로, 탠저블하게 구현되는(tangibly-implemented) 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서에 개시된 구조 및 이들의 구조적 등가물을 포함한 컴퓨터 하드웨어, 또는 이들 중의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 기술 요지의 실시예는 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의한 또는 데이터 처리 장치의 동작을 제어하기 위한 실행을 위해 탠저블 비일시적 프로그램 캐리어(tangible non-transitory program carrier) 상의 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 저장 매체는 기기 판독 가능 저장 장치, 기기 판독 가능 저장 기판, 랜덤한 또는 직렬 액세스 메모리 디바이스, 또는 이들 중의 하나 이상의 조합이어도 된다.
"데이터 처리 장치"라는 표현은 데이터 처리 하드웨어를 지칭하며, 일례로서 프로그래머블 프로세서, 컴퓨터, 또는 복수 프로세서 또는 컴퓨터를 포함한 데이터 처리를 위한 모든 유형의 장치, 디바이스 및 기기를 포괄한다. 데이터 처리 장치는 또한 예컨대 중앙 처리 장치(CPU), FPGA(필드 프로그래머블 게이트 어레이), 또는 ASIC(주문형 반도체)와 같은 특수한 용도의 논리 회로이어도 되거나 또는 이들을 포함할 수 있다. 몇몇 실시예에서, 데이터 처리 장치 및/또는 특수 용도의 논리 회로는 하드웨어 기반 및/또는 소프트웨어 기반으로 될 수도 있다. 데이터 처리 장치는 필요한 경우 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예컨대 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중의 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 본 발명은 종래의 운영 체제, 예컨대 Linux, Unix, Windows, Mac OS, Android, iOS 또는 기타 적합한 종래의 운영 체제와 함께 또는 이들 없이 데이터 처리 장치를 이용하는 것을 고려하고 있다.
프로그램, 소프트웨어, 소프트웨어 어플리케이션, 모듈, 소프트웨어 모듈, 스크립트 또는 코드로서 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일형 언어(compiled language) 또는 해석형 언어(interpreted language) 또는 선언형 언어(procedural language) 또는 절차형 언어(procedural language)를 포함한 어떠한 형태의 프로그래밍 언어로도 작성될 수 있으며, 스탠드 얼론 프로그램(stand-alone program) 또는 컴퓨팅 환경에 사용하기에 적합한 모듈, 콤포넌트, 서브루틴 또는 기타 유닛을 포함한 어떠한 형태로도 사용될 수 있다. 컴퓨터 프로그램은 파일 시스템에서의 파일에 대응할 수 있지만, 반드시 그러할 필요는 없다. 프로그램은 예컨대 마크업 랭귀지 도큐먼트, 대상으로 하는 프로그램 전용의 싱글 파일, 또는 예컨대 하나 이상의 모듈, 서브 프로그램 또는 코드의 일부분을 저장하는 파일과 같은 복수의 통합 파일(coordinated file)에 저장된 하나 이상의 스크립트와 같은 기타 프로그램 또는 데이터를 유지하는 파일의 일부분에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 장소에 위치되거나 복수의 장소에 걸쳐 분포되어 통신 네트워크에 의해 상호 접속되는 복수의 컴퓨터 상에서 실행되도록 이용될 수 있다. 여러 도면에 예시된 프로그램의 일부분이 다양한 오브젝트, 메쏘드 또는 기타 프로세스를 통해 다양한 특징 및 기능을 구현하는 개별 모듈로서 도시되어 있지만, 프로그램은 그 대신에 필요에 따라 다수의 서브 모듈, 제3자 서비스, 콤포넌트, 라이브러리 등을 포함할 수 있다. 반대로, 다양한 콤포넌트의 특징 및 기능이 필요에 따라 하나의 콤포넌트로 합쳐질 수도 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 동작하고 출력을 발생함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래머블 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 예컨대 중앙 처리 장치(CPU), FPGA(필드 프로그래머블 어레이) 또는 ASIC(주문형 반도체)과 같은 특수 용도의 논리 회로에 의해 수행될 수 있으며, 장치는 또한 이러한 특수 용도의 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 일례로서 범용 마이크로프로세서, 특수 용도의 마이크로프로세서, 또는 범용 마이크로프로세서와 특수 용도의 마이크로프로세서 둘 모두, 또는 임의의 기타 종류의 중앙 처리 장치를 기반으로 할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 판독 전용 메모리와 랜덤 액세스 메모리 둘 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 필수적인 요소는 명령을 수행하거나 실행하기 위해 중앙 처리 장치, 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 예컨대 자기 디스크, 자기 광 디스크(magneto-optical disks), 또는 광 디스크와 같은 데이터를 저장하기 위한 하나 이상의 대량 저장 디바이스를 포함하거나, 또는 이러한 대량 저장 디바이스로부터 데이터를 수신하거나 데이터를 이러한 대량 저장 디바이스에 전송하거나 또는 이러한 대량 저장 디바이스로부터 데이터를 수신하고 이러한 대량 저장 디바이스에 데이터를 전송하도록 작동식으로 연결될 것이다. 그러나, 컴퓨터는 이러한 디바이스를 가질 필요는 없다. 더욱이, 컴퓨터는 예컨대 이동 전화, 개인 디지털 보조 장치(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 위치 확인 시스템(GPS) 수신기, 또는 예컨대 유니버셜 시리얼 버스(USB) 플래시 드라이브 등과 같은 또 다른 디바이스에 임베드될 수 있다.
컴퓨터 프로그램 명령 및 데이터를 저장하는데 적합한 컴퓨터 판독 가능 매체(필요에 따라 일시적 또는 비일시적인)는 일례로서 예컨대 EPROM, EEPROM 및 플래시 메모리 디스크와 같은 반도체 메모리 디바이스, 예컨대 내장 하드 디스크 또는 이동 가능 디스크와 같은 자기 디스크, 광 자기 디스크, 및 CD-ROM 및 DVD-ROM 디스크를 포함한 모든 형태의 비휘발성 메모리, 매체, 및 메모리 디바이스를 포함한다. 메모리는 캐시, 클래스, 프레임워크, 어플리케이션, 백업 데이터, 잡(job), 웹 페이지, 웹 페이지 템플릿, 데이터베이스 테이블, 비지니스 및/또는 동적 정보를 저장하는 레포지터리, 및 임의 파라미터, 변수, 알고리즘, 명령, 규칙, 제약 또는 이들에 대한 레퍼런스를 포함한 임의의 다른 적합한 정보를 포함한 다양한 오브젝트 또는 데이터를 저장할 수 있다. 이에 부가하여, 메모리는 로그, 정책, 보안 또는 액세스 데이터, 리포팅 파일 등과 같은 임의의 다른 적합한 데이터를 포함할 수 있다. 프로세서 및 메모리는 특수 용도의 논리 회로에 의해 보완되거나 또는 이러한 특수 용도의 논리 회로에 통합될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 기술 요지의 실시예는 사용자에게 정보를 디스플레이하기 위한 CRT(음극선관), LCD(액정 디스플레이), 또는 플라즈마 모니터와 같은 디스플레이 장치와, 사용자가 컴퓨터에게 입력을 제공할 수 있는 예컨대 키보드 및 마우스 또는 트랙볼과 같은 포인팅 장치를 갖는 컴퓨터 상에서 구현될 수 있다. 마찬가지로 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스가 이용될 수 있으며, 예컨대 사용자에게 제공된 피드백은 예컨대, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백과 같은 어떠한 형태의 감각적 피드백도 가능하며, 사용자로부터의 입력은 음향, 스피치 또는 촉각 입력을 포함한 어떠한 형태로도 수신될 수 있다. 이에 부가하여, 컴퓨터는 예컨대 웹브라우저로부터 수신된 요청에 응답하여 사용자의 클라이언트 디바이스 상의 웹브라우저에 웹페이지를 보냄으로써와 같이 사용자에 의해 이용되는 디바이스에 문서를 보내고 이러한 디바이스로부터 문서를 수신함으로써 사용자와 상호작용할 수 있다.
"그래픽 사용자 인터페이스" 또는 GUI라는 표현은 하나 이상의 그래픽 사용자 인터페이스 및 특정한 그래픽 사용자 인터페이스의 각각의 디스플레이를 설명하기 위해 단수 형태로 또는 복수 형태로 이용될 수도 있다. 따라서, GUI는 이러한 것으로 한정되지는 않지만 웹 브라우저, 터치 스크린, 또는 정보를 처리하고 그 정보 결과를 사용자에게 효율적으로 제공하는 코맨드 라인 인터페이스(CLI)을 포함한 어떠한 그래픽 사용자 인터페이스를 나타낼 수도 있다. 일반적으로, GUI는 대화식 필드, 풀-다운 리스트, 및 비지니스 스윗 사용자(business suite user)에 의해 작동 가능한 버튼과 같은, 일부 또는 전부가 웹 브라우저에 연관되는, 복수의 사용자 인터페이스(UI) 요소를 포함할 수 있다.
본 명세서에 설명되는 기술 요지의 실시예는, 예컨대 데이터 서버와 같은 백-엔드 콤포넌트를 포함하거나, 에컨대 어플리케이션 서버와 같은 미들웨어 콤포넌트를 포함하거나, 또는 사용자가 본 명세서에 설명된 기술 요지의 실시예와 상호작용할 수 있게 하는 그래픽 사용자 인터페이스 또는 웹브라우저를 갖는 클라이언트 컴퓨터와 같은 프론트-엔드 콤포넌트를 포함하거나, 또는 이러한 백-엔드 콤포넌트, 미들웨어 콤포넌트, 또는 프론트-엔드 콤포넌트의 하나 이상의 것의 임의의 조합을 포함하는 컴퓨터 시스템에서 구현될 수 있다. 시스템의 콤포넌트는 예컨대 통신 네트워크와 같은 어떠한 형태 또는 어떠한 매체의 디지털 데이터 통신에 의해서도 상호접속될 수 있다. 통신 네트워크의 일례는 근거리 통신망(LAN), 예컨대 인트라넷과 같은 광역 통신망(WAN), 및 무선 근거리 통신망(WLAN)을 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 떨어져 있으며, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각자의 컴퓨터 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램을 통해 발생한다.
본 명세서가 다수의 구체적인 실시예의 세부 구성을 포함하고 있지만, 이들은 본 발명의 범위 또는 청구하고자 하는 범위를 한정하기 위한 것이 아니라 본 발명의 특정 실시예에 대해 특정될 수 있는 특징에 대한 설명으로서 이해되어야 한다. 별도의 실시예에 대한 부분에서 본 명세서에 설명되는 어떠한 특징은 또한 하나의 실시예에서 조합으로 구현될 수도 있다. 반대로, 하나의 실시예에 대한 부분에서 설명되는 여러 특징들은 분리되어 또는 임의의 적합한 부분 조합으로 복수의 실시예에서 구현될 수도 있다. 더욱이, 특징부가 특정한 조합으로 작동하고 이와 같은 것이 우선적으로 청구되는 것으로서 위에서 설명되었을 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은 몇몇 경우에는 그 조합으로부터 분리될 수 있으며, 청구된 조합은 부분 조합 또는 부분 조합의 변형예로 될 수도 있다.
유사하게, 도면에는 동작이 특정한 순서로 도시되어 있지만, 이것은 바람직한 결과를 달성하기 위해 이러한 동작이 도시된 특정한 순서로 또는 순차적인 순서로 수행되도록 요구하거나 또는 예시된 동작 모두가 수행되도록 요구하는 것으로서 이해되지 않아야 한다. 어떠한 환경에서, 멀티태스킹 및 병렬 처리가 유용할 수도 있다. 더욱이, 위에서 설명한 실시예에서의 다양한 시스템 모듈과 콤포넌트의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로서 이해되지 않아야 하며, 설명된 프로그램 콤포넌트 및 시스템은 일반적으로 하나의 소프트웨어 제품에 함께 통합되거나 또는 복수의 소프트웨어 제품에 패키징될 수 있는 것으로 이해되어야 한다.
본 발명의 기술 요지의 특정한 실시예를 설명하였다. 설명된 실시예의 다른 구현, 변경 및 치환 또한 당업자에게는 명백한 바와 같이 이하의 청구항들의 범위 내에 있는 것이다. 예컨대, 청구항에서 언급되는 동작은 상이한 순서로 수행되고, 여전히 원하는 결과를 달성할 수 있다.
따라서, 일례의 실시예에 대한 위의 설명은 본 발명의 개시 내용을 규정하거나 제한하지 않는다. 본 발명의 개시 내용의 사상 및 범위 내에서 벗어나지 않고서도 다른 변경, 대체 및 수정이 가능하다.

Claims (20)

  1. 데이터 액세스 요청을 처리하는 방법으로서,
    관계형 데이터베이스 관리 시스템(DBMS)을 실행하는 주 데이터 서버(primary data server)에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 시멘틱 요청을 수신하는 단계;
    수신된 요청을 논리 질의 세그먼트(logic query segment)로 분해하는 단계 - 각각의 논리 질의 세그먼트는 상기 논리 질의 세그먼트에 기초하여 만들어진 DBMS 질의에 기초하여 상기 주 데이터 서버로부터 검색 가능한 대응하는 회신 세트를 가짐 -;
    상기 주 데이터 서버에 DBMS 질의 제출이 제거되도록 분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되고 준비되어 있는지를 판정하는 단계 - 상기 고속 질의 서비스 엔진은 상기 주 데이터 서버와 상이하고 분리되어 있음 -;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되지 않는다는 판정에 응답하여, 분해된 특정 논리 질의 세그먼트에 기초하여 DBMS 질의를 만들고 상기 주 데이터 서버로부터 상기 특정 논리 질의 세그먼트의 회신 세트를 페치하는(fetch) 단계;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되나 무효하다는 판정에 응답하여, 분해된 특정 논리 질의 세그먼트에 기초하여 DBMS 질의를 만들고 상기 주 데이터 서버와 인-메모리 데이터 스토리지의 상의 데이터의 카피들을 동기화함으로써 상기 회신 세트의 콘텐츠를 업데이트하는 단계;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되고 준비되어 있다는 판정에 응답하여, 상기 논리 질의 세그먼트를 상기 고속 질의 서비스 엔진으로 향하게 하고 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지로부터 상기 분해된 특정 논리 질의 세그먼트의 회신 세트를 검색하는 단계;
    상기 주 데이터 서버로부터 수신된 회신 세트 및 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지로부터 수신된 회신 세트로부터 질의 결과를 구성하는 단계; 및
    구성된 질의 결과를 상기 시멘틱 요청을 제출한 사용자에게 제공하는 단계
    를 포함하는, 데이터 액세스 요청을 처리하는 방법.
  2. 제1항에 있어서,
    상기 수신된 요청을 분해하는 단계는, 상기 수신된 요청을 하나 이상의 논리곱(conjunctive)에 의해 내포된(nested) 논리 질의 세그먼트로 분해하는 단계를 포함하는, 데이터 액세스 요청을 처리하는 방법.
  3. 제1항에 있어서,
    상기 수신된 요청을 분해하는 단계는, 상기 수신된 요청을 하나 이상의 논리합(disjunctive)에 의해 내포된 논리 질의 세그먼트로 분해하는 단계를 포함하는, 데이터 액세스 요청을 처리하는 방법.
  4. 제1항에 있어서,
    상기 수신된 요청을 분해하는 단계는, 상기 수신된 요청을 하나 이상의 부정(negation)에 의해 내포된 논리 질의 세그먼트로 분해하는 단계를 포함하는, 데이터 액세스 요청을 처리하는 방법.
  5. 제1항에 있어서,
    상기 요청이 상기 주 데이터 서버 상의 데이터를 수정하는지를 판정하는 단계를 더 포함하는, 데이터 액세스 요청을 처리하는 방법.
  6. 제5항에 있어서,
    상기 요청이 상기 주 데이터 서버 상의 데이터를 수정한다는 판정에 응답하여, 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는, 수정된 데이터를 참조하는 회신 세트의 콘텐츠가 무효화 되었다는 것을 상기 고속 질의 서비스 엔진에 통보하는 단계를 더 포함하는, 데이터 액세스 요청을 처리하는 방법.
  7. 제1항에 있어서,
    사용자에 의해 제출된 후속 요청을 수신하는 단계;
    상기 후속 요청이 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 캐싱된 회신 세트에 의해 참조된 데이터를 수정한다고 판정하는 단계; 및
    상기 인-메모리 데이터 스토리지에 캐싱된 회신 세트가 무효화 되도록 상기 고속 질의 서비스 엔진에 무효성 통지를 발행하는 단계를 더 포함하는, 데이터 액세스 요청을 처리하는 방법.
  8. 하나 이상의 프로세서를 포함하는 컴퓨터 시스템으로서, 상기 하나 이상의 프로세서가,
    관계형 데이터베이스 관리 시스템(DBMS)을 실행하는 주 데이터 서버에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 시멘틱 요청을 수신하는 동작;
    수신된 요청을 논리 질의 세그먼트로 분해하는 동작 - 각각의 논리 질의 세그먼트는 상기 논리 질의 세그먼트에 기초하여 만들어진 DBMS 질의에 기초하여 상기 주 데이터 서버로부터 검색 가능한 대응하는 회신 세트를 가짐 -;
    상기 주 데이터 서버에 DBMS 질의 제출이 제거되도록 분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되고 준비되어 있는지를 판정하는 동작 - 상기 고속 질의 서비스 엔진은 상기 주 데이터 서버와 상이하고 분리되어 있음 -;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되지 않는다는 판정에 응답하여, 분해된 특정 논리 질의 세그먼트에 기초하여 DBMS 질의를 만들고 상기 주 데이터 서버로부터 상기 특정 논리 질의 세그먼트의 회신 세트를 페치하는 동작;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되나 무효하다는 판정에 응답하여, 분해된 특정 논리 질의 세그먼트에 기초하여 DBMS 질의를 만들고 상기 주 데이터 서버와 인-메모리 데이터 스토리지의 상의 데이터의 카피들을 동기화함으로써 상기 회신 세트의 콘텐츠를 업데이트하는 동작;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되고 준비되어 있다는 판정에 응답하여, 상기 논리 질의 세그먼트를 상기 고속 질의 서비스 엔진으로 향하게 하고 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지로부터 상기 분해된 특정 논리 질의 세그먼트의 회신 세트를 검색하는 동작;
    상기 주 데이터 서버로부터 수신된 회신 세트 및 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지로부터 수신된 회신 세트로부터 질의 결과를 구성하는 동작; 및
    구성된 질의 결과를 상기 시멘틱 요청을 제출한 사용자에게 제공하는 동작
    을 포함하는 동작을 수행하도록 구성되는, 컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 논리곱에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함하는, 컴퓨터 시스템.
  10. 제8항에 있어서,
    상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 논리합에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함하는, 컴퓨터 시스템.
  11. 제8항에 있어서,
    상기 수신된 요청을 분해하는 동작은, 상기 수신된 요청을 하나 이상의 부정에 의해 내포된 논리 질의 세그먼트로 분해하는 동작을 포함하는, 컴퓨터 시스템.
  12. 제8항에 있어서,
    상기 하나 이상의 프로세서에 의해 수행되는 동작은, 상기 요청이 상기 주 데이터 서버 상의 데이터를 수정하는지를 판정하는 동작을 더 포함하는, 컴퓨터 시스템.
  13. 제12항에 있어서,
    상기 하나 이상의 프로세서에 의해 수행되는 동작은,
    상기 요청이 상기 주 데이터 서버 상의 데이터를 수정한다는 판정에 응답하여, 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는, 수정된 데이터를 참조하는 회신 세트의 콘텐츠가 무효하게 되었다는 것을 상기 고속 질의 서비스 엔진에 통보하는 동작을 더 포함하는, 컴퓨터 시스템.
  14. 제8항에 있어서,
    상기 하나 이상의 프로세서에 의해 수행되는 동작은,
    사용자에 의해 제출된 후속 요청을 수신하는 동작;
    상기 후속 요청이 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 캐싱된 회신 세트에 의해 참조된 데이터를 수정한다고 판정하는 동작; 및
    상기 인-메모리 데이터 스토리지에 캐싱된 회신 세트가 무효화 되도록 상기 고속 질의 서비스 엔진에 무효성 통지를 발행하는 동작를 더 포함하는, 컴퓨터 시스템.
  15. 소프트웨어 명령을 포함하고 있는 비일시적 컴퓨터 판독 가능 매체로서, 상기 소프트웨어 명령은 컴퓨터에 의해 실행될 시에 상기 컴퓨터로 하여금,
    관계형 데이터베이스 관리 시스템(DBMS)을 실행하는 주 데이터 서버에 저장된 데이터 엔트리를 액세스하기 위해 사용자에 의해 제출된 시멘틱 요청을 수신하는 동작;
    수신된 요청을 논리 질의 세그먼트로 분해하는 동작 - 각각의 논리 질의 세그먼트는 상기 논리 질의 세그먼트에 기초하여 만들어진 DBMS 질의에 기초하여 상기 주 데이터 서버로부터 검색 가능한 대응하는 회신 세트를 가짐 -;
    상기 주 데이터 서버에 DBMS 질의 제출이 제거되도록 분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되고 준비되어 있는지를 판정하는 동작 - 상기 고속 질의 서비스 엔진은 상기 주 데이터 서버와 상이하고 분리되어 있음 -;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되지 않는다는 판정에 응답하여, 분해된 특정 논리 질의 세그먼트에 기초하여 DBMS 질의를 만들고 상기 주 데이터 서버로부터 상기 특정 논리 질의 세그먼트의 회신 세트를 페치하는 동작;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되나 무효하다는 판정에 응답하여, 분해된 특정 논리 질의 세그먼트에 기초하여 DBMS 질의를 만들고 상기 주 데이터 서버와 인-메모리 데이터 스토리지의 상의 데이터의 카피들을 동기화함으로써 상기 회신 세트의 콘텐츠를 업데이트하는 동작;
    분해된 특정 논리 질의 세그먼트의 대응하는 회신 세트가 고속 질의 서비스 엔진에서의 인-메모리 데이터 스토리지에 저장되고 준비되어 있다는 판정에 응답하여, 상기 논리 질의 세그먼트를 상기 고속 질의 서비스 엔진으로 향하게 하고 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지로부터 상기 분해된 특정 논리 질의 세그먼트의 회신 세트를 검색하는 동작;
    상기 주 데이터 서버로부터 수신된 회신 세트 및 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지로부터 수신된 회신 세트로부터 질의 결과를 구성하는 동작; 및
    구성된 질의 결과를 상기 시멘틱 요청을 제출한 사용자에게 제공하는 동작
    을 포함하는 동작을 수행하게 하도록 구성되는, 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서,
    상기 소프트웨어 명령이 컴퓨터로 하여금 수행되게 하는 동작은,
    상기 요청이 상기 고속 질의 서비스 엔진에 의해 지원되지 않는다는 판정에 응답하여, 상기 요청을 상기 주 데이터 서버로 향하게 하는 동작; 및
    상기 요청이 상기 주 데이터 서버 상의 데이터를 수정하는지를 판정하는 동작
    을 더 포함하는, 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서,
    상기 소프트웨어 명령이 컴퓨터로 하여금 수행되게 하는 동작은,
    상기 요청이 상기 주 데이터 서버 상의 데이터를 수정한다는 판정에 응답하여, 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 유지되어 있는, 수정된 데이터를 참조하는 회신 세트의 콘텐츠가 무효하게 되었다는 것을 상기 고속 질의 서비스 엔진에 통보하는 동작을 더 포함하는, 컴퓨터 판독 가능 매체.
  18. 제15항에 있어서,
    상기 소프트웨어 명령이 컴퓨터로 하여금 수행되게 하는 동작은,
    사용자에 의해 제출된 후속 요청을 수신하는 동작;
    상기 후속 요청이 상기 고속 질의 서비스 엔진에서의 상기 인-메모리 데이터 스토리지에 캐싱된 회신 세트에 의해 참조된 데이터를 수정한다고 판정하는 동작; 및
    상기 인-메모리 데이터 스토리지에 캐싱된 회신 세트가 무효화 되도록 상기 고속 질의 서비스 엔진에 무효성 통지를 발행하는 동작를 더 포함하는, 컴퓨터 판독 가능 매체.
  19. 삭제
  20. 삭제
KR1020140124537A 2013-09-18 2014-09-18 고속 질의 응답을 위한 시스템 및 방법 KR102229011B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361879476P 2013-09-18 2013-09-18
US61/879,476 2013-09-18
US14/057,712 2013-10-18
US14/057,712 US9870415B2 (en) 2013-09-18 2013-10-18 System and method for fast query response

Publications (2)

Publication Number Publication Date
KR20150032508A KR20150032508A (ko) 2015-03-26
KR102229011B1 true KR102229011B1 (ko) 2021-03-17

Family

ID=51539215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140124537A KR102229011B1 (ko) 2013-09-18 2014-09-18 고속 질의 응답을 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US9870415B2 (ko)
EP (1) EP2851814A1 (ko)
JP (1) JP6522911B2 (ko)
KR (1) KR102229011B1 (ko)
CN (1) CN104598508B (ko)
BR (1) BR102014023214A2 (ko)
IN (1) IN2014DE02630A (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9870203B2 (en) 2013-12-05 2018-01-16 Sap Se Consumption layer for business entities
US20150363473A1 (en) * 2014-06-17 2015-12-17 Microsoft Corporation Direct answer triggering in search
US10180989B2 (en) * 2015-07-24 2019-01-15 International Business Machines Corporation Generating and executing query language statements from natural language
US10332511B2 (en) 2015-07-24 2019-06-25 International Business Machines Corporation Processing speech to text queries by optimizing conversion of speech queries to text
US9811327B2 (en) 2015-12-21 2017-11-07 Quixey, Inc. Dependency-aware transformation of multi-function applications for on-demand execution
US9952848B2 (en) * 2015-12-21 2018-04-24 Samsung Electronics Co., Ltd. Dependency-aware transformation of multi-function applications for on-demand execution
US10162729B1 (en) * 2016-02-01 2018-12-25 State Farm Mutual Automobile Insurance Company Automatic review of SQL statement complexity
CN107122354B (zh) * 2016-02-24 2020-05-08 华为技术有限公司 事务执行方法、装置及系统
AU2017276777B2 (en) * 2016-06-10 2022-06-09 Schneider Electric Industries Sas Method and system for providing proxy service in an industrial system
WO2018112023A1 (en) * 2016-12-14 2018-06-21 Jpmorgan Chase Bank, N.A. Systems and methods for aggregating, filtering, and presenting streaming data
CN108255848B (zh) * 2016-12-29 2022-06-24 阿里巴巴集团控股有限公司 实现条件更新的方法、设备及系统
CN109388655A (zh) * 2017-08-07 2019-02-26 北京京东尚科信息技术有限公司 一种动态控制数据访问的方法和装置
US10565981B2 (en) * 2017-09-26 2020-02-18 Microsoft Technology Licensing, Llc Computer-assisted conversation using addressible conversation segments
CN110058926B (zh) * 2018-01-18 2023-03-14 伊姆西Ip控股有限责任公司 用于处理gpu任务的方法、设备和计算机可读介质
US11023293B2 (en) 2018-03-07 2021-06-01 Open Text Sa Ulc Flexible and scalable artificial intelligence and analytics platform with flexible content storage and retrieval
CN113168410B (zh) * 2019-02-14 2024-06-11 华为技术有限公司 增强对关系型数据库的查询处理的系统和方法
US11604928B2 (en) 2020-04-30 2023-03-14 International Business Machines Corporation Efficiently managing predictive changes for a conversational agent
CN112685446B (zh) * 2020-12-31 2023-07-25 上海梦鱼信息科技有限公司 通过Elasticsearch数据库的复杂SQL查询方法、装置、处理器及存储介质
CN113722362B (zh) * 2021-07-27 2023-08-11 苏州浪潮智能科技有限公司 一种基于远端的缓存数据查询方法、装置及系统
CN113596177B (zh) * 2021-08-13 2023-06-27 四川虹美智能科技有限公司 智能家居设备的ip地址的解析方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484161B1 (en) 1999-03-31 2002-11-19 Verizon Laboratories Inc. Method and system for performing online data queries in a distributed computer system
US20080040317A1 (en) * 2006-08-09 2008-02-14 Dettinger Richard D Decomposed query conditions
JP2008287660A (ja) 2007-05-21 2008-11-27 Hitachi Ltd キャッシュサーバ、キャッシュ管理方法、およびキャッシュ管理プログラム
US20090319486A1 (en) * 2008-06-23 2009-12-24 Kickfire, Inc. Methods and systems for real-time continuous updates
JP2010218131A (ja) 2009-03-16 2010-09-30 Fujitsu Ltd 検索方法、検索プログラム及び検索装置
US20130159283A1 (en) 2011-12-14 2013-06-20 International Business Machines Corporation Intermediate result set caching for a database system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134530A (en) * 1998-04-17 2000-10-17 Andersen Consulting Llp Rule based routing system and method for a virtual sales and service center
ATE381846T1 (de) * 1999-03-03 2008-01-15 Ultradns Inc Skalierbare und effiziente domainnamenauflösung
JP4202534B2 (ja) * 1999-06-25 2008-12-24 株式会社東芝 Webデータのキャッシュ更新方法およびキャッシュ更新システム
CA2743462C (en) * 1999-07-30 2012-10-16 Basantkumar John Oommen A method of generating attribute cardinality maps
JP4552242B2 (ja) * 1999-10-06 2010-09-29 株式会社日立製作所 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US7269581B2 (en) * 2003-03-28 2007-09-11 Microsoft Corporation Systems and methods for proactive caching utilizing OLAP variants
US20040236726A1 (en) 2003-05-19 2004-11-25 Teracruz, Inc. System and method for query result caching
US7685384B2 (en) * 2004-02-06 2010-03-23 Globalscape, Inc. System and method for replicating files in a computer network
CN1588879A (zh) * 2004-08-12 2005-03-02 复旦大学 一种互联网内容过滤系统及过滤方法
US7707367B1 (en) * 2007-06-28 2010-04-27 Emc Corporation Data storage system having separate atomic operation/non-atomic operation paths
US7885969B2 (en) * 2007-09-17 2011-02-08 International Business Machines Corporation System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer
CN101567882A (zh) * 2008-04-25 2009-10-28 北京易路联动技术有限公司 一种提供终端本地化网络服务的方法、装置及系统
US8229911B2 (en) * 2008-05-13 2012-07-24 Enpulz, Llc Network search engine utilizing client browser activity information
US20100010987A1 (en) * 2008-07-01 2010-01-14 Barry Smyth Searching system having a server which automatically generates search data sets for shared searching
CN101741889B (zh) * 2008-11-17 2012-07-11 北京易路联动技术有限公司 一种网络服务集中管理的方法、系统及服务器
US8204903B2 (en) * 2010-02-16 2012-06-19 Microsoft Corporation Expressing and executing semantic queries within a relational database
CN102375853A (zh) * 2010-08-24 2012-03-14 中国移动通信集团公司 分布式数据库系统、在其中建立索引的方法和查询方法
US9251211B2 (en) * 2010-10-01 2016-02-02 Telefonaktiebolaget L M Ericsson (Publ) Generation of a query plan for accessing a database
CN102937955A (zh) * 2011-11-29 2013-02-20 Ut斯达康通讯有限公司 一种基于MySQL双存储引擎的内存数据库实现方法
US9424202B2 (en) * 2012-11-19 2016-08-23 Smartfocus Holdings Limited Database search facility
CN103207919A (zh) * 2013-04-26 2013-07-17 北京亿赞普网络技术有限公司 一种MongoDB集群快速查询计算的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484161B1 (en) 1999-03-31 2002-11-19 Verizon Laboratories Inc. Method and system for performing online data queries in a distributed computer system
US20080040317A1 (en) * 2006-08-09 2008-02-14 Dettinger Richard D Decomposed query conditions
JP2008287660A (ja) 2007-05-21 2008-11-27 Hitachi Ltd キャッシュサーバ、キャッシュ管理方法、およびキャッシュ管理プログラム
US20090319486A1 (en) * 2008-06-23 2009-12-24 Kickfire, Inc. Methods and systems for real-time continuous updates
JP2010218131A (ja) 2009-03-16 2010-09-30 Fujitsu Ltd 検索方法、検索プログラム及び検索装置
US20130159283A1 (en) 2011-12-14 2013-06-20 International Business Machines Corporation Intermediate result set caching for a database system

Also Published As

Publication number Publication date
IN2014DE02630A (ko) 2015-06-26
US20150081658A1 (en) 2015-03-19
CN104598508A (zh) 2015-05-06
US9870415B2 (en) 2018-01-16
BR102014023214A2 (pt) 2015-09-08
EP2851814A1 (en) 2015-03-25
KR20150032508A (ko) 2015-03-26
JP6522911B2 (ja) 2019-05-29
JP2015072681A (ja) 2015-04-16
CN104598508B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
KR102229011B1 (ko) 고속 질의 응답을 위한 시스템 및 방법
KR102432304B1 (ko) 클라이언트 동기화에서의 위반 해결
US10754562B2 (en) Key value based block device
US10275489B1 (en) Binary encoding-based optimizations at datastore accelerators
KR20150013191A (ko) 클라우드-기반 파일 시스템 내에서의 파일 핸들링
US9519673B2 (en) Management of I/O and log size for columnar database
US9928178B1 (en) Memory-efficient management of computer network resources
US11811851B2 (en) Method and system for enforcing governance across multiple content repositories using a content broker
US11016937B2 (en) Updateable distributed file framework
US10769034B2 (en) Caching DML statement context during asynchronous database system replication
US11354366B2 (en) Method and system for creating and using persona in a content management system
US11775527B2 (en) Storing derived summaries on persistent memory of a storage device
US10810116B2 (en) In-memory database with page size adaptation during loading
US11151178B2 (en) Self-adapting resource aware phrase indexes
US10871945B2 (en) Resumable merge sort
US20170316045A1 (en) Read-after-write consistency for derived non-relational data
US11157371B2 (en) Small database page recovery
US10642660B2 (en) Database variable size entry container page reorganization handling based on use patterns
US20200174988A1 (en) Systems and methods for storing object state on hash chains
US20240126816A1 (en) Self-discovery and construction of type-sensitive columnar formats on type-agnostic storage servers to accelerate offloaded queries
EP4195071A1 (en) Transactional multi-version control enabled update of cached graph indices
WO2024086025A1 (en) Self-discovery and construction of type-sensitive columnar formats on type-agnostic storage servers to accelerate offloaded queries
Diaz et al. Working with NoSQL Alternatives

Legal Events

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