KR20160124743A - 클러스터링된 인-메모리 데이터베이스의 고안 및 구현 - Google Patents

클러스터링된 인-메모리 데이터베이스의 고안 및 구현 Download PDF

Info

Publication number
KR20160124743A
KR20160124743A KR1020167017517A KR20167017517A KR20160124743A KR 20160124743 A KR20160124743 A KR 20160124743A KR 1020167017517 A KR1020167017517 A KR 1020167017517A KR 20167017517 A KR20167017517 A KR 20167017517A KR 20160124743 A KR20160124743 A KR 20160124743A
Authority
KR
South Korea
Prior art keywords
search
node
records
collection
manager
Prior art date
Application number
KR1020167017517A
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 KR20160124743A publication Critical patent/KR20160124743A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/23Updating
    • G06F16/235Update request formulation
    • G06F17/30365
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • G06F17/30584

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

분산형 인-메모리 데이터베이스를 관리하는 인-메모리 데이터베이스 시스템 및 방법은 탐색 컨덕터와 연계된 구획자에 의해 구획된 콜렉션들의 데이터 베이스 구획들을 저장하고 분배하도록 구성된 모듈들을 가진 하나 이상의 노드들을 구비한다. 데이터베이스 콜렉션들은 스키마에 따라 구획된다. 구획, 콜렉션 및 레코드들은, 스키마에 따라 시스템 인터페이스에 의해 요청될 때 갱신되고 제거된다. 감독관은, 각 노드로부터 수신된 핫빗 신호에 기초하여 노드 상태를 판정한다. 사용자는 탐색 관리자에게 시스템 인터페이스를 통해 조회들을 전송할 수 있다. 탐색 관리자들은 필드 프로세싱 기술을 적용하고, 탐색 컨덕터들에게 탐색 조회를 보내고, 분석 에이전트에게 결과 레코드들의 세트를 리턴한다. 분석 에이전트는 탐색 관리자로부터의 후보 결과 레코드들에 대해 분석 프로세싱을 실행한다. 콜렉션과 연계된 구획자를 구비하는 탐색 컨덕터들은 구획내의 레코드들을 탐색 및 저장하고, 탐색 관리자로부터 탐색 조회를 수신한 후, 후보 결과 레코드들의 세트를 리턴한다.

Description

클러스터링된 인-메모리 데이터베이스의 고안 및 구현{DESIGN AND IMPLEMENTATION OF CLUSTERED IN-MEMORY DATABASE}
본 개시는 일반적으로 데이터베이스에 관한 것으로, 보다 구체적으로는 인-메모리 데이터베이스에 관한 것이다.
컴퓨터는 막대한 양의 정보를 저장하고 그 정보에 대한 액세스를 제공하는 데 이용하는 강력한 툴이며, 데이터베이스는 컴퓨터 시스템상에 정보를 저장하고, 사용자에게 용이한 액세스를 제공하는 공통 메카니즘이다. 전형적으로, 데이터베이스는 정보의 "필드(field)들"을 가진 "레코드(record)들"로서 저장되는 정보의 조직적 콜렉션(organized collection)이다(예를 들어, 식당 데이터베이스는 지역내의 각 식당에 대한 레코드를 가질 수 있으며, 각 레코드는 이름, 주소, 요리 유형 등과 같은 식당의 특성을 기술하는 필드들을 포함한다).
운영에 있어서, 데이터베이스 관리 시스템은 디스크(disk)와 같은 저장 디바이스로부터 데이터를 검색하거나 그 저장 디바이스에 데이터를 존속시킬 필요가 빈번하게 발생한다. 불행하게도, 그러한 저장 디바이스에 대한 액세스는 약간 느릴 수 있다. 데이터에 대한 액세스 속도를 높이기 위해, 데이터베이스는 전형적으로 최근에 이용된 데이터 객체를 저장하도록 할당된 상대적으로 고속인 메모리(예를 들어 RAM(random acess memory))의 섹션인 "버퍼 캐시(buffer cache)" 또는 "캐시를 채용한다. 메모리는 전형적으로 반도체 또는 다른 전기적 저장 매체상에 제공되고, 메모리내에 유지된 데이터가 디스크상에 저장된 데이터보다 신속하게 액세스될 수 있게 하는 고속 데이터 버스를 통해 CPU(central processing unit)에 결합된다.
이러한 문제를 해결하고자 할 때 취할 수 있는 한가지 방식은 메모리내의 데이터베이스에 모든 정보를 저장하는 것이지만, 컴퓨터 시스템상에 제공되는 메모리가 제한된 크기를 가지기 때문에, 대형 데이터베이스를 다루고자 할 때 직면해야 하는 많은 장애가 있다.
그렇기 때문에, 대량의 데이터를 고속으로 저장하고 검색하는 개선된 방법이 계속적으로 필요하다.
본 명세서에는, 인-메모리 데이터베이스를 호스팅하는 시스템 아키텍처가 개시되는데, 그 시스템 아키텍처는 시스템의 분산형 컴퓨팅 아키텍처 내에 호스팅되는 인-메모리 데이터베이스의 데이터 레코드들을 저장하고, 조작하고, 검색하는 소프트웨어 모듈 및 컴퓨팅 디바이스의 임의 적절한 조합을 포함할 수 있다. 시스템의 하드웨어를 컴퓨팅하여 실행되는 소프트웨어 모듈은 시스템 인터페이스, 탐색 관리자, 분석 에이전트(analytics agent), 탐색 컨덕터(search conductor), 구획자(partitioner), 데이터의 콜렉션, 감독관(supervisor), 종속 관리자(dependency manager)를 포함할 수 있으며, 이들 소프트웨어 모듈들의 임의 적절한 조합은 인-메모리 데이터베이스를 호스팅하는 시스템 아키텍처에서 발견될 수 있다.
소프트웨어 모듈을 실행하는 노드들은 인-메모리 저장, 조회(queries) 및 검색이 대형 데이터 세트에 적합하게 되도록 레코드내에 저장된 데이터를 압축할 수 있다. 압축 및 압축 해제는 데이터베이스의 거의 임의 레벨(예를 들어, 데이터베이스 레벨, 콜렉션 레벨, 레코드 레벨, 필드 레벨)로 실행될 수 있다. 소프트웨어 모듈을 실행하는 노드는 분산형 인-메모리 데이터베이스에 JSON(JavaScript Object Notation)과 같은 복잡한 데이터 구조를 저장하기 위한 지원을 제공할 수 있다. 인-메모리 데이터베이스 시스템의 실시 예는 패컬티 서비스(faulty service)를 모니터링하고 복원할 수 있는 시스템의 여러 하드웨어 및 소프트웨어 모듈과 시스템 구성 요소들의 분산형 아키텍처로 인해 장애 허용(fault-tolerant)된다. 장애 허용은 다른 기술들 중에서도, 시스템 구성 요소들에 대한 자동 복구 절차 및 시스템 구성 요소 용장성(redundancy)을 포함할 수 있다. 인-메모리 데이터베이스는 스코어링 방법(scoring method)을 이용하여 데이터를 스코어링함에 의해 데이터를 효과적 및 효율적으로 조회할 수 있다. 탐색 결과는 데이터를 스코어링하는데 이용된 스코어링 방법에 따라 랭크(rank)될 수 있으며, 그에 의해 조회를 실행하는 노드 및/또는 사용자는 조회들간에 문맥상 관련되고 보다 맞춤화된 방식으로 데이터를 이용할 수 있게 된다. 분석 에이전트를 실행하는 노드들은 데이터의 인-메모리 데이터베이스 이미지(image)에 저장된 레코드들에 대한 여러 개선된 분석을 실행할 수 있다. 여러 경우에 있어서, 탐색 컨덕터에 의해 탐색 조회 결과 세트로 검색된 레코드들에 대해 분석이 실행될 수 있다.
일 실시 예에 있어서, 인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템은, 데이터베이스의 하나 이상의 콜렉션을 수신하는 것에 응답하여, 콜렉션과 연계된 기계 독출 가능 스키마 파일(schema file)에 기초하여 콜렉션을 압축할지를 판정하고, 스키마 파일에 따라 콜렉션을 하나 이상의 구획(partition)들로 논리적으로 구획하고, 스키마 파일에 따라 하나 이상의 저장 노드에 하나 이상의 구획들을 분배하도록 구성된 프로세서를 구비하는 구획자 노드와; 저장 노드와 연계된 구획자로부터 수신된 구획을 저장하는 비-일시적 기계-독출 가능 주 메모리(non-transitory machine-readable main memory)를 구비하는 저장 노드와; 시스템의 클라이언트 디바이스(client device)로부터 탐색 조회를 수신하고 클라이언트 디바이스로부터의 탐색 조회의 수신에 응답하여, 하나 이상의 탐색 컨덕터에 탐색 컨덕터 조회로서 탐색 조회들을 전송하는 프로세서를 구비하는 탐색 관리자 노드(탐색 조회는 탐색 조회를 충족시키는 하나 이상의 레코드들과 연계된 파라메타들을 포함하는 기계-독출 가능 컴퓨터 파일임)와; 하나 이상의 구획자들과 연계되고, 탐색 관리자 노드로부터 탐색 컨덕터 조회를 수신하는 것에 응답하여, 탐색 컨덕터 조회에 의해 표시된 하나 이상의 구획들의 세트를 조회하고, 조회된 구획들의 세트에 저장된 하나 이상의 후보 레코드들을 식별하고, 스코어링 알고리즘을 이용하여 각각의 후보 레코드에 대한 제 1 스코어를 계산하고, 임계값을 충족시키는 하나 이상의 후보 레코드들을 포함하는 하나 이상의 조회 결과들의 세트를 탐색 관리자에게 전송하도록 구성된 프로세서를 구비하는 탐색 컨덕터 노드와; 탐색 관리자 노드로부터 수신한 조회 결과 세트에서 둘 이상의 레코드들을 상관시키는 데이터 링크(data linkage)를 식별하는 것에 응답하여, 조회 결과 세트에 대한 하나 이상의 데이터 링크들의 세트를 포함하는 기계-독출 가능 컴퓨터 파일을 자동을 생성하도록 구성된 프로세서를 구비하는 분석 에이전트 노드(데이터 링크는 제 2 레코드에 포함된 데이터와 연계된 제 1 레코드에 포함된 데이터를 상관시킴)를 구비한다.
다른 실시 예에 있어서, 컴퓨터 구현 방법은, 인-메모리 데이터베이스를 호스팅하는 시스템의 탐색 관리자 컴퓨터가, 데이터베이스를 조회하는 파라메타들을 포함하는 탐색 조회를 나타내는 이진 데이터를 수신하고(시스템은 데이터베이스의 하나 이상의 콜렉션들을 저장하는 주 메모리를 구비하는 하나 이상의 저장 노드들을 구비하고, 각 콜렉션은 하나 이상의 레코드들을 포함함), 컴퓨터가 탐색 조회에 따라 하나 이상의 탐색 컨덕터 노드들에 탐색 조회를 전송하고(탐색 조회는 조회될 하나 이상의 콜렉션들의 세트를 나타냄); 하나 이상의 탐색 컨덕터들로부터 탐색 조회를 충족시키는 하나 이상의 레코드들을 포함하는 탐색 결과 세트를 수신하는 것에 응답하여, 컴퓨터가 하나 이상의 분석 에이전트 노드들에게 탐색 조회에 기초한 탐색 결과들의 세트를 전송하고(탐색 결과 세트의 각 레코드는 탐색 조회에 있어서의 스코어링 알고리즘에 기반하여 스코어와 연계됨); 컴퓨터가 하나 이상의 분석 에이전트 노드들로부터 하나 이상의 데이터 링크들의 세트를 포함하는 컴퓨터 파일을 수신하는 것에 응답하여, 컴퓨터가 분석 에이전트 노드들로부터 수신된 하나 이상의 데이터 링크들의 세트에 따라 탐색 결과 세트의 하나 이상의 레코드들을 갱신하는 것을 구비한다.
다른 실시 예에 있어서, 컴퓨터 구현 방법은, 컴퓨터가 스키마 파일에 따라 탐색 컨덕터로부터 하나 이상의 콜렉션들을 수신하고(각각의 콜렉션은 하나 이상의 필드들을 가진 하나 이상의 레코드들의 세트를 구비함); 컴퓨터가 스키마에 따라 각 콜렉션을 구획하고; 컴퓨터가 스키마에 따라 각 구획내의 레코드들을 압축하고; 컴퓨터가 탐색 컨덕터와 연계된 구획자에 대응하는 각 콜렉션에 있어서 구획들의 각각을 포함하도록 하나 이상의 연계된 탐색 컨덕터에 구획의 각각을 분배하는 것을 구비한다.
본 개시의 많은 다른 측면 및 특징은 이하의 상세한 설명으로부터 명확해질 것이다. 실시 예의 추가적인 특징 및 장점은 이하의 상세한 설명에서 설명될 것이고, 부분적으로 그 설명으로부터 명확해질 것이다. 본 발명의 목적 및 다른 장점은 상세한 설명, 그의 청구범위 및 첨부된 도면에서의 예시적인 실시 예에서 특정하게 지적된 구조에 의해 실현되고 이루어질 수 있을 것이다.
본 개시는 이하의 도면을 참조하면 더욱 잘 이해될 수 있을 것이다. 도면에서의 구성 요소는 반드시 축척으로 도시된 것은 아니며, 대신에 본 개시의 원리의 설명이 강조되어 있다. 도면에 있어서, 참조 번호들은 다른 도면들간에 대응하는 부분을 나타낸다.
도 1은 예시적인 실시 예에 따른 인-메모리 데이터베이스 아키텍처를 도시한 도면이다.
도 2는 예시적인 실시 예에 따른 노드 구성을 도시한 도면이다.
도 3은 예시적인 실시 예에 따라 노드를 수립하는 흐름도이다.
도 4는 예시적인 실시 예에 따라 노드에서의 모듈 수립을 도시한 흐름도이다.
도 5는 예시적인 실시 예에 따른 탐색 관리자의 기능을 설명하는 흐름도이다.
도 6은 예시적인 실시 예에 따른 탐색 컨덕터의 기능을 설명하는 흐름도이다.
도 7은 예시적인 실시 예에 따른 구획자의 기능을 설명하는 흐름도이다.
도 8은 예시적인 실시 예에 따라 탐색 컨덕터에 있어서 구획을 수립하는 프로세스를 설명하는 흐름도이다.
도 9a는 예시적인 실시 예에 따른, 콜렉션, 그의 갱신된 버전 및 그들의 연계된 구획들을 도시한 도면이다.
도 9b는 예시적인 실시 예에 따른, 탐색 관리자에 접속된 제 1 콜렉션을 포함하는 제 1 및 제 2 탐색 노드를 도시한 도면이다.
도 9c는 예시적인 실시 예에 따른, 탐색 관리자로부터 접속 해제된 제 1 콜렉션을 포함하는 제 1 탐색 노드와 탐색 관리자에 접속된 제 1 콜렉션을 포함하는 제 2 탐색 노드를 도시한 도면이다.
도 9d는 예시적인 실시 예에 따른, 갱신된 콜렉션을 로딩한 제 1 탐색 노드와 탐색 관리자에 접속된 제 2 탐색 노드를 도시한 도면이다.
도 9e는 예시적인 실시 예에 따른, 탐색 관리자에 접속된 갱신된 콜렉션을 포함하는 제 1 탐색 노드와, 탐색 관리자로부터 접속 해제된 제 1 콜렉션을 포함하는 제 2 탐색 노드를 도시한 도면이다.
도 9f는 예시적인 실시 예에 따른, 갱신된 콜렉션을 로딩하는 제 2 탐색 노드와 탐색 관리자에 접속된 제 1 탐색 노드를 도시한 도면이다.
도 9g는 예시적인 실시 예에 따른, 탐색 관리자에 접속된 갱신된 콜렉션을 포함하는 제 1 및 제 2 탐색 노드를 도시한 도면이다.
도 10은 예시적인 실시 예에 따른 2개의 콜렉션에 대한 구획들을 포함하는 탐색 노드들의 클러스터를 도시한 도면이다.
정의
본 명세서에서 이용된 이하의 용어들은 다음과 같은 정의를 가진다.
"노드"는 하나 이상의 모듈들을 실행하는 데 적합한 컴퓨터 하드웨어 구성을 지칭한다.
"클러스터"는 하나 이상의 노드들의 세트를 지칭한다.
"모듈"은 하나 이상의 정의된 작업을 실행하는데 적합한 컴퓨터 소프트웨어 구성 요소를 지칭한다.
"콜렉션"은 레코드들의 이산 세트를 지칭한다.
"레코드"는 유닛으로서 다루어질 수 있는 정보의 하나 이상의 조각(piece)들을 지칭한다.
"필드"는 레코드내의 하나의 데이터 요소를 지칭한다.
"구획"은 콜렉션의 레코드들의 임의로 구분된 부분(arbitrarily delimited portion)을 지칭한다.
"스키마"는 하나 이상의 레코드들의 하나 이상의 특성을 설명하는 데이터를 지칭한다.
"탐색 관리자" 또는 "S.M."은 적어도 하나 이상의 조회를 수신하고 하나 이상의 탐색 결과들을 리턴하도록 구성된 모듈을 지칭한다.
"분석 에이전트", "분석 모듈", "A.A." 또는 "A.M."은 적어도 하나 이상의 레코드들을 수신하고, 상기 하나 이상의 레코드들을 처리하고, 결과하는 하나 이상의 레코드들을 리턴하도록 구성된 모듈을 지칭한다.
"탐색 컨덕터" 또는 "S.C."는 적어도 구획에 대한 하나 이상의 조회들을 실행하고 탐색 결과를 하나 이상의 탐색 관리자에게 리턴하도록 구성된 모듈을 지칭한다.
"노드 관리자" 또는 "N.M."은 적어도 노드상의 하나 이상의 지시를 실행하고 하나 이상의 감독관과 통신하도록 구성된 모듈이다.
"감독관"은 적어도 시스템의 하나 이상의 구성 요소들과 통신하고 하나 이상의 상태를 판정하도록 구성된 모듈이다.
"핫빗(heartbeat)" 또는 "HB"는 하나 이상의 감독관에게 적어도 하나 이상의 상태들을 통신하는 신호를 지칭한다.
"구획자"는 적어도 하나 이상의 콜렉션들을 하나 이상의 구획들로 분할하도록 구성된 모듈을 지칭한다.
"종속 관리자" 또는 "D.M."은 시스템에 있어서 하나 이상의 모듈들, 구획들 또는 적절한 조합과 연계된 하나 이상의 종속 트리(dependency tree)를 적어도 포함하고; 상기 하나 이상의 종속 트리들의 임의 하나 이상의 적당한 부분들과 관련된 정보에 대한 요청을 적어도 수신하고; 상기 적당한 부분들로부터 도출되는 하나 이상의 구성들을 적어도 리턴하도록 구성된 모듈을 지칭한다.
"데이터베이스"는 하나 이상의 콜렉션들을 저장하는데 적합하고 하나 이상의 조회들을 처리하는데 적합한 클러스터들 및 모듈들의 임의 조합을 포함하는 임의 시스템을 지칭한다.
"조회"는 하나 이상의 적당한 구획들 또는 데이터베이스들로부터 정보를 검색하도록 하는 요청을 지칭한다.
"메모리"는 아주 고속으로 정보를 저장하고 정보를 검색하는데 적합한 임의 하드웨어 구성 요소를 지칭한다.
"단편(fragment)"은 원하는 레벨의 세분성(granularity)이 달성될 때 까지 레코드들을 보다 작은 레코드들로 분리하는 것을 지칭한다.
다수의 바람직한 실시 예에 대한 참조가 세부적으로 이루어질 것이며, 그의 예시들이 첨부 도면에 도시된다. 본 명세서에서 설명한 실시 예들은 예시적인 것이다. 당업자라면 수많은 대안적인 구성 요소들 및 실시 예들이 본 명세서에서 설명하는 특정 예시를 대신할 수 있고, 본 발명의 범주내에 있음을 알 것이다.
예시적인 실시 예들은 하나 이상의 클러스터들과 하나 이상의 모듈들을 포함하는 인-메모리 데이터베이스를 설명하는데, 적당한 모듈들은 탐색 관리자, 분석 에이전트, 노드 관리자, 탐색 컨덕터, 감독관, 종속 관리자 및/또는 구획자 중 하나 이상을 포함할 수 있다.
시스템 구성
인-메모리 데이터베이스 아키텍처
인-메모리 데이터베이스는, "디스크" 메모리에 데이터를 저장하는 종래의 데이터베이스 관리 시스템(database management system: DBMS) 및 종래의 데이터 베이스와는 반대로, 디바이스의 주 메모리에 데이터 레코드를 저장하도록 구성된 DBMS에 의해 제어되는, 레코드에 데이터를 저장하는 데이터베이스이다. 종래의 디스크 저장 장치는 프로세서(CPU들)가 디바이스의 하드 디스크에 독출 및 기록 지시들을 실행하도록 요청하고, 그에 따라 CPU는 메모리 위치에 있는 데이터와 일부 유형의 동작을 실행하기 전에, 데이터에 대한 그 메모리 위치를 위치 결정하고(탐지(seek)), 검색하기 위한 명령을 실행하도록 요청한다. 인-메모리 데이터베이스 시스템은 주 메모리내에 자리하여 어드레싱된 데이터를 액세스하며, 그에 의해 CPU에 의해 실행되는 명령어들의 개수를 경감시키고, 하드 디스크상의 데이터를 탐지하는 CPU와 연계된 탐지 시간을 제거한다.
인-메모리 데이터베이스는 노드들의 각 리소스(예를 들어, 메모리, 디스크, 프로세서)들을 취합(aggregate)하도록 구성된 하나 이상의 노드들을 구비하는 컴퓨팅 시스템일 수 있는 분산형 컴퓨팅 아키텍쳐에 구현될 수 있다. 본 명세서에서 개시된 바와 같이, 인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템의 실시 예는 하나 이상의 노드들간에 데이터베이스의 데이터 레코드들을 분산 저장할 수 있다. 일부 실시 예들에 있어서, 이들 노드들은 노드들의 "클러스터들"로 된다. 일부 실시 예들에 있어서, 이들 노드들의 클러스터들은 데이터베이스 정보의 일부 또는 "콜렉션"을 저장한다.
하나 이상의 실시 예들에 있어서, 시스템 인터페이스는 하나 이상의 탐색 조회들을 하나 이상의 탐색 관리자에게 피딩(feeding)할 수 있다. 탐색 관리자는 실시 예에 의거하여 특정 분석 기술을 실행하고 그 결과를 탐색 관리자에게 리턴하는 하나 이상의 분석 에이전트에 링크 접속될 수 있다. 탐색 관리자는 하나 이상의 탐색 컨덕터에 링크 접속될 수 있다. 탐색 컨덕터는 하나 이상의 데이터 구획에 대한 탐색 조회 및 데이터베이스 갱신을 서비스할 수 있다. 하나 이상의 실시 예에 있어서, 구획자를 구비하는 하나 이상의 노드들은 하나 이상의 데이터베이스 콜렉션들의 하나 이상의 구획들을 저장한다. 콜렉션의 구획은 특정 구획으로 구획되었던 콜렉션의 하나 이상의 레코드들을 저장한다. 따라서, 콜렉션의 구획들의 각각을 저장하는 하나 이상의 노드들은 인-메모리 데이터베이스의 레코드들을 저장하고 있다.
구획자 압축
인-메모리 데이터베이스는 정보의 "필드(field)들"을 가진 "레코드(record)들"로서 저장되는 정보의 조직적 콜렉션(organized collection)이다. 예를 들어, 식당 데이터베이스는 지역내의 각 식당에 대한 레코드를 가질 수 있으며, 각 레코드는 이름, 주소, 요리 유형 등과 같은 식당의 특성들의 각각을 기술하는 다른 필드를 포함한다.
인-메모리 데이터베이스의 실시 예는, 데이터를 저장 및 액세스하기 위해 하나 이상의 노드들의 클러스터들을 이용할 수 있으며, 대량의 데이터는 대량의 비-일시적 기계 독출 가능 저장 공간을 필요로 할 수 있다. 압축은 정보를 호스팅하는데 요구되는 저장 공간의 양을 줄인다.
일부 실시 예들에 있어서, 하나 이상의 콜렉션들은 하나 이상의 콜렉션들의 하나 이상의 레코드들의 하나 이상의 필드들에 대해 이용된 압축 기술을 정의하는 임의 적당한 스키마를 이용하여 설명된다. 이들 실시 예들에 있어서, 하나 이상의 필드들은 필드에 저장된 데이터의 유형을 압축하는데 적합한 하나 이상의 기술들을 이용하여 구획자에 의해 압축될 수 있다.
일부 실시 예들에 있어서, 필드내에 저장된 데이터의 유형은 원하는 데이터 세분성이 달성될 때까지 콜렉션 내의 레코드들이 보다 작은 레코드들로 분할되는 단편화(fragmentation)후에 압축될 수 있다. 그러한 실시 예들에 있어서, 단편화된 레코드 인덱스들은, 레코드들이 콜렉션의 동일한 원본 레코드(original record)로부터 기원함을 시스템이 확실히 인식하도록 하기 위해 그 필드들이 어느 레코드로부터 단편화되었는지를 식별하는데 이용된다. 단편화된 레코드들은 하나 이상의 단편화 알고리즘에 따라 추가로 압축될 수 있다.
일부 실시 예들에 있어서, 하나 이상의 콜렉션들은 인-메모리 데이터베이스 시스템의 하나 이상의 탐색 컨덕터 모듈과 연계될 수 있는 하나 이상의 구획자 모듈들에 의해 인덱스되고/되거나 압축될 수 있다. 일부 실시 예들에 있어서, 하나 이상의 압축 기술들은 데이터 압축을 도모하며, 필드 레벨, 레코드 레벨 또는 콜렉션 레벨을 포함하는, 인-메모리 데이터베이스의 임의 레벨로 데이터가 압축 해제되고/되거나 액세스될 수 있게 한다.
시스템 아키텍처
도 1은 시스템 인터페이스(102), 제 1 탐색 관리자(110), n번째 탐색 관리자(112), 제 1 분석 에이전트(120), n번째 분석 에이전트(122), 제 1 탐색 컨덕터(130), n번째 탐색 컨덕터(132), 구획 데이터(140), 구획자(150), 제 1 콜렉션(160), n번째 콜렉션(162), 감독관(170) 및 종속 관리자(180)를 가진 시스템 아키텍처를 도시한 도면이다.
하나 이상의 실시 예들에 있어서, 시스템 인터페이스(102)는 적어도 제 1 탐색 관리자(110)를 포함하는 하나의 노드에서부터 n번째 탐색 관리자(112)를 포함하는 n번째 노드까지를 포함하는 제 1 클러스터내의 하나 이상의 탐색 관리자들(110,112)에게, 시스템 아키텍처(100) 외부에서 생성된 하나 이상의 조회들을 피딩할 수 있다. 제 1 클러스터내의 하나 이상의 탐색 관리자(110,112)는 적어도 제 1 분석 에이전트(120)에서 부터 최대 n번째 분석 에이전트(122)까지를 포함하는 제 2 클러스터내의 하나 이상의 분석 에이전트들(120,122)에 링크 접속될 수 있다.
제 1 클러스터내의 탐색 관리자(110,112)는 제 3 클러스터내의 하나 이상의 탐색 컨덕터(130,132)에 링크 접속될 수 있다. 제 3 클러스터는 적어도 제 1 탐색 컨덕터(130)에서부터 최대 n번째 탐색 컨덕터(132) 까지를 포함할 수 있다. 각 탐색 노드(즉, 탐색 관리자(110,112)를 실행하는 노드)는 임의 적당한 개수의 탐색 컨덕터들(130,132)을 포함할 수 있다.
제 3 클러스터내의 탐색 컨덕터들(130,132)은 구획 데이터(140)를 저장하는 하나 이상의 데이터베이스 노드에 링크 접속될 수 있다. 구획 데이터(140)는, 적어도 하나 이상의 콜렉션들을 하나 이상의 구획들로 분할하도록 구성된 모듈일 수 있는 하나 이상의 구획자들(150)들을 실행하는 노드에 의해 생성된 하나 이상의 구획들(즉, 이산 레코드 세트로부터 구획된 레코드들의 임의 구분된 부분들)을 포함할 수 있다. 구획들의 각각은 적어도 제 1 콜렉션(160)에서부터 최대 n 번째 콜렉션(162) 까지에 대응할 수 있다. 콜렉션들(160,162)은 콜렉션(160,162)내의 데이터를 정의할 수 있는, 하나 이상의 스키마 파일(schemata file)들에 의해 추가로 기술될 수 있다. 하나 이상의 스키마들은 다른 것들 중에서도 구획들의 레코드내의 필드들의 이름, 상기 필드들이 인덱스되는지, 무슨 압축 방법이 이용되었는지, 무슨 스코어링 알고리즘이 그 필드에 대한 디폴트(default)인지에 대한 정보를 포함할 수 있다. 제 1 콜레션(160) 내지 n번째 콜렉션(162) 까지의 구획시에 구획자(150)에 의해 스키마들이 이용될 수 있고, 추가로 콜렉션들에 대해 하나 이상의 조회들을 실행할 때 제 1 탐색 관리자(110)에서 부터 n번째 탐색 관리자(112)까지에 의해 스키마들이 이용될 수 있다.
하나 이상의 노드들은 시스템(100)의 다른 노드들로부터 전송된 핫빗 신호를 수신하는 감독관(170) 소프트웨어 모듈을 실행할 수 있다. 감독관(170)은 하나 이상의 종속 관리자(180) 소프트웨어 모듈들을 실행하는 시스템(100)의 노드들로부터 데이터를 수신하도록 구성될 수 있다. 종속 관리자(180) 노드는, 상대적 관련성에 기초하여 노드들, 모듈들 및 구획들에 대한 구성 종속성을 나타낼 수 있는, 하나 이상의 모듈들, 구획들 또는 그들의 적당한 조합과 연계된 종속성 트리들을 저장하고, 갱신하고, 참조할 수 있다. 감독관(170)은 추가로 하나 이상의 다른 감독관(170)을 실행하는 시스템(100)내의 다른 노드들에 링크 접속될 수 있다. 일부 경우에, 추가적인 감독관(170)에 대한 링크들은 시스템 아키텍처(100)의 클러스터들간에 교차할 수 있다.
분석 에이전트들(120,122)을 실행하는 노드들은 (예를 들어, 소프트웨어 모듈들, 노드들과 같은) 시스템의 구성 요소들간의 상호 운영(interoperability) 및 데이터 전달을 도모하는 특정된 애플리케이션 프로그래밍 인터페이스(API)와 일치하는, 하나 이상의 적당한 분석 모듈들을 실행할 수 있다. 분석 에이전트(120,122)는 탐색 컨덕터들(130,132)로부터 리턴되는 취합된 조회 결과들을 처리하도록 구성될 수 있다. 예를 들어, 탐색 관리자(110)는 탐색 조회를 수신할 수 있고, 그 다음, 탐색 관리자(110)가 하나 이상의 탐색 컨덕터들(130,132)에게 발행하는 탐색 컨덕터 조회들을 생성할 수 있다. 탐색 컨덕터들(130,132)이 그들 각각에 할당된 탐색 컨덕터 조회들을 실행한 후, 탐색 관리자(110)는 하나 이상의 탐색 컨덕터들로부터 취합된 조회 결과들의 세트를 수신할 것이다. 탐색 관리자(110)는, 탐색 조회의 파라메타들에 의해 추가 처리가 요구되면, 추가 처리를 위해 분석 에이전트(120)에게 이들 탐색 조회 결과들을 전송할 수 있다.
일부 구현에 있어서, 탐색 조회가 분석 에이전트(120)에게 탐색 컨덕터들(130,132)로부터 수신된 취합 결과들의 하나 이상의 세트들을 처리하도록 요청하였음을 탐색 관리자(110)가 판정한 후에는, 탐색 관리자(110)는 데이터 스키마 파일 및/또는 하나 이상의 분석 파라메타들을 분석 에이전트들(120,122)에 전송할 수 있다. 일부 경우에 있어서, 탐색 조회는 어느 분석 에이전트(120)가 취합된 탐색 결과를 수신해야 하는지를 식별하기 위해 탐색 관리자(110)가 이용할 수 있는, 실행될 특정 분석 알고리즘을 요청할 수 있다. 일부 경우에, 하나 이상의 취합 결과 세트들은, 압축 알고리즘에 따라 압축된 데이터를 포함하는 압축 레코드 형태로 분석 에이전트(120,122)로 전송될 수 있다. 일부 경우에, 레코드들의 데이터는 레코드들의 필드에서 압축될 수 있으며, 일부 경우에 전체 레코드들이 압축될 수 있다.
분석 에이전트들(120,122)을 실행하는 노드들은 다양한 분석 모듈들을 가진다. 비-제한적 예시는, 다른 적합한 모듈들 및 알고리즘들 중에서, 중의성 해소 모듈, 링크 접속 모듈 및 링크 온더플라이(on-the-fly) 모듈을 포함할 수 있다. 이하에서 상세히 설명하겠지만, 링크 접속 모듈 및 링크 온더플라이 모듈은, 데이터베이스의 레코드에 이전에 저장된 데이터를 링크 접속하는 메타데이터(metadata)를 식별, 생성 및/또는 저장할 수 있다. 적당한 모듈들은 임의 유형의 데이터를 처리하는 분석 방법들의 임의 소프트웨어 구현을 포함할 수 있다. 일부 실시 예들에 있어서, 특정 분석 모듈들 또는 분석 에이전트들(120,122)은 메모리 데이터베이스내의 사전 결정된 인스턴스들(instances), 클러스터들, 구획들 및/또는 예시된 객체들에게만 액세스할 수 있다.
분석 모듈들
실시 예에 따르면, 애플리케이션 프로그래밍 인터페이스(API)는 다수의 분석 모듈들을 생성하는데 이용될 수 있으며, 개시된 시스템 아키텍처는, 일정한 데이터 스트림들의 동적 프로세싱을 지원하는 동작 또는 서비스들을 차단하지 않고, 시스템 아키텍처에 추가될 수 있는, 시스템의 분석 에이전트들에 의해 실행되는 다수의 맞춤형 분석 모듈들(customized analytics modules)이 추가될 수 있게 한다.
새로 생성된 분석 모듈들은, 간단한 모듈 수립 프로세스들을 이용하여 데이터베이스내로 쉽게 플러그(plug) 접속될 수 있으며, 애플리케이션이 데이터를 관리하고, 마련하고 저장하는 방식을 변경할 필요없이, 취합된 결과 리스트에 하나 이상의 분석 방법들을 실시간으로 적용할 수 있게 한다. 개별적인 API들은, 전형적인 탐색 컨덕터 기능으로서, 조회에 대해 레코드를 스코어링하는 모델들을 지원하거나, 전형적인 분석 에이전트 작업으로서, 레코드 세트에 대해 클로저(closure) 또는 다른 취합 분석 기능을 실행하도록 구성될 수 있다.
도 2는 예시적인 실시 예에 따른, 노드(200)의 구성을 도시한 도면이다. 도 2의 노드(200)는, 제 1 소프트웨어 모듈(210)에서부터 n번째 모듈(212)까지를 포함할 수 있는 임의 개수의 추가적인 소프트웨어 모듈(210,212)과 노드 관리자(202) 소트트웨어 모듈을 실행하는 프로세서를 구비할 수 있다.
도 2의 예시적인 구성에 따르면, 노드(200)는 데이터 네트워크를 통해 감독관 모듈을 실행하는 제 2 노드 또는 감독관 노드에 통신 가능하게 결합될 수 있다. 노드(200)에 의해 설치되고 실행될 노드 관리자(202)는 감독관 노드와 통신하도록 구성될 수 있고, 제 1 모듈(210)에서부터 n번째 모듈(212)까지를 포함하는, 노드상에 설치된 소프트웨어 모듈들(210,212)을 모니터링하도록 구성될 수 있다. 노드 관리자(202)는 감독관으로부터 수신한 임의 적당한 지시들을 실행할 수 있고, 노드(200), 노드 관리자(202) 및 제 1 모듈(210)에서부터 최대 n번째 모듈(212) 까지 중 하나 이상의 상태에 대해 추가로 보고할 수 있다. 제 1 모듈(210)은 하나 이상의 감독관에 링크 접속될 수 있고, 그 노드내의 하나 이상의 다른 모듈들에 링크 접속될 수 있으며, 그 노드내의 다른 모듈들은 제 1 모듈(210)과 다른 유형이거나 제 1 모듈(210)과 소정 유형을 공유할 수 있다. 추가적으로, 제 1 모듈(210)은 시스템내의 하나 이상의 다른 모듈들, 노드들 또는 클러스터들과 링크 접속될 수 있다.
시스템 동작
시스템 수립
도 3은 단계 302, 304 및 306을 가진 노드 수립(300)을 도시한 흐름도이다.
단계 302에서, 노드상에서 이용하는데 적합한 운영 시스템(OS)이 그 노드에 로딩된다. 하나 이상의 실시 예에 있어서, OS는 노드 제조자에 의해 자동 로딩될 수 있다. 하나 이상의 다른 실시 예에 있어서, OS는 하나 이상의 운영자에 의해 노드상에 로딩될 수 있다.
단계 304에서, 노드상에 로딩된 OS와 함께 이용하는데 적합한 노드 관리자는 하나 이상의 운영자들에 의해 수동으로 설치되는데, 그 설치는 어떤 하나 이상의 원하는 모듈들이 노드 관리자에 추가되어 노드상에 설치되는지를 판정할 수 있다.
단계 306에서, 노드 관리자는 감독관에게 핫빗(heartbeat)을 전송하는데, 상기 핫빗은 노드가 하나 이상의 모듈들을 설치하도록 하는 명령을 수신할 준비가 되었는지를 감독관이 판정하기에 충분한 정보를 포함한다.
도 4는 단계 402, 404, 406, 408, 410, 412 및 414를 가진 모듈 수립(400)을 도시한 흐름도이다.
단계 402에서, 감독관은, 시스템에 대해 정의된 데이터 콜렉션들의 필요성에 기초하여, 하나 이상의 모듈들이 하나 이상의 노드상에 설치되어야 하는지를 판정한다. 그 다음, 감독관은 상기 하나 이상의 노드들상의 하나 이상의 노드 관리자들에게 설치 준비 명령을 전송한다. 일부 실시 예들에 있어서, 감독관은 (데이터 조각들(data shards) 또는 데이터의 일부를 포함하는) 데이터 콜렉션들과, 각 콜렉션과 연계된 구성 세팅들(configuration settings)을 추적할 수 있다. 감독관은, 또한, 모든 이용 가능한 노드들 및 그들의 리소스(노드 관리자에 의해 보고됨)를 인지할 수 있다. 감독관은, 각 노드상에서 어느 데이터 조각들 또는 데이터 일부들이 및 어느 시스템 서비스 또는 리소스가 실행중이어야 하는지를 판정하기 위해 이용 가능한 노드 리소스에 시스템 필요성을 매핑(즉, 상관)시킬 수 있다. 감독관은, 정의된 임의의 종속성을 포함하는 전개(deploy)/설치 요청을 적절한 노드 관리자에게 전송하여, 노드 관리자가 클라이언트측상에서 설치를 실행하도록 명령할 수 있다.
단계 404에서, 노드 관리자는 하나 이상의 원하는 모듈들을 실행시키기 위해, 컴퓨터 메모리, 디스크 저장 및/또는 CPU 커패시티(capacity)의 일부와 같은 노드 리소스들을 할당한다. 하나 이상의 실시 예들에 있어서, 리소스들의 할당은, 감독관이 프로세스를 계속하지 않는다면, 소정 시 기간 후에 종료할 수 있다. 리소스의 비-제한적 예시들은 컴퓨터 메모리, 디스크 저장 및 CPU 커패시티의 일부를 포함할 수 있다. 요구된 리소스들은 관리자가 주어진 노드에 할당하고 있는 서비스 및/또는 데이터를 이용하여 판정될 수 있다. 요구된 리소스들의 세부 사항은 종속 관리자에 저장되는, 소프트웨어 및 데이터 종속성을 정의하는 패키지내에 특정될 수 있다.
단계 406에서, 감독관은 종속 관리자들에게 노드상에 설치될 하나 이상의 모듈들과 연계된 하나 이상의 구성 패키지들에 대한 요청을 전송한다.
단계 408에서, 감독관은, 그 다음에, 전개되고, 설치되고, 시작될 노드 관리자에게 구성 패키지를 전송할 수 있다. 모든 데이터, 소프트웨어 및 메타데이터 종속성을 포함하는 구성 패키지는 시스템 관리자(system administrator)에 의해 정의되고 종속 관리자에 저장된다.
단계 410에서, 노드 관리자는 적당한 서버로부터 하나 이상의 모듈들을 실행하도록 요구되는 임의 소프트웨어 및 데이터를 독출한다. 적당한 소프트웨어 및 데이터는 인덱싱, 압축, 압축 해제, 스코어링, 슬라이싱(slicing), 가입(joining) 또는 하나 이상의 레코드들의 처리에 적합한 소프트웨어, 데이터 및 메타데이터를 포함하고, 통신, 코디네이팅(coordinating), 모니터링 또는 시스템내의 하나 이상의 다른 구성 요소들과 상호 작용하는데 적합한 소프트웨어 및 데이터를 포함할 수 있다.
단계 412에서, 노드 관리자는 단계 410에서 페치(fetch)된 요구된 소프트웨어를 설치한다.
단게 414에서, 노드 관리자는 단계 412에서 설치된 소프트웨어를 실행한다.
조회 실행
도 5는 단계 502, 504, 508, 510, 512, 514, 518 및 520을 가지며, 체크 506 및 516을 가진 조회 프로세싱(500)을 도시한 흐름도이다.
단계 502에서, 클라이언트 컴퓨터의 네이티브(native) GUI 또는 시스템에 의해 호스팅된 브라우저 기반 GUI와 같은 외부 소스에 의해 생성된 데이터베이스 조회들은 하나 이상의 탐색 관리자들에 의해 수신된다. 조회들은, 사용자 제출된 또는 프로그램 자동 생성된 탐색 파라메타들을 포함할 수 있는, 임의 적당한 소프트웨어 소스 코드를 나타내는 2진 데이터를 구비할 수 있다. 탐색 조회에 이용되는 소스 코드 언어는 객체 또는 클래스들(classes)과 같은 복잡한 데이터 구조를 다룰수 있는 데이터 직렬화 언어(data serialization language)일 수 있다. 데이터 직렬화 언어는 복잡한 데이터 객체 또는 구조를 디지털 비트들의 시퀀스로 변환하는데 이용되고, 대부분의 임의 디바이스들에 의해 관리될 수 있는 포맷으로 복잡한 객체들의 데이터를 제공할 수 있다. 일부 실시 예들에 있어서, 조회들은, 스키마 파일에 따라 이해되고 검증될 수 있는(예를 들어, XSD) XML 및 HTML과 같은 마크업 언어로 표현될 수 있다. 일부 실시 예에 있어서, 조회들은 스키마 파일에 따라 이해되거나 검증될 수 있는 JSON과 같은 복잡한 데이터 구조로 표현되거나, 그 구조를 통신할 수 있다. 조회들은 조회의 파라메타들을 충족시키는 원하는 레코드에 대해 데이터베이스를 탐색하는데 적합한 명령어들을 포함할 수 있으며, 일부 실시 예들에 있어서, 적합한 명령은 탐색을 위한 하나 이상의 콜렉션들의 리스트를 포함할 수 있다.
단계 504에서, 외부 소스로부터 수신한 조회들은 하나 이상의 탐색 관리자에 의해 연계된 조회 언어(예를 들어, SQL)에 따라 파싱(parsing)되고, 그에 의해 적당한 노드들(예를 들어, 탐색 컨덕터, 분석 에이전트)에 의해 실행될 기계 독출 가능 조회를 생성한다. 일부 경우에 있어서, 조회들의 소프트웨어 언어와 연계된 스키마 파일들은 탐색 관리자들에 대한 조회, 허용된 표준 또는 네이티브를 생성하는 코드에 의해 생성된, 조회를 제공받을 수 있다. 스키마 파일은 적절하게 탐색 조회들을 파싱하는 것에 대해 탐색 관리자에게 명령한다. 예를 들어, 탐색 조회들이 하나 이상의 마크업 언어(예를 들어, XML)를 이용하여 마련되거나 데이터 구조(예를 들어, JSON)를 포함하면, XSD 기반 스키마 파일과 같은 스키마 파일은 탐색 조회 코드 또는 데이터 구조와 연계되어, XML 코드 또는 JSON 코드의 마크업 태그들(markup tags)의 각각내의 데이터를 식별하고/하거나 검증할 수 있다.
체크 506에서, 탐색 관리자는, 사용자 제공 또는 애플리케이션 생성 조회에 기반하여, 데이터베이스 및/또는 질의들의 하나 이상의 필드를 프로세싱하는 것을 실행해야 하는지의 여부를 판정할 수 있다. 필드 프로세싱의 비-제한적 예시는, 다른 것들 중에서도 어드레스 표준화, 근접 경계들의 판정 및 동의어 해독을 포함할 수 있다. 일부 실시 예들에 있어서, 시스템의 자동 또는 수동 프로세스는 탐색 프로세스(500)와 연계된 임의 다른 프로세스들이 조회들의 필드내에 포함된 정보의 이용을 요구하는지의 여부를 판정하고 식별할 수 있다. 일부 실시 예들에 있어서, 하나 이상의 탐색 관리자들은 조회의 하나 이상의 필드들 중 어느 것이 원하는 프로세싱을 겪고 있는지를 자동적으로 판정하고 식별할 수 있다.
단계 508에서, 체크 506에서 하나 이상의 필드에 대한 필드 프로세싱을 원하다고 시스템이 판정하고 나면, 탐색 관리자는 원하는 필드에 하나 이상의 적당한 필드 프로세싱 기술을 적용할 수 있다.
단계 510에서, 탐색 관리자들은 탐색 조회들과 연계된 탐색 컨덕터 조회들을 구성할 수 있다. 일부 실시 예들에 있어서, 스택 기반 탐색(stack-based search)과 같은, 임의 적당한 탐색 조회 실행에 따라, 탐색 컨덕터 질의들이 시스템의 여러 노드들(예를 들어, 탐색 관리자들, 탐색 컨덕터들, 저장 노드들)에 의해 처리되도록 구성될 수 있다. 탐색 질의들은 임의 적당한 이진 포맷 또는 다른 기계 독출 가능 컴팩트 포맷을 이용하여 인코딩될 수 있다.
단계 512에서, 하나 이상의 탐색 관리자들은 하나 이상의 탐색 컨덕터들에게 하나 이상의 탐색 컨덕터 조회들을 전송한다. 일부 실시 예들에 있어서, 탐색 관리자들은, 어느 탐색 컨덕터들이 탐색 컨덕터 조회들을 수신해야 하는지를 자동으로 판정하여, 탐색 컨덕터 질의들을 탐색 컨덕터들의 식별된 서브셋에 전송할 수 있다. 그러한 실시 예들에 있어서, 탐색 컨덕터들은 데이터의 특정 콜렉션들과 사전 연계될 수 있고, 시스템 인터페이스로부터 수신된 탐색 조회들은 조회될 콜렉션들을 특정할 수 있다. 그와 같이, 탐색 관리자들은 하나 이상의 탐색 조회들내에 특정된 콜렉션들과 연계된 탐색 컨덕터들에게 탐색 컨덕터 조회들을 전송한다.
단계 514에서, 탐색 컨덕터들은 대응하는 탐색 관리자들에게 탐색 결과들을 리턴한다. 일부 실시 예들에 있어서, 탐색 결과들은 동기식으로 리턴될 수 있고, 일부 실시 예들에 있어서, 탐색 결과들은 비동기식으로 리턴될 수 있다. 동기식이란 탐색 관리자가 특정 탐색 컨덕터로부터의 탐색 컨덕터 결과들을 기다리면서 결과를 차단하거나 동작들을 중지시킬 수 있는 실시 예를 지칭한다. 비동기식이란 탐색 관리자가 다른 결과를 차단하거나 다른 동작을 중지시키지 않고, 동시에, 즉 병렬 방식으로 많은 탐색 컨덕터들로부터 결과를 수신할 수 있는 실시 예를 지칭한다. 탐색 컨덕터들로부터 탐색 결과들을 수신한 후, 탐색 관리자들은, 탐색 컨덕터들로부터 리턴된 레코드 스코어에 기초하여, 각 탐색 컨덕터들로부터 수신한 결과들을 하나 이상의 결과 리스트내로 수집한다(collate).
체크 516에서, 탐색 관리자는, 탐색 조회내의 표시에 기초하여, 탐색 관리자에 의해 컴파일된 탐색 결과들의 추가적인 분석 프로세싱이 실행되어야 하는지를 판정할 수 있다. 일부 경우에 있어서, 그 표시는 사용자에 의해 탐색 조회내에 포함될 수 있다. 일부 실시 예들에 있어서, 시스템은, 탐색 조회내에 포함된 정보를 이용하여 분석 프로세싱을 원하는지를 판정한다. 일부 실시 예들에 있어서, 하나 이상의 탐색 관리자들은 원하는 분석 프로세싱을 겪어야 하는 필드들을 자동으로 판정할 수 있다. 탐색 조회들은 탐색 조회와 관련된 다른 데이터(예를 들어, 스트링들 및 객체들)와 함께 명령어들을 운송할 수 있는 소프트웨어 프로그래밍 언어내에 구성될 수 있다. 마크업 언어와 같은 일부 프로그래밍 언어들은, 분석이 실행되어야 하는지 여부의 불값(Boolean value)을 나타내는 필드 또는 특정 분석 모듈을 호스팅하는 분석 에이전트 노드 및/또는 실행된 특정 분석 모듈을 나타내는 보다 복잡한 사용자 정의 필드와 같은, 여러 유형의 데이터를 식별하기 위해 코드에 내장된 메타데이터 태그들을 이용할 수 있다. 자바스크립(javascript) 또는 PHP와 같은 일부 프로그래밍 언어는, 특정 분석 모듈을 호스팅하는 분석 에이전트 노드 및/또는 실행될 특정 분석 모듈을 나타내는 보다 복잡한 사용자 정의 필드일 수 있는, 분석이 실행되어야 하는지를 식별하는 코드를 포함하는 저장된 컴퓨터 파일들을 참조할 수 있다.
단계 518에서, 체크 516에서 프로세싱을 원한다고 시스템이 판정하면, 하나 이상의 분석 에이전트들은 하나 이상의 결과 리스트들에 하나 이상의 적당한 프로세싱 기술을 적용한다. 하나 이상의 실시 예들에 있어서, 적당한 기술은 다른 것들 중에서도 여러 레코드들을 보다 완전한 레코드로 롤업(roll-up)하고, 그 결과들에 대해 하나 이상의 분석을 실행하고/하거나 레코드들간의 관계에 대한 정보를 판정하는 것을 포함할 수 있다. 분석 에이전트는 하나 이상의 탐색 관리자들에게 하나 이상의 프로세싱된 결과를 리턴할 수 있다.
단계 520에서, 하나 이상의 탐색 관리자들은, 하나 이상의 결과 리스트들을 압축 해제하여 조회를 개시했던 시스템으로 그들을 리턴한다.
도 6은, 단계 602, 604, 608, 610, 612 및 체크 606을 가진 탐색 컨덕터 기능(600)을 도시한 흐름도이다.
단계 602에서, 탐색 관리자는 하나 이상의 탐색 컨덕터들에게 조회를 전송한다.
단계 604에서, 탐색 컨덕터는 그의 로딩된 구획에 대해 조회를 실행하여, 후보 결과 세트를 생성한다. 하나 이상의 실시 예들에 있어서, 단계 604는 하나 이상의 인덱스 탐색을 포함할 수 있다. 하나 이상의 실시 예들에 있어서, 탐색 컨덕터는 하나 이상의 스키마들내의 정보를 이용하여 조회를 실행한다.
체크 606에서, 탐색 컨덕터는, 특정된 조회에 기초하여, 탐색 컨덕터 조회에서 스코어링이 요청되었는지를 판정한다. 스코어링은 탐색 관리자에 의해 수신된 탐색 조회에 표시될 수 있다.
스코어링이 요청되면, 탐색 컨덕터는 단계 608에서 후보 결과 세트를 스코어링한다. 스키마에 있어서 디폴트 스코어 임계치가 정의될 수 있거나, 단계 602에서 탐색 관리자에 의해 전송된 탐색 컨덕터 조회에 포함될 수 있다. 하나 이상의 실시 예에 있어서, 탐색 컨덕터는 하나 이상의 다른 스코어링 알고리즘에 의해 재정의될 수 있는 디폴트가 있을 수 있는, 필드 특정 스코어링 알고리즘을 이용하여 필드 레벨로 초기 스코어링을 실행할 수 있다. 스코어링 알고리즘은 탐색 조회 및/또는 탐색 컨덕터 조회에서 정의되거나 식별될 수 있으며, 그에 따라 탐색 컨덕터에 의해 실행될 수 있다. 탐색 컨덕터는 이들 개별적인 필드 스코어들에 기초하여 레코드에 전체 스코어(composite score)를 준다. 일부 실시 예들에 있어서, 하나 이상의 취합 스코어링 방법들은 탐색 컨덕터에 의해 적용되어, 하나 이상의 필드 스코어들 또는 다른 취합된 스코어들을 취합함에 의해 스코어를 계산할 수 있다.
단계 610에서, 탐색 컨덕터는 후보 결과 세트내의 임의 잔여 레코드들을 소팅(sorting)하기 위해 스코어를 이용한다.
체크 612에서, 탐색 컨덕터는 후보 결과 세트를 탐색 관리자에게 리턴하는데, 리턴된 결과들의 개수는 단계 602에서 탐색 관리자에 의해 전송된 조회에서 요청된 크기로 제한될 수 있다.
콜렉션 구획화 및 구획 로딩
하나 이상의 실시 예에 있어서, 데이터는 하나 이상의 적당한 인-메모리 데이터베이스에 추가될 수 있다.
제 1 실시 예에 있어서, 데이터는 하나 이상의 구획자에 의해 벌크(bulk)로 로딩될 수 있다.
도 7은, 단계 702, 704, 706, 710 및 712와, 체크 708을 가진 콜렉션 구획화(700)를 도시한 흐름도이다.
단계 702에서, 하나 이상의 콜렉션들은 하나 이상의 구획자들로 피딩된다. 그 콜렉션들은 하나 이상의 스키마들과 함께 피딩됨으로써, 하나 이상의 구획자들은 하나 이상의 콜렉션들내의 레코드들을 조작하는 방법을 이해할 수 있게 된다.
단계 704에서, 하나 이상의 콜렉션들내의 레코드들이 단편화된다.
체크 708에서, 시스템은 주어진 데이터 콜렉션에 대해 스키마를 체크하고, 구획내의 임의 필드가 구획자에 의해 인덱스되어야 하는지 여부를 판정한다. 인덱스는 날짜 인덱스 또는 퍼지 인덱스(예를 들어, 표음(phonetic))와 같은, 임의의 알려진 데이터베이스에서 이용되는 필드-인덱스의 임의 적당한 예시일 수 있다.
단계 710에서, 시스템이, 체크 708에서, 구획자가 구획들에 있어서의 임의 필드를 인덱스해야 할 것으로 판정하였으면, 구획자는 스키마내의 인덱스 정의에 기초하여 구획들을 인덱스한다.
체크 712에서, 시스템은 주어진 데이터 콜렉션에 대해 스키마를 체크하고, 구획이 구획자에 의해 압축되어야 하는지를 판정한다.
단계 714에서, 시스템이, 체크 712에서, 구획자가 구획득을 압축해야 하는 것으로 판정하였으면, 구획자는 필드들 및 레코드들을 압축하는데, 이때, 구획들을 충분하게 압축하는데 적합하고, 그 필드 레벨로 압축 해제를 추가로 할 수 있는 임의 기술일 수 있는, 스키마내에 특정된 압축 방법을 이용한다.
단계 716에서, 시스템은 하나 이상의 탐색 컨덕터들에게 구획들을 분배하는 데 적합한 구획들을 저장한다.
콜렉션 구획화(700)는 대형 데이터 콜렉션의 초기 로딩, 재로딩 또는 대체를 생성한다. 구획자는 콜렉션내의 각 레코드에 고유 레코드 ID를 할당할 수 있으며, 구획된 콜렉션에 버전 번호(version number)를 할당할 수 있고, 하나 이상의 SM들과 하나 이상의 SC들에 의한 사용을 위한 그 구획 세트 버전과 요구된 콜렉션 스키마를 추가로 연계시킬 수 있다.
제 2 실시 예에 있어서, 적당한 조회 인터페이스를 포함하는 하나 이상의 적당한 인터페이스를 통해 콜렉션에 새로운 레코드들이 추가될 수 있다. 조회 인터페이스는, 조회를 통해 결과 세트를 리턴시키는 것을 지원할 수 있지만, 또한 콜렉션 버전과 연계된 콜렉션 스키마를 리턴시키는 것을 지원할 수도 있다. 추가적으로, 탐색 인터페이스는 하나 이상의 사용자들이 그 콜렉션 스키마를 이용하여, 탐색 인터페이스를 통해 그들을 탐색 관리자에게 제출함에 의해 그 콜렉션에 새로운 레코드들을 추가할 수 있게 한다. 탐색 관리자는 콜렉션에 추가하기 위해 적절한 탐색 컨덕터에 새로운 레코드를 분배할 수 있다. 일부 실시 예들에 있어서, 탐색 관리자는 주어진 구획들의 다수의 사본들에 걸쳐 결과적 일관성(eventual-consistency)을 보장할 수 있으며, 시스템 고장 후에도 데이터를 이용할 수 있음을 보장하기 위해 비-휘발성 저장에 대한 데이터 내구성(data durability)을 보증할 수 있다.
하나 이상의 실시 예에 있어서, 레코드들은 유사한 방식으로 삭제될 수 있다. 조회로부터의 결과 세트는 각 레코드마다 불투명한 고유 ID를 포함할 수 있다. 이러한 고유 ID는 콜렉션의 주어진 버전에 있어서 특정 레코드를 고유하게 식별하는데 필요한 정보를 인코딩하고, 다른 것들 중에서도 콜렉션 이름, 구획 세트 버전 및 고유 레코드 ID 중 하나 이상을 포함할 수 있다. 적절한 허용과 함께, 조회 인터페이스는 고유 레코드 ID에 대응하는 레코드를 삭제하도록 하는 요청을 허용할 수 있다. 이 레코드는 물리적으로 즉시 삭제되지 않을 수 있으며, 삭제 마킹되고, 장래의 응답 세트에 더 이상 포함되지 않을 수 있다.
하나 이상의 다른 실시 예에 있어서, 새로운 콜렉션 스키마 또는 삭제 요청이 조회 인터페이스에 제출되어, 각각 새로운 콜렉션을 생성하거나 기존의 콜렉션을 제거할 수 있다. 이러한 방식으로 생성된 새로운 콜렉션은 엠프티(empty)에서 시작할 수 있는데, 상술한 메카니즘을 포함하는 임의 적당한 메카니즘을 이용하여 레코드들이 추가될 수 있다.
도 8은, 단계 802,804,806,808,812,814,816,818 및 820과, 체크 810을 가진 구획 로딩(800)을 도시한 흐름도이다.
단계 802에서, 감독관은 하나 이상의 구획들이 하나 이상의 탐색 컨덕터들에 로딩되어야 하는지 판정한다.
단계 804에서, 감독관은 종속 관리자에게 구성 요청을 전송하고, 종속 관리자는 하나 이상의 탐색 컨덕터들상에 로딩된 하나 이상의 구획들과 연계된 하나 이상의 구성 패키지를 리턴한다.
단계 806에서, 감독관은 구획들이 어느 탐색 컨덕터에 로딩되어야 하는지를 판정한다. 하나 이상의 실시 예에 있어서, 감독관은, 원하는 페일오버(failover) 기능을 제공하기 위해 하나 이상의 어느 탐색 컨덕터들이 이용될 것인지를 판정한다. 하나 이상의 다른 실시 예들에 있어서, 감독관은 하나 이상의 클러스터에 의해 지각된 작업 로드의 레벨을 보다 고르게 하기 위해 하나 이상의 어느 탐색 컨덕터들이 이용될 것인지를 판정한다.
단계 808에서, 감독관은 하나 이상의 탐색 컨덕터를 포함하는 노드들과 연계된 하나 이상의 노드 관리자에게 지시를 전송한다. 하나 이상의 실시 예들에 있어서, 그 지시는 하나 이상의 탐색 컨덕터들상에 구획들을 로딩하라는 감독관으로부터의 추가 명령을 대기하도록 하나 이상의 노드 관리자에게 통보한다. 다른 실시 예에 있어서, 그 지시는 하나 이상의 탐색 컨덕터들내로 로딩될 하나 이상의 구획들과 연계된 하나 이상의 구성 패키지를 포함할 수 있다. 하나 이상의 다른 실시 예들에 있어서, 그 지시는 메모리내에 새로운 구획을 로딩하는 하나 이상의 탐색 컨덕터들을 준비하도록 하는 명령을 포함할 수 있다.
단계 810에서, 하나 이상의 노드 관리자들은 구획을 로딩하도록 요청받은 임의 노드 리소스를 할당한다.
체크 812에서, 하나 이상의 노드 관리자는, 하나 이상의 구획들을 로딩하기 위해 하나 이상의 소프트웨어 또는 데이터 갱신이 요구되는지를 판정한다.
단계 814에서, 하나 이상의 소프트웨어 또는 데이터 갱신이 요구된다고 하나 이상의 노드 관리자가 판정하였으면, 하나 이상의 노드 관리자들은 하나 이상의 소프트웨어 갱신을 저장 및 분배하는데 적합한 하나 이상의 노드들로부터 하나 이상의 소프트웨어 또는 데이터 갱신을 검색한다. 그 다음, 하나 이상의 노드 관리자는 하나 이상의 검색된 소프트웨어 또는 데이터 갱신의 설치를 진행한다.
단계 816에서, 하나 이상의 노드 관리자는 하나 이상의 구획들을 저장 및 분배하는데 적합한 하나 이상의 노드들로부터 하나 이상의 구획들을 검색한다. 하나 이상의 실시 예들에 있어서, 검색된 구획들은 이전에 인덱스되고 저장된 것들이며, 일단 검색되면 하나 이상의 탐색 컨덕터들과 연계된 메모리내로 로딩된다. 다른 실시 예에 있어서, 검색된 구획들은 검색되기 전에는 인덱스되거나 압축되지 않은 것들로서, 하나 이상의 탐색 컨덕터들과 연계된 메모리에 로딩되기에 앞서, 하나 이상의 탐색 컨덕터들에 의해 인덱스되고 압축된다.
단계 818에서, 하나 이상의 탐색 컨덕터들은 핫빗을 감독관에게 전송하고, 감독관은 하나 이상의 탐색 컨덕턱가 시스템에 이용될 준비가 되었다고 판정한다.
단계 802에서, 감독관은 하나 이상의 탐색 컨덕터들이 탐색 요청을 수신할 준비가 되었다고 하나 이상의 탐색 관리자들에게 통보한다.
도 9a에는, 콜렉션(902)과, 콜렉션'(910)으로 표시된 콜렉션(902)의 갱신이 도시된다. 콜렉션(902)은 적어도 제 1 구획(904)에서부터 최대 n번째 콜렉션(906) 까지로 분할될 수 있으며, 콜렉션'(910)은 적어도 제 1 구획'(912)에서 부터 최대 n번째 구획'(914)까지로 분할될 수 있다.
도 9b에는, 제 1 구획(904) 부터 n번째 구획(906)까지의 제 1 세트를 가지는 제 1 탐색 노드(920)와, 제 1 구획(904)부터 n번째 구획(906)까지의 제 2 세트를 가지는 제 2 탐색 노드(930)가 도시되며, 제 1 탐색 노드(920)와 제 2 탐색 노드(930) 모두는 적어도 하나의 탐색 관리자(940)에 접속될 수 있다. 추가적으로, 제 1 탐색 노드(920), 제 2 탐색 노드(930) 및 탐색 관리자(940)는 하나 이상의 감독관(950)에 접속될 수 있다.
도 9c에는, 감독관(950)으로부터의 지시의 결과로서 탐색 관리자(940)로부터 접속 해제되었던 제 1 탐색 노드(920)가 도시되며, 이때, 제 2 탐색 노드(930)는 여전히 접속을 유지한다. 하나 이상의 실시 예에 있어서, 이것은, 제 1 탐색 노드(920)가 갱신되고 있는 중임에 따라, 탐색 관리자(940)가 콜렉션(902)내의 레코드에 대한 탐색을 실행할 수 있게 한다.
도 9d에는, 콜렉션'(910)을 포함하도록 갱신되는 제 1 탐색 노드(920)가 도시된다.
도 9e에는, 감독관(950)으로부터의 지시의 결과로서 탐색 관리자(940)에 접속된 제 1 구획'(912)부터 n번째 구획'(914)을 가진 제 1 탐색 노드(920)가 도시된다. 감독관(950)은 탐색 관리자(940)로부터 제 2 탐색 노드(930)를 접속 해제시키라는 지시를 전송한다. 하나 이상의 실시 예들에 있어서, 이것은 탐색 관리자(940)가 콜렉션'(910)내의 레코드들에 대한 탐색을 실행할 수 있게 한다.
도 9f에는, 콜렉션'(910)을 포함하도록 갱신되는 제 2 탐색 노드(930)가 도시된다.
도 9g에는, 제 1 구획'(912)부터 n번째 구획'(914) 까지의 제 1 세트를 가진 제 1 탐색 노드(920)와, 제 1 구획'(912)부터 n번째 구획'(914) 까지의 제 2 세트를 가지는 제 2 탐색 노드(930)가 도시되는데, 이때, 제 2 탐색 노드(930)와 탐색 관리자(940)간의 접속은 감독관(950)으로부터의 지시의 결과로서 재수립되었을 수 있다. 이것은, 탐색 관리자(940)가 제 1 탐색 노드(920) 또는 제 2 탐색 노드(930)에 있어서의 콜렉션'(910)내의 레코드들에 대한 탐색을 실행할 수 있게 한다.
도 10에는, 제 1 탐색 노드(1002)와, 제 2 탐색 노드(1004)와, 제 3 탐색 노드(1006)와, 제 4 탐색 노드(1008)와, 제 1 콜렉션을 위한 제 1 구획(1010), 제 2 구획(1012), 제 3 구획(1014) 및 제 4 구획(1016)과, 제 2 콜렉션을 위한 제 1 구획(1020), 제 2 구획(1022), 제 3 구회(1024) 및 제 4 구획(1026)을 가진 탐색 노드 클러스터(1000)가 도시된다.
탐색 노드 클러스터(1000)는 원하는 레벨의 구획 용장성을 제공하도록 배열되며, 그에 따라 하나 이상의 탐색 노드들은 시스템에 추가되거나 시스템으로부터 제거될 수 있다. 추가적으로, 하나 이상의 탐색 노드내에 포함된 구획들은 시간에 따라 가변할 수 있으며, 구획 로딩(800)과 유사한 프로세스에 뒤이어 탐색 노드의 노드 관리자에 의해 로딩되거나 언로딩(unloading)될 수 있다. 탐색 노드 클러스터(1000)내의 구획들을 갱신하거나 변경할 때, 도 9a, 9b, 9c, 9d, 9e, 9f 및 도 9g에 도시된 것과 유사한 방법이 이용될 수 있다.
예시 #1은 탐색 관리자, 분석 에이전트, 각 노드상의 노드 관리자들, 각각이 2개의 탐색 컨덕터들을 가진 8개의 탐색 노드, 감독관, 백업 감독관, 종속 관리자, 백업 종속 관리자, 구획들을 저장 및 분배할 수 있는 노드상의 구획자(노드는 4개의 구획들로 분할된 2개의 콜렉션들, 즉 콜렉션 1 및 콜렉션 2에 대한 정보를 포함함)를 포함하는 인-메모리 데이터베이스 시스템이다. 콜렉션 1내의 레코드에 대한 탐색 조회가 데이터베이스로부터 수신되면, 탐색 관리자는 콜렉션 1과 연계된 구획자를 가진 모든 탐색 컨던터들에게 조회를 전송한다. 탐색 컨덕터들은 각 압축된 레코드들을 비 동기식으로 탐색 및 스코어링하고, 조회내에 정의된 임계치보다 높은 스코어를 가진 압축 결과들의 리스트를 만들고, 결과들의 리스트를 소팅하고, 탐색 관리자에게 압축된 레코드들의 리스트를 리턴하는 작업을 한다. 본 예시에서, 탐색 컨덕터들은 스코어링되어야 하는 필드들만을 압축 해제한다. 탐색 관리자는 각 탐색 컨덕터들로부터 결과 리스트를 수신하고 취합하며, 조회 결과를 컴파일하고, 추가 프로세싱을 위해 그것을 분석 에이전트로 전송한다. 분석 에이전트는 충분히 관련된다고 판정한 레코드들을 조합하고, 프로세싱된 결과 리스트들을 탐색 관리자에게 리턴한다. 그 다음, 탐색 관리자는 시스템 인터페이스를 통해 최종 결과를 리턴한다.
예시 #2는 의미론적 조회(semantic queries)를 실행하고, 데이터베이스내에 분명하게 링크 접속되지 않은 데이터에 대한 링크 접속된 데이터 결과를 리턴할 수 있는 인-메모리 데이터베이스이다. 데이터 또는 레코드 링크 접속은, 단지 분석 에이전트내에 구현될 수 있는 취합 분석 기능의 일 예시이다. 이러한 예시는 링크 접속되지 않은 데이터에 있어서의 데이터 링크를 발견하고, 의미론적 조회들을 실행하고, 의미론적 결과를 리턴할 수 있는 분석 에이전트를 가진 인-메모리 데이터베이스이다. 링크 접속되지 않은 데이터는 다른 데이터 소스로부터의 데이터에 대한 분명한 키 또는 다른 분명한 링크가 없는 상이한 데이터 소스로부터의 데이터이다. 본 예시에 있어서, 플러그 접속 가능 분석 모듈은 데이터 콘텐츠 그 자체에 기초하여, 상이한 데이터 소스에 걸쳐 있는 데이터 링크를 발견/찾기 위해 분석 에이전트내에 개발되고 전개될 수 있을 것이다. 의미론적 탐색 조회가 실행되면, 비배타적 탐색들을 이용하여, 탐색 컨덕터들을 통해 모든 관련 레코드들이 검색되고, 분석 에이전트 모듈의 특정 구현에 기초하여, 레코드 링크가 발견된 분석 에이전트로 전송되고 신뢰 스코어가 할당된다. 이들 동적 링크 접속된 레코드들은 RDF/XML과 같은 의미론적 마크업을 이용하여 또는 다른 의미론적 데이터 표시로 표현될 수 있으며, 사용자에게 리턴될 수 있다. 의미론적 탐색에 대한 이러한 방식은 링크 접속되지 않은 데이터가 동일하게 링크 접속되지 않은 데이터를 이용하는 다른 조회들에 대해 다른 방식들로 링크 접속될 수 있게 한다.
예시 #3은 데이터베이스에 있어서 그래프 형태로 표현되거나 분명하게 링크 접속되지 않은 데이터에 대해 그래프 조회를 실행하고 링크 접속된 데이터 결과를 리턴할 수 있는 인-메모리 데이터베이스이다. 본 예시는, 링크 접속되지 않은 데이터에 있어서 데이터 링크를 발견하고, 그래프 조회를 실행하고, 그래프 조회 결과를 리턴할 수 있는 분석 에이전트를 가진 인-메모리 데이터베이스이다. 그래프 탐색 조회가 실행되면, 모든 관련된 레코드들은 비-배타적 탐색을 이용하여 탐색 컨덕터들을 통해 검색되고, 레코드 링크가 발견된 분석 에이전트로 전송되어, 신뢰 스코어가 할당된다. 이들 동적 링크 접속된 레코드들은 RDF 그래프, 특성 그래프(Property Graph) 또는 다른 그래프 데이터 표현과 같은 그래프 형태로 표현될 수 있으며, 사용자에게 리턴될 수 있다. 그래프 탐색에 대한 이러한 방식은, 링크 접속되지 않은 데이터가 동일하게 링크 접속되지 않은 데이터를 이용하는 다른 조회들에 대해 다른 방식들로 링크 접속될 수 있게 한다.
본 명세서에 개시된 실시 예들과 관련하여 설명된 여러 예시적인 논리 블럭, 모듈, 회로 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어 또는 그들의 결합으로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 호환성을 명확하게 설명하기 위해, 여러 예시적인 구성 요소, 블럭들, 모듈들, 회로들 및 단계들이 그들의 기능성 견지에서 전반적으로 상기에 설명되었다. 그들의 기능성이 하드웨어 또는 소프트웨어로서 구현되는지는 전체 시스템에 대해 부과된 고안 제약 및 특정 애플리케이션에 좌우된다. 당업자라면 특정 애플리케이션마다 여러 방식으로 설명된 기능성들을 구현할 수 있겠지만, 그러한 구현 결정이 본 발명의 범주를 벗어나는 것으로 해석되어서는 안될 것이다.
컴퓨터 소프트웨어로 구현된 실시 예는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어 또는 그들의 임의 조합으로 구현될 수 있다. 코드 세그먼트 또는 기계-실행 가능 명령어는 절차, 기능, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스(class), 또는 명령어, 데이터 구조 또는 프로그램 진술의 임의 조합을 나타낼 수 있다. 코드 세그먼트는 정보, 데이터, 인수(argument), 파라메타 또는 메모리 콘텐츠를 통과 및/또는 수신함에 의해 또 다른 코드 세그먼트 또는 하드웨어 회로에 결합될 수 있다. 정보, 인수, 파라메타, 데이터 등은 메모리 공유, 메시지 패싱(passing), 토큰 패싱, 네트워크 전송들을 포함하는 임의 적절한 수단을 통해 패싱되거나, 전달되거나, 전송될 수 있다.
이들 시스템 및 방법들을 구현하는데 이용되는 실제 소프트웨어 코드 또는 전용 제어 하드웨어는 본 발명을 제한하는 것이 아니다. 따라서, 시스템 및 방법의 동작 및 작용은, 소프트웨어 및 제어 하드웨어가 본 명세서에서의 설명에 기초하여 시스템 및 방법을 구현하도록 고안될 수 있다고 알고 있는 특정 소프트웨어 코드에 대한 참조없이 설명되었다.
소프트웨어로 구현되었을 경우, 그 기능들은 비-일시적 컴퓨터 독출 가능 또는 프로세서-독출 가능 저장 매체상에 하나 이상의 명령 또는 코드로서 저장될 수 있다. 본 명세서에 개시된 방법 또는 알고리즘의 단계들은 컴퓨터 독출 가능 또는 프로세서 독출 가능 저장 매체상에 상주할 수 있는 프로세서-실행 가능 소프트웨어 모듈로 구현될 수 있다. 비-일시적 컴퓨터 독출 가능 또는 프로세서-독출 가능 매체는 컴퓨터 프로그램을 이곳 저곳으로 전달할 수 있는 컴퓨터 저장 매체 또는 유형(tangible) 저장 매체를 포함한다. 비-일시적 프로세서-독출 가능 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의 이용 가능 매체일 수 있다. 예를 들어, 제한을 위한 것은 아니지만, 그러한 비-일시적 프로세서-독출 가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스, 또는 명령어 또는 원하는 프로그램 코드를 데이터 구조 형태로 저장하는데 이용되고 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의 다른 유형의 저장 매체를 구비할 수 있다. 본 명세서에서 이용된 디스크(disk and disc)는 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크(DVD), 플로피 디스크 및 블루-레이(Blu-ray) 디스크(디스크(disk)들은 통상 자기적으로 데이터를 재생하지만, 디스크(disc)는 레이저로 광학적으로 데이터를 재생한다)를 포함한다. 상술한 조합들은 컴퓨터-독출 가능 매체의 범주내에 포함되어야 한다. 또한, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품내에 합체될 수 있는 비-일시적 프로세서-독출 가능 매체 및/또는 컴퓨터-독출 가능 매체상에 코드들 및/또는 명령어들의 하나 또는 임의 조합 또는 세트로서 상주할 수 있다.
개시된 실시 예의 상술한 설명은 당업자가 본 발명을 제조 및 이용할 수 있도록 제공된다. 이들 실시 예들의 여러 수정은 당업자에게는 아주 명백한 것이며, 본 명세서에서 정의된 포괄적인 원리는 본 발명의 사상 및 범주를 벗어나지 않고서 다른 실시 예에 적용될 수 있다. 따라서, 본 발명은 본 명세서에서 설명된 실시 예에 국한되는 것이 아니라, 이하의 청구범위 및 본 명세서에서 개시된 원리 및 신규한 특징과 일치하는 가장 넓은 범주를 부여받는다.

Claims (31)

  1. 인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템으로서,
    데이터베이스의 하나 이상의 콜렉션을 수신하는 것에 응답하여, 콜렉션과 연계된 기계 독출 가능 스키마 파일(schema file)에 기초하여 콜렉션을 압축할지를 판정하고, 스키마 파일에 따라 콜렉션을 하나 이상의 구획(partition)들로 논리적으로 구획하고, 스키마 파일에 따라 하나 이상의 저장 노드에 하나 이상의 구획들을 분배하도록 구성된 프로세서를 구비하는 구획자 노드와;
    저장 노드와 연계된 구획자로부터 수신된 구획을 저장하는 비-일시적 기계-독출 가능 주 메모리(non-transitory machine-readable main memory)를 구비하는 상기 저장 노드와;
    시스템의 클라이언트 디바이스(client device)로부터 탐색 조회를 수신하고 클라이언트 디바이스로부터의 탐색 조회의 수신에 응답하여, 하나 이상의 탐색 컨덕터에 탐색 컨덕터 조회로서 탐색 조회들을 전송하는 프로세서를 구비하는 탐색 관리자 노드 - 탐색 조회는 탐색 조회를 충족시키는 하나 이상의 레코드들과 연계된 파라메타들을 포함하는 기계-독출 가능 컴퓨터 파일임 - 와;
    하나 이상의 구획자들과 연계되고, 탐색 관리자 노드로부터 탐색 컨덕터 조회를 수신하는 것에 응답하여, 탐색 컨덕터 조회에 의해 표시된 하나 이상의 구획들의 세트를 조회하고, 조회된 구획들의 세트에 저장된 하나 이상의 후보 레코드들을 식별하고, 스코어링 알고리즘을 이용하여 각각의 후보 레코드에 대한 제 1 스코어를 계산하고, 임계값을 충족시키는 하나 이상의 후보 레코드들을 포함하는 하나 이상의 조회 결과들의 세트를 탐색 관리자에게 전송하도록 구성된 프로세서를 구비하는 탐색 컨덕터 노드와;
    탐색 관리자 노드로부터 수신한 조회 결과 세트에서의 식별에 응답하여, 조회 결과 세트로부터 도출된 하나 이상의 결과들의 세트를 포함하는 기계-독출 가능 컴퓨터 파일을 자동을 생성하도록 구성된 프로세서를 구비하는 분석 에이전트 노드를 구비하는
    컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    분석 에이전트 노드의 프로세서는, 탐색 관리자에게 하나 이상의 링크들의 세트를 전송하도록 추가 구성되는
    컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    탐색 관리자 노드의 프로세서는, 탐색 조회에 따라 하나 이상의 필드 프로세싱 알고리즘들을 실행하도록 추가 구성되는
    컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    시스템의 하나 이상의 노드들로부터 하나 이상의 핫빗(heartbeat) 신호들을 수신하고, 각 노드로부터 수신된 핫빗 신호에 기초하여 하나 이상의 노드들의 각각에 대한 상태를 판정하는 프로세서를 구비하는 감독관 노드를 더 구비하되,
    각각의 핫빗 신호들은 각 노드의 상태를 나타내는
    컴퓨팅 시스템.
  5. 제 4 항에 있어서,
    각각의 노드는 노드의 상태를 모니터링하도록 구성된 프로세서를 구비하는
    컴퓨팅 시스템.
  6. 제 4 항에 있어서,
    감독관 노드와 연계되고, 비-일시적 기계 독출 가능 저장 매체내에 저장된 기계 독출 가능 종속 트리 파일을 이용하여 감독관에 의해 모니터링된 노드의 노드 구성 상태를 모니터링하는 프로세서를 구비하는 종속 관리자 노드를 더 구비하는
    컴퓨팅 시스템.
  7. 제 6 항에 있어서,
    핫빗 신호의 상태는, 노드 구성 상태를 나타내며,
    감독관 노드는, 노드가 잘못 구성되었음을 노드 상태가 나타내고 있다는 종속 관리자의 판정에 응답하여, 기계 독출 가능 구성 패키지 파일을 전송하는
    컴퓨팅 시스템.
  8. 제 1 항에 있어서,
    탐색 컨덕터는, 하나 이상의 갱신된 결과 레코드들의 세트의 각 후보 레코드에 대한 필드 스코어를 계산하고, 갱신된 결과 레코드들을 탐색 관리자 노드에 전송하되,
    갱신된 결과 레코드들의 세트내의 각 후보들의 제 1 스코어는 탐색 조회에 의해 나타난 임계값을 충족시키는
    컴퓨팅 시스템.
  9. 제 7 항에 있어서,
    탐색 컨덕터는, 데이터 압축 알고리즘에 따라 후보 결과 레코드의 데이터가 압축된다는 판정에 응답하여, 상기 데이터 압축 알고리즘을 이용하여 갱신된 결과 레코드들의 세트에 있어서의 후보 레코드내에 저장된 데이터를 압축 해제하는
    컴퓨팅 시스템.
  10. 제 1 항에 있어서,
    하나 이상의 콜렉션과 연계된 새로운 콜렉션 스키마 파일을 수신하는 조회 인터페이스 모듈을 실행하는 프로세서를 구비하는 노드를 더 구비하되,
    적어도 하나의 탐색 컨덕터 노드는, 새로운 스키마 파일에 따라 탐색 컨덕터와 연계된 하나 이상의 콜렉션들을 자동으로 재구성하도록 구성되는,
    컴퓨팅 시스템.
  11. 제 1 항에 있어서,
    구획자는 스키마 파일에 따라 콜렉션에 저장된 각 레코드들에게 고유 레코드 식별자를 할당하고, 콜렉션내의 각 레코드에 할당된 고유 식별자를 이용하여 콜렉션의 구획들의 각각과 연계된 기계 독출 가능 인덱스 파일을 생성하는
    컴퓨팅 시스템.
  12. 제 11 항에 있어서,
    탐색 관리자 노드는, 탐색 컨덕터 노드에 하나 이상의 새로운 레코드들의 세트를 분배하고,
    탐색 컨덕터는, 하나 이상의 새로운 레코드들의 세트를 수신하는 것에 응답하여, 스키마 파일에 따라 콜렉션의 구획에 새로운 레코드들의 각각을 자동으로 추가하는,
    컴퓨팅 시스템.
  13. 제 11 항에 있어서,
    하나 이상의 탐색 관리자는, 고유 레코드 식별자들의 세트에 대응하는 하나 이상의 레코드들을 삭제하도록 하는 요청을 수신 및 분배하고, 적어도 하나의 탐색 컨덕터에게 상기 요청을 분배하고,
    탐색 컨덕터는 고유 레코드 식별자들의 세트와 연계된 각 레코드를 삭제 마킹(marking for delection)하도록 추가 구성되는
    컴퓨팅 시스템.
  14. 제 13 항에 있어서,
    레코드의 삭제 마킹은 장래 탐색 결과 레코드로부터 상기 레코드를 배제하는
    컴퓨팅 시스템.
  15. 제 11 항에 있어서,
    레코드들의 각각에 연계된 고유 레코드 식별자는 고유 식별자 번호, 콜렉션 버전 번호, 콜렉션 이름 및 구획 버전 번호 중 하나 이상을 구비하는
    컴퓨팅 시스템.
  16. 제 11 항에 있어서,
    탐색 관리자 노드는, 하나 이상의 새로운 레코드들을 구비하는 하나 이상의 새로운 콜레션들의 세트를 수신하고, 스키마 파일에 따라 하나 이상의 탐색 노드에 새로운 콜렉션들의 세트를 전송하고,
    각 탐색 컨덕터 노드는, 하나 이상의 새로운 콜렉션을 수신하는 것에 응답하여, 스키마 파일에 따라 새로운 하나 이상의 레코드들의 세트로 각 탐색 컨덕터 노드에 연계된 하나 이상의 콜렉션들을 자동으로 채우는(populate)
    컴퓨팅 시스템.
  17. 제 1 항에 있어서,
    탐색 관리자는 콜렉션을 제거하라는 요청을 수신하고,
    탐색 관리자 프로세서는 탐색 컨덕터에 콜렉션 삭제 요청을 전송하도록 구성되고,
    탐색 컨덕터는 데이터베이스로부터 콜렉션을 제거하도록 추가 구성되는
    컴퓨팅 시스템.
  18. 제 1 항에 있어서,
    탐색 관리자는 탐색 컨덕터들의 각각으로부터 탐색 결과 레코드들의 각각을 비동기식으로 수신하는
    컴퓨팅 시스템.
  19. 제 1 항에 있어서,
    스키마는 하나 이상의 필드들의 이름들, 필드들이 인덱스되었는지의 여부, 이용된 압축, 필드에 대한 디폴트 스코어링 알고리즘(default scoring algorithm)중 하나 이상에 따른 콜렉션을 기술하는
    컴퓨팅 시스템.
  20. 제 1 항에 있어서,
    분석 에이전트는 여러 레코드들을 보다 완전한 레코드에 연결시키고, 탐색 결과 레코드들에 대한 이웃하는 레코드들에 대한 정보를 판정하도록 추가 구성되는
    컴퓨팅 시스템.
  21. 제 1 항에 있어서,
    탐색 컨덕터는 탐색 관리자로부터 수신된 탐색 조회에 기초하여 탐색 결과의 크기를 제한하는
    컴퓨팅 시스템.
  22. 제 1 항에 있어서,
    감독관은 구획자에게 콜렉션내의 하나 이상의 레코드들을 압축하도록 명령하는
    컴퓨팅 시스템.
  23. 제 1 항에 있어서,
    감독관은, 로딩될 하나 이상의 새로운 구획들을 판정하고, 종속 관리자로부터 노드에 대한 노드 구성을 요청하고,
    감독관은, 종속 관리자로부터의 노드 구성을 검색하도록 노드의 노드 관리자에게 명령하고,
    노드 관리자는 노드의 메모리 리소스를 할당하고 새로운 구획을 로딩하도록 구성되고,
    스키마에 따라 새로운 구획과 연계된 탐색 컨덕터는 감독관에게 구획이 로딩됨을 통보하는
    컴퓨팅 시스템.
  24. 제 1 항에 있어서,
    분석 에이전트 노드는, 탐색 관리자 노드로부터 수신된 조회 결과들의 세트에서, 2 이상의 레코드들을 상관시키는 데이터 링크를 식별하고,
    데이터 링크는 제 2 레코드에 포함된 데이터와 연계되는 제 1 레코드에 포함된 데이터를 상관시키는
    컴퓨팅 시스템.
  25. 컴퓨터 구현 방법으로서,
    인-메모리 데이터베이스를 호스팅하는 시스템의 탐색 관리자 컴퓨터가, 데이터베이스를 조회하는 파라메타들을 포함하는 탐색 조회를 나타내는 이진 데이터를 수신하고 - 시스템은 데이터베이스의 하나 이상의 콜렉션들을 저장하는 주 메모리를 구비하는 하나 이상의 저장 노드들을 구비하고, 각 콜렉션은 하나 이상의 레코드들을 포함함 -;
    상기 컴퓨터가, 탐색 조회에 따라 하나 이상의 탐색 컨덕터 노드들에게 탐색 조회를 전송하고 - 탐색 조회는 조회될 하나 이상의 콜렉션들의 세트를 나타냄 - ;
    상기 컴퓨터가, 하나 이상의 탐색 컨덕터들로부터 탐색 조회를 충족시키는 하나 이상의 레코드들을 포함하는 탐색 결과 세트를 수신하는 것에 응답하여, 하나 이상의 분석 에이전트 노드들에게 탐색 조회에 기초한 탐색 결과들의 세트를 전송하고 - 탐색 결과들의 세트의 각 레코드는 탐색 조회에 있어서의 스코어링 알고리즘에 기반하여 스코어와 연계됨 - ;
    하나 이상의 분석 에이전트 노드들로부터 하나 이상의 데이터 링크들의 세트를 포함하는 컴퓨터 파일을 수신하는 상기 컴퓨터에 응답하여, 상기 컴퓨터가, 분석 에이전트 노드들로부터 수신된 하나 이상의 데이터 링크들의 세트에 따라 탐색 결과들의 세트의 하나 이상의 레코드들을 갱신하는 것을 구비하는
    컴퓨터 구현 방법.
  26. 제 25 항에 있어서,
    컴퓨터는 각 탐색 컨덕터로부터 탐색 결과들의 서브셋을 비동기식으로 수신하는
    컴퓨터 구현 방법.
  27. 제 26 항에 있어서,
    각 탐색 컨덕터 노드로부터 수신된 탐색 레코드들의 각 서브셋은 각 레코드에 대해 계산된 스코어에 따라 랭크(rank)되는
    컴퓨터 구현 방법.
  28. 제 25 항에 있어서,
    조회될 콜렉션들의 세트와 연계된 각 탐색 컨덕터는 탐색 조회의 파라메타들에 따라 탐색 결과들의 하나 이상의 레코드들을 포함하는 하나 이상의 탐색 결과들의 세트를 판정하는
    컴퓨터 구현 방법.
  29. 컴퓨터 구현 방법으로서,
    컴퓨터가 기계 독출 가능 스키마 파일에 따라 탐색 컨덕터로부터 하나 이상의 콜렉션들을 수신하고 - 각각의 콜렉션은 하나 이상의 필드들을 가진 하나 이상의 레코드들의 세트를 구비함 - ;
    상기 컴퓨터가 스키마에 따라 각 콜렉션을 구획하고;
    상기 컴퓨터가 스키마에 따라 구획내의 레코드들을 압축하고;
    상기 컴퓨터가 탐색 컨덕터와 연계된 구획자에 대응하는 각 콜렉션에 있어서의 구획들의 각각을 포함하도록 하나 이상의 연계된 탐색 컨덕터에 구획들의 각각을 분배하는 것을 구비하는
    컴퓨터 구현 방법.
  30. 제 29 항에 있어서,
    상기 컴퓨터가, 스키마에 따라 레코드들의 각 세트내의 레코드들을 단편화(fragmenting)하는 것을 더 구비하는
    컴퓨터 구현 방법.
  31. 제 29 항에 있어서,
    상기 컴퓨터가, 필드 레벨, 레코드 레벨, 구획 레벨, 콜렉션 레벨 및 데이터베이스 레벨을 구성하는 그룹으로부터 선택된 레벨로 레코드들을 압축 해제하는 것을 더 구비하는
    컴퓨터 구현 방법.
KR1020167017517A 2013-12-02 2014-12-02 클러스터링된 인-메모리 데이터베이스의 고안 및 구현 KR20160124743A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361910841P 2013-12-02 2013-12-02
US61/910,841 2013-12-02
PCT/US2014/067999 WO2015084760A1 (en) 2013-12-02 2014-12-02 Design and implementation of clustered in-memory database

Publications (1)

Publication Number Publication Date
KR20160124743A true KR20160124743A (ko) 2016-10-28

Family

ID=53265491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017517A KR20160124743A (ko) 2013-12-02 2014-12-02 클러스터링된 인-메모리 데이터베이스의 고안 및 구현

Country Status (7)

Country Link
US (2) US9430547B2 (ko)
EP (1) EP3077927A4 (ko)
JP (1) JP2017504874A (ko)
KR (1) KR20160124743A (ko)
CN (1) CN106462575A (ko)
CA (1) CA2932402C (ko)
WO (1) WO2015084760A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355152B2 (en) 2013-12-02 2016-05-31 Qbase, LLC Non-exclusionary search within in-memory databases
US9201744B2 (en) 2013-12-02 2015-12-01 Qbase, LLC Fault tolerant architecture for distributed computing systems
US9659108B2 (en) 2013-12-02 2017-05-23 Qbase, LLC Pluggable architecture for embedding analytics in clustered in-memory databases
US9025892B1 (en) 2013-12-02 2015-05-05 Qbase, LLC Data record compression with progressive and/or selective decomposition
US9348573B2 (en) * 2013-12-02 2016-05-24 Qbase, LLC Installation and fault handling in a distributed system utilizing supervisor and dependency manager nodes
US9424294B2 (en) 2013-12-02 2016-08-23 Qbase, LLC Method for facet searching and search suggestions
CN106462575A (zh) 2013-12-02 2017-02-22 丘贝斯有限责任公司 群集内存数据库的设计及实现
US9547701B2 (en) 2013-12-02 2017-01-17 Qbase, LLC Method of discovering and exploring feature knowledge
US20160191665A1 (en) * 2014-12-31 2016-06-30 Samsung Electronics Co., Ltd. Computing system with distributed compute-enabled storage group and method of operation thereof
EP3091449B1 (en) * 2015-05-04 2018-07-25 Deloitte Consulting GmbH Operating a database system
US10120938B2 (en) * 2015-08-01 2018-11-06 MapScallion LLC Systems and methods for automating the transmission of partitionable search results from a search engine
US10268710B2 (en) 2015-10-07 2019-04-23 Oracle International Corporation Relational database organization for sharding
CN106250443A (zh) * 2016-07-27 2016-12-21 福建富士通信息软件有限公司 基于内存全文检索解决数据库复杂文本查询的方法及系统
CN106776848B (zh) * 2016-11-04 2020-04-17 广州市诚毅科技软件开发有限公司 一种数据库查询方法及装置
CN106777225B (zh) * 2016-12-26 2021-04-06 腾讯科技(深圳)有限公司 一种数据的迁移方法和系统
CN106909467B (zh) * 2017-02-28 2021-06-29 郑州云海信息技术有限公司 一种基于微服务架构的分布式事务处理方法
US10685019B2 (en) * 2017-04-14 2020-06-16 Salesforce.Com, Inc. Secure query interface
CN108804446A (zh) * 2017-04-28 2018-11-13 西安科技大市场创新云服务股份有限公司 一种数据检索方法和系统
CN111046034B (zh) * 2018-10-12 2024-02-13 第四范式(北京)技术有限公司 管理内存数据及在内存中维护数据的方法和系统
US11544239B2 (en) 2018-11-13 2023-01-03 Thoughtspot, Inc. Low-latency database analysis using external data sources
US11416477B2 (en) * 2018-11-14 2022-08-16 Thoughtspot, Inc. Systems and methods for database analysis
WO2020126052A1 (en) * 2018-12-21 2020-06-25 Telefonaktiebolaget Lm Ericsson (Publ) Performing operations based on distributedly stored data
CN109977119A (zh) * 2019-03-25 2019-07-05 浙江大学 用于生物电子混合人造器官系统的数据分类及存储方法
US11210018B2 (en) * 2019-05-20 2021-12-28 Honeywell International Inc. Holistic linking of data across data sources
US11106698B2 (en) * 2019-06-11 2021-08-31 Sap Se Multi-master with ownership transfer
US11586620B2 (en) 2019-07-29 2023-02-21 Thoughtspot, Inc. Object scriptability
US11194773B2 (en) 2019-09-12 2021-12-07 Oracle International Corporation Integration of existing databases into a sharding environment
CN111090687B (zh) * 2019-12-24 2023-03-10 腾讯科技(深圳)有限公司 数据处理方法及装置、系统、计算机可读存储介质
US11379495B2 (en) 2020-05-20 2022-07-05 Thoughtspot, Inc. Search guidance
CN112486992B (zh) * 2020-11-30 2023-11-21 深圳供电局有限公司 一种数据存储方法及系统
CN112380275B (zh) * 2021-01-15 2021-07-23 北京金山云网络技术有限公司 数据查询方法、装置及电子设备
US11580111B2 (en) 2021-04-06 2023-02-14 Thoughtspot, Inc. Distributed pseudo-random subset generation
CN113411237B (zh) * 2021-08-18 2021-11-30 成都丰硕智能数字科技有限公司 一种低延迟检测终端状态的方法、存储介质及系统

Family Cites Families (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128660A (en) 1996-03-21 2000-10-03 Hearme Network match maker
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
JP4183311B2 (ja) 1997-12-22 2008-11-19 株式会社リコー 文書の注釈方法、注釈装置および記録媒体
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6266781B1 (en) 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6338092B1 (en) 1998-09-24 2002-01-08 International Business Machines Corporation Method, system and computer program for replicating data in a distributed computed environment
US6959300B1 (en) * 1998-12-10 2005-10-25 At&T Corp. Data compression method and apparatus
US7099898B1 (en) 1999-08-12 2006-08-29 International Business Machines Corporation Data access system
US6738759B1 (en) 2000-07-07 2004-05-18 Infoglide Corporation, Inc. System and method for performing similarity searching using pointer optimization
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US6832373B2 (en) 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6691109B2 (en) * 2001-03-22 2004-02-10 Turbo Worx, Inc. Method and apparatus for high-performance sequence comparison
GB2374687A (en) 2001-04-19 2002-10-23 Ibm Managing configuration changes in a data processing system
US7082478B2 (en) 2001-05-02 2006-07-25 Microsoft Corporation Logical semantic compression
US6961723B2 (en) 2001-05-04 2005-11-01 Sun Microsystems, Inc. System and method for determining relevancy of query responses in a distributed network search mechanism
US20030028869A1 (en) 2001-08-02 2003-02-06 Drake Daniel R. Method and computer program product for integrating non-redistributable software applications in a customer driven installable package
US6954456B2 (en) 2001-12-14 2005-10-11 At & T Corp. Method for content-aware redirection and content renaming
US6829606B2 (en) 2002-02-14 2004-12-07 Infoglide Software Corporation Similarity search engine for use with relational databases
US7421478B1 (en) 2002-03-07 2008-09-02 Cisco Technology, Inc. Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration
US6817558B1 (en) 2002-04-23 2004-11-16 Uop Llc Parallel sizing, dosing and transfer assembly and method of use
US8015143B2 (en) 2002-05-22 2011-09-06 Estes Timothy W Knowledge discovery agent system and method
US20040010502A1 (en) 2002-07-12 2004-01-15 Bomfim Joanes Depaula In-memory database for high performance, parallel transaction processing
US7570262B2 (en) 2002-08-08 2009-08-04 Reuters Limited Method and system for displaying time-series data and correlated events derived from text mining
US7249312B2 (en) 2002-09-11 2007-07-24 Intelligent Results Attribute scoring for unstructured content
US7058846B1 (en) 2002-10-17 2006-06-06 Veritas Operating Corporation Cluster failover for storage management services
CA2744925C (en) * 2003-04-08 2014-06-03 Grant L. Hutchison Method and system for executing a database query
US20040205064A1 (en) 2003-04-11 2004-10-14 Nianjun Zhou Adaptive search employing entropy based quantitative information measurement
US7543174B1 (en) 2003-09-24 2009-06-02 Symantec Operating Corporation Providing high availability for an application by rapidly provisioning a node and failing over to the node
US9009153B2 (en) 2004-03-31 2015-04-14 Google Inc. Systems and methods for identifying a named entity
US7818615B2 (en) 2004-09-16 2010-10-19 Invensys Systems, Inc. Runtime failure management of redundantly deployed hosts of a supervisory process control data acquisition facility
US7403945B2 (en) 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US20060179026A1 (en) 2005-02-04 2006-08-10 Bechtel Michael E Knowledge discovery tool extraction and integration
US20060294071A1 (en) 2005-06-28 2006-12-28 Microsoft Corporation Facet extraction and user feedback for ranking improvement and personalization
US7630977B2 (en) 2005-06-29 2009-12-08 Xerox Corporation Categorization including dependencies between different category systems
US8386463B2 (en) * 2005-07-14 2013-02-26 International Business Machines Corporation Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table
US7681075B2 (en) 2006-05-02 2010-03-16 Open Invention Network Llc Method and system for providing high availability to distributed computer applications
US20070073708A1 (en) 2005-09-28 2007-03-29 Smith Adam D Generation of topical subjects from alert search terms
US7447940B2 (en) 2005-11-15 2008-11-04 Bea Systems, Inc. System and method for providing singleton services in a cluster
US8341622B1 (en) 2005-12-15 2012-12-25 Crimson Corporation Systems and methods for efficiently using network bandwidth to deploy dependencies of a software package
US7899871B1 (en) 2006-01-23 2011-03-01 Clearwell Systems, Inc. Methods and systems for e-mail topic classification
US7519613B2 (en) 2006-02-28 2009-04-14 International Business Machines Corporation Method and system for generating threads of documents
US8726267B2 (en) 2006-03-24 2014-05-13 Red Hat, Inc. Sharing software certification and process metadata
US8892509B2 (en) * 2006-03-28 2014-11-18 Oracle America, Inc. Systems and methods for a distributed in-memory database
US8190742B2 (en) 2006-04-25 2012-05-29 Hewlett-Packard Development Company, L.P. Distributed differential store with non-distributed objects and compression-enhancing data-object routing
US20070282959A1 (en) 2006-06-02 2007-12-06 Stern Donald S Message push with pull of information to a communications computing device
US8615800B2 (en) 2006-07-10 2013-12-24 Websense, Inc. System and method for analyzing web content
US7624118B2 (en) * 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US8122026B1 (en) 2006-10-20 2012-02-21 Google Inc. Finding and disambiguating references to entities on web pages
US7853611B2 (en) 2007-02-26 2010-12-14 International Business Machines Corporation System and method for deriving a hierarchical event based database having action triggers based on inferred probabilities
WO2009005744A1 (en) 2007-06-29 2009-01-08 Allvoices, Inc. Processing a content item with regard to an event and a location
US8332258B1 (en) 2007-08-03 2012-12-11 At&T Mobility Ii Llc Business to business dynamic pricing system
US20090043792A1 (en) * 2007-08-07 2009-02-12 Eric Lawrence Barsness Partial Compression of a Database Table Based on Historical Information
US10698886B2 (en) 2007-08-14 2020-06-30 John Nicholas And Kristin Gross Trust U/A/D Temporal based online search and advertising
GB2453174B (en) 2007-09-28 2011-12-07 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
KR100898339B1 (ko) * 2007-10-05 2009-05-20 한국전자통신연구원 홈 네트워크 환경을 위한 자율적인 오류 처리 시스템 및 그방법
US8396838B2 (en) 2007-10-17 2013-03-12 Commvault Systems, Inc. Legal compliance, electronic discovery and electronic document handling of online and offline copies of data
US8594996B2 (en) 2007-10-17 2013-11-26 Evri Inc. NLP-based entity recognition and disambiguation
US8375073B1 (en) 2007-11-12 2013-02-12 Google Inc. Identification and ranking of news stories of interest
US8294763B2 (en) 2007-12-14 2012-10-23 Sri International Method for building and extracting entity networks from video
US20090216734A1 (en) 2008-02-21 2009-08-27 Microsoft Corporation Search based on document associations
US8326847B2 (en) 2008-03-22 2012-12-04 International Business Machines Corporation Graph search system and method for querying loosely integrated data
WO2009117835A1 (en) 2008-03-27 2009-10-01 Hotgrinds Canada Search system and method for serendipitous discoveries with faceted full-text classification
US8712926B2 (en) 2008-05-23 2014-04-29 International Business Machines Corporation Using rule induction to identify emerging trends in unstructured text streams
US8358308B2 (en) 2008-06-27 2013-01-22 Microsoft Corporation Using visual techniques to manipulate data
US8171547B2 (en) 2008-12-03 2012-05-01 Trend Micro Incorporated Method and system for real time classification of events in computer integrity system
US8874576B2 (en) 2009-02-27 2014-10-28 Microsoft Corporation Reporting including filling data gaps and handling uncategorized data
US20100235311A1 (en) 2009-03-13 2010-09-16 Microsoft Corporation Question and answer search
US8213725B2 (en) 2009-03-20 2012-07-03 Eastman Kodak Company Semantic event detection using cross-domain knowledge
US8161048B2 (en) 2009-04-24 2012-04-17 At&T Intellectual Property I, L.P. Database analysis using clusters
US8055933B2 (en) 2009-07-21 2011-11-08 International Business Machines Corporation Dynamic updating of failover policies for increased application availability
US9165034B2 (en) 2009-10-15 2015-10-20 Hewlett-Packard Development Company, L.P. Heterogeneous data source management
WO2011053755A1 (en) 2009-10-30 2011-05-05 Evri, Inc. Improving keyword-based search engine results using enhanced query strategies
US20110125764A1 (en) 2009-11-26 2011-05-26 International Business Machines Corporation Method and system for improved query expansion in faceted search
US8583647B2 (en) 2010-01-29 2013-11-12 Panasonic Corporation Data processing device for automatically classifying a plurality of images into predetermined categories
US9710556B2 (en) 2010-03-01 2017-07-18 Vcvc Iii Llc Content recommendation based on collections of entities
US8595234B2 (en) 2010-05-17 2013-11-26 Wal-Mart Stores, Inc. Processing data feeds
US9189357B2 (en) 2010-05-25 2015-11-17 Red Hat, Inc. Generating machine state verification using number of installed package objects
US8429256B2 (en) 2010-05-28 2013-04-23 Red Hat, Inc. Systems and methods for generating cached representations of host package inventories in remote package repositories
US8345998B2 (en) 2010-08-10 2013-01-01 Xerox Corporation Compression scheme selection based on image data type and user selections
US8321443B2 (en) * 2010-09-07 2012-11-27 International Business Machines Corporation Proxying open database connectivity (ODBC) calls
US20120102121A1 (en) 2010-10-25 2012-04-26 Yahoo! Inc. System and method for providing topic cluster based updates
US8423522B2 (en) 2011-01-04 2013-04-16 International Business Machines Corporation Query-aware compression of join results
KR101502896B1 (ko) * 2011-02-14 2015-03-24 주식회사 케이티 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
US20120246154A1 (en) 2011-03-23 2012-09-27 International Business Machines Corporation Aggregating search results based on associating data instances with knowledge base entities
US20120310934A1 (en) * 2011-06-03 2012-12-06 Thomas Peh Historic View on Column Tables Using a History Table
KR20120134916A (ko) 2011-06-03 2012-12-12 삼성전자주식회사 저장 장치 및 저장 장치를 위한 데이터 처리 장치
US9104979B2 (en) 2011-06-16 2015-08-11 Microsoft Technology Licensing, Llc Entity recognition using probabilities for out-of-collection data
WO2013003770A2 (en) * 2011-06-30 2013-01-03 Openwave Mobility Inc. Database compression system and method
US9032387B1 (en) 2011-10-04 2015-05-12 Amazon Technologies, Inc. Software distribution framework
US9026480B2 (en) 2011-12-21 2015-05-05 Telenav, Inc. Navigation system with point of interest classification mechanism and method of operation thereof
US9037579B2 (en) 2011-12-27 2015-05-19 Business Objects Software Ltd. Generating dynamic hierarchical facets from business intelligence artifacts
US10908792B2 (en) 2012-04-04 2021-02-02 Recorded Future, Inc. Interactive event-based information system
US10162766B2 (en) * 2012-04-30 2018-12-25 Sap Se Deleting records in a multi-level storage architecture without record locks
US20130290232A1 (en) 2012-04-30 2013-10-31 Mikalai Tsytsarau Identifying news events that cause a shift in sentiment
US8948789B2 (en) 2012-05-08 2015-02-03 Qualcomm Incorporated Inferring a context from crowd-sourced activity data
US9275135B2 (en) 2012-05-29 2016-03-01 International Business Machines Corporation Annotating entities using cross-document signals
US20130325660A1 (en) 2012-05-30 2013-12-05 Auto 100 Media, Inc. Systems and methods for ranking entities based on aggregated web-based content
US9053420B2 (en) 2012-09-25 2015-06-09 Reunify Llc Methods and systems for scalable group detection from multiple data streams
US9703833B2 (en) 2012-11-30 2017-07-11 Sap Se Unification of search and analytics
US9542652B2 (en) 2013-02-28 2017-01-10 Microsoft Technology Licensing, Llc Posterior probability pursuit for entity disambiguation
US20140255003A1 (en) 2013-03-05 2014-09-11 Google Inc. Surfacing information about items mentioned or presented in a film in association with viewing the film
US9104710B2 (en) 2013-03-15 2015-08-11 Src, Inc. Method for cross-domain feature correlation
US8977600B2 (en) * 2013-05-24 2015-03-10 Software AG USA Inc. System and method for continuous analytics run against a combination of static and real-time data
US9087005B2 (en) 2013-05-31 2015-07-21 International Business Machines Corporation Increasing resiliency of a distributed computing system through lifeboat monitoring
US9734221B2 (en) * 2013-09-12 2017-08-15 Sap Se In memory database warehouse
US9424294B2 (en) 2013-12-02 2016-08-23 Qbase, LLC Method for facet searching and search suggestions
CN106462575A (zh) 2013-12-02 2017-02-22 丘贝斯有限责任公司 群集内存数据库的设计及实现
US9223875B2 (en) 2013-12-02 2015-12-29 Qbase, LLC Real-time distributed in memory search architecture
WO2015084724A1 (en) 2013-12-02 2015-06-11 Qbase, LLC Method for disambiguating features in unstructured text
US9025892B1 (en) 2013-12-02 2015-05-05 Qbase, LLC Data record compression with progressive and/or selective decomposition
US9355152B2 (en) 2013-12-02 2016-05-31 Qbase, LLC Non-exclusionary search within in-memory databases
US9201744B2 (en) 2013-12-02 2015-12-01 Qbase, LLC Fault tolerant architecture for distributed computing systems
US9659108B2 (en) 2013-12-02 2017-05-23 Qbase, LLC Pluggable architecture for embedding analytics in clustered in-memory databases

Also Published As

Publication number Publication date
EP3077927A4 (en) 2017-07-12
US20150154200A1 (en) 2015-06-04
JP2017504874A (ja) 2017-02-09
CA2932402A1 (en) 2015-06-11
US20160364471A1 (en) 2016-12-15
EP3077927A1 (en) 2016-10-12
WO2015084760A1 (en) 2015-06-11
CA2932402C (en) 2018-07-31
US9430547B2 (en) 2016-08-30
CN106462575A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
CA2932402C (en) Design and implementation of clustered in-memory database
US10754835B2 (en) High-efficiency deduplication module of a database-management system
CN108351900B (zh) 用于分片的关系数据库组织
US8086810B2 (en) Rapid defragmentation of storage volumes
KR20160124744A (ko) 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법
US20170220647A1 (en) Pluggable architecture for embedding analytics in clustered in-memory databases
US11809382B2 (en) System and method for supporting versioned objects
US10650013B2 (en) Access operation request management
US11288275B2 (en) Technique for fast join processing of dictionary encoded key columns in relational database systems
US11720561B2 (en) Dynamic rebuilding of query execution trees and reselection of query execution operators
US20210132812A1 (en) Parallel upgrade of nodes in a storage system
US10083121B2 (en) Storage system and storage method
US11907197B2 (en) Volume placement failure isolation and reporting
KR101980320B1 (ko) Gpu기반의 빅데이터 검색 질의 병렬 분산처리 방법
US20240119037A1 (en) Techniques for adaptive independent compression of key and non-key portions of database rows in index organized tables (iots)
US20240126750A1 (en) Accelerating query execution by optimizing data transfer between storage nodes and database nodes
US11671494B2 (en) Volume placement based on resource usage
CN111797062B (zh) 数据处理方法、装置和分布式数据库系统

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid