KR20160124744A - 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법 - Google Patents

인-메모리 데이터베이스를 호스팅하는 시스템 및 방법 Download PDF

Info

Publication number
KR20160124744A
KR20160124744A KR1020167017530A KR20167017530A KR20160124744A KR 20160124744 A KR20160124744 A KR 20160124744A KR 1020167017530 A KR1020167017530 A KR 1020167017530A KR 20167017530 A KR20167017530 A KR 20167017530A KR 20160124744 A KR20160124744 A KR 20160124744A
Authority
KR
South Korea
Prior art keywords
node
search
data
computer
manager
Prior art date
Application number
KR1020167017530A
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 KR20160124744A publication Critical patent/KR20160124744A/ko

Links

Images

Classifications

    • 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/18File system types
    • G06F16/182Distributed file systems
    • 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/2393Updating materialised views
    • 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/24554Unary operations; Data partitioning operations
    • 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

Landscapes

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

Abstract

분산형 인-메모리 데이터베이스를 관리하는 인-메모리 데이터베이스 시스템 및 방법은 탐색 컨덕터와 연관된 구획자에 의해 분할된 집합체의 데이터베이스 구획을 저장하고 분배하도록 구성된 모듈을 가진 하나 이상의 노드를 포함한다. 데이터베이스 집합체는 스키마에 따라서 분할된다. 구획, 집합체, 및 레코드는 시스템 인터페이스에 의해 요청될 때, 스키마에 따라서 업데이트되고 제거된다. 슈퍼바이저는 각각의 노드로부터 수신된 핫빗신호에 기초하여 노드 상태를 결정한다. 사용자는 조회를 시스템 인터페이스를 통해 탐색 관리자로 전송할 수 있다. 탐색 관리자는 필드 처리 기술을 적용하고, 탐색 조회를 탐색 컨덕터로 포워딩하며, 한 세트의 결과 레코드를 분석 에이전트로 리턴한다. 분석 에이전트는 탐색 관리자로부터의 후보 결과 레코드에 대해 분석 처리를 수행한다. 집합체와 연관된 구획자를 포함하는 탐색 컨덕터는 구획 내 레코드를 탐색하여 스코어를 매긴 다음, 후보 결과 레코드를 리턴한다.

Description

인-메모리 데이터베이스를 호스팅하는 시스템 및 방법{SYSTEMS AND METHODS FOR HOSTING AN IN-MEMORY DATABASE}
본 개시는 일반적으로 인-메모리 데이터베이스(in-memory database)에 관한 것으로, 더욱 상세하게는 인-메모리 데이터베이스 내에서 패싯 탐색(faceted searching) 및 탐색 제시어에 관한 것이다. 본 개시는 일반적으로 데이터베이스에 관한 것으로, 더욱 상세하게는 인-메모리 데이터베이스에 관한 것이다. 본 개시는 일반적으로 인-메모리 데이터베이스에 관한 것으로, 더욱 상세하게는 인-메모리 데이터베이스에서 사용하는 하드웨어 구성에 관한 것이다. 본 개시는 일반적으로 데이터베이스 아키텍처에 관한 것으로, 더욱 상세하게는 장애 극복(fault tolerant) 시스템 아키텍처에 관한 것이다. 본 개시는 일반적으로 인-메모리 데이터베이스에 관한 것으로, 더욱 상세하게는 인-메모리 데이터베이스 용도로 사용될 수 있는 종속 관리자(dependency manager)에 관한 것이다. 본 개시는 일반적으로 인-메모리 데이터베이스에 관한 것으로, 더욱 상세하게는 플러그가능한 인-메모리 분석 모듈에 관한 것이다. 본 개시는 일반적으로 인-메모리 데이터베이스에 관한 것으로, 더욱 상세하게는 인-메모리 데이터베이스 내에서 비배타적 탐색(non-exclusionary searching)에 관한 것이다. 본 개시는 일반적으로 데이터 압축 및 데이터베이스에 관한 것으로, 더욱 상세하게는 인-메모리 데이터베이스에서 사용하기 위한 압축 방법 및 문서 데이터베이스에 관한 것이다.
패싯 탐색은 사용자가 키워드 탐색부터 시작하게 하여 조직적이고 간단한 방법으로 탐색 결과를 찾게 해주는 증분 탐색(incremental search) 및 탐색 경험을 사용자에게 제공한다. 많은 경우에서, 패싯 탐색은 이러한 탐색 결과의 구성 및 내용에다 유용한 통찰력을 제공할 수 있는 탐색 결과의 맵을 만들어 내기 위해 사용된다. 패싯 탐색은 또한 사용자가 체계적으로 탐색 결과를 아주 간단한 방식으로 좁혀 나가게 해준다. 이렇게 많은 장점 때문에, 패싯 탐색 및 탐색은 매우 다양한 콘텐츠 및 플랫폼 전반으로 급속히 효율적으로 사용되고 있다. 유감스럽게도, 패싯 엔진 작업은 너무 느리고 매우 메모리 집약적인데, 이는 이와 같은 종류의 탐색 엔진이 더 잘 수행되지 못하게 하고 조정되지 못하게 한다.
그러므로, 정확하고, 빠르고 스케일러블한 패싯 탐색 엔진이 여전히 필요하다.
컴퓨터는 방대한 양의 정보를 저장하고 그 정보에 액세스하는데 사용하는 강력한 도구인데 반해, 데이터베이스는 사용자에게 쉬운 액세스를 제공하면서 컴퓨터 시스템에 정보를 저장하기 위한 평범한 메커니즘이다. 전형적으로, 데이터베이스는 정보의 "필드(field)"를 갖는 "레코드(record)"로서 저장되는 정보의 조직화된 집합체(collection)이다(예를 들면, 식당 데이터베이스는 한 구역에 있는 각 식당마다 레코드를 갖고 있는데, 여기서 각 레코드는 이름, 주소, 및 요리 종류 등과 같은 식당의 특성을 서술하는 필드를 담고 있다).
작동 시, 데이터베이스 관리 시스템은 대개의 경우 디스크와 같은 저장 디바이스로부터 데이터를 검색(retrieve)하거나 데이터를 저장 디바이스에 지속시켜야 한다. 유감스럽지만, 그러한 저장 디바이스로의 액세스는 다소 느릴 수 있다. 데이터로의 액세스 속도를 높이기 위해, 데이터베이스는 통상 최근에 사용된 데이터 객체에 할당된 상대적으로 빠른 메모리(예를 들면, 랜덤 액세스 메모리(Random Access Memory, RAM)의 한 부분인 "캐시" 또는 "버퍼 캐시"를 채용하고 있다. 메모리는 전형적으로 반도체 또는 다른 전기적 저장 매체상에서 제공되며 메모리 내에서 유지되는 데이터가 디스크에 저장된 데이터보다 더욱 빠르게 액세스될 수 있게 해주는 고속의 데이터 버스를 통해 CPU(central processing unit)에 연결되어 있다.
이와 같은 문제를 해결하기 위해 시도할 때 취할 수 있는 한 가지 접근방법은 모든 정보를 메모리 내 데이터베이스에 저장하는 것이지만, 컴퓨터 시스템에서 제공되는 메모리는 크기가 한정되어 있으므로, 대규모의 데이터베이스를 다루기 위해 시도할 때는 반드시 직면해야 하는 많은 장애가 있다.
이와 같이, 고속으로 대규모의 데이터를 저장하고 검색하는 개선된 방법에 대한 지속적인 요구가 있다.
컴퓨터는 방대한 양의 정보를 저장하고 그 정보에 액세스하는데 사용하는 강력한 도구인데 반해, 데이터베이스는 사용자에게 쉬운 액세스를 제공하면서 컴퓨터 시스템에 정보를 저장하기 위한 평범한 메커니즘이다. 전형적으로, 데이터베이스는 정보의 "필드"를 갖는 "레코드"로서 저장되는 정보의 조직화된 집합체이다(예를 들면, 식당 데이터베이스는 한 구역에 있는 각 식당마다 레코드를 갖고 있는데, 여기서 각 레코드는 이름, 주소, 및 요리 종류 등과 같은 식당의 특성을 서술하는 필드를 담고 있다).
작동 시, 데이터베이스 관리 시스템은 대개의 경우 디스크와 같은 저장 디바이스로부터 데이터를 검색하거나 데이터를 저장 디바이스에 지속시켜야 한다. 유감스럽지만, 그러한 저장 디바이스로의 액세스는 다소 느릴 수 있다. 데이터로의 액세스 속도를 높이기 위해, 데이터베이스는 통상 최근에 사용된 데이터 객체에 할당된 상대적으로 빠른 메모리(예를 들면, 랜덤 액세스 메모리(Random Access Memory, RAM)의 한 부분인 "캐시" 또는 "버퍼 캐시"를 채용하고 있다. 메모리는 전형적으로 반도체 또는 다른 전기적 저장 매체상에서 제공되며 메모리 내에서 유지되는 데이터가 디스크에 저장된 데이터보다 더욱 빠르게 액세스될 수 있게 해주는 고속의 데이터 버스를 통해 CPU에 연결되어 있다.
이와 같은 문제를 해결하기 위해 시도할 때 취할 수 있는 한 가지 접근방법은 모든 정보를 메모리 내 데이터베이스에 저장하는 것이지만, 컴퓨터 시스템에서 제공되는 메모리는 한정된 크기를 갖고 있으므로, 대규모의 데이터베이스를 다루기 위해 시도할 때는 반드시 직면해야 하는 많은 장애가 있다. 이러한 장애 중 일부의 장애는 필요로 하는 네트워킹, 및 여러 노드들에 요구되는 하드웨어 등을 비롯하여, 데이터베이스를 동작시키는데 필요한 기술을 결정하는 것을 포함할 수 있다.
이와 같이, 고속으로 대규모의 데이터를 저장하고 검색하는 개선된 방법에 대한 지속적인 요구가 있다.
컴퓨터는 방대한 양의 정보를 저장하고 그 정보에 액세스하는데 사용하는 강력한 도구이다. 데이터베이스는 사용자에게 쉬운 액세스를 제공하면서 컴퓨터 시스템에 정보를 저장하기 위한 평범한 메커니즘이다. 전형적으로, 데이터베이스는 정보의 "필드"를 갖는 "레코드"로서 저장되는 정보의 조직화된 집합체이다(예를 들면, 식당 데이터베이스는 한 구역에 있는 식당마다 레코드를 갖고 있는데, 여기서 각 레코드는 이름, 주소, 및 요리 종류 등과 같은 식당의 특성을 서술하는 필드를 담고 있다).
종종, 데이터베이스는 대량의 데이터를 저장하고 액세스할 수 있게 하기 위해 컴퓨터들의 클러스터를 사용할 수 있다. 이것은 컴퓨터 클러스터의 상태가 관리되는 것을 필요로 할 수 있다. 이러한 문제를 해결하려 시도할 때 취할 수 있는 한 가지 접근방법은 시스템을 현장에서 또는 원격으로 유지하는데 필요한 도구에 액세스할 수 있는 전문가팀을 채용하는 것이다. 그러나 그러한 방법을 대규모의 데이터베이스에 사용하려 시도할 때 반드시 직면해야 하는 많은 장애가 있을 수 있다.
이와 같이, 대규모로 장애를 극복하고 높은 가용성을 갖는 개선된 방법에 대한 지속적인 요구가 있다.
패키지 관리 시스템은 시스템 또는 프로세스로부터 소프트웨어, 오퍼레이팅 시스템 컴포넌트, 애플리케이션 프로그램, 지원 라이브러리, 애플리케이션 데이터, 일반 문서, 및 기타 데이터와 같은 임의의 적합한 컴포넌트의 수동 설치 및 업데이트할 필요를 없애줄 수 있는 원격 관리 및 소프트웨어 분산 기술을 통해 구성 시간과 비용을 절감하도록 설계될 수 있다. 패키지 관리 시스템과 관련된 기술에서 하나의 통상적인 접근방법은 레드 햇 패키지 관리자(Red Hat package manager, RPM)일 수 있다. 패키지 관리자는 소프트웨어 프로그램 및 연관된 컴포넌트를 설치 및/또는 업데이트하는 획일적인 방법을 제공할 수 있다.
한 세트의 소프트웨어 또는 데이터 패키지를 설치하기 위해, 패키지 관리자는 위상적 순서로 배열된 패키지 및 그의 종속 패키지를 그래프상에 정리할 수 있다. 그런 다음, 패키지 관리자는 그래프의 하단에서 패키지들을 모으고 이들 패키지를 먼저 설치할 수 있다. 최종적으로, 패키지 관리자는 그래프를 이동하고 다음의 패키지 세트를 설치할 수 있다.
그러나 데이터베이스 관리 시스템과 관련된 기술에서 종래의 접근방법은 일부 패키지 관리자가 단지 시스템에서 소프트웨어 구성을 유지할 수 있지만, 메타데이터 또는 기본 데이터 수집 종속를 지원하지 않을 수 있다는 것을 말한다. 데이터베이스에서, 특히 인-메모리 데이터베이스 또는 기타 분산형 저장 아키텍처에서, 소프트웨어와 같은 데이터에는 가능한 많은 초점을 배치에 맞추고 있으며, 그래서 데이터 배치에 필요한 종속 트리를 유지하는 것이 필수적이다.
종래의 기술은 일반적인 분산형 컴퓨팅 아키텍처 내 하나 이상의 컴퓨터들의 클러스터 전체에다 소프트웨어 컴포넌트 및 연관된 종속를 자동으로 배치하고, 설치하고, 구성하는 것일 수 있다. 필요한 것은 인-메모리 데이터베이스 및 다른 분산형 데이터 플랫폼과 같은 분산형 컴퓨팅 아키텍처에서, 분산형 데이터베이스의 기본 데이터 저장소의 데이터, 메타데이터, 및 소프트웨어의 배치, 설치 및 구성을 자동화하는 해결책이다. 더욱이, 종래의 해결책은 정적인 서비스 및 데이터 세트를 배치하는데 초점을 맞추고 있기 때문에, 종래의 시스템은 서비스 또는 데이터 장애를 검출하는 능력이 부족하며 그래서 데이터, 메타데이터 및 소프트웨어의 패키지를 분산형 시스템 내 다른 가용 노드에 옮겨 놓음으로써 이와 같은 장애에서 자동으로 복구한다.
전술한 이유 때문에, 데이터 관리 시스템에서 시스템 구성 및 종속의 성공적인 실행을 보장/유지하는 개선된 패키지 관리 애플리케이션이 필요하다.
전통적인 데이터베이스는 사용자가 엔티티(entity)와 관련 있는 한편의 정보를 찾을 수 있게 해주며, 수백만 또는 수십억 레코드가 그 엔티티를 서술할 수 있지만 일반적으로 레코드들은 공식적인 외래 키 관계 없이는 함께 링크되지 않는다. 비공식적이거나, 신뢰할 수 없거나 또는 존재하지 않은 외래 키 관계를 갖는 레코드들의 대규모 집합체가 존재한다. 이것은 단일 엔티티와 관련 있는 모든 레코드를 함께 가져오는 것을 매우 어렵게 만든다.
전통적인 접근방법은 그러한 집합체 내의 데이터를 모두 미리 링크시켜 놓아서 하나의 레코드를 찾으면 사용자를 레코드들의 집합체에 바로 연결시킬 것이다. 이러한 전통적인 접근방법은 뚜렷한 두 가지 문제가 있다.
첫 번째로, 레코드들의 대형 집합체를 미리 링크하는 것은 상당한 시간을 소요하는 집약적인 프로세스이다. 이것은 새로운 레코드를 링크된 집합체에다 통합하는데 소요될 수 있는 시간에 상당한 지연이 부과되어 그 집합체 내 데이터의 영원성에 악 영향을 미친다.
두 번째로, 정의에 의해 데이터를 미리 링크하는 것은 그러한 사전 링크 작업을 수행하는데 사용된 모델에 국한되며, 이는 레코드가 얼마나 강하게 또는 약하게 링크되는지에 관한 파라미터를 변경하는 시스템 사용자의 능력을 대폭적으로 줄어들게 한다. 미리 링크하는 것은 또한 미리 링크하는 단계의 시점에서 이용 가능한 데이터로 국한되기도 한다.
다른 접근방법은 데이터의 임의의 미리 링크하기를 방지하는 것이 아니라, 오히려 사용자 조회에 응답하여 실시간으로 링크하거나 또는 "그때그때 링크"하는 것이다. 이러한 접근방법은 새로운 레코드를 집합체에 바로 참여하게 해주어 영속성이라는 임의의 문제를 방지하게 된다. 또한 이 접근방법에 의하면 링킹 프로세스에서 가변 알고리즘 및 파라미터를 사용하여 링킹을 수행하는데 각종의 모델이 적용될 수 있다. 이러한 접근방법에 대한 기존의 단점은 데이터 집약적 조회를 시행하고 허용 가능한 양방향 응답 시간을 달성하는 능력이 있다. 이것은 집합체를 분석 기능이 내장된 인-메모리 데이터베이스에다 배치함으로써 극복될 수 있다.
그러므로, 본 기술에서 데이터가 시스템 내부에서 관리되고, 준비되고 저장되는 방법을 변경하지 않고 데이터를 실시간으로 처리하도록 계획된, 복수의 고객화된 분석 모듈을 지원할 수 있는 융통성 있는 데이터베이스 아키텍처가 필요하다.
구조화된 데이터 및 반쯤 구조화된 데이터로부터 데이터에 액세스하는 것은 구조화되지 않은 데이터보다 더 간편하고, 더 정확하고, 더 빠를 수 있다. 핵심 데이터 필드를 표시함으로써 구조화된 데이터 및 반쯤 구조화된 데이터를 사용하여 탐색을 수행할 때, 아주 짧은 시간 프레임 내에 매우 정확한 결과를 구하는 것이 가능하지만, 조회와 관련 있는 많은 레코드가 결과 리스트로부터 배제되어 있을 수 있다는 것 또한 가능하다. 이것은 레코드가 상이한 스키마를 가진 상이한 집합체에 저장되어 있을 수 있거나 또는 레코드가 조회에서 명시된 필드 중 일부 필드에 대응하는 몇몇 빠진 필드 또는 널(null) 필드를 가질 수 있기 때문에 일어날 수 있다.
그러므로, 스키마가 상이한 레코드들을 섞어 일치시키는 개선된 불러오는 기능을 갖는 탐색 방법이 필요하다.
컴퓨터는 방대한 양의 정보를 저장하고 그 정보에 액세스하는데 사용하는 강력한 도구인데 반해, 데이터베이스는 사용자에게 쉬운 액세스를 제공하면서 컴퓨터 시스템에 정보를 저장하기 위한 평범한 메커니즘이다. 전형적으로, 데이터베이스는 정보의 "필드"를 갖는 "레코드"로서 저장되는 정보의 조직화된 집합체이다(예를 들면, 식당 데이터베이스는 한 구역에 있는 식당마다 레코드를 갖고 있는데, 여기서 각 레코드는 이름, 주소, 및 요리 종류 등과 같은 식당의 특성을 서술하는 필드를 담고 있다).
종종, 데이터베이스는 대량의 데이터를 저장하고 액세스할 수 있게 하기 위해 컴퓨터들의 클러스터를 사용할 수 있다. 이것은 대량의 정보 저장 공간을 필요로 할 수 있다. 종종, 정보를 호스팅하는데 필요한 저장 공간 양을 줄이기 위해 압축이 사용될 수 있지만, 이것은 일반적인 많은 압축 방법이 전체 레코드를 필요로 하므로 또는 많은 레코드가 액세스될 때마다 압축해제되어야 하므로 계산 부하를 상당히 증가시킬 수 있다.
이와 같이, 고속으로 대규모로 데이터를 저장하고 검색하는 개선된 방법에 대한 지속적인 요구가 있다.
본 명세서에는 시스템의 분산형 컴퓨팅 아키텍처 내부에서 호스팅되는 인-메모리 데이터베이스의 데이터 레코드를 저장하고, 조작하고, 검색하기 위한 컴퓨팅 디바이스 및 소프트웨어 모듈의 임의의 적합한 조합을 포함할 수 있는 인-메모리 데이터베이스를 호스팅하는 시스템 아키텍처가 개시된다. 시스템의 컴퓨팅 하드웨어에 의해 실행되는 소프트웨어 모듈은 시스템 인터페이스, 탐색 관리자, 분석 에이전트, 탐색 컨덕터(search conductor), 구획자(partitioner), 데이터 집합체, 슈퍼바이저, 종속 관리자를 포함할 수 있으며, 이러한 소프트웨어 모듈의 임의의 적합한 조합은 인-메모리 데이터베이스를 호스팅하는 시스템 아키텍처에서 존재할 수 있다.
소프트웨어 모듈을 실행하는 노드는 대량의 데이터 세트에 대해 인-메모리 저장, 조회 및 검색을 실행할 수 있도록 하기 위해 레코드에 저장된 데이터를 압축할 수 있다. 압축 및 압축해제는 거의 데이터베이스의 임의의 레벨(예를 들면, 데이터베이스 레벨, 집합체 레벨, 레코드 레벨, 필드 레벨)에서 수행될 수 있다. 소프트웨어 모듈을 실행하는 노드는 분산형 인-메모리 데이터베이스에서 자바스크립트 객체 표시법(JavaScript Object Notation, JSON)과 같은 복잡한 데이터 구조체를 저장하기 위한 자원을 제공할 수 있다. 인-메모리 데이터베이스 시스템의 실시예는 장애 서비스를 모니터링하고 복구할 수 있는 시스템의 시스템 컴포넌트 및 각종 하드웨어 및 소프트웨어 모듈의 분산형 아키텍처로 인해 장애를 극복할 수 있다. 장애 극복은 다른 기술 중에서도, 시스템 컴포넌트 리던던시, 및 시스템 컴포넌트에 대한 자동 복구 절차를 포함할 수 있다. 인-메모리 데이터베이스는 스코어링 방법(scoring method)을 이용하여 데이터의 스코어를 매김으로써 데이터에 효과적이고 효율적으로 질의(query)할 수 있다. 데이터의 스코어를 매기기 위해 사용되는 스코어링 방법에 따라서 탐색 결과의 순위가 평가될 수 있고, 그럼으로써 조회를 실행하는 사용자 및/또는 노드는 하나의 조회에서부터 다음 조회까지 더 조정되고 문맥적으로 관련성 있는 방법으로 데이터를 활용할 수 있게 된다. 분석 에이전트를 실행하는 노드는 데이터의 인-메모리 데이터베이스 이미지에 저장된 레코드에 관해 다양한 향상된 분석을 수행할 수 있다. 일부 사례에서, 분석은 탐색 컨덕터에 의한 한 세트의 탐색 조회 결과와 함께 검색되는 레코드에 대해 수행될 수 있다.
일 실시예에서, 인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템은 데이터베이스의 하나 이상의 레코드의 집합체를 수신함에 응답하여, 상기 집합체와 연관된 머신 판독 가능한 스키마 파일에 기초하여 상기 집합체를 압축할지를 결정하고, 상기 스키마 파일에 따라서 상기 집합체를 하나 이상의 구획으로 논리적으로 분할하고, 상기 스키마 파일에 따라서 상기 하나 이상의 구획을 하나 이상의 저장 노드에 분배하도록 구성된 프로세서를 포함하는 구획자 노드(partitioner node); 상기 저장 노드와 연관된 상기 구획자로부터 수신한 구획을 저장하는 비일시적 머신 판독 가능한 주 메모리를 포함하는 저장 노드; 상기 시스템의 클라이언트 디바이스로부터 탐색 조회를 수신하고, 상기 클라이언트 디바이스로부터 상기 탐색 조회를 수신함에 응답하여 상기 탐색 조회를 탐색 컨덕터 조회(search conductor query)로서 하나 이상의 탐색 컨덕터로 전송하는 프로세서를 포함하는 탐색 관리자 노드 - 상기 탐색 조회는 상기 탐색 조회를 만족하는 하나 이상의 레코드와 연관된 파라미터를 포함하는 머신 판독 가능한 컴퓨터 파일임 -; 하나 이상의 구획자와 연관되며, 상기 탐색 관리자 노드로부터 탐색 컨덕터 조회를 수신함에 응답하여, 상기 탐색 컨덕터 조회에 의해 표시된 한 세트의 하나 이상의 구획에 조회하고, 상기 질의된 구획 세트에 저장된 하나 이상의 후보 레코드를 식별하고, 스코어링 알고리즘(scoring algorithm)을 이용하여 각각의 후보 레코드에 대해 제 1 스코어를 계산하고, 상기 탐색 관리자에게 문턱 값을 만족하는 하나 이상의 후보 레코드를 포함하는 한 세트의 하나 이상의 조회 결과를 전송하도록 구성된 프로세서를 포함하는 탐색 컨덕터 노드; 및 상기 탐색 관리자 노드로부터 수신된 상기 조회 결과 세트에서 둘 이상의 레코드와 상관하는 데이터 연계를 식별하는 것에 응답하여, 상기 조회 결과 세트로부터 도출되는 한 세트의 하나 이상의 결과를 포함하는 머신 판독 가능한 컴퓨터 파일을 자동 생성하도록 구성된 프로세서를 포함하는 분석 에이전트 노드 - 데이터 연계는 제 2 레코드에 포함된 데이터와 연관된 제 1 레코드에 포함된 데이터와 상관함 - 를 포함한다.
다른 실시예에서, 컴퓨터 구현된 방법은 인-메모리 데이터베이스를 호스팅하는 시스템의 탐색 관리자 컴퓨터에 의해, 상기 데이터베이스에 질의하는 파라미터를 포함하는 탐색 조회를 표현하는 이진 데이터를 수신하는 단계 - 상기 시스템은 상기 데이터베이스의 하나 이상의 집합체를 저장하는 주 메모리를 포함하는 하나 이상의 저장 노드를 포함하고, 각각의 집합체는 하나 이상의 레코드를 포함함 -; 상기 컴퓨터에 의해, 상기 탐색 조회를 상기 탐색 조회에 따라서 하나 이상의 탐색 컨덕터 노드로 전송하는 단계 - 상기 탐색 조회는 질의될 하나 이상의 집합체의 한 세트를 표시함 -; 상기 컴퓨터에 의해, 상기 하나 이상의 탐색 컨덕터로부터 상기 탐색 조회를 만족하는 하나 이상의 레코드를 포함하는 하나 이상의 탐색 결과의 한 세트를 수신함에 대응하여 상기 탐색 조회에 기초하여 상기 탐색 결과 세트를 하나 이상의 분석 에이전트로 전송하는 단계 - 상기 탐색 결과 세트의 각각의 레코드는 상기 탐색 조회 내 스코어링 알고리즘에 기초하여 스코어와 연관됨 -; 및 상기 컴퓨터가 상기 하나 이상의 분석 에이전트 노드로부터 한 세트의 하나 이상의 데이터 연계를 포함하는 컴퓨터 파일을 수신함에 따라, 상기 컴퓨터에 의해, 상기 분석 에이전트 노드로부터 수신된 상기 하나 이상의 데이터 연계 세트에 따라서 상기 탐색 결과 세트의 상기 하나 이상의 레코드를 업데이트하는 단계를 포함한다.
다른 실시예에서, 컴퓨터 구현된 방법은 컴퓨터에 의해, 스키마 파일에 따라서 탐색 컨덕터로부터 하나 이상의 집합체를 수신하는 단계 - 각각의 상기 집합체는 하나 이상의 필드를 가진 하나 이상의 레코드의 한 세트를 포함함 -; 상기 컴퓨터에 의해, 상기 스키마에 따라서 각각의 집합체를 분할하는 단계; 상기 컴퓨터에 의해, 상기 스키마에 따라서 상기 구획 내 상기 레코드를 압축하는 단계; 및 상기 컴퓨터에 의해, 각각의 상기 구획을 하나 이상의 연관된 탐색 컨덕터에 분배하여 각각의 상기 구획을 상기 탐색 컨덕터와 연관된 상기 구획자에 대응하는 각각의 집합체 내에 포함시키는 단계를 포함한다.
클러스터링된 인-메모리 데이터베이스 내 패싯 탐색을 위한 방법이 개시된다. 일부 실시예에서, 개시된 패싯 탐색 방법 및 탐색 엔진은 탐색 제시어는을 생성하기 위해 사용될 수 있다. 패싯 탐색 엔진은 부분적인 접두사 퍼지 매칭을 위한 문자 또는 비문자 키 구성 알고리즘을 사용하는 것이 가능할 수 있다. 개시된 탐색 엔진은 탐색 제시어를 생성하기 위해 대량의 비구조화된 데이터를 실시간으로 처리할 수 있다. 개시된 패싯 탐색 엔진을 지원할 수 있는 인-메모리 데이터베이스의 시스템 아키텍처는 시스템 인터페이스, 탐색 관리자, 분석 에이전트, 탐색 컨덕터, 구획자, 집합체, 슈퍼바이저, 종속 관리자, 또는 임의의 적합한 조합의 하나 이상의 것을 비롯한 모듈 및 클러스터의 임의의 적합한 조합을 포함할 수 있다. 일부 실시예에서, 사용자가 적합한 탐색 창에다 타이핑을 시작할 때, 시스템은 사용자에 의해 탐색 박스상에서 타이핑되는 단어의 퍼지 일치로부터 도출될 수 있는 하나 이상의 제안을 자동으로 생성한다. 시스템은 하나 이상의 레코드에 대해 조회의 스코어를 매길 수 있는데, 이 경우 시스템은 레코드의 하나 이상의 필드의 일치를 스코어를 매길 수 있고 그런 다음 레코드 대 조회의 전체 일치에 대한 스코어를 결정할 수 있다. 시스템은 스코어가 미리 정의된 허용 문턱치 이상인지를 결정할 수 있고, 문턱치는 탐색 조회에서 정의될 수 있거나 디폴트 값일 수 있다.
처리하는 동안, 여러 특이성 레벨을 가진 패싯이 문서로부터 추출되고, 명료화되고, 정규화되고, 주제별로 그룹화되고 인덱싱되어 일시적으로 지식 베이스에 추가될 수 있다. 일부 실시예에서, 추출된 패싯은 탐색 결과를 맴핑하기 위해 사용될 수 있다. 다른 실시예에서, 퍼지 매칭 알고리즘은 집합체에 일시 저장된 패싯을 시스템에 의해 생성되는 하나 이상의 조회와 비교하고 가장 관련 있는 레벨 1 패싯을 포함할 수 있는 윈도우를 드롭 다운할 수 있고, 탐색 제시어를 사용자에게 서비스할 수 있으며, 사용자는 여러 레벨의 패싯을 선택하여 탐색 조회를 축소할 수 있다.
일 실시예에서, 컴퓨터 구현된 방법은 컴퓨터에 의해, 텍스트 기반의 정보를 표현하는 데이터를 포함하는 코퍼스(corpus)로부터 하나 이상의 패싯을 추출하는 단계; 상기 컴퓨터에 의해, 상기 코퍼스로부터 추출된 각각의 상기 하나 이상의 패싯을 명료화하는 단계; 상기 컴퓨터에 의해, 상기 하나 이상의 패싯과 연관된 하나 이상의 인덱스를 각기 생성하는 단계; 상기 컴퓨터에 의해, 상기 연관된 인덱스에 기초하여 데이터베이스의 하나 이상의 레코드를 포함하는 구획의 레코드로부터 각각의 상기 패싯을 검색하는 단계 - 상기 데이터베이스의 집합체는 하나 이상의 구획을 포함하고, 각각의 패싯은 데이터의 상기 하나 이상의 레코드와 관련하여 상기 데이터베이스에 저장된 데이터의 계층적 관계를 표시함 -; 및 상기 컴퓨터에 의해, 각각의 상기 패싯에 기초하여 제안된 탐색 조회를 생성하는 단계를 포함한다.
본 명세서에서는 인-메모리 데이터베이스를 호스팅하는 시스템의 노드의 연결 구성이 개시되며, 노드는 복수의 연결 대역폭 및 지연 계층을 갖고, 제 1 대역폭 계층은 제 2 대역폭 계층보다 높은 대역폭과 연관될 수 있고, 제 2 대역폭 계층은 제 3 대역폭 계층보다 높은 대역폭과 연관될 수 있고, 제 3 대역폭 계층은 제 4 대역폭 계층보다 높은 대역폭과 연관될 수 있으며, 제 1 지연 계층은 제 2 대역폭 계층보다 낮은 지연과 연관될 수 있다.
본 명세서에서는 복수의 네트워크 세그먼트를 갖는 분산형 컴퓨팅 시스템이 개시되며, 각각의 네트워크 세그먼트는 분산형 인-메모리 데이터 플랫폼에 적용되는 대역폭 및 지연 계층을 갖는다. 시스템은 적합한 개수의 네트워크 세그먼트를 갖는 연결 구성을 포함하고, 네트워크 세그먼트는 시스템 내부 및 외부의 다수의 서버 및 시스템 내 서버들의 클러스터에 연결될 수 있다. 시스템의 서버는 다른 것들 중에서도, 탐색 관리자, 분석 에이전트, 탐색 컨덕터, 종속 관리자, 슈퍼바이저, 및 구획자와 같은 소프트웨어 모듈을 포함할 수 있다. 서버 및 모듈은 요구된 네트워크 세그먼트에 연결되어 요구된 필요한 대역폭 및 지연을 달성할 수 있다. 서버 및 모듈은 요구된 네트워크 세그먼트에 연결되어 네트워크 트래픽의 여러 클래스를 분리하여, 트래픽의 한 클래스가 서로 간섭하지 않도록 할 수 있다.
일 실시예에서, 인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템은 집합체의 하나 이상의 구획을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 복수의 저장 노드 - 각각의 저장 노드에 의해 저장된 상기 집합체는 데이터베이스의 하나 이상의 레코드를 포함하고, 각각의 저장 노드의 상기 저장 매체는 주 메모리를 포함함 - ; 사용자 노드로부터 수신된 탐색 조회를 이용하여 하나 이상의 탐색 컨덕터 조회를 생성하고, 상기 하나 이상의 탐색 컨덕터 조회를 상기 탐색 조회에 따라서 하나 이상의 탐색 컨덕터 노드로 전송하고, 하나 이상의 탐색 결과 세트를 수신함에 대응하여 상기 탐색 조회에 따라서 상기 하나 이상의 탐색 결과 세트를 하나 이상의 분석 에이전트 노드에 포워딩하는 프로세서를 포함하는 탐색 관리자 노드; 상기 탐색 관리자 노드로부터 한 세트의 탐색 결과를 수신함에 대응하여 하나 이상의 분석 알고리즘을 실행하는 프로세서를 포함하는 분석 에이전트 노드; 상기 탐색 관리자로부터 탐색 컨덕터 조회를 수신함에 응답하여 상기 탐색 컨덕터 조회에 따라 저장 노드의 상기 데이터베이스 레코드의 상기 집합체에 조회하고, 상기 하나 이상의 탐색 결과 세트를 식별함에 응답하여 상기 하나 이상의 탐색 결과 세트를 상기 탐색 관리자 노드로 전송하는 프로세서를 포함하는 탐색 컨덕터 노드 - 각각의 탐색 결과는 상기 탐색 컨덕터 조회를 만족하는 데이터를 포함하는 데이터베이스 레코드에 대응함 - ; 및 각각의 네트워크 세그먼트를 통해 통신하는 하나 이상의 노드들 사이의 하나 이상의 연결을 포함하는 복수의 네트워크 세그먼트 - 제 1 네트워크 세그먼트는 상기 탐색 관리자, 상기 탐색 컨덕터, 및 상기 분석 에이전트를 포함함 - 를 포함한다.
본 명세서에서는 임의의 분산형 컴퓨팅 시스템과 함께 사용하기에 적합한 장애 극복 아키텍처가 개시된다. 장애 극복 아키텍처는 시스템의 서브-컴포넌트가 장애를 겪는 동안 요구된 시스템 기능성, 중복성 및 시스템 신뢰성을 유지하는 임의의 적합한 개수의 노드 전반에 분산된 임의의 적합한 개수의 슈퍼바이저, 종속 관리자, 노드 관리자, 및 임의의 다른 모듈을 포함할 수 있다. 본 개시는 임의의 분산형 컴퓨팅 시스템과 함께 사용하기에 적합한 장애 극복 아키텍처를 기술한다. 분산형 컴퓨팅 시스템의 예는 인-메모리 데이터베이스일 수 있지만, 다른 분산형 컴퓨팅 시스템이 본 명세서에서 기술된 특징을 구현할 수 있다. 본 명세서에서 기술된 시스템 및 방법은 장애를 검출하고 처리 모듈 및 모듈의 연관된 각각의 종속(소프트웨어, 데이터, 메타데이터 등)를 모듈 및/또는 종속를 호스팅할 수 있는 분산형 컴퓨팅 시스템 내 다른 컴퓨터 노드로 이동시켜 검출된 장애로부터 복구함으로써, 분산형 컴퓨팅 시스템에 장애 극복 특징을 제공한다.
일 실시예에서, 컴퓨터 구현된 방법은 슈퍼바이저 모듈을 실행하는 프로세서를 포함하는 컴퓨터에 의해, 노드에 저장된 하나 이상의 소프트웨어 모듈을 모니터링하는 노드 관리자에 의해 생성된 핫빗 신호를 모니터링하는 단계 - 상기 핫빗 신호는 상기 노드 관리자에 의해 모니터링되는 각각의 소프트웨어 모듈의 상태를 표시하는 이진 데이터를 포함함 - ; 상기 컴퓨터에 의해, 상기 노드의 상기 노드 관리자로부터 수신된 상기 핫빗 신호에 기초하여 상기 노드의 상기 하나 이상의 소프트웨어 모듈에서 장애 소프트웨어 모듈을 검출하는 단계; 상기 컴퓨터에 의해, 상기 장애 소프트웨어 모듈을 검출함에 응답하여, 상기 노드에게 상기 장애 소프트웨어 모듈을 복구하라는 지시를 상기 노드의 상기 노드 관리자에 자동 전송하는 단계; 및 상기 컴퓨터에 의해, 상기 노드 관리자가 상기 노드 관리자로부터 수신된 상기 핫빗 신호에 기초하여 상기 모듈을 성공적으로 복구하였는지를 결정하는 단계를 포함한다.
다른 실시예에서, 컴퓨터 구현된 방법은 컴퓨터에 의해, 핫빗 신호를 계속 슈퍼바이저 노드로 전송하는 단계; 상기 컴퓨터에 의해, 복구 지시를 수신할 때 장애 모듈을 복구하는 단계; 및 상기 컴퓨터에 의해, 상기 컴퓨터가 상기 모듈이 복구된 것을 검출할 때 복구된 상태 신호를 상기 슈퍼바이저 노드로 전송하는 단계를 포함한다.
다른 실시예에서, 장애 극복 분산형 컴퓨팅 시스템은 핫빗 신호를 슈퍼바이저 노드로 전송하고 노드에 설치된 하나 이상의 소프트웨어 모듈의 실행을 모니터링하는 프로세서를 포함하는 하나 이상의 노드; 및 상기 하나 이상의 노드로부터 수신된 하나 이상의 핫빗 신호를 모니터링하고 각각의 핫빗 신호에 기초하여 각각의 노드의 상태를 결정하는 프로세서를 포함하는 하나 이상의 슈퍼바이저 노드를 포함한다.
본 명세서에서는 임의의 적합한 데이터베이스 또는 탐색 엔진의 여러 소프트웨어, 데이터 또는 메타데이터 패키지를 설치하고, 업데이트하고, 구성하는 프로세스 동안 종속를 처리하는 시스템 및 방법이 개시된다. 시스템 및 방법은 인-메모리 데이터베이스 또는 다른 형태의 분산형 데이터 플랫폼을 호스팅하는 분산형 시스템과 같은 분산형 컴퓨팅 시스템의 일차 데이터저장소에 저장된 각종 데이터, 메타데이터, 및 소프트웨어를 배치하고, 설치하고, 구성하는 프로세스를 자동화할 수 있다. 예시적인 실시예는 종속 관리자(구성 관리)가 슈퍼바이저(시스템 관리)에 직접 링크될 수 있는 시스템 및 방법을 기술할 수 있고, 여기서 슈퍼바이저는 완전 기능적인 방식으로 시스템을 유지할 수 있고, 시스템에서 변동을 일으키는 구성 요청을 받아들 일수 있다.
일 실시예에서, 컴퓨터 구현된 방법은 분산형 컴퓨팅 시스템의 컴퓨터에 의해, 시스템의 타겟 노드와 연관된 머신 판독 가능한 배치가능 패키지 파일의 요청을 종속 트리에 따라서 상기 시스템의 하나 이상의 노드와 각기 연관된 하나 이상의 배치가능 패키지 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 종속 관리자 노드로 전송하는 단계; 상기 컴퓨터에 의해, 상기 종속 노드로부터 상기 배치가능 패키지 파일을 수신함에 응답하여 상기 배치가능 패키지 파일을 상기 타겟 노드로 전송하는 단계 - 상기 타겟 노드와 연관된 상기 배치가능 패키지 파일은 상기 종속 트리에 기초하여 한 세트의 하나 이상의 종속 파일을 포함함 -; 및 상기 컴퓨터에 의해, 상기 타겟 노드에게 상기 배치가능 패키지 내 상기 종속 세트를 상기 타겟 노드상에 설치하라고 명령하는 단계를 포함한다.
다른 실시예에서, 컴퓨터 구현된 방법은 컴퓨터에 의해, 슈퍼바이저 노드로부터 타겟 노드를 구성하라는 요청을 수신함에 따라 상기 타겟 노드와 연관된 종속 트리를 이용하여 상기 타겟 노드에 설치될 한 세트의 하나 이상의 종속 파일을 결정하는 단계; 상기 컴퓨터에 의해, 하나 이상의 종속 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 적어도 하나의 데이터 프레임으로부터 상기 하나 이상의 종속 파일 세트의 각각의 상기 종속 파일을 페치하는 단계; 상기 컴퓨터에 의해, 상기 하나 이상의 종속 파일 세트를 포함하는 배치가능 패키지 파일을 생성하는 단계; 및 상기 컴퓨터에 의해, 상기 배치가능 패키지 파일을 상기 슈퍼바이저 노드로 전송하는 단계를 포함한다.
다른 실시예에서, 데이터베이스 관리 시스템은 하나 이상의 종속 파일을 저장하는 비일시적 머신 판독 가능한 저장 메모리, 및 상기 하나 이상의 종속 파일의 상태를 모니터링하는 프로세서를 포함하는 하나 이상의 노드 - 각각의 종속 파일은 제 2 노드에 설치된 대응하는 컴포넌트와의 비교 관계를 갖는 상기 노드의 컴포넌트임 - ; 각각의 상기 하나 이상의 노드의 상태를 모니터링하는 프로세서를 포함하며 각각의 노드의 상기 상태에 기초하여 한 세트의 종속 파일을 포함하는 배치가능 패키지를 각각의 상기 노드로 전송하도록 구성된 하나 이상의 슈퍼바이저 노드; 및 상기 하나 이상의 노드와 연관된 하나 이상의 종속 트리 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체, 및 노드와 연관된 종속 트리에 따라서 배치가능 패키지 파일을 컴파일하도록 구성된 프로세서를 포함하는 하나 이상의 종속 관리자 노드 - 상기 배치가능 패키지 파일은 적어도 하나의 데이터 프레임에 저장된 한 세트의 하나 이상의 종속 파일을 포함하고, 상기 종속 관리자 노드는 상기 배치가능 패키지를 수신하도록 목표를 삼은 노드와 연관된 종속 트리에 기초하여 상기 배치가능 패키지에 포함시킬 종속를 결정함 - 를 포함한다.
본 명세서에서는 시스템 인터페이스, 탐색 관리자, 분석 에이전트, 탐색 컨덕터, 구획자, 집합체, 슈퍼바이저, 종속 관리자, 또는 임의의 적합한 조합 중 하나 이상의 것을 포함하는 모듈 및 클러스터의 임의의 적합한 조합을 포함할 수 있는 인-메모리 데이터베이스를 호스팅하는 분산형 컴퓨팅 시스템 아키텍처가 개시된다. 시스템의 실시예는 부가적인 컴포넌트(예를 들면, 노드, 모듈, 데이터베이스 인스턴스)를 그때그때(즉, 시스템의 현재 상태 동작을 중단하거나 다른 방식으로 방해하지 않고) 설치하고, 구현하고, 또는 다른 방식으로 포함하는 것을 용이하게 해줄 수 있는 노드 및 소프트웨어 모듈의 플러그 가능한 아키텍처를 가질 수 있다. 시스템의 실시예는 인-메모리 데이터베이스에 포함을 위한 향후 개발되거나 외부의 제 3자의 맞춤형 분석 모듈을 허용할 수 있다. 데이터베이스 조회는 데이터를 데이터베이스로부터 먼저 검색하지 않고, 조회 결과를 중재하기 위해 어느 분석 모듈 및 파라미터가 그때그때 적용되는지를 명시할 수 있다. 본 명세서에서 기술된 시스템 및 방법은 고객 맞춤형 분석 모듈이 인-메모리 데이터베이스와 별도로 개발되게 해줄 수 있으며, 또한 데이터베이스를 호스팅하는 시스템 내에서 인-메모리 데이터베이스를 이용하여 분석을 실행하는 성능상의 이득을 받을 수 있도록 배치될 수 있다. 노출되고 액세스 가능한 API는 독립적으로 생성된 분석 모듈과 데이터를 통신하기 위해 사용될 수 있으며, 분석 모듈은 API의 덕분으로 끊어짐 없이 인-메모리 데이터베이스에 플러그-인되거나 또는 다른 방식으로 인-메모리 데이터베이스와 통합될 수 있다. 데이터의 유효성 확인은 새로운 모듈이 API의 기대에 부합하는지를 결정하는데 사용할 수 있다.
일 실시예에서, 인-메모리 데이터베이스 시스템은 데이터베이스의 하나 이상의 레코드를 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 하나 이상의 저장 노드 - 각각의 저장 노드의 상기 저장 매체는 상기 각각의 저장 노드의 주 메모리임 -; 분석 모듈을 가리키는 분석 요청을 수신함에 대응하여 한 세트의 조회 결과를 입력 파라미터로서 이용하여 상기 분석 모듈을 실행하는 프로세서를 포함하는 분석 에이전트 노드 - 상기 조회 결과 세트는 상기 하나 이상의 레코드를 저장하는 상기 하나 이상의 저장 노드로부터 검색된 하나 이상의 레코드를 표현하는 이진 데이터를 포함함 -; 및 하나 이상의 분석 모듈을 저장하는 비일시적 머신 판독 가능한 저장 매체, 및 새로운 분석 모듈을 하나 이상의 분석 에이전트 노드로 전송하도록 구성된 프로세서를 포함하는 분석 모듈 데이터 저장소를 포함한다.
본 명세서에서 사용자에게 조회 알고리즘 및 세부적인 스코어 및 등급 매김 알고리즘을 명시하는 기능을 제공하여, 개개의 탐색 조회의 양태에 따라서 여러 알고리즘이 결정될 수 있도록 하는 인-메모리 데이터베이스 시스템과 같은 데이터 저장 시스템 용도로 구현될 수 있는 탐색 패러다임을 제공하는 시스템 및 방법이 개시된다. 탐색 조회를 처리하는 노드는 (일부 필드가 비어 있거나 특정 스키마에서 정의되지 않았을지라도) 각각의 명시된 조회 알고리즘을 이용하여 각각의 가능한 후보 레코드를 찾을 수 있으며, 그 후보 레코드를 명시된 스코어 및 등급 매김 알고리즘을 이용하여 스코어를 매기고 등급을 매길 수 있다. 종래의 시스템은 단일의 탐색 조회 내에서 개별적인 조회 및 스코어링 알고리즘을 제공하는 기능을 제공하지 못하여, 각각의 스코어링 알고리즘은 완전히 별개의 필드에서 동작할 수 있다. 본 명세서에서 기술된 시스템 및 방법은 그러한 접근방법을 제공하여 데이터 준비의 부담을 줄여주며 데이터가 로딩되었을 때 애초에 의도하지 않은 목적에 필요한 데이터를 재사용할 수 있게 한다.
본 명세서에서는 클러스터링된 인-메모리 데이터베이스 내에서 비배타적인 탐색을 위한 기술된 시스템 및 방법이 제공된다. 비배타적인 탐색 방법은 결과에 레코드가 포함될 수 있는 탐색이 실행되게 해줄 수 있는데, 이 경우 조회에서 명시된 필드는 채워지거나 정의되지 않는다. 개시된 방법은 여러 스키마를 이용하여 레코드를 탐색하고, 스코어 매기고 비교할 수 있게 해주는 퍼지 인덱싱, 퍼지 매칭 및 스코어링 알고리즘의 적용을 포함한다. 이것은 관련 있는 레코드를 불러오는 것을 상당하게 개선한다.
개시된 비배타적 탐색 방법을 지원할 수 있는 인-메모리 데이터베이스의 시스템 아키텍처는 시스템 인터페이스, 탐색 관리자, 분석 에이전트, 탐색 컨덕터, 구획자, 집합체, 슈퍼바이저, 종속 관리자, 또는 임의의 적합한 조합 중 하나 이상의 것을 포함하는 모듈 및 클러스터의 임의의 적합한 조합을 포함할 수 있다.
시스템은 하나 이상의 조회에 대해 레코드의 스코어를 매길 수 있는데, 이 경우 시스템은 레코드의 하나 이상의 이용 가능한 필드들의 일치를 스코어 매길 수 있고 그런 다음 레코드의 전체 일치에 대해 스코어를 결정할 수 있다. 만일 일부 필드가 빠져 있으면, 이를 제외하지 않고 페널티 또는 낮은 스코어가 레코드에 할당될 수 있다. 시스템은 스코어가 미리 정의된 허용 문턱치 이상인지를 결정할 수 있는데, 이 문턱치는 탐색 조회에서 정의될 수 있거나 디폴트 값일 수 있다. 다른 실시예에서, 퍼지 매칭 알고리즘은 집합체에 일시 저장된 레코드를 시스템에 의해 생성된 하나 이상의 조회와 비교할 수 있다.
본 명세서에서는, 각종의 적합한 압축 알고리즘이 활용될 수 있다는 것(즉 어떤 특별한 압축 알고리즘이 필요하지 않다는 것)이 인식될지라도, 구조화되거나 반쯤 구조화된 데이터를 압축하는 방법이 개시된다. 본 명세서에서 기술된 시스템 및 방법은 데이터베이스의 각각의 필드에 대해 적합한 데이터 압축 프로세스들의 조합을 구현할 수 있고, 그래서 압축된 데이터베이스 레코드는 상업적으로 허용된 비율에 비견할만한 압축 비율을 달성하면서도 여전히 필드의 압축해제가 관심의 레코드 및 필드에 대해서만 (즉, 압축해제하는 것은 데이터베이스 탐색 조회를 만족하는 데이터 레코드 또는 필드에 대해서만) 일어나게 해준다. 레코드 또는 필드의 선택적인 압축해제를 가능하게 해주는 압축 기술을 구현하게 되면 압축된 데이터의 수평적인 레코드 기반의 저장뿐만 아니라 압축해제 시 데이터의 필드로의 컬럼 형태 또는 수직적인 액세스가 가능해진다. 이것은 압축의 저장 이득이 줄어들지만, 특정 필드만이 압축해제될 때 압축해제와 연관된 컴퓨팅 성능 및 지연의 대부분을 방지한다.
본 명세서에서 기술된 시스템 및 방법은 또한 N-그램 압축 기술을 구현할 수 있다. 전통적으로, N-그램은 글자의 체인 (문자열의 연이은 문자) 중 단지 하나 또는 단어의 체인 (텍스트 내 연이은 문자열)만을 압축하는 것으로 한정되어 있다. 전통적인 N-그램 압축은 글자의 체인, 개개의 단어, 및/또는 단어의 체인을 그러한 압축 기술의 단 하나의 구현으로는 압축할 수 없다. 본 명세서에서는 레코드 저장 동안 컬럼 형태의 압축을 위한 N-그램 관련 압축의 사용이 기술되며, 그럼으로써 탐색 조회에 응답하여 여전히 단일의 레코드 또는 레코드 내 단일의 필드로의 낮은 지연의 액세스를 제공하면서, 전체적으로 양호한 압축을 허용한다.
본 명세서에서 기술된 시스템 및 방법은 인-메모리 데이터베이스 및 문서 데이터베이스에 적용하는 것으로서 압축 기술의 실시예를 기술한다. 그러나, 시스템 및 방법의 그러한 기술 및 다른 양태가 더 일반적인 데이터 압축에 적용될 수 있다는 것을 인식하여야 한다.
일 실시예에서, 컴퓨터 구현된 방법은 컴퓨터에 의해, 한 세트의 데이터 요소에서 수신된 하나 이상의 데이터 요소에 적용할 압축 기술을 결정하는 단계 - 상기 컴퓨터는 스키마를 사용하여 상기 데이터 요소의 데이터 종류에 따라서 각각의 데이터 요소에 적용할 상기 압축 기술을 결정함 -; 상기 컴퓨터에 의해, 상기 스키마에 의해 정의된 상기 압축 기술을 이용하여 데이터 요소를 압축하는 단계 - 상기 압축 기술은 상기 데이터 요소가 탐색 조회에 응답하여 리턴될 때 개별적으로 압축해제되도록 상기 데이터 요소를 압축함 -; 상기 컴퓨터에 의해, 각각의 압축된 데이터 요소를 상기 데이터 요소의 상기 데이터 종류의 데이터를 저장하는 레코드의 필드에 저장하는 단계; 상기 컴퓨터에 의해, 스키마에 따라서 각각의 필드에 대한 참조 테이블 내 필드 표시를 연관시키는 단계 - 상기 대표적인 표시는 상기 필드의 상기 데이터 종류를 식별함 -; 상기 컴퓨터에 의해, 탐색 컨덕터로부터 수신된 탐색 조회를 만족하는 한 세트의 하나 이상의 데이터 요소에 대한 상기 데이터베이스에 질의하는 단계; 및 상기 컴퓨터에 의해, 상기 탐색 조회를 만족하는 상기 하나 이상의 데이터 요소 세트를 식별함에 대응하여, 상기 적용할 압축 기술을 이용하여 상기 탐색 조회를 만족하는 상기 하나 이상의 데이터 요소의 각각의 상기 하나 이상의 데이터 요소를 압축해제하는 단계 - 상기 탐색 조회를 만족하지 않은 각각의 데이터 요소는 압축된 채로 남아 있음 - 를 포함한다.
다른 실시예에서, 컴퓨팅 시스템은 하나 이상의 집합체를 저장하는 하나 이상의 노드 - 각각의 집합체는 한 세트의 하나 이상의 레코드를 포함하고, 각각의 노드는 데이터를 저장하는 한 세트의 필드를 포함함 -; 및 집합체와 연관된 스키마에 따라서 상기 필드 중 하나 이상의 필드를 압축하는 압축 프로세서를 포함한다.
본 개시의 많은 다른 양태, 특징은 다음의 상세한 설명으로부터 자명해질 수 있다. 실시예의 추가적인 특징 및 장점은 다음의 설명에서 설명될 것이며 부분적으로 설명으로부터 명백해질 것이다. 본 발명의 목적 및 다른 장점은 작성된 명세서 및 그 청구범위뿐만 아니라 첨부의 도면에서 예시적인 실시예에서 특별하게 지적된 구조에 의해 실현되고 달성될 것이다.
본 개시는 다음과 같은 도면을 참조하여 더 잘 이해될 수 있다. 도면에 있는 컴포넌트는 반드시 축척 비율대로 작성되지 않으며, 그 대신 본 개시의 원리의 설명을 강조한다. 도면에서, 참조 부호는 여러 전체 도면에서 대응하는 부품을 지정한다.
도 1은 실시예에 따라서 인-메모리 데이터베이스 아키텍처를 도시하는 도면.
도 2는 실시예에 따라서 패싯 탐색하는 방법을 설명하는 흐름도.
도 3은 실시예에 따라서 패싯 탐색을 이용하여 탐색 제시어를 생성하는 방법의 흐름도.
도 4는 예시적인 실시예에 따라서 인-메모리 데이터베이스 아키텍처를 도시하는 도면.
도 5는 예시적인 실시예에 따라서 노드 구성을 도시하는 도면.
도 6은 예시적인 실시예에 따라서 노드를 셋업하기 위한 흐름도.
도 7은 예시적인 실시예에 따라서 노드에서 셋업된 모듈을 도시하는 흐름도.
도 8은 예시적인 실시예에 따라서 탐색 관리자의 기능을 설명하는 흐름도.
도 9는 예시적인 실시예에 따라서 탐색 컨덕터의 기능을 설명하는 흐름도.
도 10은 예시적인 실시예에 따라서 구획자의 기능을 설명하는 흐름도.
도 11은 예시적인 실시예에 따라서 탐색 컨덕터에서 구획(partition)을 셋업하는 프로세스를 설명하는 흐름도.
도 12a는 예시적인 실시예에 따라서 집합체, 집합체의 업데이트 버전, 및 이들의 연관된 구획을 도시하는 도면.
도 12b는 예시적인 실시예에 따라서 제 1 집합체를 포함하는 제 1 및 제 2 탐색 노드가 탐색 관리자에 접속된 것을 도시하는 도면.
도 12c는 예시적인 실시예에 따라서 제 1 집합체를 포함하는 제 1 탐색 노드가 탐색 관리자로부터 접속 해제된 것 및 제 1 집합체를 포함하는 제 2 탐색 노드가 탐색 관리자에 접속된 것을 도시하는 도면.
도 12d는 예시적인 실시예에 따라서 제 1 탐색 노드가 업데이트된 집합체를 로딩하는 것 및 제 2 탐색 노드가 탐색 관리자에 접속된 것을 도시하는 도면.
도 12e는 예시적인 실시예에 따라서 업데이트된 집합체를 포함하는 제 1 탐색 노드가 탐색 관리자에 접속된 것 및 제 1 집합체를 포함하는 제 2 탐색 노드가 탐색 관리자로부터 접속 해제된 것을 도시하는 도면.
도 12f는 예시적인 실시예에 따라서 제 1 탐색 노드가 업데이트된 집합체를 로딩하는 것 및 제 2 탐색 노드가 탐색 관리자에 접속된 것을 도시하는 도면.
도 12g는 예시적인 실시예에 따라서 업데이트된 집합체를 포함하는 제 1 및 제 2 탐색 노드가 탐색 관리자에 접속된 것을 도시하는 도면.
도 13은 예시적인 실시예에 따라서 두 집합체에 대한 구획을 포함하는 탐색 노드들의 클러스터를 도시하는 도면.
도 14는 노드들이 논리적으로 클러스터링된 인-메모리 데이터베이스 시스템을 호스팅하는 컴퓨팅 시스템의 연결도.
도 15는 예시적인 실시예에 따라서 분산형 시스템 관리 아키텍처의 컴포넌트를 도시하는 도면.
도 16은 예시적인 실시예에 따라서 노드의 예시적인 노드 구성을 도시하는 도면.
도 17은 예시적인 방법 실시예에 따라서 분산 컴퓨팅 시스템에 의한 장애 처리를 도시하는 흐름도.
도 18은 실시예에 따라서 슈퍼바이저와 종속 관리자의 블록도 연결을 도시하는 도면.
도 19는 실시예에 따른 구성 프로세스의 흐름도.
도 20은 실시예에 따라서 시스템의 구성을 위해 사용된 종속의 블록도.
도 21은 실시예에 따라서 인-메모리 데이터베이스 아키텍처를 도시하는 도면.
도 22는 실시예에 따라서 새로운 모듈을 인-메모리 데이터베이스에 추가하는 방법의 흐름도.
도 23은 실시예에 따라서 인-메모리 데이터베이스 아키텍처를 도시하는 도면.
도 24는 실시예에 따라서 비배타적 탐색을 위한 방법을 설명하는 흐름도.
도 25는 예시적인 실시예에 따라서 데이터 압축 장치를 도시하는 도면.
도 26은 예시적인 실시예에 따라서 구조화된 데이터 테이블을 도시하는 도면.
도 27은 예시적인 실시예에 따른 토큰 테이블을 도시하는 도면.
도 28은 예시적인 실시예에 따른 n-그램 테이블을 도시하는 도면.
도 29는 예시적인 실시예에 따른 압축된 레코드를 설명하는 테이블을 도시하는 도면.
정의
본 명세서에서 사용되는 바와 같이, 다음과 같은 용어는 다음과 같이 정의될 수 있다.
"엔티티 추출(Entity Extraction)"은 이름, 위치, 및 조직과 같은 정보를 추출하기 위한 정보 처리 방법을 말한다.
"코퍼스(Corpus)"는 하나 이상의 문서들의 집합체를 말한다.
"특징들(Features)"은 문서로부터 적어도 부분적으로 도출되는 임의의 정보를 말한다.
"이벤트 개념 저장소(Event Concept Store)"는 이벤트 템플릿 모듈의 데이터베이스를 말한다.
"이벤트"는 실시간으로 적어도 특징의 발생을 특징으로 하는 하나 이상의 특징을 말한다.
"이벤트 모듈"은 특정 방식의 이벤트에 대비하여 비교하고 이를 식별하기 위해 사용될 수 있는 데이터의 집합체를 말한다.
"모듈"은 최소한 하나 이상의 작업을 실행하기에 적합한 컴퓨터 또는 소프트웨어 컴포넌트를 말한다.
"데이터베이스"는 하나 이상의 집합체를 저장하기에 적합한 그리고 하나 이상의 조회를 처리하기에 적합한 클러스터와 모듈의 임의의 조합을 포함하는 임의의 시스템을 말한다.
"조회"는 하나 이상의 적합한 데이터베이스로부터 정보를 검색하라는 요청을 말한다.
"메모리"는 정보를 저장하고 상기 정보를 충분히 고속으로 검색하기에 적합한 임의의 하드웨어 컴포넌트를 말한다.
"노드"는 하나 이상의 모듈을 구동하기에 적합한 컴퓨터 하드웨어 구성을 말한다.
"클러스터"는 한 세트의 하나 이상의 노드들을 말한다.
"집합체"는 레코드들의 이산적인 세트를 말한다.
"레코드"는 하나의 단위로서 다루어질 수 있는 정보의 하나 이상의 조각을 말한다.
"구획(Partition)"은 집합체의 임의적으로 구분된 레코드 부분을 말한다.
"탐색 관리자(Search Manager)" 또는 "S.M."은 적어도 하나 이상의 조회를 수신하고 하나 이상의 탐색 결과를 리턴하도록 구성된 모듈을 말한다.
"분석 에이전트(Analytics Agent)", "분석 모듈(Analytics Module)", "A.A.", 또는 "A.M"은 적어도 하나 이상의 레코드를 수신하고, 상기 하나 이상의 레코드를 처리하고, 결과로 초래된 하나 이상의 처리된 레코드를 리턴하도록 구성된 모듈을 말한다.
"탐색 컨덕터(Search Conductor)", 또는 "S.C."는 적어도 구획에 대해 하나 이상의 탐색 조회를 실시하고 탐색 결과를 하나 이상의 탐색 관리자로 리턴하도록 구성된 모듈을 말한다.
"노드 관리자(Node Manager)", 또는 "N.M."는 적어도 노드에 대해 하나 이상의 지시를 수행하고 하나 이상의 슈퍼바이저와 통신하도록 구성된 모듈을 말한다.
"슈퍼바이저(Supervisor)"는 적어도 시스템의 하나 이상의 컴포넌트와 통신하고 하나 이상의 상태를 결정하도록 구성된 모듈을 말한다.
"핫빗(Heartbeat)" 또는 "HB"는 적어도 하나 이상의 상태를 하나 이상의 슈퍼바이저로 전달하는 신호를 말한다.
"구획자(Partitioner)"는 적어도 하나 이상의 집합체를 하나 이상의 구획으로 나누도록 구성된 모듈을 말한다.
"종속 관리자(Dependency Manager)", 또는 "D.M."은 적어도 시스템 내 하나 이상의 모듈, 구획, 또는 적합한 조합과 연관된 하나 이상의 종속 트리를 포함하고; 적어도 상기 하나 이상의 종속 트리의 임의의 하나 이상의 적합한 부분과 관련하는 정보의 요청을 수신하고; 적어도 상기 부분으로부터 도출된 하나 이상의 구성을 리턴하도록 구성된 모듈을 말한다.
"문서(Document)"는 시작과 끝이 있는 정보의 이산적인 전자적 표현을 말한다.
"라이브 코퍼스(Live corpus)"는 새로운 문서가 네트워크 쪽에서 업데이트됨에 따라 항시 공급되는 코퍼스를 말한다.
"특징"은 문서로부터 적어도 부분적으로 도출되는 임의의 정보를 말한다.
"특징 속성(Feature attribute)"은 특징과 연관된 메타데이터, 예를 들면 다른 것들 중에서 문서 내 특징의 위치, 신뢰도 스코어(confidence score)를 말한다.
"팩트(Fact)"는 특징들 간의 객관적 관계를 말한다.
"지식 베이스(Knowledge base)"는 명료화된 특징 또는 패싯을 포함하는 베이스를 말한다.
"즉석 링크 모듈(Link on-the-fly module)"은 데이터가 시스템에 추가되는 때 보다는 데이터가 시스템으로부터 요청될 때 데이터 연계(data linkage)를 수행하는 임의의 링킹 모듈을 말한다.
"센티멘트(Sentiment)"는 문서, 문서의 일부분, 또는 특징과 연관된 주관적 평가를 말한다.
"토픽(Topic)"은 적어도 부분적으로 코퍼스로부터 도출되는 한 세트의 주제별 정보를 말한다.
"접두사(Prefix)"는 노드의 모든 서브트리 및 데이터 레코드에 대한 참조를 저장하기 위한 데이터 레코드 필드에 의해 공유되는 핵심 문자의 가장 긴 문자열로 구성된 길이 p의 문자열을 말한다.
"패싯(Facet)"은 클래스, 특정 주제, 토픽 또는 특징의 명백히 정의되고, 서로 중복되지 않고(mutually exclusive), 전체적으로 누락 부분이 없는(collectively exhaustive) 양태, 특성, 또는 특징을 말한다.
"필드"는 레코드 내 하나의 데이터 요소를 말한다.
"스키마(Schema)"는 하나 이상의 레코드의 하나 이상의 특성을 서술하는 데이터를 말한다.
"조각으로 나누기(Fragment)"는 원하는 수준의 그래뉴러리티가 달성될 때까지 레코드를 더 작은 레코드로 분리하는 것을 말한다.
"자원(Resource)"은 데이터를 저장 또는 처리하도록 구성된 노드 내 하드웨어를 말한다. 하나 이상의 실시예에서, 자원은 다른 것 중에서도 RAM, 하드 디스크 저장소, 및 컴퓨터적 용량을 포함할 수 있다.
"종속 트리(Dependency Tree)"는 데이터 구조체의 형태를 말하는 것으로, 이는 다른 것 중에서 구획, 모듈, 파일, 또는 데이터의 관계를 보여줄 수 있다.
"배치가능 패키지(Deployable Package)"는 다른 것 중에서 모듈, 구획, 파일, 또는 데이터의 구성에서 사용될 수 있는 한 세트의 정보를 말한다.
"분석 방법(Analytical Method)"은 집계된 탐색 결과에 적용될 수 있는 임의의 동작을 말한다.
"분석 파라미터(Analytics Parameter)"는 분석 모듈이 특정한 결과를 얻기 위해 수행해야 하는 동작을 서술하는 파라미터를 말한다.
"애플리케이션 프로그래밍 인터페이스(Application Programming Interface)" 또는 "API"는 상이한 사용자 개발 소프트웨어 모듈이 분산형 컴퓨팅 시스템의 컴포넌트(예를 들면, 소프트웨어 모듈, 노드)와 호환 가능하게 해준다.
"사전(Dictionary)"은 중앙집중식 정보 저장소를 말하는 것으로, 이는 의미, 다른 데이터와의 관계, 출처, 용법, 및 포맷과 같이 MEMDB 내 필드에 관한 세부사항을 포함한다.
"정의되지 않음(Not defined)"은 특정 스키마의 일부분이 아닌 필드를 말한다.
"채워지지 않음(Not populated)"은 스키마의 일부이지만 어떠한 할당된 값도 갖지 않은 필드를 말한다.
"객체(Object)"는 데이터 레코드 내 필드들의 논리적 집합체를 말한다.
"어레이(Array)"는 레코드 내 데이터 값들의 정렬된 리스트를 말한다.
"압축(Compress)"는 값을 표현하는데 필요한 전자 데이터의 양을 축소하는 것을 말한다.
"토큰 테이블"은 하나 이상의 다른 더 복잡한 값에 대해 하나 이상의 더 간단한 값을 정의하는 테이블을 말한다.
"N-그램(N-gram)"은 문자, 단어, 또는 단어 그룹일 수 있는 데이터의 N 연이은 완전 단위를 말하는 것으로, 여기서 N은 1보다 크거나 같다. 즉, "The quick brown fox jumped over the lazy dog."라는 문장에서, "the", "e", "he", 및 "brown fox"는 모두 유효 N-그램들이다.
"N-그램 테이블(N-gram Table)"은 하나 이상의 다른 더 복잡한 값에 대해 하나 이상의 더 간단한 값을 정의하는 테이블을 말한다.
"JSON"은 자바스크립트 객체 표기법(JavaScript Object Notation)인 데이터 교환 포맷(data-interchange format)을 말한다.
"BSON"은 이진 JSON인 데이터 교환 포맷을 말한다.
"YAML"는 코딩 언어 "YAML Ain't Markup Language"인 데이터 교환 포맷을 말한다.
"문서 데이터베이스(Document Database)"는 문서 지향 정보를 저장하고, 검색하고, 관리하기 위해 계획된 문서 지향 데이터베이스를 말한다.
상세한 설명
이제 바람직한 실시예가 상세히 참조될 것이며, 바람직한 실시예의 예는 첨부 도면에서 예시된다. 전술한 실시예는 예시적인 것으로 의도된다. 본 기술에서 통상의 지식을 가진 자라면 많은 대안의 컴포넌트 및 실시예가 본 명세서에서 기술되는 특정 예에 대체될 수 있고 그럼에도 본 발명의 범위에 속할 수 있다는 것을 인식한다. 본 개시의 사상이나 범위를 벗어나지 않고 다른 실시예가 사용될 수 있고/있거나 다른 변경이 이루어질 수 있다. 상세한 설명에서 기술되는 예시적인 실시예는 본 명세서에서 제시되는 주제를 한정하려는 의미는 아니다.
그럼에도 본 발명의 범위의 어떠한 한정도 의도하지 않는다는 것이 이해될 것이다. 관련 기술에서 통상의 지식을 갖고 본 개시의 소유자에게 떠오르는, 본 명세서에서 예시되는 본 발명의 특징의 변경 및 추가적인 수정, 그리고 본 명세서에서 예시된 바와 같은 본 발명의 원리의 추가적인 적용은 본 발명의 범위 내에 속하는 것으로 간주될 것이다.
본 개시는 복수의 소스로부터의 이벤트를 검출하고, 추출하고 입증하기 위한 시스템 및 방법을 설명한다. 소스는 이벤트와 관계되는 데이터를 포함할 수 있는 뉴스 소스, 소셜 미디어 웹사이트 및/또는 임의의 소스를 포함할 수 있다.
본 명세서에서 개시되는 시스템 및 방법의 다양한 실시예는 독립적인 이벤트를 식별하기 위해 상이한 소스로부터 데이터를 수집한다.
도 1은 실시예에 따라서, 인-메모리 데이터베이스(100) 시스템 아키텍처를 도시한다. MEMDB(100) 시스템 아키텍처는 시스템 인터페이스(102), 제 1 탐색 관리자(104), n번째 탐색 관리자(106), 제 1 분석 에이전트(108), n번째 분석 에이전트(110), 제 1 탐색 컨덕터(112), n번째 탐색 컨덕터(114), 구획자(116), 제 1 집합체(118), n번째 집합체(120), 슈퍼바이저(122), 및 종속 관리자(124)를 포함할 수 있다.
하나 이상의 실시예에서, 시스템 인터페이스(102)는 MEMDB(100)의 시스템 아키텍처의 외부에서 생성된 하나 이상의 조회를 최소한 제 1 탐색 관리자(104) 및 n번째 탐색 관리자(106) 까지를 포함하는 제 1 클러스터 내 하나 이상의 탐색 관리자에 공급하도록 구성될 수 있다. 상기 제 1 클러스터 내 상기 하나 이상의 탐색 관리자는 최소한 제 1 분석 에이전트(108) 및 n번째 분석 에이전트(110) 까지를 포함하는 제 2 클러스터 내 하나 이상의 분석 에이전트에 링크될 수 있다.
상기 제 1 클러스터 내 탐색 관리자는 제 1 탐색 컨덕터(112) 및 n번째 탐색 컨덕터(114) 까지를 포함하는 제 3 클러스터 내 하나 이상의 탐색 컨덕터에 링크될 수 있다. 상기 제 3 클러스터 내 탐색 컨덕터는 하나 이상의 구획(126)에 링크될 수 있고, 최소한 제 1 집합체(118) 및 n번째 집합체(120)까지에 대응하는 구획은 하나 이상의 순간의 시간에 저장될 수 있다.
MEMDB(100)에 포함된 클러스터에 속한 하나 이상의 노드, 모듈, 또는 이들의 적합한 조합은 하나 이상의 슈퍼바이저(122)에 링크되어 있을 수 있고, 상기 클러스터 내 하나 이상의 노드, 모듈, 또는 적합한 조합은 적어도 하나의 핫빗을 하나 이상의 슈퍼바이저(122)로 전송하도록 구성될 수 있다. 슈퍼바이저(122)는 하나 이상의 종속 관리자(124)에 링크될 수 있고, 상기 하나 이상의 종속 관리자(124)는 하나 이상의 모듈, 구획, 또는 이들의 적합한 조합에 대해 하나 이상의 종속 트리를 포함할 수 있다. 슈퍼바이저(122)는 또한 하나 이상의 다른 슈퍼바이저(122)에 링크될 수 있고, 부가적인 슈퍼바이저(122)는 MEMDB(100)의 시스템 아키텍처에 포함된 상기 클러스터에 링크될 수 있다.
도 2는 실시예에 따라서 패싯 탐색(200)을 위한 방법을 설명하는 흐름도이다. 문서를 패싯을 이용하여 분리하거나 그룹화하면 탐색 결과를 효과적으로 좁힐 수 있다. 패싯 탐색을 수행할 때, 각 패싯은 다차원 공간에서 문서의 차원으로 간주될 수 있으며, 특정 문서 패싯을 선택함으로써 관련성 있는 탐색 결과를 찾을 가능성은 의미심장하게 개선될 수 있으면서 탐색을 수행하는데 소요되는 시간은 상당히 단축될 수 있다.
프로세스는 탐색 관리자에 의해 수신된 조회에서부터 시작할 수 있는데(202), 이 단계에서 외부 소스에 의해 생성된 하나 이상의 조회는 하나 이상의 탐색 관리자에 의해 수신될 수 있다. 일부 실시예에서, 이러한 조회는 사용자와의 상호작용에 대한 응답으로서 시스템 인터페이스(102)에 의해 자동 생성될 수 있다. 하나 이상의 실시예에서, 조회는 XML 및 HTML을 비롯한 마크업 언어로 표현될 수 있다. 하나 이상의 다른 실시예에서, 조회는 조회가 JSON으로 표현되는 실시예를 비롯한 구조체에서 표현될 수 있다. 일부 실시예에서, 조회는 콤팩트한 포맷 또는 이진 포맷으로 표현될 수 있다.
이후, 수신된 조회는 탐색 관리자에 의해 파싱될 수 있다(204). 이러한 프로세스는 시스템으로 하여금 필드 처리가 요구되는지를 결정하도록 할 수 있다(206). 하나 이상의 실시예에서, 시스템은 조회에 포함된 정보를 이용하여 프로세스가 필요한지를 결정할 수 있다. 하나 이상의 다른 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 필드가 요구된 처리를 받을 수 있는 것을 자동으로 결정할 수 있다.
만일 시스템이 하나 이상의 필드에 대한 필드 처리가 요구된다고 결정하면, 하나 이상의 탐색 관리자는 탐색 관리자가 필드를 처리하는 동안 하나 이상의 적합한 처리 기술을 하나 이상의 원하는 필드에 적용할 수 있다(208). 하나 이상의 실시예에서, 적합한 처리 기술은 다른 것들 중에서도, 어드레스 표준화(address standardization), 근접 경계(proximity boundary), 및 별명 해석(nickname interpretation)을 포함될 수 있다. 일부 실시예에서, 적합한 처리 기술은 나중에 퍼지 매칭 기술(puzzy matching technique)을 수행하기 위해 채용될 수 있는 문자열로부터 접두사의 추출 및 비-문자 키의 생성을 포함할 수 있다.
그런 다음, S.M.이 탐색 조회를 구성할 때(210), 하나 이상의 탐색 관리자는 하나 이상의 조회와 연관된 하나 이상의 탐색 조회를 구성할 수 있다. 하나 이상의 실시예에서, 탐색 조회는 스택-기반의 탐색으로서 처리되도록 구성될 수 있다.
이후, S.M.은 탐색 조회를 S.C.로 전송할 수 있다(212). 일부 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 탐색 조회를 하나 이상의 탐색 컨덕터로 전송할 수 있는데, 상기 하나 이상의 탐색 컨덕터는 하나 이상의 탐색 조회에서 명시된 집합체와 연관될 수 있다.
하나 이상의 탐색 컨덕터는 하나 이상의 조회에 대해 레코드의 스코어를 매길 수 있는데, 탐색 컨덕터는 레코드의 하나 이상의 필드의 일치함에 대해 스코어를 매긴 다음 레코드의 모든 일치에 대한 스코어를 결정할 수 있다. 시스템은 스코어가 미리 정의된 수용 문턱치(acceptance threshold) 이상인지를 결정할 수 있는데, 여기서 문턱치는 탐색 조회에서 정의될 수 있거나 디폴트 값일 수 있다. 하나 이상의 실시예에서, 디폴트 스코어 문턱치는 스코어 매겨지는 하나 이상의 필드에 따라 변할 수 있다. 만일 탐색 컨덕터가 스코어가 요구된 문턱치 이상이라고 결정하면, 레코드가 결과 리스트에 추가될 수 있다. 탐색 컨덕터는 레코드가 구획에서 마지막 레코드라고 결정할 때까지 계속하여 레코드의 스코어를 매길 수 있다. 만일 탐색 컨덕터가 구획에서 마지막 레코드가 처리되었다고 결정하면, 탐색 컨덕터는 결과로 생긴 결과 리스트를 분류할 수 있다. 그런 다음 탐색 컨덕터는 결과 리스트를 탐색 관리자로 리턴할 수 있다.
S.M.이 S.C.로부터 결과를 수신하고 취합할 때(214), 하나 이상의 탐색 컨덕터는 하나 이상의 탐색 결과를 하나 이상의 탐색 관리자로 리턴할 수 있는데, 하나 이상의 실시예에서, 상기 하나 이상의 탐색 결과는 비동시적으로 리턴될 수 있다. 이후 하나 이상의 탐색 관리자는 하나 이상의 탐색 컨덕터로부터의 결과를 하나 이상의 결과 리스트로 컴파일할 수 있다.
시스템은 하나 이상의 탐색 관리자에 의해 컴파일된 탐색 결과의 분석 처리가 요구되는지를(216) 결정할 수 있다. 하나 이상의 실시예에서, 시스템은 조회에 포함된 정보를 이용하여 처리가 요구되는지를 결정한다. 하나 이상의 다른 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 필드가 요구된 처리를 받을 수 있는 것을 자동으로 결정할 수 있다.
만일 시스템이 총체적 분석 처리가 요구된다고 결정하면, 하나 이상의 분석 에이전트는 하나 이상의 적합한 처리 기술을 하나 이상의 결과 리스트에 적용함으로써 결과를 처리할 수 있다(218). 하나 이상의 실시예에서, 적합한 기술은 다른 것 중에서도, 여러 레코드를 더 완전한 레코드로 만드는 것, 결과에 대해 하나 이상의 분석을 수행하는 것, 및 이웃 레코드에 관한 정보를 결정하는 것을 포함할 수 있다. 일부 실시예에서, 분석 에이전트는 명료화 모듈, 링킹 모듈, 즉석 링크 모듈, 또는 임의의 다른 적합한 모듈 및 알고리즘을 포함할 수 있다. 처리하는 동안, 여러 특이성 레벨을 가진 패싯이 문서로부터 추출되고, 명료화되고, 정규화되고, 주제별로 그룹화되고 인덱싱될 수 있다. 패싯은 계층에 따라서 인덱싱될 수 있는데, 여기서 계층은 그때 그때마다 시스템에 의해 미리 정의되거나 정의될 수 있다. 하나 이상의 실시예에서, 레벨 1 패싯은 가장 넓은 패싯일 수 있고 후속 레벨들은 내림차순 관련성 또는 더 높은 정도의 특이성을 갖는 것으로 도출될 수 있다.
결과 리스트로부터의 패싯은 집합체에 저장될 수 있다. 일부 실시예에서, 각각의 패싯 타입은 상이한 집합체 또는 집합체 그룹에 저장될 수 있다.
처리 후, 일부 실시예에 따르면, 하나 이상의 분석 에이전트는 하나 이상의 처리된 결과 리스트를 하나 이상의 탐색 관리자로 리턴할 수 있다.
탐색 관리자는 탐색 결과를 리턴할 수 있다(220). 일부 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 결과 리스트를 압축해제하고 이를 조회를 개시했던 시스템으로 리턴할 수 있다.
선택사양으로, 일부 실시예에 따르면, 탐색 결과는 일시적으로 지식 베이스에 저장될 수 있고(222) 사용자 인터페이스로 리턴될 수 있다(224). 지식 베이스는 일시적으로 해당하는 명료화된 패싯들의 클러스터 및 이들의 관련 특징을 일시 저장하기 위해 사용될 수 있다. 새로운 문서가 MEMDB에 로딩될 때, 새로이 명료화된 패싯 집합은 패싯들 간의 관계를 결정하고 새로운 패싯과 이전에 추출된 패싯 간에 일치함이 있는지를 결정하기 위해 기존의 지식 베이스와 비교될 수 있다. 만일 비교된 패싯들이 일치하면, 지식 베이스는 업데이트되며 일치하는 패싯들의 ID가 리턴될 수 있다. 만일 비교된 패싯들이 이미 추출된 패싯 중 어느 것과도 일치하지 않으면, 명료화된 엔티티 또는 패싯에 고유 ID가 할당되며, 이 ID는 특징을 정의하는 클러스터와 연관되고 MEMDB의 지식 베이스에 저장된다.
도 3은 실시예에 따라서, 패싯 탐색을 이용하여 탐색 제시어를 발생하는 방법(300)의 흐름도이다. 탐색 제시어를 발생하는 방법은 조회 생성에서부터 시작한다(302). 일부 실시예에서, 사용자가 적합한 탐색 창에서 타이핑을 시작할 때, 시스템은 사용자에 의해 탐색 박스상에 타이핑되는 단어의 접두사로부터 도출될 수 있는 조회를 자동 생성할 수 있다. 이러한 조회는 탐색 창에 타이핑된 문자 수가 최소 개(3 또는 4개)일지라도 생성될 수 있고 사용자가 탐색 창에 문자열을 타이핑을 끝마치기 전에도 생성될 수 있다.
일단 적합한 조회가 생성되면, 패싯 탐색 방법(200)이 적용될 수 있다. 이러한 방법의 적용은 접두사의 부분적 일치를 허용하는 문자 또는 비문자 키 알고리즘(non-literal key algorithm)의 사용을 포함할 수 있다.
탐색 제시어를 발생(304)하기 위해, 퍼지 매칭 알고리즘은 집합체에 일시 저장되어 있는 패싯을 시스템에 의해 생성되는 하나 이상의 조회와 비교할 수 있다. 이러한 방식으로, 현재의 하나 이상의 조회에 대해 히트(hit)의 카운트가 집합체의 상이한 구획에 있을 수 있는 상이한 계층 레벨의 패싯에 할당될 수 있다. 그러면, 레벨 1 패싯은 누적 히트 카운트를 할당 받고 총 히트 수에 따라 분류될 수 있다.
이후, 탐색 제시어가 사용자에게 제시(306)될 수 있다. 일부 실시예에서, 이것은 가장 관련성 있는 레벨 1 패싯을 포함할 수 있는 드롭 다운 윈도우의 형태로 이루어질 수 있고 - 각각의 패싯은 연관된 히트 수를 가짐 -, 사용자가 상이한 레벨의 패싯을 선택하여 탐색 조회를 좁히게 해줄 수 있거나 새로운 조회를 시작하게 해줄 수 있다. 일부 실시예에 따르면, 이러한 프로세스는 사용자가 탐색 창에다 문자열의 타이핑을 끝마치기 전에 패싯 탐색 제시어를 발생하고 제공할 수 있으며, 탐색 창 내 문자가 단어를 전개하기 시작할 때 이러한 프로세스는 여러 차례 일어날 수 있다.
도 4는 시스템 인터페이스(402), 제 1 탐색 관리자(410), n번째 탐색 관리자(412), 제 1 분석 에이전트(420), n번째 분석 에이전트(422), 제 1 탐색 컨덕터(430), n번째 1 탐색 컨덕터(432), 구획 데이터(440), 구획자(450), 제 1 집합체(460), n번째 집합체(462), 슈퍼바이저(470), 및 종속 관리자(480)를 갖는 시스템 아키텍처(400)를 도시한다.
하나 이상의 실시예에서, 시스템 인터페이스(402)는 시스템 아키텍처(400)의 외부에서 생성한 하나 이상의 조회를 제 1 탐색 관리자(410)를 포함하는 최소한 하나의 노드 및 n번째 탐색 관리자(412)를 포함하는 n개까지의 노드를 포함하는 제 1 클러스터 내 하나 이상의 탐색 관리자(410, 412)로 공급할 수 있다. 상기 제 1 클러스터 내 하나 이상의 탐색 관리자(410, 412)는 최소한 제 1 분석 에이전트(420) 및 n번째까지의 분석 에이전트(422)를 포함하는 제 2 클러스터 내 하나 이상의 분석 에이전트(420, 422)에 링크될 수 있다.
제 1 클러스터 내 탐색 관리자(410, 412)는 제 3 클러스터 내 하나 이상의 탐색 컨덕터(430, 432)에 링크될 수 있다. 제 3 클러스터는 최소한 제 1 탐색 컨덕터(430) 및 n번째까지의 1 탐색 컨덕터(432)를 포함할 수 있다. 각각의 탐색 노드(즉, 탐색 관리자(410, 412)를 실행하는 노드)는 임의의 적합한 개수의 탐색 컨덕터(430, 432)를 포함할 수 있다.
제 3 클러스터 내 탐색 컨덕터(430, 432)는 구획 데이터(440)를 저장하는 하나 이상의 데이터베이스 노드에 링크될 수 있다. 구획 데이터(440)는 하나 이상의 집합체를 하나 이상의 구획으로 적어도 나누도록 구성된 모듈일 수 있는 하나 이상의 구획자(450)를 실행하는 노드에 의해 생성된 하나 이상의 구획(즉, 별도의 레코드 집합에서 분할된 임의적으로 범위가 정해진 레코드의 부분)을 포함할 수 있다. 각각의 구획은 최소한 제 1 집합체(460) 및 n번째까지의 집합체(462)에 대응할 수 있다. 집합체(460, 462)는 또한 집합체(460, 462) 내 데이터를 정의할 수 있는 하나 이상의 스키마 파일에 의해 서술될 수 있다. 하나 이상의 스키마는 다른 것 중에서도, 구획의 레코드 내 필드의 이름, 상기 필드가 인덱싱되는지 여부, 어떤 압축 방법이 사용되었는지, 그리고 필드에 대해 어떤 스코어링 알고리즘이 디폴트인지에 관한 정보를 포함할 수 있다. 스키마는 제 1 집합체(460) 및 n번째까지의 집합체(462)를 분할할 때 구획자(450)에 의해 사용될 수 있으며, 또한 집합체에 대해 하나 이상의 조회를 실행할 때 제 1 탐색 관리자(410) 및 n번째까지의 탐색 관리자(412)에 의해 사용될 수 있다.
하나 이상의 노드는 시스템(400)의 다른 노드로부터 송신된 핫빗 신호를 수신하는 슈퍼바이저(470) 소프트웨어 모듈을 실행할 수 있다. 슈퍼바이저(470)는 하나 이상의 종속 관리자(480) 소프트웨어 모듈을 실행하는 시스템(400)의 노드로부터 데이터를 수신하도록 구성될 수 있다. 종속 관리자(480) 노드는 상대적인 관계에 기초하여, 노드, 모듈, 및 구획에 대한 구성 종속를 표시할 수 있는 하나 이상의 모듈, 구획, 또는 이들의 적합한 조합과 연관된 종속 트리를 저장하고, 업데이트하고, 참조할 수 있다. 슈퍼바이저(470)는 또한 하나 이상의 다른 슈퍼바이저(470)를 실행하는 시스템(400) 내 다른 노드에 링크될 수 있다. 일부 사례에서, 부가적인 슈퍼바이저(470)와의 링크는 시스템 아키텍처(400)의 클러스터들 사이에서 교차할 수 있다.
제 1 분석 에이전트(420, 422)를 실행하는 노드는 시스템의 컴포넌트들(예를 들면, 소프트웨어 모듈, 노드) 사이에서 상호운용성 및 데이터 전달을 가능하게 해주는 명시된 애플리케이션 프로그래밍 인터페이스(API)를 준수하는 하나 이상의 적합한 분석 모듈을 실행할 수 있다. 분석 에이전트(420, 422)는 탐색 컨덕터(430, 432)로부터 리턴된 집계된 조회 결과를 처리하도록 구성될 수 있다. 예를 들면, 탐색 관리자(410)는 탐색 조회를 수신한 다음 이 탐색 관리자(410)가 하나 이상의 탐색 컨덕터(430, 432)에게 발행하는 탐색 컨덕터 조회를 생성할 수 있다. 탐색 컨덕터(430, 432)가 각자에게 할당된 탐색 컨덕터 조회를 실행한 후, 탐색 관리자(410)는 하나 이상의 탐색 컨덕터(430, 432)로부터 한 세트의 집계된 조회 결과를 수신할 것이다. 탐색 조회의 파라미터에 의해 추가 처리가 필요하다면, 탐색 관리자(410)는 이러한 탐색 조회 결과를 추가 처리하기 위해 제 1 분석 에이전트(420)로 포워딩할 수 있다.
일부 구현예에서, 탐색 관리자(410)는 탐색 조회가 제 1 분석 에이전트(420)에게 탐색 컨덕터(430, 432)로부터 수신한 하나 이상의 집계된 결과 집합을 처리하도록 요청했다는 것을 결정한 후, 탐색 관리자(410)는 데이터베이스 스키마 파일 및/또는 하나 이상의 분석 파라미터를 분석 에이전트(420, 422)로 전송할 수 있다. 일부 사례에서, 탐색 조회는 탐색 관리자(410)가 어느 분석 에이전트(420)가 집계된 탐색 결과를 수신해야 하는지를 식별하는데 사용할 수 있는 특정한 분석 알고리즘이 수행될 것을 요청할 수 있다. 일부 사례에서, 집계된 결과 집합 중 하나 이상의 결과 집합은 압축 알고리즘에 따라서 압축된 데이터를 갖고 있는 압축된 레코드의 형태로 분석 에이전트(420, 422)로 전송될 수 있다. 일부 사례에서, 레코더의 데이터는 레코드의 필드에서 압축될 수 있으며, 일부 사례에서, 전체 레코드가 압축될 수 있다.
분석 에이전트(420, 422)를 실행하는 노드는 각종 분석 모듈을 갖고 있다. 한정하지 않는 예는 다른 적합한 모듈 및 알고리즘 중에서도, 명료화 모듈, 링킹 모듈, 및 즉석 링크 모듈을 포함할 수 있다. 나중에 상세히 설명되는 바와 같이, 링킹 모듈 및 즉석 링크 모듈은 데이터베이스의 레코드에 이미 저장되어 있는 데이터를 링크하는 메타데이터를 식별하고, 생성하고, 그리고/또는 저장할 수 있다. 적합한 모듈은 임의의 종류의 데이터를 처리하기 위한 분석 방법의 임의의 소프트웨어 구현예를 포함할 수 있다. 일부 실시예에서, 특정 분석 모듈 또는 분석 에이전트(420, 422)는 인-메모리 데이터베이스의 미리 결정된 인스턴스, 클러스터, 구획, 및/또는 인스턴스화된 객체에만 액세스될 수 있다.
도 5는 예시적인 실시예에 따라서 노드(500)의 구성을 도시하는 도면이다. 도 5에서 노드(500)는 노드 관리자(502) 소프트웨어 모듈 및 제 1 소프트웨어 모듈(510)과 n번째까지의 모듈(512)을 포함할 수 있는 임의의 개수의 부가적인 소프트웨어 모듈(510, 512)을 실행하는 프로세서를 포함할 수 있다.
도 5의 예시적인 구성에 따르면, 노드(500)는 데이터 네트워크를 통해 슈퍼바이저 모듈 또는 슈퍼바이저 노드를 실행하는 제 2 노드에 통신 가능하게 연결될 수 있다. 노드(500)에 의해 설치되고 실행되는 노드 관리자(502)는 또한 슈퍼바이저 노드와 통신하도록 구성될 수 있고, 또한 제 1 모듈(510), n번째까지의 모듈(512)을 포함하는, 노드상에 설치된 소프트웨어 모듈(510, 512)을 모니터링하도록 구성될 수 있다. 노드 관리자(502)는 슈퍼바이저로부터 수신된 임의의 적합한 지시를 실행할 수 있고, 노드(500), 노드 관리자(502), 및 제 1 모듈(510) 내지 n번째까지의 모듈(512) 중 하나 이상의 것의 상태에 관해 보고할 수 있다. 제 1 모듈(510)은 하나 이상의 슈퍼바이저에 링크될 수 있고 노드 내 하나 이상의 다른 모듈에 링크될 수 있는데, 여기서 노드 내 다른 모듈은 제 1 모듈(510)과 상이한 종류일 수 있거나 제 1 모듈(510)과 공통의 종류일 수 있다. 또한, 제 1 모듈(510)은 시스템 내 하나 이상의 다른 모듈, 노드, 또는 클러스터와 링크될 수 있다.
도 6은 단계(602, 604, 및 606)를 갖는 노드 셋업(600)을 도시하는 흐름도이다.
단계(602)에서, 노드에서 사용하기에 적합한 오퍼레이팅 시스템(OS)이 노드에 로딩된다. 하나 이상의 실시예에서, OS는 노드의 제조자에 의해 자동으로 로딩될 수 있다. 하나 이상의 다른 실시예에서, OS는 하나 이상의 운영자에 의해 노드에 로딩될 수 있다.
단계(604)에서, 노드에 로딩된 OS와 함께 사용하기에 적합한 노드 관리자는 하나 이상의 운영자에 의해 수작업으로 설치되는데, 이러한 설치는 노드 관리자에 추가되는 하나 이상의 어느 요구된 모듈이 노드에 설치될 것인지를 결정할 수 있다.
단계(606)에서, 노드 관리자는 핫빗을 슈퍼바이저로 전송하며, 상기 핫빗은 노드가 하나 이상의 모듈을 설치하라는 명령어를 수신할 준비가 되어 있음을 슈퍼바이저가 결정하기에 충분한 정보를 포함할 수 있다.
도 7은 단계(702, 704, 706, 708, 710, 712, 및 714)를 갖는 모듈 셋업(700)을 도시하는 흐름도이다.
단계(702)에서, 슈퍼바이저는 시스템에 대해 정의된 데이터 집합체의 요구에 따라, 하나 이상의 노드에 설치될 하나 이상의 모듈을 결정한다. 이후 슈퍼바이저는 설치 준비 명령어를 상기 하나 이상의 노드상의 하나 이상의 노드 관리자로 전송한다. 일부 실시예에서, 슈퍼바이저는 (데이터 조각 또는 데이터의 부분을 포함하는) 데이터 집합체 및 각 집합체와 연관된 구성 설정을 추적할 수 있다. 슈퍼바이저는 또한 (노드 관리자에 의해 보고된 것으로서) 이용 가능한 모든 노드 및 이들의 자원을 알고 있을 수 있다. 슈퍼바이저는 시스템 요구를 가용 노드 자원에 맵핑(즉, 상관)시켜서 어느 데이터 조각이나 부분, 그리고 어느 시스템 서비스나 자원이 각각의 노드에서 실시되어야 하는지를 결정할 수 있다. 그런 다음 슈퍼바이저는 정의된 임의의 종속를 비롯한 배치/설치 요청을 적절한 노드 관리자로 전송하여 클라이언트 측에 설치를 실행하도록 노드 관리자에게 명령할 수 있다.
단계(704)에서, 노드 관리자는 하나 이상의 요구된 모듈을 구동하기 위한 컴퓨터 메모리, 디스크 저장소 및/또는 일부 CPU 성능과 같은 노드의 자원을 할당한다. 하나 이상의 실시예에서, 자원의 할당은 슈퍼바이저가 프로세스를 중단하였다면 일정 기간 이후에 만료될 수 있다. 한정하지 않는 자원의 예는 컴퓨터 메모리, 디스크 저장소 및/또는 일부 CPU 용량을 포함할 수 있다. 필요한 자원은 슈퍼바이저가 소정 노드에 할당하는 데이터 및/또는 서비스를 이용하여 결정될 수 있다. 필요한 자원의 세부사항은 종속 관리자에 저장된 소프트웨어 및 데이터 종속를 정의하는 패키지에서 명시될 수 있다.
단계(706)에서, 슈퍼바이저는 노드에 설치될 하나 이상의 모듈과 연관된 하나 이상의 구성 패키지의 요청을 종속 관리자로 전송할 수 있다.
단계(708)에서, 이후 슈퍼바이저는 배치되고, 설치되고 시작될 구성 패키지를 노드 관리자로 전송할 수 있다. 모든 데이터, 소프트웨어 및 메타데이터를 포함하는 구성 패키지는 시스템 관리자에 의해 정의되고 종속 관리자에 저장된다.
단계(710)에서, 노드 관리자는 하나 이상의 모듈을 실시하는데 필요한 적합한 서버로부터의 임의의 소프트웨어 및 데이터를 판독한다. 적합한 소프트웨어 및 데이터는 하나 이상의 레코드를 인덱싱하거나, 압축하거나, 복원하거나, 스코어를 매기거나, 분리하거나, 결합하거나, 또는 다른 방식으로 처리하기에 적합한 소프트웨어, 데이터 및 메타데이터뿐만 아니라, 시스템 내 하나 이상의 다른 컴포넌트와 통신하거나, 조정하거나, 모니터링하거나, 또는 다른 방식으로 인터페이싱하기에 적합한 소프트웨어 및 데이터를 포함할 수 있다.
단계(712)에서, 노드 관리자는 단계(710)에서 페치된 요구된 소프트웨어를 설치한다.
단계(714)에서, 노드 관리자는 단계(712)에서 설치된 소프트웨어를 실행한다.
도 8은 단계(802, 804, 808, 810, 812, 814, 818, 및 820)를 갖고, 확인 단계(806 및 816)를 갖는 조회 처리(800)를 도시하는 흐름도이다.
단계(802)에서, 시스템 또는 클라이언트 컴퓨터의 상주 그래픽 사용자 인터페이스(graphic user interface, GUI)에 의해 호스팅되는 브라우저 기반의 GUI와 같은 외부 소스에 의해 생성된 데이터베이스 조회가 하나 이상의 탐색 관리자를 통해 수신된다. 조회는 사용자가 제출하거나 프로그램의 자동 생성된 탐색 파라미터를 포함할 수 있는 임의의 적합한 소프트웨어 소스 코드를 표현하는 이진 데이터를 포함할 수 있다. 탐색 조회에 사용된 소스 코드 언어는 객체 또는 클래스와 같은 복잡한 데이터 구조를 다룰 수 있는 데이터 특화 언어일 수 있다. 데이터 특화 언어는 복소수 데이터 객체 또는 구조체를 디지털 비트의 시퀀스로 변환하기 위해 사용될 수 있으며, 대부분의 임의의 디바이스에 의해 관리될 수 있는 포맷의 복소수 객체의 데이터를 제공할 수 있다. 일부 실시예에서, 조회는 스키마 파일(예를 들면, XSD)에 따라 인증되거나 아니면 이해될 수 있는 XML 및 HTML과 같은 마크업 언어로 표현될 수 있다. 일부 실시예에서, 조회는 JSON과 같이 스키마 파일에 따라서 입증되거나 그렇지 않으면 이해될 수 있는 복소수 데이터 구조체로서 표현될 수 있거나 그렇지 않으면 복소수 데이터 구조체를 전달할 수 있다. 조회는 데이터베이스에서 조회의 파라미터를 만족하는 요구된 레코드를 탐색하기에 적합한 명령어를 포함할 수 있으며, 일부 실시예에서 적합한 명령어는 탐색할 하나 이상의 집합체의 리스트를 포함할 수 있다.
단계(804)에서, 외부 소스로부터 수신된 조회는 하나 이상의 탐색 관리자에 의해 연관된 조회 언어(예를 들면, SQL)에 따라 이를 이용하여 파싱될 수 있고, 그럼으로써 적절한 노드(예를 들면, 탐색 컨덕터, 분석 에이전트)에 의해 실행될 머신 판독가능한 조회를 생성한다. 일부 사례에서, 조회의 소프트웨어 언어와 연관된 스키마 파일은 탐색 관리자에게 승인된 표준 또는 고유한 조회를 생성하는 코드에 의해 생성된 조회를 갖고 있을 수 있다. 스키마 파일은 탐색 조회를 적절히 파싱하는 것에 관해 탐색 관리자에게 명령을 내릴 수 있다. 예를 들면, 만일 탐색 조회가 하나 이상의 마크업 언어(예를 들면, XML)를 이용하여 준비되거나 데이터 구조체(예를 들면, JSON)를 포함하면, XSD 기반의 스키마 파일과 같은 스키마 파일은 XML 코드 또는 JSON 코드의 각각의 마크업 태그 내 데이터를 식별 및/또는 입증하기 위해 탐색 조회 코드 또는 데이터 구조체와 연관될 수 있다.
확인 단계(806)에서, 탐색 관리자는 사용자가 제공한 또는 애플리케이션에서 생성된 조회에 기초하여, 데이터베이스 및/또는 조회의 하나 이상의 필드를 처리해야 하는지를 결정할 수 있다. 한정하지 않는 필드 처리의 예는 다른 것들 중에서도 어드레스 표준화, 근접 경계 결정, 및 동의어 해석을 포함할 수 있다. 일부 실시예에서, 시스템의 자동적 처리 또는 수동적 처리는 탐색 프로세스(800)와 연관된 임의의 다른 프로세스가 조회의 필드에 포함된 정보의 사용을 요구할 지를 결정하고 식별할 수 있다. 일부 실시예에서, 하나 이상의 탐색 관리자는 자동으로 조회의 하나 이상의 필드 중 어느 필드가 요구된 처리를 받을 수 있는지를 결정하고 식별할 수 있다.
단계(808)에서, 시스템이 확인 단계(806)에서 하나 이상의 필드에 대한 필드 처리가 요구된 것을 판단한 후, 탐색 관리자는 이에 따라 하나 이상의 적합한 필드 처리 기술을 요구된 필드에 적용할 수 있다.
단계(810)에서, 탐색 관리자는 탐색 조회와 연관된 탐색 컨덕터 조회를 구성할 수 있다. 일부 실시예에서, 탐색 컨덕터 조회는 스택-기반 탐색과 같은 임의의 적합한 탐색 조회 실행 계획에 따라서 시스템의 각종 노드(예를 들면, 탐색 관리자, 탐색 컨덕터, 저장 노드)에 의해 처리되도록 하기 위해 구성될 수 있다. 탐색 조회는 임의의 적합한 이진 포맷 또는 다른 머신 판독가능한 압축 포맷을 이용하여 인코딩될 수 있다는 것을 인식하여야 한다.
단계(812)에서, 하나 이상의 탐색 관리자는 하나 이상의 탐색 컨덕터 조회를 하나 이상의 탐색 컨덕터로 전송한다. 일부 실시예에서, 탐색 관리자는 자동으로 어느 탐색 컨덕터가 탐색 컨덕터 조회를 수신해야 하는지를 결정할 수 있고 그래서 탐색 컨덕터 조회를 탐색 컨덕터의 식별된 서브세트로 전달할 수 있다. 그러한 실시예에서, 탐색 컨덕터는 데이터의 소정 집합체와 미리 연관될 수 있으며, 시스템 인터페이스로부터 수신된 탐색 조회는 질의될 집합체를 명시할 수 있다. 이와 같이, 탐색 관리자는 탐색 컨덕터 조회를 하나 이상의 탐색 조회에서 명시된 집합체와 연관된 탐색 컨덕터로 전송한다.
단계(814)에서, 탐색 컨덕터는 탐색 결과를 대응하는 탐색 관리자에게 리턴한다. 일부 실시예에서, 탐색 결과들은 동시에 리턴될 수 있으며, 일부 실시예에서 탐색 결과들은 비동시적으로 리턴될 수 있다. 동시적으로라는 것은 탐색 관리자가 특정 탐색 컨덕터로부터의 탐색 컨덕터 결과를 기다리면서 결과를 차단하거나 동작을 중단할 수 있는 실시예를 말할 수 있다. 비동시적으로라는 것은 탐색 관리자가 많은 탐색 컨덕터로부터 동시에, 즉 병렬 방식으로 다른 결과를 차단하거나 다른 동작을 중단하지 않고 수신할 수 있는 실시예를 말할 수 있다. 탐색 컨덕터로부터 탐색 결과를 수신한 후, 탐색 관리자는 탐색 컨덕터로부터 리턴된 레코드 스코어에 기초하여 각각의 탐색 컨덕터로부터 수신한 결과를 하나 이상의 결과 리스트에다 취합할 수 있다.
확인 단계(816)에서, 탐색 관리자는 탐색 조회 내 표시에 기초하여, 탐색 관리자에 의해 컴파일된 탐색 결과의 추가적인 분석 처리가 수행되어야 할지를 결정할 수 있다. 일부 사례에서, 이러한 표시는 사용자에 의해 탐색 조회에 포함될 수 있다. 일부 실시예에서, 시스템은 탐색 조회에 포함된 정보를 이용하여 분석 처리가 요구되는지를 결정한다. 일부 실시예에서, 하나 이상의 탐색 관리자는 필드가 요구된 분석 처리를 받아야 하는 것을 자동으로 결정할 수 있다. 탐색 조회는 탐색 조회와 관련된 다른 데이터(예를 들면, 문자열, 객체)와 함께 명령어를 전달할 수 있는 소프트웨어 프로그래밍 언어로 구성될 수 있다. 마크업 언어와 같은 몇몇 프로그래밍 언어는 분석이 수행되어야 하는지에 관한 부울린 값(Boolean value)을 표시하는 필드 또는 실행될 특정 분석 모듈 및/또는 특정 분석 모듈을 호스팅하는 분석 에이전트 노드를 표시하는 더 복잡하게 사용자 정의된 필드와 같은 다양한 형태의 데이터를 식별하도록 코드에 삽입된 메타데이터 태그를 사용할 수 있다. 자바스크립트 또는 PHP와 같은 몇몇 프로그래밍 언어는 분석이 수행되어야 하는지를 식별하는 코드를 담은 저장된 컴퓨터 파일을 참조할 수 있는데, 이는 실행될 특정 분석 모듈 및/또는 특정 분석 모듈을 호스팅하는 분석 에이전트 노드를 표시하는 더 복잡하게 사용자 정의된 필드일 수 있다.
단계(818)에서, 만일 시스템이 확인 단계(816)에서 처리가 요구된다고 결정하면, 하나 이상의 분석 에이전트는 하나 이상의 적합한 처리 기술을 하나 이상의 결과 리스트에 적용한다. 하나 이상의 실시예에서, 적합한 기술은 다른 것들 중에서도 여러 레코드를 더 완전한 레코드로 완전한 레코드로 만드는 것, 결과에 대해 하나 이상의 분석을 수행하는 것, 및 레코드들 간의 관계에 관한 정보를 결정하는 것을 포함할 수 있다. 분석 에이전트는 하나 이상의 처리된 결과를 하나 이상의 탐색 관리자로 리턴할 수 있다.
단계(820)에서, 하나 이상의 탐색 관리자는 하나 이상의 결과 리스트를 압축해제하고 이를 조회를 개시했던 시스템으로 리턴할 수 있다.
도 9는 단계(902, 904, 908, 910, 및 912)뿐 아니라 확인 단계(906)를 갖는 탐색 컨덕터 기능(900)을 도시하는 흐름도이다.
단계(902)에서, 탐색 컨덕터는 조회를 하나 이상의 탐색 컨덕터로 전송한다.
단계(904)에서, 탐색 컨덕터는 그의 로딩된 구획에 대해 조회를 실행하여 후보 결과 집합을 생성한다. 하나 이상의 실시예에서, 단계(904)는 하나 이상의 인덱스 탐색을 포함할 수 있다. 하나 이상의 실시예에서, 탐색 컨덕터는 하나 이상의 스키마 내 정보를 이용하여 조회를 실행할 수 있다.
확인 단계(906)에서, 탐색 컨덕터는 명시된 조회에 기초하여, 탐색 컨덕터 조회에서 스코어링이 요청되었는지를 결정한다. 스코어링은 탐색 관리자에 의해 수신된 탐색 조회에서 표시될 수 있다.
만일 스코어링이 요청되면, 단계(908)에서 탐색 컨덕터는 후보 리스트 집합의 스코어를 매긴다. 디폴트 스코어 문턱치(default score threshold)는 스키마에서 정의될 수 있거나, 아니면 단계(902)에서 탐색 관리자에 의해 전송된 탐색 컨덕터 조회에 포함될 수 있다. 하나 이상의 실시예에서, 초기에는 탐색 컨덕터에 의해 필드 레벨에서 필드 특정 스코어링 알고리즘을 이용하여 스코어링이 이루어질 수 있는데, 그 알고리즘 중에는 하나 이상의 다른 스코어링 알고리즘에 의해 중단될 수 있는 디폴트가 있을 수 있다. 스코어링 알고리즘은 탐색 조회 및/또는 탐색 컨덕터 조회에서 정의되거나 다른 방식으로 식별될 수 있으며, 이에 맞추어 탐색 컨덕터에 의해 수행될 수 있다. 탐색 컨덕터는 그러한 개개의 필드 스코어에 기초하여 레코드에 복합 스코어를 줄 수 있다. 일부 실시예에서, 하나 이상의 필드 스코어 또는 다른 집계된 스코어를 집계함으로써 스코어를 계산할 수 있는 하나 이상의 전체 스코어링 방법이 탐색 컨덕터에 의해 적용될 수 있다.
단계(910)에서, 이후 탐색 컨덕터는 스코어를 사용하여 후보 결과 집합 내 임의의 나머지 레코드를 분류한다.
확인 단계(912)에서, 탐색 컨덕터는 후보 결과 집합을 탐색 관리자로 리턴하는데, 이 때 리턴된 결과의 수는 단계(902)에서 탐색 관리자에 의해 전송된 조회에서 요청된 크기로 제한될 수 있다.
도 10은 단계(1002, 1004, 1006, 1010, 및 1012)뿐만 아니라 확인 단계(1008)를 갖는 집합체 분할(1000)을 도시하는 흐름도이다.
단계(1002)에서, 하나 이상의 집합체는 하나 이상의 구획자에 제공된다. 집합체는 하나 이상의 스키마와 함께 제공되어 하나 이상의 구획자는 하나 이상의 집합체 내 레코드를 어떻게 조작할지를 이해할 수 있도록 한다.
단계(1004)에서, 하나 이상의 집합체 내 레코드가 조각으로 나누어진다.
확인 단계(1008)에서, 시스템은 주어진 데이터 집합체의 스키마를 확인하고 구획 내 임의의 필드가 구획자에 의해 인덱싱될 것인지를 결정한다. 날짜 인덱스 또는 퍼지 인덱스(예를 들면, 포네틱(phonetic))와 같은 인덱스는 임의의 공지된 데이터베이스에서 사용되는 필드-인덱스의 임의의 적합한 예일 수 있다.
단계(1010)에서, 확인 단계(1008)에서 만일 시스템이 구획자가 구획 내 임의의 필드를 인덱싱하는 것으로 결정하면, 구획자는 스키마 내 인덱스 정의에 기초하여 구획을 인덱싱한다.
확인 단계(1012)에서, 시스템은 주어진 데이터 집합체의 스키마를 확인하고 구획이 구획자에 의해 압축될지를 결정한다.
단계(1014)에서, 확인 단계(1012)에서 만일 시스템이 구획자가 구획을 압축하는 것으로 결정되면, 구획자는 스키마에서 명시된 압축 방법을 이용하여 필드 및 레코드를 압축하는데, 이 방법은 구획을 충분히 압축하면서도 부가적으로는 필드 레벨에서 압축해제를 가능하게 하기에 적합한 임의의 기술일 수 있다.
단계(1016)에서, 시스템은 구획을 하나 이상의 탐색 컨덕터에 분배하기에 적합한 구획을 저장한다.
집합체 분할(1000)은 대형 데이터 집합체의 초기 로딩, 다시 로딩 또는 대체를 만들어 낼 수 있다. 구획자는 고유의 레코드 ID를 집합체 내 각 레코드에 할당할 수 있고 분할된 집합체에 버전 번호를 할당할 수 있으며, 부가적으로는 요구된 집합체 스키마를 하나 이상의 SM 및 하나 이상의 SC에 의해 사용하기 위한 구획 세트 버전과 연관시킬 수 있다.
제 2 실시예에서, 적합한 조회 인터페이스를 비롯한 하나 이상의 적합한 인터페이스를 통해 새로운 레코드가 집합체에 추가될 수 있다. 조회 인터페이스는 조회를 통해 결과 집합을 리턴하는 것을 지원할 수 있지만, 집합체 버전과 연관된 집합체 스키마를 리턴한 것도 지원할 수 있다. 또한, 탐색 인터페이스는 하나 이상의 사용자가 그 집합체 스키마를 사용하여 이를 탐색 인터페이스를 통해 탐색 관리자에게 제출함으로써 집합체에 새로운 레코드를 추가하게 해줄 수 있다. 그런 다음 탐색 관리자는 새로운 레코드를 적절한 탐색 컨덕터에 분배하여 집합체에 추가할 수 있다. 일부 실시예에서, 탐색 관리자는 주어진 구획의 복수개의 사본 전체에서 궁극적인 일체성을 보장할 수 있고 비휘발성 저장소에 대해 데이터 내구성을 보증하여 데이터가 시스템 장애 후에도 이용 가능하다는 것을 보장할 수 있다.
하나 이상의 실시예에서, 레코드는 유사한 방식으로 삭제될 수 있다. 조회로부터 생긴 결과 세트는 각 레코드마다 불투명하고 고유한 ID를 포함할 수 있다. 이러한 고유 ID는 주어진 버전의 집합체 내 특정 레코드를 고유하게 식별하는데 필요한 정보를 인코딩할 수 있으며 다른 것들 중에서도, 집합체 이름, 구획 세트 버전, 및 고유 레코드 ID 중 하나 이상을 포함할 수 있다. 적절한 권한이 있다면, 조회 인터페이스는 고유 레코드 ID에 대응하는 레코드를 삭제하라는 요청을 받아들일 수 있다. 이러한 레코드는 즉시 물리적으로 삭제될 수 있으며, 삭제한다고 표시될 수 있고 더 이상 미래의 답변 세트 내에 포함되지 않을 수 있다.
하나 이상의 다른 실시예에서, 새로운 집합체 스키마 또는 삭제 요청은 조회 인터페이스에 제출되어 각기 새로운 집합체를 생성하거나 또는 기존 집합체를 제거할 수 있다. 이렇게 생성된 새로운 집합체는 비어 있는 채로 시작할 수 있는데, 이곳에서 레코드가 전술한 메커니즘을 비롯한 임의의 적합한 메커니즘을 이용하여 추가될 수 있다.
도 11은 단계(1102, 1104, 1106, 1108, 1112, 1114, 1116, 1118 및 1120)뿐만 아니라 확인 단계(1110)를 갖는 구획 로딩(1110)을 도시하는 흐름도이다.
단계(1102)에서, 슈퍼바이저는 하나 이상의 구획이 하나 이상의 탐색 컨덕터로 로딩되는지를 결정한다.
단계(1104)에서, 슈퍼바이저는 구성 요청을 종속 관리자로 전송하며, 종속 관리자는 하나 이상의 탐색 컨덕터에 로딩될 하나 이상의 구획과 연관된 하나 이상의 구성 패키지를 리턴한다.
단계(1106)에서, 슈퍼바이저는 어느 탐색 컨덕터로 구획이 로딩될 것인지를 결정한다. 하나 이상의 실시예에서, 슈퍼바이저는 하나 이상의 어느 탐색 컨덕터가 요구된 페일오버 기능(failover ability)을 제공하기 위해 사용될 것인지를 결정한다. 하나 이상의 다른 실시예에서, 슈퍼바이저는 하나 이상의 어느 탐색 컨덕터가 하나 이상의 클러스터에 의해 인식되는 작업 부하를 더 고르게 하기 위해 사용될지를 결정한다.
단계(1108)에서, 슈퍼바이저는 하나 이상의 탐색 컨덕터를 포함하는 노드와 연관된 하나 이상의 노드 관리자로 지시를 전송한다. 하나 이상의 실시예에서, 지시는 하나 이상의 노드 관리자에게 구획을 하나 이상의 탐색 컨덕터에 로딩하기 위한 슈퍼바이저로부터의 추가 명령어를 대기하라고 알려준다. 다른 실시예에서, 지시는 하나 이상의 탐색 컨덕터에 로딩될 하나 이상의 구획과 연관된 하나 이상의 구성 패키지를 포함할 수 있다. 하나 이상의 다른 실시예에서, 지시는 하나 이상의 탐색 컨덕터에게 새로운 구획을 메모리에 로딩하기 위해 준비하라는 명령어를 포함할 수 있다.
단계(1110)에서, 하나 이상의 노드 관리자는 구획을 로딩하는데 필요한 임의의 노드 자원을 할당한다.
확인 단계(1112)에서, 하나 이상의 노드 관리자는 하나 이상의 구획을 로딩하는데 하나 이상의 소프트웨어 또는 데이터 업데이트가 필요한지를 결정한다.
단계(1114)에서, 만일 하나 이상의 노드 관리자가 하나 이상의 소프트웨어 또는 데이터 업데이트가 필요하다고 결정하면, 하나 이상의 노드 관리자는 하나 이상의 노드로부터 상기 하나 이상의 소프트웨어 업데이트를 저장하고 분배하기에 적합한 상기 하나 이상의 소프트웨어 또는 데이터 업데이트를 검색한다. 하나 이상의 노드 관리자는 하나 이상의 검색된 소프트웨어 또는 데이터 업데이트의 설치를 진행한다.
단계(1116)에서, 하나 이상의 노드 관리자는 하나 이상의 노드로부터 하나 이상의 구획을 저장하고 분배하기에 적합한 하나 이상의 구획을 검색한다. 하나 이상의 실시예에서, 검색된 구획은 이미 인덱싱되어 저장되어 있으며 일단 탐색되면 하나 이상의 탐색 컨덕터와 연관된 메모리에 로딩된다. 다른 실시예에서, 검색된 구획은 검색 전에 인덱싱되어 있지 않거나 압축되어 있지 않으며, 하나 이상의 탐색 컨덕터와 연관된 메모리에 로딩되기 전에 하나 이상의 탐색 컨덕터에 의해 인덱싱되거나 압축된다.
단계(1118)에서, 하나 이상의 탐색 컨덕터는 핫빗을 슈퍼바이저로 전송하며 슈퍼바이저는 하나 이상의 탐색 컨덕터가 시스템에서 사용할 준비가 되어 있는지를 결정한다.
단계(1120)에서, 슈퍼바이저는 하나 이상의 탐색 관리자에게 하나 이상의 탐색 컨덕터가 탐색 요청을 수신할 준비가 되어 있다고 알려준다.
도 12a는 집합체(1202) 및 집합체'(1210)로 표시된 집합체(1202)의 업데이트를 도시한다. 집합체(1202)는 최소한 제 1 구획(1204) 및 n번째까지의 구획(1206)으로 분리될 수 있으며, 집합체'(1210)는 최소한 제 1 구획'(1212) 및 n번째까지의 구획'(1214)으로 분리될 수 있다.
도 12b는 제 1 탐색 노드(1220)가 제 1 구획(1204) 및 n번째까지의 구획(1206)의 제 1 세트를 갖고 있으며 제 2 탐색 노드(1230)가 제 1 구획(1204) 및 n번째까지의 구획(1206)의 제 2 세트를 갖고 있는 것을 도시하며, 이때 두 개의 제 1 탐색 노드(1220) 및 제 2 탐색 노드(1230)는 적어도 하나의 탐색 관리자(1240)에 연결될 수 있다. 또한, 제 1 탐색 노드(1220), 제 2 탐색 노드(1230) 및 탐색 관리자(1240)는 하나 이상의 슈퍼바이저(1250)에 연결될 수 있다.
도 12c는 슈퍼바이저(1250)로부터의 지시의 결과로서 제 1 탐색 노드(1220)가 탐색 관리자(1240)로부터 연결해제되었지만, 제 2 탐색 노드(1230)는 연결을 계속 유지하고 있는 것을 도시한다. 하나 이상의 실시예에서, 이것은 제 1 탐색 노드(1220)가 업그레이드되고 있을 때 탐색 관리자(1240)가 집합체(1202) 내 레코드의 탐색을 이어나가게 해줄 수 있다.
도 12d는 제 1 탐색 노드(1220)가 집합체'(1210)를 포함하기 위해 업데이트되는 것을 도시한다.
도 12e는 슈퍼바이저(1250)로부터의 지시의 결과로서 제 1 탐색 노드(1220)가 탐색 관리자(1240)에 연결된 제 1 구획'(1212) 및 n번째까지의 구획'(1214)을 갖는 것을 도시한다. 이후 슈퍼바이저(1250)는 탐색 관리자(1240)로부터의 제 2 탐색 노드(1230)를 연결해제하라는 지시를 전송한다. 하나 이상의 실시예에서, 이것은 탐색 관리자(1240)가 집합체'(1210) 내 레코드의 탐색을 이어나가게 해줄 수 있다.
도 12f는 제 2 탐색 노드(1230)가 집합체'(1210)를 포함하기 위해 업데이트되는 것을 도시한다.
도 12g는 제 1 탐색 노드(1220)가 탐색 관리자(1240)에 연결된 제 1 구획(1212) 및 n번째까지의 구획(1214)의 제 1 세트를 갖고 있으며 제 2 탐색 노드(1230)가 탐색 관리자(1240)에 연결된 제 1 구획(1212) 및 n번째까지의 구획(1214)의 제 2 세트를 갖는 것을 도시하며, 제 2 탐색 노드(1230)와 탐색 관리자(1240) 사이의 연결은 슈퍼바이저(1250)로부터의 지시의 결과로서 재설정될 수 있다. 이것은 탐색 관리자(1240)가 제 1 탐색 노드(1220) 또는 제 2 탐색 노드(1230) 중 어느 하나의 탐색 노드에서 집합체'(1210) 내 레코드의 탐색을 이어나가게 해줄 수 있다.
도 13은 탐색 노드 클러스터(1300)가 제 1 탐색 노드(1302), 제 2 탐색 노드(1304), 제 3 탐색 노드(1306), 제 4 탐색 노드(1308), 제 1 집합체의 제 1 구획(1310), 제 2 구획(1312), 제 3 구획(1314), 및 제 4 구획(1316), 및 제 2 집합체의 제 1 구획(1320), 제 2 구획(1322), 제 3 구획(1324), 및 제 4 구획(1326)을 갖는 것을 도시한다.
탐색 노드 클러스터(1300)는 요구된 레벨의 구획 종속를 제공하기 위해 배열될 수 있으며, 이에 맞추어 하나 이상의 탐색 노드가 시스템으로부터 추가 또는 제거될 수 있다. 또한 하나 이상의 탐색 노드에 포함된 구획은 시간에 따라 변할 수 있으며, 구획 로딩(1110)과 유사한 프로세스를 추종하는 탐색 노드의 노드 관리자에 의해 로딩되거나 언로딩될 수 있다. 탐색 노드 클러스터(1300)에서 구획을 업데이트하거나 또는 다른 방식으로 변경할 때, 도 12a, 도 12b, 도 12c, 도 12d, 도 12E, 도 12F, 및 도 12G에서 설명된 것과 유사한 방법이 사용될 수 있다.
도 14는 라인 타입A(1402), 라인 타입B(1404), 라인 타입C(1406), 라인 타입D(1408), 제 1 네트워크 세그먼트(1410), 제 1 네트워크 세그먼트(1410), 제 2 네트워크 세그먼트(1412), 제 3 네트워크 세그먼트(1414), 제 1 탐색 관리자(1420), n번째 탐색 관리자(1422), 제 1 분석 에이전트(1430), n번째 분석 에이전트(1432), 제 1 탐색 컨덕터(1440), n번째 탐색 컨덕터(1442), 구획(1450), 제 1 종속 관리자(1460), n번째 종속 관리자(1462), 제 1 슈퍼바이저(1470), 및 n번째 슈퍼바이저(1472)를 갖는 연결 구성도(1400)를 도시한다.
하나 이상의 실시예에서, 라인 타입A(1402)는 제 1 대역폭 계층 및 제 1 지연 계층을 갖는 연결을 표현할 수 있고, 라인 타입B(1404)는 제 2 대역폭 계층 및 제 1 지연 계층을 갖는 연결을 표현할 수 있고, 라인 타입C(1406)는 제 3 대역폭 계층 및 제 2 지연 계층을 갖는 연결을 표현할 수 있고, 라인 타입D(1402)는 제 4 대역폭 계층 및 제 2 지연 계층을 갖는 연결을 표현할 수 있다. 하나 이상의 실시예에서, 제 1 대역폭 계층은 제 2 대역폭 계층보다 높은 대역폭과 연관될 수 있고, 제 2 대역폭 계층은 제 3 대역폭 계층보다 높은 대역폭과 연관될 수 있고, 제 3 대역폭 계층은 제 4 대역폭 계층보다 높은 대역폭과 연관될 수 있으며, 제 1 지연 계층은 제 2 대역폭 계층보다 낮은 지연과 연관될 수 있다.
하나 이상의 실시예에서, 제 1 네트워크 세그먼트(1410)는 라인 타입A(1402), 라인 타입 B(1404), 라인 타입 C(1406)를 포함하는 임의의 적합한 연결을 사용하여 외부 서버에 연결될 수 있다. 제 1 네트워크 세그먼트(1410)는 또한 라인 타입 A(1402) 연결을 이용하여 제 1 탐색 관리자(1420) 및 n번째까지의 탐색 관리자(1422)를 포함하는 제 1 클러스터에 연결될 수 있다.
하나 이상의 실시예에서, 제 2 네트워크 세그먼트(1412)는 라인 타입A(1402) 연결을 이용하여 제 1 탐색 관리자(1420) 및 n번째까지의 탐색 관리자(1422)를 포함하는 제 1 클러스터에 연결될 수 있다. 제 2 네트워크 세그먼트(1412)는 또한 라인 타입A(1402) 연결을 이용하여 제 1 분석 에이전트(1430) 및 n번째까지의 분석 에이전트(1432)를 포함하는 제 2 클러스터, 라인 타입B(1404) 연결을 이용하여 제 1 탐색 컨덕터(1440) 및 n번째까지의 탐색 컨덕터(1442)를 포함하는 제 3 클러스터, 라인 타입D(1408) 연결을 이용하여 제 1 종속 관리자(1460) 및 n번째까지의 종속 관리자(1462)를 포함하는 제 4 클러스터, 및 라인 타입D(1408) 연결을 이용하여 제 1 슈퍼바이저(1470) 및 n번째까지의 슈퍼바이저(1472)를 포함하는 제 5 클러스터에 연결될 수 있다.
하나 이상의 실시예에서, 라인 타입A(1402)의 대역폭 계층은 제 1 탐색 관리자(1420) 및 n번째까지의 탐색 관리자(1422)를 포함하는 제 1 클러스터가 제 1 탐색 컨덕터(1440) 및 n번째까지의 탐색 컨덕터(1442)를 포함하는 제 3 클러스터 내 적합한 개수의 탐색 컨덕터로부터 적절한 양의 정보를 최소한 수신할 수 있는 것을 충분히 보장할 수 있다. 라인 타입A(1402)의 지연 계층은 적어도 시스템이 요구된 개수의 조회를 실행할 만큼 충분히 대응할 수 있도록 하기 위해 충분히 낮을 수 있다.
하나 이상의 실시예에서, 라인 타입B(1404)의 대역폭 계층은 제 1 탐색 컨덕터(1440) 및 n번째까지의 탐색 컨덕터(1442)를 포함하는 제 3 클러스터가 요구된 크기의 결과를 최소한 리턴할 수 있는 것을 충분히 보장할 수 있다. 라인 타입B(1404)의 지연 계층은 최소한 시스템이 요구된 개수의 조회를 실행할 만큼 충분히 대응할 수 있도록 하기 위해 충분히 낮을 수 있다.
하나 이상의 실시예에서, 라인 타입D(1408)의 대역폭 계층은 제 1 종속 관리자(1460) 및 n번째까지의 종속 관리자(1462)를 포함하는 제 4 클러스터 내 종속 관리자가 요구된 개수의 패키지 요청을 최소한 수신하고 요구된 개수의 패키지를 리턴할 수 있는 것을 충분히 보장할 수 있다. 또한, 라인 타입D(1408)의 대역폭 계층은 제 1 슈퍼바이저(1470) 및 n번째까지의 슈퍼바이저(1472)를 포함하는 제 5 클러스터 내 슈퍼바이저가 요구된 개수의 노드 및 모듈을 최소한 모니터링하고 관리할 수 있는 것을 충분히 보장할 수 있다. 라인 타입D(1408)의 지연 계층은 최소한 시스템이 요구된 기간 내에 관리할 수 있도록 하고 요구된 모니터링 빈도수를 제공할 수 있도록 하기 위해 충분히 낮을 수 있다.
하나 이상의 실시예에서, 제 3 네트워크 세그먼트(1414)는 라인 타입C(1406) 연결을 이용하여 제 1 탐색 컨덕터(1440) 및 n번째까지의 탐색 컨덕터(1442)를 포함하는 제 3 클러스터와, 라인 타입D(1408) 연결을 이용하여 제 1 종속 관리자(1460) 및 n번째까지의 종속 관리자(1462)를 포함하는 제 4 클러스터와, 라인 타입D(1408) 연결을 이용하여 제 1 슈퍼바이저(1470) 및 n번째까지의 슈퍼바이저(1472)를 포함하는 제 5 클러스터, 및 라인 타입C(1406) 연결을 이용하여 하나 이상의 구획(1450)을 포함하는 제 6 클러스터에 연결될 수 있다.
하나 이상의 실시예에서, 라인 타입B(1404)의 대역폭 계층은 하나 이상의 구획(1450)이 최소한 요구된 집합체에 액세스하고 요구된 기간 내에서 요구된 개수의 구획을 출력할 수 있는 것을 충분히 보장할 수 있다. 또한, 라인 타입B(1404)의 대역폭 계층은 제 1 탐색 관리자(1420) 및 n번째까지의 탐색 관리자(1422)를 포함하는 제 1 클러스터가 요구된 기간 내에 요구된 개수의 구획을 최소한 로딩할 수 있는 것을 충분히 보장할 수 있다. 라인 타입B(1404)의 지연 계층은 연결을 이용하는 노드가 요구된 기간 내에 적어도 시스템 지시에 반응할 수 있게 해주고, 시스템이 요구된 모니터링 빈도수를 제공할 수 있도록 하기 위해 충분히 낮을 수 있다.
하나 이상의 실시예에서, 라인 타입D(1408)의 대역폭 계층은 제 1 종속 관리자(1460) 내지 n번째까지의 종속 관리자(1462)를 포함하는 제 4 클러스터 내 종속 관리자가 최소한 요구된 개수의 패키지 요청을 수신하고 요구된 개수의 패키지를 리턴할 수 있는 것을 충분히 보장할 수 있다. 또한, 라인 타입D(1408)의 대역폭 계층은 제 1 슈퍼바이저(1470) 내지 n번째까지의 슈퍼바이저(1472)를 포함하는 제 5 클러스터 내 슈퍼바이저가 요구된 개수의 노드 및 모듈을 최소한 모니터링하고 관리할 수 있는 것을 충분히 보장할 수 있다. 라인 타입D(1408)의 지연 계층은 시스템이 요구된 기간 내에 관리될 수 있도록 하고 요구된 모니터링 빈도수를 제공할 수 있도록 하기 위해 충분히 낮을 수 있다.
하나 이상의 실시예에서, 제 1 슈퍼바이저(1470) 내지 n번째까지의 슈퍼바이저(1472)를 포함하는 제 5 클러스터는 임의의 적합한 개수의 노드 내 하나 이상의 노드 관리자와의 라인 타입D(1408) 연결을 가질 수 있다.
하나 이상의 실시예에서, 하나 이상의 다른 종류의 모듈을 포함하는 추가 클러스터는 제 1 네트워크 세그먼트(1410), 제 2 네트워크 세그먼트(1412), 및/또는 제 3 네트워크 세그먼트(1414)에 연결될 수 있는데, 이러한 연결은 라인 타입A(1402), 라인 타입B(1404), 라인 타입C(1406), 및/또는 라인 타입D(1408) 연결을 포함할 수 있다.
도 15는 장애 극복 아키텍처(1500)가 슈퍼바이저(1502), n번째 슈퍼바이저(1504), 제 1 종속 노드(1510), 종속 노드 관리자(1512), 종속 관리자(1514), n번째 종속 노드(1520), n번째 종속 노드 관리자(1522), n번째 종속 관리자(1524), 제 1 노드(1530), 노드 관리자(1532), 모듈(1534), n번째 노드(1540), n번째 노드 관리자(1542), 및 n번째 모듈(1544)을 포함하는 것을 도시한다. 도 15의 예시적인 시스템(1500)과 같은 일부 실시예는 노드를 복수의 클러스터로 논리적으로 구성할 수 있다. 그러나 일부 실시예는 만약에 있다면 하나의 논리 클러스터를 가질 수 있다.
하나 이상의 실시예에서, 제 1 클러스터는 슈퍼바이저(1502) 및 n번째까지의 슈퍼바이저(1504)를 포함할 수 있다. 각각의 슈퍼바이저(1502)는 슈퍼바이저(1502)와 제 2 클러스터 내 하나 이상의 노드 사이에서 통신을 용이하게 해주기에 적합한 네트워크 인터페이스 카드(network interface card, NIC)와 같은 네트워크 인터페이스 컴포넌트를 포함할 수 있다. 제 2 클러스터는 제 1 종속 노드(1510) 및 n번째까지의 종속 노드(1520)를 포함할 수 있고, 제 1 종속 노드(1510)는 노드 관리자(1512) 및 종속 관리자(1514)를 포함할 수 있으며 n번째 종속 노드(1520)는 n번째 종속 노드 관리자(1522) 및 n번째 종속 관리자(1524)를 포함할 수 있다. 상기 제 1 클러스터 내 슈퍼바이저는 또한 제 1 노드(1530) 및 n번째까지의 노드(1540)를 포함하는 제 3 클러스터 내 하나 이상의 노드와 통신하기에 적합한 임의의 적합한 개수의 연결을 가질 수 있고, 제 1 노드(1530)는 노드 관리자(1532) 및 임의의 적합한 개수의 모듈(1534)을 포함할 수 있으며, n번째 노드(1540)는 n번째 노드 관리자(1542) 및 임의의 적합한 개수의 n번째 모듈(1544)을 포함할 수 있다.
하나 이상의 슈퍼바이저(1502)는 하나 이상의 종속 노드 관리자(1512), 하나 이상의 종속 관리자(1514), 및 임의의 적합한 개수의 노드 관리자(1532) 및 모듈(1534)로부터 핫빗을 수신할 수 있다. 하나 이상의 실시예에서, 이것은 하나 이상의 슈퍼바이저(1502)가 분산형 컴퓨팅 시스템 내 하나 이상의 노드 및/또는 모듈의 상태를 모니터링하게 해줄 수 있다. 또한, 슈퍼바이저(1502)는 하나 이상의 적합한 지시를 임의의 적합한 개수의 종속 노드 관리자(1512) 및 임의의 적합한 개수의 노드 관리자(1532)로 전송할 수 있다.
하나 이상의 실시예에서, 슈퍼바이저(1502)는 하나 이상의 모듈(1534)을 하나 이상의 제 1 노드(1530)에 설치할 때 하나 이상의 제 1 종속 노드(1510)로부터 구성 패키지를 요청할 수 있다.
도 16은 예시적인 실시예에 따라서, 노드(1600)의 구성을 도시하는 도면이다. 도 16에서 도시된 노드(1600)는 노드 관리자(1602) 소프트웨어 모듈 및 제 1 소프트웨어 모듈(1610) 및 n번째까지의 모듈(1612)을 포함할 수 있는 임의의 개수의 부가적인 소프트웨어 모듈(1610, 1612)을 포함할 수 있다. 소프트웨어 모듈은 탐색 관리자, 탐색 컨덕터, 분석 에이전트, 슈퍼바이저 및 종속 관리자를 비롯하여, 시스템 모듈 중 임의의 모듈을 포함할 수 있다.
도 16의 예시적인 구성에 따르면, 노드(1600)는 데이터 네트워크를 통해 슈퍼바이저 모듈 또는 슈퍼바이저 노드를 실행하는 제 2 노드에 통신 가능하게 연결될 수 있다. 노드(1600)에 의해 설치되어 실행되는 노드 관리자(1602)는 또한 슈퍼바이저 노드와 통신하도록 구성될 수 있고, 또한 제 1 모듈(1610) 내지 n번째까지의 모듈(1612)을 포함하는 노드에 설치된 소프트웨어 모듈(1610, 1612)을 모니터링하도록 구성될 수 있다. 노드 관리자(1602)는 슈퍼바이저로부터 수신된 임의의 적합한 지시를 실행할 수 있고, 또한 노드(1600), 노드 관리자(1602), 및 제 1 모듈(1610) 내지 n번째 모듈(1612) 중 하나 이상의 것의 상태에 관해 보고할 수 있다. 제 1 모듈(1610)은 하나 이상의 슈퍼바이저에 링크될 수 있고 노드 내 하나 이상의 다른 모듈에 링크될 수 있는데, 여기서 노드 내 다른 모듈은 제 1 모듈(1610)과 상이한 종류일 수 있거나 제 1 모듈(1610)과 공통의 종류일 수 있다. 또한, 제 1 모듈(1610)은 시스템 내 하나 이상의 다른 모듈, 노드, 또는 클러스터와 링크될 수 있다.
도 17은 장애 처리(1700)를 위한 흐름도이다.
슈퍼바이저는 각 구획의 중복 사본(redundant copy)이 얼마나 많이 요구되는지, 장애 컴포넌트를 다른 노드로 옮기기 전에 장애 컴포넌트를 얼마나 많은 횟수로 재시작하기를 시도할지 등을 표시하는 집합체 당 설정치를 포함할 수 있는 시스템 내 모든 데이터 집합체의 정의 및 구성을 유지한다. 슈퍼바이저는 또한 노드 관리자에 의해 제공된 것으로서, 가용 노드 및 그의 자원의 리스트를 유지한다. 이 정보로부터, 슈퍼바이저는 여전히 구성 설정을 준수하면서, 필요한 시스템 모듈을 가용 노드에 맵핑함으로써 요구된 시스템 상태를 계산한다. 장애 처리(1700)는 슈퍼바이저가 모듈 장애(1702)을 검출하는 것에서 시작하는데, 하나 이상의 슈퍼바이저는 실제 시스템 상태를 요구된 시스템 상태와 비교함으로써 하나 이상의 모듈의 장애를 검출할 수 있다. 하나 이상의 실시예에서, 슈퍼바이저는 노드 관리자 또는 시스템 모듈로부터 하나 이상의 핫빗이 더 이상 검출되지 않을 때 장애를 검출할 수 있다. 하나 이상의 실시예에서, 하나 이상의 모듈로부터의 핫빗은 하나 이상의 슈퍼바이저에 의해 해석될 수 있는 하나 이상의 다른 모듈에 관한 상태 정보를 포함할 수 있다.
슈퍼바이저는 데이터 집합체의 정의 및 데이터 집합체와 연관된 구성 설정을 저장할 수 있다. 슈퍼바이저는 또한 노드 관리자에 의해 보고된 것으로서 가용 시스템 자원에 관한 정보를 저장할 수 있다. 구성 정보는 다른 것들 중에서도, 각 구획의 중복 사본이 얼마나 많이 요구되는지, 장애 컴포넌트를 다른 노드로 옮기기 전에 장애 컴포넌트를 얼마나 많은 횟수로 재시작하기를 시도할지 등을 표시하는 집합체 당 설정을 포함할 수 있다. 이러한 모든 정보로부터, 슈퍼바이저는 여전히 구성 설정을 준수하면서, 필요한 시스템 모듈을 가용 노드에 맵핑하는 '요구된' 시스템 상태를 도출한다. 이러한 모든 정보는 JSON 파일로서 디스크 또는 IMDB 내 미리 정의된 데이터 집합체에 저장될 수 있는 JSON 객체로서 표현된다.
이후 슈퍼바이저는 연관된 노드 관리자가 기능하고 있는지를 검출할 수 있다(1704).
만일 하나 이상의 장애 모듈과 연관된 노드 관리자가 요구한 대로 또는 현재 상황 구성에 따라서 기능하고 있으면, 단계(1706)에서 슈퍼바이저는 노드 관리자가 하나 이상의 장애 모듈을 재시작할 것을 시도하라고 명령하는 하나 이상의 지시를 노드 관리자에게 전송할 수 있다.
이후 슈퍼바이저는 모듈이 복구되었는지를 확인할 수 있고(1708), 만일 복구되었으면 프로세스는 종료 단계로 진행할 수 있다(1710). 일부 구현예에서, 임의의 모듈의 제 1 조치는 핫빗을 통해 상태를 하나 이상의 가용 슈퍼바이저에게 보고하는 것이다. 핫빗로 표시되는 바와 같이, 만일 모듈 기능이 복구되지 않은 것으로 결정되면, 재시작 문턱치에 도달했는지를 결정할 수 있다(1712). 문턱치 시도 횟수는 시스템 관리자에 의해 설정되고 슈퍼바이저가 저장될 수 있는 집합체당 구성 설정치이다. 슈퍼바이저는 시도 횟수에 도달하지 않았다면 모듈을 재시작하도록 시도하라는 지시를 노드 관리자로 전송한다(1706).
만일 문턱치에 도달했으면, 슈퍼바이저는 모듈을 놓아둘 적합한 다음 노드를 결정하며(1714) 슈퍼바이저는 새로운 노드상의 노드 관리자에게 현재 모듈을 설치하고 시작할 것을 요청한다(1716).
그런 다음 슈퍼바이저는 모듈이 복구되었는지를 확인할 수 있으며(1718), 만일 복구되었으면 프로세스는 종료 단계로 진행할 수 있다(1710). 만일 모듈이 복구되지 않으면, 시스템은 새로운 노드에 대한 재시작 문턱치에 도달했는지를 확인할 수 있다(1720). 만일 문턱치에 도달하지 않았으면, 슈퍼바이저는 새로운 노드상의 노드 관리자에게 현재 모듈을 설치하고 시작할 것을 요청한다(1716).
그렇지 않고, 슈퍼바이저는 전체적인 노드 재시도 문턱치에 도달했는지를 확인할 수 있다(1722). 이 값도 역시 시스템 관리자에 의해 정의되며 슈퍼바이저에 의해 스크립트로 저장되거나 JSON이나 유사 데이터 구조 객체로서 저장될 수 있다. 만일 문턱치에 도달하지 않았으면, 슈퍼바이저는 모듈을 놓아둘 다음의 적합한 노드를 결정하고(1714) 새로운 노드상의 노드를 재시작시키려 시도한다(1724). 만일 전체적 문턱치에 도달하면, 시스템은 모듈 장애를 표시하는 경보를 발생한다.
핫빗이 없다고 표시되거나 또는 노드 관리자로부터 장애 상태를 표시하는 핫빗이 표시될 때, 만일 슈퍼바이저가 대응하는 핫빗에 기초하여 연관된 노드 관리자가 기능하지 않는 것을 검출하면, 슈퍼바이저는 장애 노드 관리자를 가진 노드와 연관된 모듈을 선택한다(1726). 그 다음, 슈퍼바이저는 모듈을 놓아둘 적합한 다음 노드를 결정한다. 이후, 슈퍼바이저는 새로운 노드상의 노드 관리자에게 현재 모듈을 설치하고 시작하라고 요청한다.
그런 다음 슈퍼바이저는 모듈이 복구되었는지를 확인할 수 있다(1732). 만일 모듈이 복구되지 않았으면, 슈퍼바이저는 새로운 노드에 대한 재시작 문턱치에 도달했는지를 확인한다(1734). 만일 문턱치에 도달하지 않았으면, 슈퍼바이저는 새로운 노드상의 노드 관리자에게 현재 모듈을 설치하고 시작하라고 요청한다(1730).
만일 문턱치에 도달했으면, 슈퍼바이저는 전체적인 노드 재시도 문턱치에 도달했는지를 확인한다(1736). 만일 문턱치에 도달하지 않았으면, 슈퍼바이저는 모듈을 놓아둘 다음의 적합한 노드를 결정하고 새로운 노드상의 노드를 재시작하려 시도한다. 만일 전체적인 문턱치에 도달하였으면, 시스템은 모듈의 장애를 표시하는 경보를 발생할 수 있다(1738).
그렇지 않고, 만일 모듈이 복구되면, 슈퍼바이저는 장애 노드에서 이전시킬 모듈이 더 있는지를 확인한다(1740). 만일 노드가 장애이면, 슈퍼바이저는 요구된 상태에서 정의된 대로, 장애 노드에서 실시되고 있었던 모든 서비스를 이전하도록 구성된다. 슈퍼바이저는 장애 노드 없는 새로운 요구된 상태를 산출할 것이며 이에 맞추어 서비스를 이전해야 할 것이다. 일부 구현예에서, 슈퍼바이저는 장애 노드 관리자를 가진 노드와 연관된 모듈을 선택할 수 있으며 노드 관리자는 모듈을 설치하고 시작하려고 시도한다.
만일 슈퍼바이저가 더 이상의 모듈이 이전되지 않을 것이라고 결정하면, 프로세스는 종료한다(1710).
도 18은 슈퍼바이저(1802)와 종속 관리자(1804)의 블록도 연결(1800)을 도시한다. 일반적으로, 슈퍼바이저(1802)는 시스템을 모니터링하고/모니터링하거나 시스템의 동작 상태를 유지하는 프로세스 및 작업을 실행할 수 있다. 슈퍼바이저(1802)는 시스템에서 변동을 일으키는 임의의 적합한 구성 요청을 수용할 수 있다. 소프트웨어 또는 데이터 구성은 종속 관리자(1804) 소프트웨어 모듈 또는 슈퍼바이저(1802) 소프트웨어 모듈을 실행하는 노드에 의해 다루어질 수 있지만, 배치가능 패키지는 별개의 데이터 프레임으로부터 제공될 수 있다. 별개의 데이터 프레임은 구성에 따라서 배치가능 패키지를 준비할 때 사용되는 하나 이상의 열람 가능한 파일(releasable file)을 저장하는 비일시적 머신 판독가능한 저장 매체이다.
일 실시예에 따르면, 종속 관리자(1804)는 시스템 내 임의의 적합한 소프트웨어 또는 데이터 컴포넌트의 유지보수 또는 구성을 내장한 비일시적 머신 판독가능한 저장 매체로서 사용될 수 있다. 이러한 구성은 릴리스 프로세스(release process)에서 새로운 데이터, 메타데이터 또는 소프트웨어의 업데이트에 의해 만들어질 수 있다.
종속 관리자(1804)는 시스템 내 일부 프로세스에 의해 요청된 구성에서 중요한 역할을 할 수 있다. 즉, 종속 관리자(1804)는 임의의 적합한 집합체를 업데이트하기 위해 사용될 수 있는 구획의 "패키지", "구성", "컴포넌트" 및/또는 "파일"이라고 달리 지칭될 수 있는, 적합한 종속를 제공하기 위해 슈퍼바이저(1802)와 직접 연결될 수 있다. 그뿐만 아니라, 슈퍼바이저(1802)는 하나 이상의 종속 관리자(1804)와 링크될 수 있고 추가적으로 하나 이상의 다른 슈퍼바이저(1802)에 링크될 수 있는데, 여기서 부가적인 슈퍼바이저(1802)는 시스템 내 다른 컴포넌트와 링크될 수 있다.
도 19는 시스템에서 구성 프로세스의 흐름도(1900)이다.
다른 실시예에 따르면, 구성 프로세스 또는 유지보수 프로세스는 모듈이 무슨 종속를 가질 수 있고 그 모듈과 함께 배치되어야 하는지에 관한 정보를 포함할 수 있다. 필요한 파일은 별도의 비일시적 머신 판독가능한 저장소 또는 "데이터 프레임"으로부터 페치될 수 있다. 일부 실시예에서, 예를 들면 소프트웨어 업데이트를 제공하는 제 3자 벤더의 경우 이러한 데이터 프레임은 시스템 아키텍처의 외부에 있을 수 있다. 적합한 배치가능 패키지에서 종속는 구성되는 모듈이나 구획에 직접 링크되거나 또는 이에 포함되는 상이한 종류의 파일, 데이터, 또는 소프트웨어를 포함할 수 있다. 구성 프로세스는 여러 단계(1902, 1904, 1906, 1908, 1910, 및 1912)를 포함할 수 있다. 구성 프로세스(1900)는 시스템에게 데이터 또는 소프트웨어 컴포넌트를 설치하거나 업데이트할 것을 요구하는 요청에 응답하여 시작할 수 있다.
제 1 단계(1902)에서, 시스템의 프로세서는 구성 프로세스(1900) 시퀀스/단계를 촉발할 수 있는 상황을 자동 검출할 수 있다.
일부 실시예에서, 단계(1902)에서, 슈퍼바이저 모듈을 실행하는 시스템의 노드는 헬쓰 업데이트(health update) 또는 "상태"를 슈퍼바이저에게 보고하는 책임을 가진 노드 관리자 소프트웨어 모듈과 같은 시스템의 컴포넌트를 폴링(poll)할 수 있다. 그러한 실시예에서, 슈퍼바이저는 시스템 구성에 의해 정의된 것처럼, 슈퍼바이저가 임의의 시스템 모듈로부터 받기를 기대하는 핫빗(HB) 신호의 부재에 근거하여 시스템 전체의 장애를 자동 검출할 수 있다. 이후 슈퍼바이저는 HB 신호의 누락을 검출하는 것에 대응하여, 다른 치유적 프로세스들 중에서도 구성 프로세스(1900)를 촉발시킬 수 있다.
일부 실시예에서, 단계(1902)에서, 슈퍼바이저 모듈을 실행하는 시스템의 노드는 슈퍼바이저가 컴포넌트에 대한 업데이트 또는 새로운 노드 하드웨어로의 이전과 같이 시스템 구성에서의 하나 이상의 변동을 위한 외부 요청을 수신할 때 구성 프로세스(1900)를 촉발할 수 있다.
단계(1904)에서, 슈퍼바이저는 종속 관리자에게 노드에 설치될 하나 이상의 모듈과 연관된 하나 이상의 배치 패키지를 검색하라는 요청을 전송할 수 있다. 배치 패키지는 종속 관리자에 따라서 노드 구성을 만족시키는데 필요한 파일 및/또는 다른 재료를 각기 정의한다. 배치가능 패키지는 적절한 배치에 필요한 원천지 및 목적지 정보를 비롯한 필요한 모든 종속를 갖고 있을 수 있으며 모듈을 구성하거나 시작하는데 필요한 모듈 속성을 갖고 있을 수 있다. 특정한 종속는 종속 관리자에서 또한 정의되기도 하는 그 자체의 종속를 갖고 있을 수 있으며, 그래서 종속 트리라고 지칭될 수 있다.
단계(1906)에서, 슈퍼바이저는 필요한 배치 패키지를 저장하는 데이터 프레임으로부터 배치 패키지를 페치하라는 명령어를 종속 관리자로 전송할 수 있다. 데이터 프레임은 종속 관리자를 실행하는 노드에 통신 가능하게 연결된 임의의 적합한 컴퓨팅 디바이스에 위치할 수 있는 임의의 비일시적 머신 판독가능한 저장 매체일 수 있다. 일부 사례에서, 배치 패키지가 생성될 때, 배치 패키지에는 전송되는 모듈의 모든 종속뿐만 아니라 배치 패키지를 적절하게 배포하는데 필요한 원천지 및 목적지 정보가 담겨 있다. 배치 패키지는 또한 배치 패키지를 구성하거나 시작시키는데 필요한 하나 이상의 모듈 속성을 포함할 수 있다. 배치 패키지는 자동 또는 수동 프로세스를 통해 만들어질 수 있다. 수동의 예에서, 시스템 관리자는 필수 파일 및 데이터를 가진 배치 패키지를 식별하고/식별하거나 생성할 수 있다. 자동의 예에서, 슈퍼바이저 또는 종속 관리자는 종속 관리자에 의해 만들어진 테스트 스크립트를 통해 통상 성취되는 자동 식별된 파일을 이용하여 배치 패키지를 자동으로 식별 및/또는 생성할 수 있고, 그럼으로써 설치 속도 및 분배 비율을 사람에 의해 이루어지는 것 보다 높게 산출할 수 있다.
단계(1908)에서, 종속 관리자가 데이터 프레임으로부터 배치 패키지를 수신한 후, 종속 관리자는 배치 패키지를 그 배치 패키지를 요청했던 슈퍼바이저를 실행하는 노드로 전송할 수 있다.
단계(1910)에서, 슈퍼바이저는 배치 패키지를 구성을 요구하는 노드의 노드 관리자로 전송할 수 있다.
단계(1912)에서, 노드 관리자는 파일을 복사하고, 슈퍼바이저로부터 수신한 배치 패키지를 설치 및/또는 실행할 수 있으며, 그럼으로써 시스템에 대해 필수적인 유지보수, 업데이트, 또는 구성을 실시할 수 있다.
도 20은 시스템의 구성에 사용되는 종속(2000)의 블록도를 도시한다. 또 다른 실시예에 따르면, 시스템의 유지보수 또는 구성을 위한 프로세스는 다른 것들 중에서도 종속 관리자(2002), 슈퍼바이저(2004), 탐색 노드(2006), 노드 관리자(2008), 및 종속 트리(2010)와 같은 여러 컴포넌트를 포함할 수 있다.
종속 트리(2010)는, 종속라는 것이 구획의 각 구성부분이 그 구획 내 다른 구성부분의 각각에 의존하는 정도일 수 있도록, 모듈 또는 구획에 직접 링크될 수 있거나 모듈 또는 구획에 포함될 수 있는 여러 종류의 파일을 포함할 수 있다. 예를 들면, 종속 트리(2010)는 포네틱 1.0 및 압축 1.0에 종속할 수 있는 구획 1을 포함할 수 있고, 그 다음으로 포네틱 1.0은 소프트웨어 라이브러리(이를테면, 프로세싱 DLL 1.0 및 입력 DLL 1.0)에 종속할 수 있으며, 압축 1.0은 데이터 테이블 1.0에 종속할 수 있다 등등.
종속 관리자(2002)는 시스템의 임의의 열람 가능한 파일과 연관된 종속 트리(2010)를 저장할 수 있다. 또 다른 실시예에서, 만일 임의의 적합한 소프트웨어 또는 데이터 컴포넌트가 종속 트리(2010) 내에서 표시된 컴포넌트에 열람되면, 종속 관리자(2002)는 데이터 프레임에 저장된 하나 이상의 파일로부터 배치가능 패키지를 생성할 수 있다.
슈퍼바이저(2004)는 하나 이상의 모듈, 구획, 또는 이들의 적합한 조합에 대한 하나 이상의 종속 트리(2010)를 포함하는 하나 이상의 종속 관리자(2002)에 링크될 수 있다. 슈퍼바이저(2004)는 또한 하나 이상의 슈퍼바이저(2004)에 링크될 수 있고, 부가적인 슈퍼바이저(2004)는 시스템 내 다른 컴포넌트에 링크될 수 있다.
도 21은 시스템 아키텍처(2100)가 시스템 인터페이스(2102), 제 1 탐색 관리자(2110), n번째 탐색 관리자(2112), 제 1 분석 에이전트(2120), n번째 분석 에이전트(2122), 제 1 탐색 컨덕터(2130), n번째 탐색 컨덕터(2132), 구획 데이터(2140), 구획자(2150), 제 1 집합체(2160), n번째 집합체(2162), 슈퍼바이저(2170), 및 종속 관리자(2180)를 갖는 것을 도시한다.
하나 이상의 실시예에서, 시스템 인터페이스(2102)는 시스템 아키텍처(2100)의 외부에서 생성된 하나 이상의 조회를 제 1 탐색 관리자(2110)를 포함하는 적어도 하나의 노드 및 n번째 탐색 관리자(2112)를 포함하는 n개까지의 노드를 포함하는 제 1 클러스터 내 하나 이상의 제 1 탐색 관리자(2110)에게 제공할 수 있다. 상기 제 1 클러스터 내 하나 이상의 제 1 탐색 관리자(2110, 2112)는 적어도 제 1 분석 에이전트(2120) 및 n번째까지의 분석 에이전트(2122)를 포함하는 제 2 클러스터 내 하나 이상의 제 1 분석 에이전트(2120, 2122)에 링크될 수 있다.
제 1 클러스터 내 탐색 관리자(2110, 2112)는 제 3 클러스터 내 하나 이상의 제 1 탐색 컨덕터(2130, 2132)에 링크될 수 있다. 제 3 클러스터는 적어도 제 1 탐색 컨덕터(2130) 및 n번째까지의 탐색 컨덕터(2132)를 포함할 수 있다. 각각의 탐색 노드(즉, 제 1 탐색 관리자(2110, 2112)를 실행하는 노드)는 임의의 적합한 개수의 제 1 탐색 컨덕터(2130, 2132)를 포함할 수 있다.
제 3 클러스터 내 제 1 탐색 컨덕터(2130, 2132)는 구획 데이터(2140)를 저장하는 하나 이상의 데이터베이스 노드에 링크될 수 있다. 구획 데이터(2140)는 적어도 하나 이상의 집합체를 하나 이상의 구획으로 분리하도록 구성된 모듈일 수 있는 하나 이상의 구획자(2150)를 실행하는 노드에 의해 생성된 하나 이상의 구획(즉, 별도 세트의 레코드들로부터 분할된 임의적으로 구분된 레코드 부분)을 포함할 수 있다. 각각의 구획은 적어도 제 1 집합체(2160) 내지 n번째까지의 집합체(2162)에 대응할 수 있다. 제 1 집합체(2160, 2162)는 또한 제 1 집합체(2160, 2162) 내 데이터를 정의할 수 있는 하나 이상의 스키마에 의해 서술될 수 있다. 하나 이상의 스키마는 다른 것들 중에서도, 구획의 레코드에 있는 필드의 이름, 상기 필드가 인덱싱되었는지의 여부, 무슨 압축 방법이 사용되었는지, 그리고 필드에 대해 무슨 스코어링 알고리즘이 디폴트인지에 관한 정보를 포함할 수 있다. 스키마는 제 1 집합체(2160) 내지 n번째까지의 집합체(2162)를 분할할 때 구획자(2150)에 의해 사용될 수 있으며, 집합체에 대해 하나 이상의 조회를 실행할 때 제 1 탐색 관리자(2110) 내지 n번째까지의 탐색 관리자(2112)에 의해서도 또한 사용될 수 있다.
하나 이상의 노드는 시스템(2100)의 다른 노드로부터 전송된 핫빗 신호를 수신하는 슈퍼바이저(2170) 소프트웨어 모듈을 실행할 수 있다. 슈퍼바이저(2170)는 하나 이상의 종속 관리자(2180) 소프트웨어 모듈을 실행하는 시스템(2100)의 노드로부터 데이터를 수신하도록 구성될 수 있다. 종속 관리자(2180) 노드는 상대적인 관계에 기초하여, 노드, 모듈, 및 구획에 대한 구성 종속를 표시할 수 있는 하나 이상의 모듈, 구획, 또는 이들의 적합한 조합과 연관된 종속 트리를 저장하고, 업데이트하며, 참조할 수 있다. 슈퍼바이저(2170)는 또한 하나 이상의 다른 슈퍼바이저(2170)를 실행하는 시스템(2100) 내 다른 노드에 링크될 수 있다. 일부 사례에서, 부가적인 슈퍼바이저(2170)와의 링크는 시스템 아키텍처(2100)의 클러스터들 사이를 교차할 수 있다.
분석 에이전트(2120, 2122)를 실행하는 노드는 시스템의 컴포넌트(예를 들면, 소프트웨어 모듈, 노드)들 사이에서 상호운용성 및 데이터 전달을 가능하게 해주는 명시된 애플리케이션 프로그래밍 인터페이스(API)를 준수하는 하나 이상의 적합한 분석 모듈을 실행할 수 있다. 분석 에이전트(2120, 2122)는 제 1 탐색 컨덕터(2130, 2132)로부터 리턴된 집계된 조회 결과를 처리하도록 구성될 수 있다. 예를 들면, 탐색 관리자(2110)는 탐색 조회를 수신한 다음 탐색 관리자(2110)가 하나 이상의 탐색 컨덕터(2130, 2132)에게 발행하는 탐색 컨덕터 조회를 생성할 수 있다. 탐색 컨덕터(2130, 2132)가 각자의 할당된 탐색 컨덕터 조회를 실행한 후, 탐색 관리자(2110)는 하나 이상의 탐색 컨덕터(2130, 2132)로부터 한 세트의 집계된 조회 결과를 수신할 것이다. 탐색 조회의 파라미터에 의해 추가 처리가 요구되면, 탐색 관리자(2110)는 추가 처리를 위해 이러한 탐색 조회 결과를 제 1 분석 에이전트(2120)에 포워딩할 수 있다.
일부 구현예에서, 탐색 컨덕터(2130, 2132)로부터 수신한 집계된 하나 이상의 결과 세트를 처리하기 위해 탐색 관리자(2110)는 제 1 분석 에이전트(2120)가 탐색 조회를 요청했다는 것을 결정한 후, 탐색 관리자(2110)는 데이터베이스 스키마 파일 및/또는 하나 이상의 분석 파라미터를 분석 에이전트(2120, 2122)로 전송할 수 있다. 일부 사례에서, 탐색 조회는 탐색 관리자(2110)가 어느 제 1 분석 에이전트(2120)가 집계된 탐색 결과를 수신해야 하는지를 식별하는데 사용할 수 있는 수행될 특정 분석 알고리즘을 요청할 수 있다. 일부 사례에서, 집계된 하나 이상의 결과 세트는 압축 알고리즘에 따라서 압축된 데이터를 포함하는 압축된 레코드의 형태로 분석 에이전트(2120, 2122)로 전달될 수 있다. 일부 사례에서, 레코드의 데이터는 레코드의 필드에서 압축될 수 있으며, 일부 사례에서, 전체 레코드가 압축될 수 있다.
분석 에이전트(2120, 2122)를 실행하는 노드는 각종 분석 모듈을 갖고 있다. 한정하지 않는 예는 다른 적합한 모듈 및 알고리즘 중에서도, 명료화 모듈, 링킹 모듈, 및 즉석 링크 모듈을 포함할 수 있다. 적합한 모듈은 임의의 종류의 데이터를 처리하기 위한 분석 방법의 임의의 소프트웨어 구현예를 포함할 수 있다. 일부 실시예에서, 특정한 분석 모듈 또는 분석 에이전트(2120, 2122)는 인-메모리 데이터베이스의 미리 결정된 인스턴스, 클러스터, 구획, 및/또는 인스턴스화된 객체에만 액세스 가능할 수 있다.
도 22는 실시예에 따라서, 인-메모리 데이터베이스를 호스팅하는 시스템에 분석 모듈을 추가하기 위한 단계(2202, 2204, 2206, 2208, 2210, 2212, 2214, 2216, 및 2218)를 갖는 방법(2200)의 흐름도이다.
단계(2202)에서, 인-메모리 데이터베이스 내 플러그가능한 분석(pluggable analytic)에 적합한 API를 준수하는 하나 이상의 적합한 분석 모듈이 생성될 수 있다. API는 분석 모듈이 시스템 상호운용성을 제공하기 위해 구현해야 하는 요청된 방법을 가질 수 있다. 분석 모듈은 사용자 특정 요구를 만족시키기 위해 생성될 수 있다.
하나 이상의 분석 모듈은 적합한 모듈 저장소에 저장될 수 있다. 모듈 저장소는 슈퍼바이저에 의해 관리될 수 있는 비일시적 머신 판독가능한 저장 매체이다. 실시예에 따라서, 분석 모듈을 구축 및/또는 관리하는 책임이 있는 엔티티, 개발자, 사용자, 컴포넌트, 모듈, 외부 소스, 및/또는 다른 소스는 하나 이상의 적합한 프로그래밍 언어를 사용하여 분석 모듈을 개발할 수 있다.
일부 실시예에 따르면, API는 컴퓨터가 이를테면 루틴, 데이터 구조체, 객체 클래스, 및 변수에 대한 파라미터 또는 인수를 컴파일하고/컴파일하거나 실시하는 소스 코드 프로그래밍 명령어들 및 표준들의 세트를 포함할 수 있는 소프트웨어-대-소프트웨어 인터페이스로서 사용할 수 있다. API는 데이터 입력이 데이터 포맷(즉, 예상된 인수)을 준수하는 한, 향후 개발되는 모듈의 소유권, 역량, 또는 다른 특성에 관용적인 채로 유지하면서, 시스템이 향후 개발되는 소프트웨어 모듈로부터 데이터 입력을 받아 들이고, 결과를 향후 개발되는 소프트웨어 모듈에 출력하게 해줄 수 있다. 데이터 입력 및 출력에 책임을 지는 시스템 API의 일부 소프트웨어 루틴은 그렇게 새로이 개발되는 또는 향후 개발되는, 종종 외부의 소프트웨어 모듈에 "노출"될 수 있다. 노출된 API는 노출된 API가 소프트웨어 모듈로부터 데이터를 수신하거나, 페치하거나, 또는 다른 방식으로 "소비"할 때 데이터 수용성을 입증해 줄 수 있다. 시스템 API의 예상된 인수를 만족하는 소프트웨어 소스를 저작하는 것은 개발자 및 다른 사용자가 분석 모듈과 같은 각종 소프트웨어 모듈을 개발할 수 있게 해주고, 분석 에이전트와 같은 시스템의 노드 및 모듈과 통신(즉, 송신, 수신)하게 해 줄 수 있다.
분석 에이전트는 인-메모리 데이터베이스를 하우징하는 시스템 내에서 하나 이상의 노드를 포함할 수 있고, 각각의 분석 에이전트의 노드는 하나 이상의 분석 모듈을 저장하고 실행할 수 있다. API는 여러 사용자 개발 분석 모듈이 시스템 및 인-메모리 데이터베이스의 각종 노드 및 모듈과 호환가능하게 해줄 수 있다.
일부 실시예에서, 하나 이상의 모듈은 제 3자에 의해 이용 가능한 API와 호환가능한 임의의 적합한 프로그래밍 언어를 이용하여 개발된 외부 모듈일 수 있다. 그러한 실시예에서, 이와 같이 새로이 개발된 모듈은 분석 모듈 저장소에 저장될 수 있다.
단계(2204)에서, 생성된 모듈은 대응하는 정의 및 임의의 종속를 종속 관리자에 추가함으로써 인-메모리 데이터베이스 내에 로딩될 수 있는데, 이는 적절한 파일 및 명령어를 종속 관리자에다 배치하고, 업로딩하고, 또는 다른 방식으로 저장할 수 있는 임의의 적합한 자동 또는 수동 프로세스를 이용하여 성취될 수 있다.
단계(2206)에서, 슈퍼바이저는 종속 관리자 내 모듈 설정에 기초하여 하나 이상의 모듈이 하나 이상의 노드에 설치될 것인지를 결정한다. 일부 환경에서, 종속 관리자에 저장된 모듈 설정은 로딩된 분석 모듈이 "인에이블"되거나 아니면 "디스에이블"되는지 여부를 포함할 수 있다. 예를 들면, 만일 설정에 의거 분석 모듈이 인에이블되는 것으로 표시되면, 분석 모듈은 그 분석 모듈을 수행하는 분석 에이전트를 실시하는 각각의 노드에 배치될 수 있다. 그러면 슈퍼바이저는 설치 준비 명령어를 상기 하나 이상의 노드상의 하나 이상의 노드 관리자로 전송한다.
단계(2208)에서, 노드 관리자는 종속 관리자 내 모듈 설정에 기초하여, 하나 이상의 요구된 모듈을 실시하기 위한 노드의 자원을 할당한다. 하나 이상의 실시예에서, 자원의 할당은 슈퍼바이저가 프로세스를 중단하였다면 일정 기간 이후에 만료될 수 있다. 종속 관리자 내 모듈 설정은 얼마나 많은 메모리, CPU 및/또는 디스크가 모듈에 의해 필요할지를 표시할 것이다.
단계(2210)에서, 슈퍼바이저는 노드에 설치될 하나 이상의 모듈과 연관된 하나 이상의 구성 패키지의 요청을 종속 관리자로 전송한다. 예로서, 자동 또는 수동 프로세스(예를 들면, 시스템 관리자)는 종속 관리자에 새로운 모듈을 추가할 수 있는데, 이는 다른 소프트웨어 또는 메타데이터와 같은 구성 패키지에 대응하는 임의의 종속를 또한 정의할 수 있다.
단계(2212)에서, 그런 다음 슈퍼바이저는 구성 패키지를 노드 관리자로 전송한다.
단계(2214)에서, 노드 관리자는 종속 관리자에서 정의된 것으로서, 하나 이상의 모듈을 실시하는데 필요한 임의의 소프트웨어 및 데이터를 판독한다.
단계(2216)에서, 노드 관리자는 단계(2214)에서 페치된 필요한 소프트웨어 및 데이터를 설치한다. 분석 에이전트는 일단 모듈이 설치되면 모듈을 동적으로 로딩하고 언로딩할 수 있고, 그래서 임의의 장비 또는 소프트웨어를 재시작시킬 필요가 없을 수 있으며 설치된 하나 이상의 모듈은 이미 사용할 준비가 되어 있을 수 있다.
단계(2218)에서, 노드 관리자는 단계(2216)에서 설치된 소프트웨어를 실행한다. 분석 에이전트가 분석 모듈을 시작시킨 후, 새로운 모듈을 실시하는 각각의 분석 에이전트는 핫빗 신호를 슈퍼바이저로 전송할 수 있다. 핫빗 신호는 새로운 모듈이 적절하게 시작되었고 사용 준비되었음을 표시할 수 있다.
도 23은 실시예에 따라서 인-메모리 데이터베이스(2300) 시스템 아키텍처를 도시한다. MEMDB(2300) 시스템 아키텍처는 시스템 인터페이스(2302), 제 1 탐색 관리자(2304), n번째 탐색 관리자(2306), 제 1 분석 에이전트(2308), n번째 분석 에이전트(2310), 제 1 탐색 컨덕터(2312), n번째 탐색 컨덕터(2314), 구획자(2316), 제 1 집합체(2318), n번째 집합체(2320), 슈퍼바이저(2322), 및 종속 관리자(2324)를 포함할 수 있다.
하나 이상의 실시예에서, 시스템 인터페이스(2302)는 MEMDB(2300)의 시스템 아키텍처 외부에서 생성된 하나 이상의 조회를 적어도 제 1 탐색 관리자(2304) 및 n번째까지의 탐색 관리자(2306)를 포함하는 제 1 클러스터 내 하나 이상의 탐색 관리자로 제공하도록 구성될 수 있다. 상기 제 1 클러스터 내 상기 하나 이상의 탐색 관리자는 적어도 제 1 분석 에이전트(2308) 및 n번째까지의 분석 에이전트(2310)를 포함하는 제 2 클러스터 내 하나 이상의 분석 에이전트에 링크될 수 있다.
상기 제 1 클러스터 내 탐색 관리자는 적어도 제 1 탐색 컨덕터(2312) 및 n번째까지의 탐색 컨덕터(2314)를 포함하는 제 3 클러스터 내 하나 이상의 탐색 컨덕터에 링크될 수 있다. 상기 제 3 클러스터 내 탐색 컨덕터는 하나 이상의 구획자(2316)에 링크될 수 있고, 적어도 제 1 집합체(2318) 내지 n번째까지의 집합체(2320)에 대응하는 구획은 하나 이상의 순간의 시간에 저장될 수 있다.
MEMDB(2300)에 포함된 클러스터 내 하나 이상의 노드, 모듈, 또는 이들의 적합한 조합은 하나 이상의 슈퍼바이저(2322)에 링크될 수 있고, 상기 클러스터 내 상기 하나 이상의 노드, 모듈 또는 적합한 조합은 최소한 하나의 핫빗을 하나 이상의 슈퍼바이저(2322)로 전송하도록 구성될 수 있다. 슈퍼바이저(2322)는 하나 이상의 종속 관리자(2324)에 링크될 수 있고, 상기 하나 이상의 종속 관리자(2324)는 하나 이상의 모듈, 구획, 또는 이들의 적합한 조합에 대한 하나 이상의 종속 트리를 포함할 수 있다. 슈퍼바이저(2322)는 또한 하나 이상의 다른 슈퍼바이저(2322)에 링크될 수 있는데, 부가적인 슈퍼바이저(2322)는 MEMDB(2300)의 시스템 아키텍처에 포함된 상기 클러스터에 링크될 수 있다.
도 24는 실시예에 따라서 비배타적 탐색 방법(2400)을 설명하는 흐름도이다. 비배타적 탐색 방법(2400)은 시스템이 탐색을 실행하게 해주고 역으로 조회에서 명시된 필드가 탐색되는 레코드에서 존재하지 않거나 정의되지 않은 경우 레코드로부터 결과를 가져오게 할 수 있다.
프로세스는 조회가 탐색 관리자에 의해 수신되는 것에서부터 시작할 수 있는데(2402), 이 단계에서 외부 소스에 의해 생성된 하나 이상의 조회가 하나 이상의 탐색 관리자에 의해 수신될 수 있다. 일부 실시예에서, 이러한 조회는 사용자와의 상호작용에 응답하여 시스템 인터페이스(2302)에 의해 자동으로 생성될 수 있다. 하나 이상의 실시예에서, 조회는 탐색 조회의 파라미터를 표현하기 위한 XML, 자바스크립트, HTML, 다른 적합한 언어를 비롯한 마크업 언어 또는 다른 적합한 언어로 표현될 수 있다. 하나 이상의 다른 실시예에서, 조회는 조회가 YAML 또는 JSON으로 표현되는 실시예를 포함하는 구조체로 표현될 수 있다. 일부 실시예에서, 조회는 콤팩트한 포맷 또는 이진 포맷으로 표현될 수 있다.
이후, 수신된 조회는 탐색 관리자에 의해 파싱될 수 있다(2404). 이러한 프로세스를 통해 시스템은 필드 처리가 요구되는지를 결정할 수 있다(2406). 하나 이상의 실시예에서, 시스템은 조회에 포함된 정보를 이용하여 프로세스가 필요한지를 결정할 수 있다. 하나 이상의 다른 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 어느 필드가 요구된 처리를 받을 수 있는지를 자동으로 결정할 수 있다.
만일 시스템이 하나 이상의 필드에 대해 필드 처리가 요구된다고 결정하면, 하나 이상의 탐색 관리자는 탐색 관리자가 필드를 처리하는 동안, 하나 이상의 적합한 처리 기술을 하나 이상의 요구된 필드에 적용할 수 있다(2408). 하나 이상의 실시예에서, 적합한 처리 기술은 다른 것들 중에서도 어드레스 표준화, 지리적 근접 또는 경계, 및 별명 해석을 포함할 수 있다. 일부 실시예에서, 적합한 처리 기술은 문자열로부터 접두사의 추출 및 향후 퍼지 매칭 기술을 적용하는데 사용될 수 있는 비문자 키의 생성을 포함할 수 있다.
그 다음, S.M.이 탐색 조회를 구성할 때(2410), 하나 이상의 탐색 관리자는 하나 이상의 조회와 연관된 하나 이상의 탐색 컨덕터 조회를 구성할 수 있다. 하나 이상의 실시예에서, 탐색 컨덕터 조회는 스택-기반의 탐색으로서 처리되도록 구성될 수 있다.
이후, S.M.은 탐색 조회를 S.C.로 전송할 수 있다(2412). 일부 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 탐색 조회를 하나 이상의 탐색 컨덕터로 전송할 수 있는데, 상기 하나 이상의 탐색 컨덕터는 하나 이상의 탐색 조회에서 명시된 집합체와 연관될 수 있다.
그 다음, 하나 이상의 탐색 컨덕터는 임의의 적합한 부울린 탐색 연산자(예를 들면, AND, OR, XOR)를 적용하고 특정 필드가 존재하지 않음에 따라 레코드를 제외하지 않고 룩업을 인덱싱할 수 있다. 탐색 컨덕터는 사용자가 제공한 또는 애플리케이션에 의해 제공된 부울린 연산자를 실행하고 룩업을 인덱싱할 수 있다. 그래서, 실시예는 잠재적으로 양호한 결과를 "제외"하지 않은 레코드들의 후보 세트를 얻기 위해 퍼지-인덱스 및 'AND' 연산자 대신의 'OR' 연산자를 실시하는 사용자 조회를 실행할 수 있다. 스코어링 특징은 최선의 결과(즉, 가장 관련된 것)가 최고의 스코어를 얻게 하며, 관련성이 적은 레코드는 낮은 스코어를 얻게 한다. 일부 사례에서, 탐색 조회를 실행하는 두 개의 단계가 있다. 부울린 연산자, 퍼지 인덱스 및 필터가 탐색 조회를 만족하는 잠재적 결과들 중 후보 결과 세트를 리턴할 수 있는 탐색 단계가 있다. 다음으로 스코어링 단계는 후보 집합 내 레코드에 스코어를 매기기 위해 하나 이상의 사용자가 명시한 또는 애플리케이션에 의해 명시된 스코어링 방법을 적용할 수 있고, 그래서 최선의 결과가 높은 스코어를 얻고, 합리적인 결과의 규모만을 리턴하기 위해 주어진 문턱치보다 낮은 좋지 않거나 관련성이 적은 결과는 제외될 수 있다. 이것은 스코어를 매겨야 할 후보 레코드 세트가 많아지는 결과를 가져올 수 있으나, 인-메모리 데이터베이스 시스템은 통상의 시스템의 몇몇 사례에서 너무 클 수 있는 규모의 탐색 결과 세트를 다룰 만큼 충분히 빠를 수 있다. 그리고 결과적으로는 일부 필드가 비어있거나 약간의 잡음이나 오류 데이터가 있을 망정 양호한 결과를 빠뜨리지 않는다는 것이다.
언급한 바와 같이, 탐색 컨덕터는 필드가 빠져 있는 레코드를 제외하지 않으면서 임의의 적합한 탐색 필터를 적용할 수 있다(2416). 하나 이상의 탐색 컨덕터는 하나 이상의 조회에 대해 결과로 생긴 응답 레코드 세트의 스코어를 매기며(2418), 이 경우 탐색 컨덕터는 레코드의 하나 이상의 필드들의 일치에 스코어를 매길 수 있고 그런 다음 레코드들의 전체 일치함에 대한 스코어를 결정할 수 있다. 탐색 컨덕터는 하나 이상의 조회에 대해 레코드의 스코어를 매길 수 있는데, 이 경우 조회는 레코드에서 생략되거나 레코드에 포함되지 않는 필드를 포함하고 있다. 일부 실시예에서, 탐색 관리자는 정의된 필드보다 적거나 상이한 필드를 포함하는 스키마를 가진 집합체에 대해 수행될 조회를 탐색 컨덕터로 전송할 수 있다. 이러한 사례에서, 조회는 탐색될 집합체의 스키마를 준수하는 필드가 스코어링을 위해서만 거기에 존재할 뿐이라는 것을 표시하기 위해 그러한 필드를 수정하도록 재구성될 수 있다. 일부 사례에서, 탐색 관리자는 탐색 조회를 생성 및/또는 수정할 수 있다. 즉, 탐색 관리자는 하나 이상의 집합체에서 정의된 인덱스를 갖지 않는 빠진 필드 또는 필드들을 고려하여 맞추어지거나 조정될 수 있는 조회 계획을 구축할 수 있다.
일부 실시예에 따르면, 조회의 스키마와 상이한 스키마를 가진 집합체가 제외되지 않을 수 있고, 가용 필드가 조회에 대해 스코어화될 수 있으며 페널티 또는 낮은 스코어가 빠진 필드를 가진 레코드에 할당될 수 있다. MEMDB(2300) 전체의 집합체 내 필드는 정규화될 수 있으며 각각의 탐색 컨덕터는 스코어 할당 프로세스를 가능하게 하기 위해 정규화된 필드의 사전(dictionary)에 액세스할 수 있다. 정규화는 임의의 적합한 수동 또는 자동 프로세스를 통해 수행될 수 있다. 만일 탐색 조회를 제공하는 사용자 또는 애플리케이션이 다수의 집합체 전체에서 정규화된 필드를 정의하면, 각각의 집합체가 바로 그 스키마 또는 저장 규칙을 따르지 않을지라도, 시스템은 다수의 집합체 전체에 적용될 수 있는 조회를 구축할 수 있다.
일부 실시예에서, 가능한 관련 있는 결과의 리스트를 더 확장하기 위해 퍼지 매칭 기술이 적용될 수 있다.
시스템은 할당된 스코어가 명시된 허용 문턱치 이상인지를 결정할 수 있는데, 여기서 문턱치는 탐색 조회에서 정의될 수 있거나 디폴트 값일 수 있다. 하나 이상의 실시예에서, 디폴트 스코어 문턱치는 스코어 매겨지는 하나 이상의 필드에 따라서 변할 수 있다. 만일 탐색 컨덕터가 스코어가 요구된 문턱치 이상이라고 결정하면, 레코드는 결과 리스트에 추가될 수 있다. 탐색 컨덕터는 레코드가 현재의 결과 세트에서 마지막이라고 결정할 때까지 레코드의 스코어를 계속 매길 수 있다. 만일 탐색 컨덕터가 구획 내 마지막 레코드가 처리되었다고 결정하면, 탐색 컨덕터는 결과로 생긴 결과 리스트를 분류할 수 있다. 그런 다음 탐색 컨덕터는 결과 리스트를 탐색 관리자로 리턴할 수 있다.
S.M.이 S.C.로부터의 결과를 수신하고 취합할 때(2420), 탐색 컨덕터는 하나 이상의 탐색 결과를 하나 이상의 탐색 관리자로 리턴하는데, 이 경우 하나 이상의 실시예에서, 상기 하나 이상의 탐색 결과는 동시에 리턴될 수 있다. 이후 하나 이상의 탐색 관리자는 하나 이상의 탐색 컨덕터로부터의 결과를 하나 이상의 결과 리스트로 컴파일할 수 있다.
시스템은 하나 이상의 탐색 관리자에 의해 컴파일된 탐색 결과의 분석 처리(2422)가 요구되는지를 결정한다. 하나 이상의 실시예에서, 시스템은 조회에 포함된 정보를 이용하여 처리가 요구되는 것을 결정한다. 하나 이상의 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 어느 필드가 요구된 처리를 받을 수 있는지를 자동으로 결정할 수 있다.
만일 시스템이 분석 처리(2422)가 요구된다고 결정하면, 하나 이상의 분석 에이전트는 하나 이상의 적합한 처리 기술을 하나 이상의 결과 리스트에 적용하여 결과를 처리할 수 있다(2424). 하나 이상의 실시예에서, 적합한 기술은 다른 것들 중에서도, 여러 레코드를 말아서 더 완벽한 레코드로 만드는 것, 결과에 대해 하나 이상의 분석을 수행하는 것, 및 이웃 레코드에 관한 정보를 결정하는 것을 포함할 수 있다. 일부 실시예에서, 분석 에이전트는 명료화 모듈, 링크 모듈, 즉석 링크 모듈, 또는 임의의 다른 적합한 모듈 및 알고리즘을 포함할 수 있다.
처리 후, 일부 실시예에 따르면, 하나 이상의 분석 에이전트는 하나 이상의 처리 결과를 하나 이상의 탐색 관리자로 리턴할 수 있다.
탐색 관리자는 탐색 결과를 리턴할 수 있다(2426). 일부 실시예에서, 하나 이상의 탐색 관리자는 하나 이상의 결과 리스트를 압축해제할 수 있고 이를 조회를 개시했던 시스템으로 리턴할 수 있다. 리턴된 결과는 XML, JSON, RDF, 또는 임의의 다른 포맷을 비롯한 여러 포맷 중 하나의 포맷으로 포맷될 수 있다.
도 25는 저장 유닛(2502), RAM(2504), 및 CPU(2506)를 포함하는 압축 장치(2500)를 도시한다.
하나 이상의 실시예에서, 하나 이상의 데이터 레코드 집합체, 하나 이상의 스키마, 하나 이상의 사전, 하나 이상의 n-그램 테이블, 및 하나 이상의 토큰 테이블은 압축 장치(2500) 내 저장소 유닛(2502)에 저장될 수 있다. 압축 장치(2500) 내 RAM(2504)은 저장소 유닛(2502)에 저장된 임의의 데이터뿐만 아니라, 다른 것들 중에서도, 조각화 모듈, 압축 모듈, 및 인덱싱 모듈을 비롯한 임의의 적합한 모듈을 로딩할 수 있다. 하나 이상의 실시예에서, 압축 장치(2500)는 하나 이상의 적합한 CPU(2506)를 포함할 수 있다.
도 26은 집합체 데이터 테이블(2600)을 도시한다.
하나 이상의 실시예에서, 하나 이상의 집합체는 집합체 데이터 테이블(2600)에서 도시된 바와 같이 구조화된 또는 반쯤 구조화된 데이터를 포함할 수 있다. 하나 이상의 실시예에서, 구조화된 데이터는 임의의 개수의 필드 및 JSON, BSON, YAML 또는 임의의 다른 적합한 포맷을 이용하여 표현된 데이터와 같은 반쯤 구조화된 데이터를 포함할 수 있고, 임의의 적합한 개수의 필드, 어레이, 또는 객체를 포함할 수 있다. 집합체는 임의의 적합한 스키마를 이용하여 서술될 수 있는데, 적합한 스키마는 스키마 내 하나 이상의 필드에 사용되는 데이터 구조체 및 압축 방법을 정의할 수 있다.
하나 이상의 실시예에서, 하나 이상의 필드는 시맨틱 유사도를 가질 수 있는 데이터 값을 포함할 수 있다. 하나 이상의 실시예에서, 의미론적으로 유사한 데이터는 다른 것들 중에서도, 이름, 성씨, 출생일, 및 국적을 포함할 수 있다. 하나 이상의 실시예에서, 압축 장치는 필드에 저장된 데이터의 타입을 압축하기에 적합한 하나 이상의 방법을 이용하여 하나 이상의 필드를 압축할 수 있고, 압축 장치는 사용자 맞춤 토큰 테이블(user custom token table)을 사용할 수 있다. 하나 이상의 실시예에서, 압축 장치는 요구된 압축 방법과 연관되지 않는 데이터를 갖는 임의의 개수의 필드에 대한 디폴트 압축 방법으로서 n-그램 압축을 사용할 수 있다.
하나 이상의 실시예에서, 집합체의 하나 이상의 필드 내 하나 이상의 데이터는 조각으로 나뉘어진 후 더 잘 압축될 수 있는 데이터를 포함할 수 있다. 이러한 종류의 데이터는 통상 필드가 레코드당 여러 값을 가지는 데이터이며, 압축 장치는 그러한 레코드를 다수의 레코드 조각으로 비정규화함으로써 매칭 및 스코어링을 더 잘 달성할 수 있다. 조작으로 나누기에 적합한 데이터의 예는 다른 것들 중에서도, 전체 이름, 주소, 전화번호 및 이메일을 포함할 수 있다. 하나 이상의 실시예에서, 압축 장치는 압축하기 전에 하나 이상의 데이터를 조작으로 나눌 수 있다. 압축 장치는 조각난 데이터를 같은 구획 내에 인접하게 저장할 수 있다. 하나 이상의 실시예에서, 압축 장치는 어느 레코드로부터 조각으로 나누어졌는지를 식별하는 조각난 레코드 식별자를 사용하여 레코드들이 집합체 내 바로 그 원래의 레코드로부터 출처된 것임을 시스템이 여전히 알고 있게 할 수 있다.
하나 이상의 실시예에서, 레코드는 데이터 값의 어레이를 갖고 있을 수 있다. 어레이는 0개 이상의 값을 가질 수 있고 어레이 값은 값들의 적당한 순서를 보존하면서 빠진 값을 표현하는 널(null) 값을 가질 수 있다.
하나 이상의 실시예에서, 압축 장치는 하나 이상의 데이터 필드를 객체로서 그룹화할 수 있다. 객체는 다른 객체를 포함할 수 있고 어레이 내 요소일 수 있다. 압축 장치는 시스템으로 하여금 구획 내 동일한 값을 가진 다른 객체를 참조하게 하는 값을 포함시킴으로써 레코드 내 객체를 더 압축할 수 있다. 모듈이 데이터를 시스템 내 다른 모듈에 출력할 수 있을 때, 모듈은 조회하는 객체를 실제 객체 값으로 대체할 수 있다.
하나 이상의 실시예에서, 압축 장치는 공지의 이진 압축 방법을 이용하여 필드 내에서 숫자를 표현하는 하나 이상의 데이터를 압축할 수 있다.
하나 이상의 실시예에서, 압축 장치는 공지의 시리얼 데이 넘버(Serial Day Number) 압축 알고리즘을 이용하여 필드 내에서 날짜를 표현하는 하나 이상의 데이터를 압축할 수 있다.
하나 이상의 실시예에서, 압축 장치는 압축하기 전에 하나 이상의 데이터를 정규화할 수 있다. 압축 전에 정규화에 적합한 데이터는 다른 것들 중에서도, 거리 접미사 및 접두사, 이름 접미사 및 접두사, 및 전/후 방향 정보(즉, 다른 것들 중에서도 동쪽, 북쪽, 서쪽)를 포함할 수 있다.
도 27은 토큰 테이블(2700)을 도시한다.
하나 이상의 실시예에서, 압축 장치는 임의의 적합한 토큰 테이블을 이용하여 적절하게 의미론적 유사도를 가진 데이터를 포함하는 필드를 압축할 수 있는데, 적합한 토큰 테이블은 토큰 테이블(2700)과 유사할 수 있다.
하나 이상의 실시예에서, 하나 이상의 레코드가 연관된 토큰 테이블을 가진 필드에 추가될 수 있을 때, 시스템은 데이터가 토큰 테이블에서 이전에 마주친 데이터와 일치할 수 있는지를 결정한다. 하나 이상의 실시예에서, 만일 데이터가 일치하지 않으면, 시스템은 토큰 테이블을 대신하여 대안의 압축 방법을 사용할 수 있다. 하나 이상의 다른 실시예에서, 만일 데이터가 일치하지 않으면, 시스템은 그 데이터를 포함시키기 위해 그의 토큰 테이블을 업데이트할 수 있다.
하나 이상의 실시예에서, 토큰 테이블은 주기적으로 업데이트될 수 있으며 저장된 데이터는 압축가능성이 개선되었는지를 결정하기 위해 재 평가될 수 있다. 만일 하나 이상의 데이터의 압축가능성이 개선되었다면, 시스템은 임의의 적합한 데이터를 압축해제하고 다시 압축할 수 있다.
하나 이상의 실시예에서, 가장 자주 발생하는 값은 가장 자주 사용된 값을 더 적은 수의 바이트로 표현되게 해줄 수 있는 더 낮은 번호를 가진 인덱스로 저장될 수 있다.
하나 이상의 실시예에서, 토큰 테이블에 포함하기 위해 더 긴 값이 더 짧은 값보다 선호될 수 있는데, 이는 더 작은 값과 동일한 인덱스 크기를 가진 더 긴 값을 없앰으로써 압축을 더 많이 해줄 수 있다.
하나 이상의 실시예에서, 데이터 값에 대해 아무런 토큰 데이터도 존재하지 않음을 표시하는 특수한 인덱스 값이 예약될 수 있다.
도 28은 N-그램 테이블(2800)을 도시한다.
하나 이상의 실시예에서, 압축 장치는 임의의 적합한 n-그램 테이블을 이용하여 적합하게 의미론적 유사도를 가진 데이터를 포함하는 필드를 압축할 수 있는데, 적합한 n-그램 테이블은 N-그램 테이블(2800)과 유사할 수 있다.
하나 이상의 실시예에서, 하나 이상의 레코드가 연관된n-그램 테이블을 가진 필드에 추가될 수 있을 때, 시스템은 데이터가 n-그램 테이블에서 이전에 마주친 데이터와 일치할 수 있는지를 결정한다. 하나 이상의 실시예에서, 만일 데이터가 일치하지 않으면, 시스템은 n-그램 테이블을 대신하여 대안의 압축 방법을 사용할 수 있다. 하나 이상의 다른 실시예에서, 만일 데이터가 일치하지 않으면, 시스템은 그 데이터를 포함하기 위해 그의 n-그램 테이블을 업데이트할 수 있다.
하나 이상의 실시예에서, n-그램 테이블은 주기적으로 업데이트될 수 있으며 저장된 데이터는 압축가능성이 개선되었는지를 결정하기 위해 재평가될 수 있다. 만일 하나 이상의 데이터의 압축가능성이 개선되었다면, 시스템은 임의의 적합한 데이터를 압축해제하고 다시 압축할 수 있다.
하나 이상의 실시예에서, 가장 자주 발생하는 값은 가장 자주 사용된 값을 더 적은 수의 바이트로 표현되게 해줄 수 있는 더 낮은 번호를 가진 인덱스로 저장될 수 있다.
하나 이상의 실시예에서, 데이터 값에 대해 아무런 n-그램 데이터도 존재하지 않음을 표시하는 특수한 인덱스 값이 예약될 수 있다.
도 29는 하나 이상의 실시예에서 압축된 데이터를 표현할 수 있는 레코드 표현(2900)을 도시한다.
레코드 표현(2900)에서, 레코드 인덱스 컬럼에서 각각의 로우 값은 다른 값들 중에서도, 길이, 옵셋, 또는 메모리 내 레코드의 위치를 비롯한 레코드에 관한 정보를 가진 0개 이상의 레코드 서술자 바이트를 포함할 수 있다. 하나 이상의 실시예에서, 레코드에서 존재하는 각각의 데이터 노드(어레이, 필드, 또는 객체)는 0개 이상의 서술자 바이트를 포함할 수 있는데, 해당한다면 노드 식별자, 저장된 데이터의 길이, 및 어레이의 요소의 개수를 비롯한 노드에 관한 적합한 정보가 포함될 수 있다. 0개 이상의 노드 서술자 바이트에 뒤이어, 임의의 적합한 개수의 바이트는 레코드와 연관된 데이터를 나타낼 수 있다. 하나 이상의 실시예에서, 데이터는 어레이 분리 표시 비트(array separation marker bit)를 비롯하여 데이터의 콘텐츠를 서술하는 하나 이상의 비트를 포함할 수 있다.
하나 이상의 실시예에서, 토큰 테이블과 연관된 필드 내 데이터는 레코드에 저장된 정보가 적합한 토큰 테이블에서 표현되는지 또는 N-그램 압축과 같은 다른 적합한 압축 방법이 사용되었는지를 설명하는 하나 이상의 비트를 사용할 수 있다.
하나 이상의 실시예에서, 시스템은 하나 이상의 레코드 서술자 바이트 및/또는 하나 이상의 노드(어레이, 객체 또는 필드) 서술자 바이트에 포함된 길이 또는 옵셋 데이터를 사용하여 레코드 또는 노드(어레이, 객체, 또는 필드)를 압축하지 않고 압축된 데이터를 전체적으로 탐색할 수 있다.
하나 이상의 실시예에서, 시스템 내 임의의 적합한 모듈은 MEMDB 시스템에서 하나 이상의 탐색 컨덕터 또는 하나 이상의 구획을 비롯한 데이터를 인덱싱하거나 압축할 수 있다.
하나 이상의 실시예에서, 본 명세서에서 개시된 하나 이상의 압축 방법을 채용하는 압축 장치는 데이터가 노드(어레이, 객체, 또는 필드) 레벨로 압축해제되게 하고/하거나 액세스되게 하면서 데이터가 다른 뛰어난 압축 방법과 유사한 압축률로 압축되게 한다.
하나 이상의 실시예에서, 본 명세서에서 개시된 하나 이상의 압축 방법을 채용하는 압축 장치는 레코드 내 정보에 액세스할 때 시스템이 개개의 레코드 및 노드(어레이, 객체, 또는 필드)를 건너뛰게 해준다.
하나 이상의 실시예에서, 본 명세서에서 개시된 하나 이상의 압축 방법을 채용하는 압축 장치는 타겟 필드가 발견될 때 시스템으로 하여금 레코드의 압축해제를 조기에 끝나게 해준다.
예 1에서, 패싯 탐색을 위한 개시된 방법이 적용된다. MEMDB는 대형 코퍼스로부터 문서를 분석하고, 패싯을 추출하고, 추출된 패싯을 명료화하여 인덱싱한 다음 이를 패싯 타입 및 계층에 따라서 두 개보다 많은 집합체의 여러 구획에 저장한다. 예 1에서, 사용자는 탐색 박스에다 단어 "united"를 타이핑하며 시스템은 패싯에 의해 탐색 결과를 리턴한다. 레벨 1 패싯은 다른 것들 중에서, "Class", "Location", "Product", "Technology" 및 "Company"를 포함한다. 각 레벨 2 패싯의 히트 수가 보여지며 사용자는 탐색을 최소한 3 이상의 레벨로 좁힐 수 있다.
예 2에서, 패싯 탐색을 위한 개시된 방법이 적용된다. MEMDB는 대형 코퍼스를 분석하고, 패싯을 추출하고, 추출한 패싯을 명료화하여 인덱싱한 다음 이를 패싯 타입 및 계층에 따라서 둘보다 많은 집합체의 여러 구획에 저장한다. 예 2에서, 사용자는 탐색 박스에다 문자 "ply"를 타이핑하며 시스템은 자동으로 패싯에 의해 탐색 제시어를 생성한다. 레벨 1 패싯은 다른 것들 중에서 "Class", "Location", "Product", "Technology" 및 "Company"를 포함한다. 각 레벨 2 패싯의 히트 수가 보여지며 사용자는 탐색을 최소한 3 이상의 레벨로 탐색을 좁힐 수 있다.
예 1은 탐색 관리자, 분석 에이전트, 각 노드상의 노드 관리자, 각기 두 탐색 컨덕터를 갖는 여덟 탐색 노드, 슈퍼바이저, 백업 슈퍼바이저, 종속 관리자, 백업 종속 관리자, 및 구획을 저장하고 분배할 수 있는 노드상의 구획자(여기서 노드는 네 개의 구획으로 분할되는 두 집합체 - 각 집합체는 집합체 1 및 집합체 2로 분할됨 - 의 정보를 포함한다)를 포함하는 인-메모리 데이터베이스 시스템이다. 집합체 1 내 레코드에 대한 탐색 조회가 데이터베이스에 의해 수신될 때, 탐색 관리자는 조회를 집합체 1과 연관된 구획을 가진 탐색 컨덕터로 전송한다. 탐색 컨덕터는 비동시적으로 각각의 압축된 레코드를 탐색하고 스코어를 매기고, 조회에서 정의된 문턱치 이상의 스코어를 가진 압축된 결과의 리스트를 만들고, 결과 리스트를 분류하여 압축된 레코드의 결과를 탐색 관리자로 리턴한다. 이러한 예에서, 탐색 컨덕터는 스코어가 매겨지는 필드만을 압축해제한다. 탐색 관리자는 각 탐색 컨덕터로부터 결과 리스트를 수신하여 집계하고, 조회 결과를 컴파일하고, 이를 추가 처리를 위해 분석 에이전트로 전송한다. 분석 에이전트는 충분히 관련된다고 결정하는 레코드들을 조합하고, 처리된 결과 리스트를 탐색 관리자로 리턴한다. 그러면 탐색 관리자는 시스템 인터페이스를 통해 최종 결과를 리턴한다.
예 2는 시맨틱 조회를 수행하고 데이터베이스에서 명시적으로 링크되지 않은 데이터에 관한 링크된 데이터 결과를 리턴할 수 있는 인-메모리 데이터베이스이다. 데이터 또는 레코드를 링크하는 것은 분석 에이전트에서 구현될 수 있는 집계 분석 기능의 그저 하나의 예일 뿐이다. 이러한 예는 링크되지 않은 데이터에서 데이터 연계를 발견하고 시맨틱 결과를 리턴할 수 있는 분석 에이전트를 가진 인-메모리 데이터베이스이다. 링크되지 않은 데이터는 다른 데이터 소스로부터의 데이터와 아무런 명시적인 키 또는 다른 명시적인 링크가 없는 별개의 데이터 소스로부터의 데이터이다. 이러한 예에서, 데이터 콘텐츠 자체에 기초하여 별개의 데이터 소스 전체에 데이터 연계를 발견하고/찾기 위해 플러그 가능한 분석 모듈이 개발되어 분석 에이전트에 배치될 수 있다. 시맨틱 탐색 조회가 실행될 때, 모든 관련 있는 레코드는 비배타적 탐색을 이용하여 탐색 컨덕터를 통해 검색되고, 분석 에이전트 모듈의 특정 구현에 따라 레코드 연계가 발견된 분석 에이전트로 전송되어 신뢰도 스코어가 할당된다. 이렇게 동적으로 링크된 레코드는 RDF/XML과 같은 시맨틱 마크업 또는 다른 시맨틱 데이터 표현을 이용하여 표현될 수 있고 사용자에게 리턴될 수 있다. 이러한 시맨틱 탐색에 대한 접근방법은 링크되지 않은 데이터가 바로 그 링크되지 않은 데이터를 이용하여 상이한 조회마다 상이한 방식으로 링크되게 해준다.
예 3은 그래프 조회를 수행하고 데이터베이스에서 명시적으로 그래프 형태로 링크되지 않거나 표현되지 않은 데이터에 관해 링크된 데이터 결과를 리턴할 수 있는 인-메모리 데이터베이스이다. 이러한 예는 링크되지 않은 데이터에서 데이터 연계를 발견하고 그래프 조회를 수행하여 그래프 조회 결과를 리턴할 수 있는 분석 에이전트를 가진 인-메모리 데이터베이스이다. 그래프 탐색 조회가 실행될 때, 모든 관련 있는 레코드는 비배타적 탐색을 이용하여 탐색 컨덕터를 통해 검색되며, 레코드 연결성이 발견된 분석 에이전트로 전송되어 신뢰도 스코어가 할당된다. 이렇게 동적으로 링크된 레코드는 RDF 그래프, 속성 그래프, 또는 다른 그래프 데이터 표현과 같은 그래프 형태로 표현되어 사용자에게 리턴될 수 있다. 이러한 그래프 탐색에 대한 접근방법은 링크되지 않은 데이터가 바로 그 링크되지 않은 데이터를 이용하여 상이한 조회마다 상이한 방식으로 링크되게 해준다.
예 4는 도 14에서 설명된 방식과 유사한 방식으로 셋업된 연결을 가진 인-메모리 데이터베이스를 호스팅하는 시스템이다. 탐색 관리자, 탐색 컨덕터 및 분석 에이전트는 모두 대화형 사용자 조회의 흐름에 직접 참여한다. 사용자 조회의 지연을 최소화하기 위해, 이와 같은 모듈들은 가장 낮은 지연 연결로 연결된다. 탐색 관리자 및 분석 에이전트는 대형의 집계된 응답 세트를 가지고 작업하며 가장 큰 대역폭으로부터 이득을 취하는데 반해, 탐색 컨덕터는 적은 대역폭을 요구하는 수백의 구획 기반의 응답 세트 컴포넌트를 다룬다. 구획자는 큰 데이터 볼륨을 다루되 비대화형 속도로 다루며 그래서 구획자는 보통의 지연 및 보통의 대역폭 연결을 갖는다. 슈퍼바이저 및 종속 관리자는 비대화형이고 데이터 볼륨이 낮으며 그래서 최저의 대역폭 및 최고의 지연 연결을 필요로 한다. 이러한 구성은 실제의 필요에 따라 비용을 최소화하도록 시도한다.
그러므로, 이러한 예에서, 라인 타입 A는 40Gb 대역폭 및 1마이크로초 이하의 지연을 가진 인피니밴드 연결(InfiniBand connection)이고, 라인 타입 B는 20Gb 대역폭 및 1마이크로초 이하의 지연을 가진 인피니밴드 연결이고, 라인 타입 C는 10 Gb 이더넷 연결(Ethernet connection)이며, 라인 타입 D는 100 Mb 이더넷 연결이다. 이러한 예에서, 탐색 관리자를 포함하는 노드는 2 테라플롭(Teraflop)에서 동작할 수 있는 CPU를 포함하고, 탐색 컨덕터를 포함하는 노드는 4 테라플롭에서 동작할 수 있는 CPU를 포함하고, 분석 에이전트를 포함하는 노드는 4 테라플롭에서 동작할 수 있는 CPU를 포함하며, 구획자를 포함하는 노드는 6 테라플롭에서 동작할 수 있는 CPU를 포함한다. 이러한 예에서, 탐색 컨덕터를 포함하는 노드는 32 내지 64 GB RAM을 포함하고, 분석 에이전트를 포함하는 노드는 32 내지 64 GB RAM을 포함하며, 구획자를 포함하는 6 노드는 각기 64GB RAM 및 10,000 RPM 하드 디스크를 포함한다.
예 5는 도 14에서 설명된 방식과 유사한 방식으로 셋업된 연결을 가진 인-메모리 데이터베이스를 호스팅하는 시스템이다. 탐색 관리자, 탐색 컨덕터 및 분석 에이전트는 모두 대화형 사용자 조회 및 데이터 삽입의 흐름에 직접 참여한다. 대용량의 백엔드(backend) 데이터 삽입 네트워크 트래픽을 대화형의 저지연 사용자 조회와 분리하기 위해, 모듈들은 상이한 네트워크 계층을 이용하여 연결된다. 이러한 구성은 별개의 고대역폭 네트워크 계층을 활용하여 대용량 데이터 삽입을 가능하게 해주면서 또한 인피니밴드와 같은 저지연 네트워크 계층을 활용함으로써 응답식의 대화형 사용자 조회를 가능하게 해준다. 두 종류의 동작은 서로 간섭하지 않고 최적하게 구동한다.
예 6은 노드에서 더 이상 이용 가능하지 않은 몇몇 자원으로 인해 하나의 모듈이 장애이지만 노드 자체는 달리 악영향을 받지 않는 경우에 무슨 일이 일어나는지를 설명한다.
이러한 사례에서, 모듈이 장애일 때, 슈퍼바이저와의 핫빗 연결이 중단되며, 그럼으로써 슈퍼바이저에게 모듈 장애를 알려준다. 슈퍼바이저는 모듈에 재접속하여 장애가 그저 연결 문제 또는 모듈 장애이었는지를 확인하려 시도할 것이다. 일부 실시예에서, 재접속 실패는 모듈 장애인 것으로 추정한다.
슈퍼바이저는 먼저 연관된 노드 관리자에게 적소에 모듈을 재시작할 것을 요청할 것이다. 적소에 모듈을 시작하는 것은 모듈 및 임의의 대응하는 소프트웨어 또는 데이터를 다시 차려 놓는 비용을 유발하지 않으며, 그래서 다른 노드에서 설치하고 시작하는 것보다 더욱 빠르게 성취될 수 있다. 그러나 이러한 예에서, 문제는 몇몇 자원이 명시된 노드에서 이용 불가하다는 것으로 인한 것이며, 그래서 재시작은 역시 실패할 것이다.
미리 결정된 횟수로 적소에 모듈을 재시작하는 시도를 한 후, 슈퍼바이저는 모듈을 시작시키는 다른 적합한 노드를 찾을 것이다. 슈퍼바이저는 종속 관리자에 연락하여 장애 모듈을 배치하는데 필요한 알맞은 패키지를 획득할 것이다. 이후 슈퍼바이저는 패키지를 모듈을 설치하고 구동할 새로이 선택된 노드의 노드 관리자에게 전달할 것이다. 모듈은 새로운 노드에서 필요한 자원을 찾고 모듈이 적절하게 구동하고 있음을 표시하는 슈퍼바이저와의 핫빗 연결을 생성한다. 슈퍼바이저는 복구된 것으로서 기능성을 표시하고 이벤트는 끝난다.
예 7은 장애 전원 공급장치와 같은 총체적 노드 장애를 설명한다. 이러한 사례에서, 노드 관리자 및 서버 상의 모든 모듈은 이들의 슈퍼바이저와의 핫빗 연결을 중단한다. 슈퍼바이저는 이것을 완전 노드 장애이라 간주하고 그 노드를 장애로 인한 이용 불가라고 표시한다. 이후 슈퍼바이저는 그 노드에 할당되었던 모듈들의 리스트를 차례 차례 보여준다. 그 리스트 내 각 모듈마다, 슈퍼바이저는 모듈을 시작시키는 다른 적합한 노드를 찾을 것이다. 슈퍼바이저는 종속 관리자에 연락하여 현재 모듈을 배치하는데 필요한 알맞은 패키지를 획득할 것이다. 그런 다음 슈퍼바이저는 그 패키지를 모듈을 설치하고 구동할 새로이 선택된 노드의 노드 관리자로 전달할 것이다. 모듈은 실행하고 모듈이 적절하게 구동하고 있음을 표시하는 슈퍼바이저와의 핫빗 연결을 생성한다. 슈퍼바이저는 그 모듈에 대해 복구된 것으로서 기능성을 표시한다. 이것은 모든 모듈이 새로운 노드에 재할당될 때까지 지속하며 이벤트는 끝난다.
예 8에서, 시스템은 도 21에서 설명된 것과 유사한 인-메모리 데이터베이스를 호스팅한다. 이러한 예에서, 인-메모리 데이터베이스 및 시스템은 복수의 분석 모듈을 포함한다. 하나의 분석 모듈은 가중화된 모델을 활용하여 레코드를 링킹하는 것을 구현할 수 있는데 반해 다른 분석 모듈은 판정 트리를 사용한다. 일부 모듈은 임의의 가용 데이터에 대해 동작하도록 최적화될 수 있는데 반해, 다른 모듈은 제한된 필드 또는 데이터 집합체 세트로부터 요구된 결과를 생성하도록 조정된다. 일부 모듈은 여러 사용자 그룹에 의해 개발되어 업로딩되었다. 각 사용자 조회는 적용될 여러 분석 모듈을 명시하고 상기 모듈들마다 여러 파라미터를 사용할 수 있다. 여러 사용자는 정보를 동시에 추출하고 심지어는 동일한 데이터를 동시에 여러 상이한 방식으로 처리하기 위해 인-메모리 데이터베이스를 사용하는 것이 가능하다. 일부 사용자가 인-메모리 데이터베이스의 성능이나 다른 사용자의 경험에 영향을 미치지 않고 언제라도 새로운 모듈을 플로그-인하는 것이 또한 가능하다.
예 9에서, 비배타적 탐색을 위한 개시된 방법이 적용된다. 사용자는 다음과 같은 필드, 즉 FN (first name(이름)): John, LN (last name(성씨)): Smith, DOB (date of birth(출생일)): 05/15/1965 및 PH (phone number(전화번호)): 555-1234-7890를 가진 조회를 정의한다. 시스템은 탐색을 수행하며 관련 있는 결과 중에는 상이한 스키마를 가진 두 개의 상이한 집합체로부터 빠진 필드를 가진 두 개의 레코드가 있다. 제 1 레코드는 집합체 0001로부터 온 것이고, 이러한 집합체에서 다음과 같이 필드가 정의된다. 즉 FN: John, LN: Smith, PH: - -, 및 DOB: 05/15/1965. 제 2 레코드는 집합체 '8021'로부터 온 것이고, 이 집합체에서 다음과 같은 필드가 정의된다. 즉 FN: John, LN: Smith, PH: 555-1234-7890 및 DOB: - -. 대부분의 필드에서 양호하게 일치하기 때문에, 어느 것도 제외되지 않으며 이들 레코드는 유사한 최종 스코어를 얻고 조회에 대해 상위 10 결과 내에 위치한다.
예 10에서, 비배타적 탐색을 위한 개시된 방법이 적용된다. 사용자는 다음과 같은 필드를 가진 조회를 정의한다. 즉 FN(이름): John, LN(성씨): Smith, DOB(출생일): 05/15/1965 및 PH(전화번호): 555-1234-7890. 시스템은 탐색을 수행하고 관련 있는 결과 중에는 상이한 스키마를 가진 두 개의 상이한 집합체로부터 유사하지만 정확하게 일치하지 않는 필드를 가진 두 개의 레코드가 있다. 제 1 레코드는 집합체 1001로부터 온 것이고, 이 집합체에서 다음과 같은 필드가 정의된다. 즉 FN: Jonathan, LN: Smith, PH: 1234-7890. 제 2 레코드는 집합체 8021로부터 온 것이고, 이 집합체에서 다음과 같은 필드가 정의된다. 즉, FN: John, LN: Smyth, PH: 555-1234-7890 및 DOB: 1965. 대부분의 필드에서 양호하게 일치하기 때문에, 레코드는 모두 스코어 문턱치를 초과하는 최종 스코어를 얻고 조회에 대해 상위 10 결과 내에 위치한다.
예 11은 압축 장치를 이용하여 이름을 압축하는 방법을 설명한다. 이러한 예에서, 데이터 세트는 350개의 고유 이름 및 200개의 고유 성씨가 표현된 백만 개의 전체 이름 레코드를 포함하는 집합체를 포함한다. 레코드는 이름 필드 및 성씨 필드로 세분화되었다.
그런 다음 개개의 토큰은 이들의 빈도수와 최고부터 최저까지의 길이와의 곱으로 가중화되었다. 소정의 문턱치보다 적은 가중치를 갖는 토큰은 토큰 테이블 크기를 줄이기 위해 제거되었다.
그런 다음 인덱스를 할당할 때 총 공간 절감을 극대화함으로써 각 필드마다 토큰 테이블이 생성되었으며 그럼으로써 개개의 토큰의 공간 절감분은 빈도수와 그의 길이 마이너스 저장된 인덱스 길이의 합과의 곱이다.
단일 바이트 인덱스와 연관된 엔트리의 개수는 극대화 절차 동안 1부터 255까지 전부 변동되었다.
알고리즘은 생성된 토큰 테이블이 최적인 것을 보장하며, 최고의 절감은 단일의 바이트로 저장된 인덱스 엔트리에 주어질 것이며 이에 반해 후속하는 값은 둘 이상의 바이트로 압축한다. 짧거나 드문 엔트리는 아무런 절감도 실현할 수 없으며 토큰 테이블에 포함되지 않는다. 이러한 값들은 n-그램 압축과 같은 다른 압축 방법으로 귀속된다.
예 12는 압축 장치를 이용하여 텍스트를 압축하는 방법을 설명한다.
이러한 예에서, 큰 텍스트 본문이 n-그램의 빈도수에 대해 분석되었는데, 여기서 n-그램은 문자, 단어, 또는 단어 그룹의 연속 시퀀스를 표현할 수 있다. 통상적으로 텍스트는 필드별 수평 압축 시 컬럼 모양의 압축 결과를 달성하기 위해 필드 데이터의 큰 컬럼을 분석함으로써 획득된다.
그런 다음 개개의 n-그램은 이들의 빈도수와 최고부터 최저까지의 길이와의 곱으로 가중화되었다. 소정의 문턱치보다 적은 가중치를 가진 N-그램은 n-그램 테이블 크기를 줄이기 위해 폐기되었다.
이후 인덱스를 할당할 때 총 공간 절감을 극대화함으로써 필드마다 n-그램 테이블이 생성되었으며 그럼으로써 개개의 n-그램의 공간 절감분은 빈도수와 그의 길이 마이너스 저장된 인덱스 길이의 합과의 곱이다.
단일 바이트 인덱스와 연관된 엔트리의 개수는 극대화 절차 동안 1부터 255까지 전부 변동되었다.
알고리즘은 생성된 n-그램 테이블이 최적인 것을 보장하며, 최고의 절감은 단일의 바이트로 저장된 인덱스 엔트리에 주어질 것이며 이에 반해 후속하는 값은 둘 이상의 바이트로 압축한다. 드문 엔트리는 아무런 절감도 실현할 수 없으며 n-그램 테이블에 포함되지 않는다. 이러한 값들은 기본적인 저장소의 다른 방법으로 귀속된다.
이러한 방법을 통해 테이블에서 생성된 n-그램 중 일부의 예는 다음과 같다.
Figure pct00001
압축 동안 필드 데이터는 엔트리 데이터가 소비될 때까지 최대량의 데이터를 가급적 인덱스된 값으로 대체하는 그리디 알고리즘(greedy algorithm)을 이용하여 처음부터 끝까지 압축된다.
예 13은 압축 장치를 이용하여 JSON 문서 내 반쯤 구조화된 데이터를 압축하는 방법이다.
이러한 예에서, JSON 입력 문서는 Title, FirstName, LastName, NameSuffix 및 PhoneType 필드에 대한 토큰 테이블 압축, DateOfBirth 필드에 대한 Serial Day Number 압축 및 PhoneNumber 필드에 대한 번호 n-그램 압축을 가진 다음과 같은 스키마를 이용하여 압축된다.
Figure pct00002
Figure pct00003
아래의 입력 레코드는 (불필요한 여백을 제거한 후) JSON으로 표현될 266 바이트가 필요하다. 압축 후, 앞의 스키마에서 기술된 압축 방법을 이용하여, 결과로 생긴 압축된 레코드는 단지 44 바이트만을 필요로 한다.
Figure pct00004
아래의 입력 레코드는 (불필요한 여백을 제거한 후) JSON으로 표현될 108 바이트가 필요하다. 압축 후, 앞의 스키마에서 기술된 압축 방법을 이용하여, 결과로 생긴 압축된 레코드는 단지 13 바이트만을 필요로 한다.
Figure pct00005
예 14는 레코드를 조각으로 나누는 예이다. 이러한 예에서, 집합체의 53번째 레코드는 제 1 및 제 2 주소를 갖고 있는 한 쌍의 Bob와 Carol Wilson에 대한 데이터를 포함한다. 이러한 예에서, 레코드는 아래의 테이블에서 보는 바와 같이 조각으로 나누어진다.
Figure pct00006
레코드 인덱스는 레코드들이 집합체 내 원래의 같은 레코드로부터 출처한 것임을 시스템이 여전히 알고 있음을 보장하도록 유지된다. 이러한 예에서, 조각으로 나누어진 레코드는 시스템이 구획 내 이전의 레코드를 참조하게 하는 값을 포함시킴으로써 데이터를 더 압축한다. 즉 시스템이 레코드 53.2의 이름의 레코드에 액세스할 때, 값은 시스템으로 하여금 다시 레코드 53.1에 있는 이름의 값을 참조하게 한다. 예 14에서 시스템이 데이터를 심지어 압축된 포맷으로 시스템 내 다른 모듈에 출력할 때, 모듈은 참조하는 값을 실제 값으로 대체한다.
예 15는 반쯤 구조화된 데이터를 보관하는 방법의 예이다. 이러한 예에서, MongoDB, Cassandra, 또는 CouchDB와 같은 문서 지향 데이터베이스로부터의 JSON 문서는 각 JSON 문서의 고유 식별자를 비롯한 요구된 필드 모두를 정의하는 스키마를 이용하여 압축된다. 그런 다음 고유 식별자를 압축된 레코드에 맵핑하는 인덱스가 생성된다. 결과로 생긴 압축된 레코드 및 인덱스는 원래의 문서 지향 데이터베이스에 필요한 저장소의 15%보다 적게 소비하며 각각의 JSON 문서 또는 문서의 선택 필드는 원하지 않는 데이터를 압축해제 하지 않고 바로 액세스될 수 있다.
본 명세서에서 개시된 실시예와 관련하여 기술된 각종의 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계는 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있다. 하드웨어와 소프트웨어의 이와 같은 치환가능성을 분명하게 설명하기 위해, 각종의 예시적인 컴포넌트, 블록, 모듈, 회로, 및 단계가 이들의 기능성의 관점에서 앞에서 개괄적으로 설명되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 디자인 한정에 달려 있다. 숙련된 기술자는 기술된 기능성을 각각의 특정 애플리케이션마다 여러 방법으로 구현할 수 있지만, 그러한 구현 판단은 본 발명의 범위를 벗어나게 하는 것으로서 해석되지 않아야 한다.
컴퓨터 소프트웨어로 구현된 실시예는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, GPU, 하드웨어 서술 언어, 또는 이들의 임의의 조합으로 구현될 수 있다. 코드 세그먼트 또는 머신 실행가능한 명령어는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령어, 데이터 구조체, 또는 프로그램 스테이트먼트의 임의의 조합을 표현할 수 있다. 코드 세그먼트는 정보, 데이터, 인수(argument), 파라미터 또는 메모리 내용을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 연결될 수 있다. 정보, 인수, 파라미터, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 전송 등을 포함하는 임의의 적합한 수단을 통해 전달, 포워딩, 또는 전송될 수 있다.
이러한 시스템 및 방법을 구현하는데 사용되는 실제 소프트웨어 코드 또는 특화된 제어 하드웨어는 본 발명을 한정하지 않는다. 그래서, 시스템 및 방법의 동작 및 거동은 소프트웨어 및 제어 하드웨어가 본 명세서의 설명을 기반으로 하여 시스템 및 방법을 구현하도록 설계될 수 있다는 것으로 이해되는 특정 소프트웨어 코드를 참조하지 않고 설명되었다
소프트웨어로 구현될 때, 기능은 하나 이상의 명령어 또는 코드로서 비일시적 컴퓨터 판독 가능하거나 프로세서 판독 가능한 저장 매체에 저장될 수 있다. 본 명세서에서 개시된 방법 또는 알고리즘의 단계는 컴퓨터 판독 가능하거나 프로세서 판독 가능한 저장 매체에서 상주할 수 있는 프로세서 실행가능한 소프트웨어 모듈에서 구현될 수 있다. 비일시적 컴퓨터 판독 가능한 또는 프로세서 판독 가능한 매체는 컴퓨터 프로그램을 한 장소에서 다른 장소로 이전하는 것을 용이하게 해주는 컴퓨터 저장 매체 및 유형의 저장 매체 두 가지를 포함한다. 비일시적 프로세서 판독 가능한 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 예를 들어, 한정하지 않고, 그러한 비일시적 프로세서 판독 가능한 매체는 원하는 프로그램 코드를 명령어 또는 데이터 구조체의 형태로 저장하는데 사용될 수 있고 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM이나 다른 광 디스크 저장소, 자기 디스크 저장소나 다른 자기 저장 디바이스, 또는 임의의 다른 유형의 저장 매체를 포함할 수 있다. 본 명세서에서 사용된 것으로서 디스크(Disk 및 disc)는 컴팩트 디스크(compact disc, CD), 레이저 디스크, 광 디스크, 다기능 디스크(digital versatile disc, DVD), 플로피 디스크, 및 블루-레이 디스크를 포함하는데, 여기서 디스크(disk)는 통상 데이터를 자기방식으로 재생하는데 반해, 디스크(disc)는 데이터를 레이저를 이용한 광학방식으로 재생한다. 전술한 것들의 조합은 또한 컴퓨터 판독 가능한 매체의 범위 내에 포함되어야 한다. 또한, 방법 또는 알고리즘의 동작은 컴퓨터 프로그램 제품 내에 포함될 수 있는 비일시적 프로세서 판독 가능한 매체 및/또는 컴퓨터 판독 가능한 매체상에서 코드들 및/또는 명령어들의 하나 또는 임의의 조합이나 그 집합으로서 상주할 수 있다.
개시된 실시예의 전술한 설명은 본 기술에서 통상의 지식을 가진 자가 본 발명을 제작하거나 사용할 수 있도록 제공된다. 본 기술에서 통상의 지식을 가진 자에게는 이러한 실시예의 다양한 수정이 쉽게 자명할 것이며, 본 명세서에서 정의된 일반적인 원리는 본 발명의 사상이나 범위를 벗어나지 않고 다른 실시예에 적용될 수 있다. 그러므로, 본 발명은 본 명세서에서 도시된 실시예로 한정되는 것으로 의도되지 않고 다음과 같은 청구범위 및 본 명세서에서 개시된 원리 및 새로운 특징과 일관하는 가장 넓은 범위와 일치할 것이다.
다양한 양태 및 실시예가 개시되었지만, 다른 양태 및 실시예가 예상된다. 개시된 다양한 양태 및 실시예는 예시의 목적을 위한 것이지 한정하려는 것으로 의도하지 않으며, 참 범위 및 사상은 아래와 같은 청구범위에 의해 지시된다.
전술한 방법의 설명 및 프로세스 흐름도는 그저 예시적인 예로서 제공될 뿐이며 각종 실시예의 단계가 제시된 순서대로 수행되어야 한다는 것을 요구하거나 암시하는 것으로 의도하지 않는다. 본 기술에서 통상의 지식을 가진 자에 의해 인식되는 바와 같이, 전술한 실시예에서 단계는 임의의 순서로 수행될 수 있다. "그런 다음", "다음" 등과 같은 단어는 단계의 순서를 한정하려는 의도는 아니며, 이와 같은 단어는 방법의 설명 전체에서 단순히 독자를 안내하기 위해 사용된다. 비록 프로세스 흐름도가 동작을 순차적인 프로세스로서 설명할 수 있지만, 많은 동작은 병렬로 또는 동시에 수행될 수 있다. 또한, 동작의 순서는 재 배열될 수 있다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 프로세스의 종료는 호출 함수 또는 주요 함수로의 함수의 복귀에 대응할 수 있다.
본 명세서에서 개시된 실시예와 관련하여 기술된 각종의 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계는 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있다. 하드웨어와 소프트웨어의 이와 같은 치환가능성을 분명하게 설명하기 위해, 각종의 예시적인 컴포넌트, 블록, 모듈, 회로, 및 단계가 이들의 기능성의 관점에서 앞에서 개괄적으로 설명되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 디자인 한정에 달려 있다. 숙련된 기술자는 기술된 기능성을 각각의 특정 애플리케이션마다 여러 방법으로 구현할 수 있지만, 그러한 구현 판단은 본 발명의 범위를 벗어나게 하는 것으로서 해석되지 않아야 한다.
컴퓨터 소프트웨어로 구현되는 실시예는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 서술 언어, 또는 이들의 임의의 조합으로 구현될 수 있다. 코드 세그먼트 또는 머신 실행가능한 명령어는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령어, 데이터 구조체, 또는 프로그램 스테이트먼트의 임의의 조합을 표현할 수 있다. 코드 세그먼트는 정보, 데이터, 인수, 파라미터 또는 메모리 내용을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 연결될 수 있다. 정보, 인수, 파라미터, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 전송 등을 포함하는 임의의 적합한 수단을 통해 전달, 포워딩, 또는 전송될 수 있다.
이러한 시스템 및 방법을 구현하는데 사용되는 실제 소프트웨어 코드 또는 특화된 제어 하드웨어는 본 발명을 한정하지 않는다. 그래서, 시스템 및 방법의 동작 및 작동은 소프트웨어 및 제어 하드웨어가 본 명세서의 설명을 기반으로 하여 시스템 및 방법을 구현하도록 설계될 수 있다는 것으로 이해되는 특정 소프트웨어 코드를 참조하지 않고 설명되었다
소프트웨어로 구현될 때, 기능은 하나 이상의 명령어로서 비일시적 컴퓨터 판독 가능한 또는 프로세서 판독 가능한 저장 매체에 저장될 수 있다. 본 명세서에서 개시된 방법 또는 알고리즘의 단계는 컴퓨터 판독 가능한 또는 프로세서 판독 가능한 저장 매체상에서 상주할 수 있는 프로세서 실행가능한 소프트웨어 모듈에서 구현될 수 있다. 비일시적 컴퓨터 판독 가능한 또는 프로세서 판독 가능한 매체는 컴퓨터 프로그램을 한 장소에서 다른 장소로 이전하는 것을 용이하게 해주는 컴퓨터 저장 매체 및 유형의 저장 매체 두 가지를 포함한다. 비일시적 프로세서 판독 가능한 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 예를 들어, 제한하지 않고, 그러한 비일시적 프로세서 판독 가능한 매체는 원하는 프로그램 코드를 명령어 또는 데이터 구조체의 형태로 저장하는데 사용될 수 있고 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM이나 다른 광 디스크 저장소, 자기 디스크 저장소나 다른 자기 저장 디바이스, 또는 임의의 다른 유형의 저장 매체를 포함할 수 있다. 본 명세서에서 사용된 것으로서 디스크(Disk 및 disc)는 컴팩트 디스크(CD), 레이저 디스크, 광 디스크, 다기능 디스크(DVD), 플로피 디스크, 및 블루-레이 디스크를 포함하는데, 여기서 디스크(disk)는 통상 데이터를 자기방식으로 재생하는데 반해, 디스크(disc)는 데이터를 레이저를 이용한 광학방식으로 재생한다. 전술한 것들의 조합은 또한 컴퓨터 판독 가능한 매체의 범위 내에 포함되어야 한다. 또한, 방법 또는 알고리즘의 동작은 컴퓨터 프로그램 제품 내에 통합될 수 있는 비일시적 프로세서 판독 가능한 매체 및/또는 컴퓨터 판독 가능한 매체상에서 코드들 및/또는 명령어들의 하나 이상의 임의의 조합이나 그 집합으로서 상주할 수 있다.
기술의 다양한 컴포넌트는 분산된 네트워크 및/또는 인터넷의 원거리 부분에서 또는 전용의 보안된, 보안되지 않은, 그리고/또는 암호화된 시스템 내에 배치될 수 있다는 것이 인식될 것이다. 그러므로 시스템의 컴포넌트는 하나 이상의 디바이스로 결합될 수 있거나 통신 네트워크와 같은 분산된 네트워크의 특정 노드상에 공존할 수 있다는 것을 인식하여야 한다. 설명으로부터 인식되는 바와 같이, 그리고 계산적 효율성의 이유로, 시스템의 컴포넌트는 시스템의 동작에 영향을 미치지 않고 분산된 네트워크 내 어느 장소에도 배열될 수 있다. 더욱이, 컴포넌트는 전용의 머신 내에 내장될 수도 있다.
뿐만 아니라, 요소들을 연결하는 각종 링크는 데이터를 연결된 요소들에 그리고 연결된 요소들로부터 공급 및/또는 전달할 수 있는 유선이나 무선 링크 또는 이들의 임의의 조합일 수 있거나, 또는 임의의 다른 공지되거나 향후 개발되는 요소(들)일 수 있다. 본 명세서에서 사용된 바와 같은 용어 모듈은 그 요소와 연관된 기능성을 수행할 수 있는 임의의 공지되거나 향후 개발되는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 말할 수 있다. 본 명세서에서 사용된 것으로서 용어 결정하는, 산술하는 및 계산하는, 그리고 이들의 변형은 교환 가능하게 사용되며 임의의 형태의 방법론, 프로세스, 수학적 연산이나 기술을 포함한다.
개시된 실시예의 전술한 설명은 본 기술에서 통상의 지식을 가진 자가 본 발명을 제조하거나 사용할 수 있도록 제공된다. 이러한 실시예에 대한 다양한 수정은 본 기술에서 통상의 지식을 가진 자에게 쉽게 자명해질 것이며, 본 명세서에서 정의된 일반적인 원리는 본 발명의 사상이나 범위를 일탈하지 않고 다른 실시예에 적용될 수 있다. 그러므로, 본 발명은 본 명세서에서 도시된 실시예로 한정되는 것으로 의도되지 않고 다음과 같은 청구범위 및 본 명세서에서 개시된 원리 및 새로운 특징과 일관하는 가장 넓은 범위에 일치할 것이다.
전술한 실시예는 예시적인 것으로 의도된다. 본 기술에서 통상의 지식을 가진 자라면 많은 대안의 컴포넌트 및 실시예가 본 명세서에서 기술된 특정 예에 대체될 수 있고 그럼에도 본 발명의 범위에 속할 수 있는 것을 인식할 것이다.

Claims (141)

  1. 컴퓨터 구현된 방법에 있어서.
    컴퓨터에 의해, 하나 이상의 종류의 데이터 중의 데이터를 포함하고 정보를 갖고 있는 코퍼스(corpus)로부터 하나 이상의 패싯(facet)을 추출하는 단계;
    상기 컴퓨터에 의해, 상기 코퍼스로부터 추출된 각각의 상기 하나 이상의 패싯을 명료화하는 단계;
    상기 컴퓨터에 의해, 상기 하나 이상의 패싯과 연관된 하나 이상의 인덱스를 각기 생성하는 단계;
    상기 컴퓨터에 의해, 상기 연관된 인덱스에 기초하여 데이터베이스의 하나 이상의 레코드를 포함하는 구획(partition)의 레코드로부터 각각의 상기 패싯을 검색하는(retrieving) 단계 - 상기 데이터베이스의 집합체(collection)는 하나 이상의 구획을 포함하고, 각각의 패싯은 데이터의 상기 하나 이상의 레코드와 관련하여 상기 데이터베이스에 저장된 데이터의 계층적 관계를 표시함 -; 및
    상기 컴퓨터에 의해, 각각의 상기 패싯에 기초하여 제안된 탐색 조회를 생성하는 단계를 포함하는
    컴퓨터 구현된 방법.
  2. 인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템에 있어서,
    데이터베이스의 하나 이상의 레코드의 집합체를 수신함에 응답하여, 상기 집합체와 연관된 머신 판독 가능한 스키마 파일에 기초하여 상기 집합체를 압축할지를 결정하고, 상기 스키마 파일에 따라서 상기 집합체를 하나 이상의 구획으로 논리적으로 분할하고, 상기 스키마 파일에 따라서 상기 하나 이상의 구획을 하나 이상의 저장 노드에 분배하도록 구성된 프로세서를 포함하는 구획자 노드(partitioner node);
    상기 저장 노드와 연관된 상기 구획자로부터 수신한 구획을 저장하는 비일시적 머신 판독 가능한 주 메모리를 포함하는 저장 노드;
    상기 시스템의 클라이언트 디바이스로부터 탐색 조회를 수신하고, 상기 클라이언트 디바이스로부터 상기 탐색 조회를 수신함에 응답하여 상기 탐색 조회를 탐색 컨덕터 조회(search conductor query)로서 하나 이상의 탐색 컨덕터로 전송하는 프로세서를 포함하는 탐색 관리자 노드 - 상기 탐색 조회는 상기 탐색 조회를 만족하는 하나 이상의 레코드와 연관된 파라미터를 포함하는 머신 판독 가능한 컴퓨터 파일임 -;
    하나 이상의 구획자와 연관되며, 상기 탐색 관리자 노드로부터 탐색 컨덕터 조회를 수신함에 응답하여, 상기 탐색 컨덕터 조회에 의해 표시된 한 세트의 하나 이상의 구획에 조회하고, 상기 질의된 구획의 세트에 저장된 하나 이상의 후보 레코드를 식별하고, 스코어링 알고리즘(scoring algorithm)을 이용하여 각각의 후보 레코드에 대해 제 1 스코어를 계산하고, 상기 탐색 관리자에게 문턱 값을 만족하는 하나 이상의 후보 레코드를 포함하는 한 세트의 하나 이상의 조회 결과를 전송하도록 구성된 프로세서를 포함하는 탐색 컨덕터 노드; 및
    상기 탐색 관리자 노드로부터 수신된 상기 조회 결과의 세트에서 식별하는 것에 응답하여, 상기 조회 결과의 세트로부터 도출되는 한 세트의 하나 이상의 결과를 포함하는 머신 판독 가능한 컴퓨터 파일을 자동 생성하도록 구성된 프로세서를 포함하는 분석 에이전트 노드를 포함하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  3. 제 2 항에 있어서,
    상기 분석 에이전트 노드의 상기 프로세서는 또한 상기 하나 이상의 데이터 연계(data linkage)의 세트를 상기 탐색 관리자로 전송하도록 구성되는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  4. 제 2 항에 있어서,
    상기 탐색 관리자 노드의 상기 프로세서는 또한 상기 탐색 조회에 따라서 하나 이상의 필드 처리 알고리즘을 실행하도록 구성되는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  5. 제 2 항에 있어서,
    상기 시스템의 하나 이상의 노드로부터 하나 이상의 핫빗 신호(heartbeat signal)를 수신하고 각각의 노드로부터 수신된 핫빗 신호에 기초하여 상기 하나 이상의 노드의 각각의 상태를 결정하는 프로세서를 포함하는 슈퍼바이저 노드를 더 포함하며, 여기서 각각의 상기 핫빗 신호는 각각의 상기 상태를 표시하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  6. 제 5 항에 있어서,
    각각의 노드는 상기 노드의 상기 상태를 모니터링하도록 구성된 프로세서를 포함하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  7. 제 5 항에 있어서,
    상기 슈퍼바이저 노드와 연관되며, 비일시적 머신 판독 가능한 저장 매체에 저장된 머신 판독 가능한 종속 트리 파일(dependency tree file)을 이용하여 상기 슈퍼바이저에 의해 모니터링되는 노드의 노드 구성 상태를 모니터링하는 프로세서를 포함하는 종속 관리자 노드를 더 포함하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  8. 제 7 항에 있어서,
    상기 핫빗 신호의 상기 상태는 상기 노드 구성 상태를 표시하고, 상기 슈퍼바이저 노드는 상기 노드 구성 상태가 상기 노드가 잘못 구성되었다고 표시하는 것을 결정하는 상기 종속 관리자에 대응하여 머신 판독 가능한 구성 패키지 파일을 전송하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  9. 제 2 항에 있어서,
    상기 탐색 컨덕터는 한 세트의 하나 이상의 업데이트된 결과 레코드의 각각의 후보 레코드마다 필드 스코어를 계산하고 - 상기 업데이트된 결과 레코드의 세트 내 각각의 후보의 상기 제 1 스코어는 상기 탐색 조회에 의해 표시된 상기 문턱 값을 만족함 -, 상기 업데이트 된 결과 레코드를 상기 탐색 관리자 노드로 전송하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  10. 제 9 항에 있어서,
    상기 후보 결과 레코드의 상기 데이터가 데이터 압축 알고리즘에 따라서 압축되는 것을 결정함에 따라, 상기 탐색 컨덕터는 상기 데이터 압축 알고리즘을 사용하여 상기 업데이트된 결과 레코드의 세트 내 후보 레코드에 저장된 데이터를 압축해제하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  11. 제 2 항에 있어서,
    하나 이상의 집합체와 연관된 새로운 집합체 스키마 파일을 수신하는 조회 인터페이스 모듈을 실행하는 프로세서를 포함하는 노드를 더 포함하며, 적어도 탐색 컨덕터 노드는 상기 새로운 스키마 파일에 따라서 상기 탐색 컨덕터와 연관된 하나 이상의 집합체를 자동으로 재구성하도록 구성되는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  12. 제 2 항에 있어서,
    상기 구획자는 상기 스키마 파일에 따라서 고유 레코드 식별자를 상기 집합체에 저장된 각각의 상기 각각의 레코드에 할당하고, 상기 집합체 내 각각의 레코드에 할당된 상기 고유 레코드 식별자를 이용하여 상기 집합체의 각각의 상기 구획과 연관된 머신 판독 가능한 인덱스 파일을 생성하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  13. 제 12 항에 있어서,
    상기 탐색 관리자 노드는 한 세트의 하나 이상의 새로운 레코드를 상기 탐색 컨덕터 노드에 분배하며, 상기 탐색 컨덕터는 상기 하나 이상의 새로운 레코드의 세트를 수신함에 대응하여, 상기 스키마 파일에 따라서 각각의 상기 새로운 레코드를 집합체의 구획에 자동으로 추가하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  14. 제 12 항에 있어서,
    상기 하나 이상의 탐색 관리자는 또한 한 세트의 고유 레코드 식별자에 대응하는 하나 이상의 레코드를 삭제하라는 요청을 수신하여 분배하고 상기 요청을 적어도 하나의 탐색 컨덕터로 분배하며, 상기 탐색 컨덕터는 또한 상기 고유 레코드 식별자의 세트와 연관된 각각의 레코드를 삭제하기 위해 표시하도록 구성되는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  15. 제 14 항에 있어서,
    삭제를 위한 레코드를 표시하는 것은 상기 레코드를 미래의 탐색 결과 레코드로부터 제외하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  16. 제 12 항에 있어서,
    각각의 상기 레코드와 연관된 상기 고유 레코드 식별자는 고유 식별자 번호, 집합체 버전 번호, 집합체 이름, 및 구획 버전 번호 중 하나 이상을 포함하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  17. 제 12 항에 있어서,
    상기 탐색 관리자 노드는 하나 이상의 새로운 레코드를 포함하는 한 세트의 하나 이상의 새로운 집합체를 수신하고, 상기 스키마 파일에 따라서 한 세트의 새로운 집합체를 상기 하나 이상의 탐색 컨덕터 노드로 전송하며, 각각의 탐색 컨덕터 노드는 상기 하나 이상의 새로운 집합체를 수신함에 대응하여, 상기 스키마 파일에 따라서 자동으로 상기 각각의 탐색 컨덕터 노드와 연관된 하나 이상의 집합체를 상기 하나 이상의 레코드의 세트로 채우는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  18. 제 2 항에 있어서,
    탐색 관리자는 집합체를 제거하라는 요청을 수신하고, 상기 탐색 관리자 프로세서는 상기 집합체 삭제 요청을 탐색 컨덕터에 포워딩하도록 구성되며, 상기 탐색 컨덕터는 또한 상기 집합체를 상기 데이터베이스로부터 제거하도록 구성되는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  19. 제 2 항에 있어서,
    상기 탐색 관리자는 각각의 상기 탐색 컨덕터로부터 각각의 상기 탐색 결과 레코드를 비동시적으로 수신하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  20. 제 2 항에 있어서,
    상기 스키마는 상기 필드의 이름 중 하나 이상의 이름, 상기 필드가 인덱싱되는지의 여부, 사용된 압축, 및 상기 필드에 대한 디폴트 스코어링 알고리즘에 따라서 집합체를 서술하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  21. 제 2 항에 있어서,
    상기 분석 에이전트는 또한 여러 레코드를 더 완전한 레코드로 연쇄하고 상기 탐색 결과 레코드에 이웃하는 레코드에 관한 정보를 결정하도록 구성되는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  22. 제 2 항에 있어서,
    상기 탐색 컨덕터는 상기 탐색 관리자로부터 수신된 상기 탐색 조회에 기초하여 상기 탐색 결과 레코드의 크기를 제한하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  23. 제 2 항에 있어서,
    슈퍼바이저는 구획자에게 집합체 내 하나 이상의 레코드를 압축하라고 명령하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  24. 제 2 항에 있어서,
    슈퍼바이저는 또한 로딩될 하나 이상의 새로운 구획을 결정하고, 종속 관리자로부터 노드에 대한 노드 구성을 요청하며 - 상기 슈퍼바이저는 상기 노드의 노드 관리자에게 상기 종속 관리자로부터 상기 노드 구성을 검색하도록 명령함 -,
    상기 노드 관리자는 상기 노드의 메모리 자원을 할당하고 새로운 구획을 로딩하도록 구성되며,
    상기 스키마에 따라서 상기 새로운 구획과 연관된 상기 탐색 컨덕터는 상기 슈퍼바이저에게 상기 구획이 로딩되었다고 알려주는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  25. 제 2 항에 있어서,
    상기 분석 에이전트 노드는 상기 탐색 관리자 노드로부터 수신된 상기 조회 결과 세트에서 둘 이상의 레코드와 상관하는 데이터 연계를 식별하며, 상기 데이터 연계는 제 2 레코드에 포함된 데이터와 연관된 제 1 레코드에 포함된 데이터와 상관하는
    인-메모리 데이터베이스를 호스팅하는 컴퓨팅 시스템.
  26. 컴퓨터 구현된 방법에 있어서,
    인-메모리 데이터베이스를 호스팅하는 시스템의 탐색 관리자 컴퓨터에 의해, 상기 데이터베이스에 질의하는 파라미터를 포함하는 탐색 조회를 표현하는 이진 데이터를 수신하는 단계 - 상기 시스템은 상기 데이터베이스의 하나 이상의 집합체를 저장하는 주 메모리를 포함하는 하나 이상의 저장 노드를 포함하고, 각각의 집합체는 하나 이상의 레코드를 포함함 -;
    상기 컴퓨터에 의해, 상기 탐색 조회를 상기 탐색 조회에 따라서 하나 이상의 탐색 컨덕터 노드로 전송하는 단계 - 상기 탐색 조회는 질의될 하나 이상의 집합체의 한 세트를 표시함 -;
    상기 컴퓨터에 의해, 상기 하나 이상의 탐색 컨덕터로부터 상기 탐색 조회를 만족하는 하나 이상의 레코드를 포함하는 하나 이상의 탐색 결과의 한 세트를 수신함에 대응하여 상기 탐색 조회에 기초하여 상기 탐색 결과 세트를 하나 이상의 분석 에이전트로 전송하는 단계 - 상기 탐색 결과 세트의 각각의 레코드는 상기 탐색 조회 내 스코어링 알고리즘에 기초하여 스코어와 연관됨 -; 및
    상기 컴퓨터가 상기 하나 이상의 분석 에이전트 노드로부터 한 세트의 하나 이상의 데이터 연계를 포함하는 컴퓨터 파일을 수신함에 따라, 상기 컴퓨터에 의해, 상기 분석 에이전트 노드로부터 수신된 상기 하나 이상의 데이터 연계 세트에 따라서 상기 탐색 결과 세트의 상기 하나 이상의 레코드를 업데이트하는 단계를 포함하는
    컴퓨터 구현된 방법.
  27. 제 26 항에 있어서,
    상기 컴퓨터는 각각의 상기 탐색 컨덕터로부터 탐색 결과의 서브세트를 비동시적으로 수신하는
    컴퓨터 구현된 방법.
  28. 제 27 항에 있어서,
    각각의 탐색 컨덕터 노드로부터 수신된 탐색 레코드의 각각의 서브세트는 상기 각각의 레코드에 대해 계산된 상기 스코어에 따라서 등급이 매겨지는
    컴퓨터 구현된 방법.
  29. 제 26 항에 있어서,
    질의될 상기 집합체 세트와 연관된 각각의 탐색 컨덕터는 상기 탐색 조회의 상기 파라미터에 따라서 상기 탐색 결과의 상기 하나 이상의 레코드를 포함하는 하나 이상의 탐색 결과의 한 세트를 결정하는
    컴퓨터 구현된 방법.
  30. 컴퓨터 구현된 방법에 있어서,
    컴퓨터에 의해, 머신 판독 가능한 스키마 파일에 따라서 탐색 컨덕터로부터 하나 이상의 집합체를 수신하는 단계 - 각각의 상기 집합체는 하나 이상의 필드를 가진 하나 이상의 레코드의 한 세트를 포함함 -;
    상기 컴퓨터에 의해, 상기 스키마에 따라서 각각의 집합체를 분할하는 단계;
    상기 컴퓨터에 의해, 상기 스키마에 따라서 상기 구획 내 상기 레코드를 압축하는 단계; 및
    상기 컴퓨터에 의해, 각각의 상기 구획을 하나 이상의 연관된 탐색 컨덕터에 분배하여 각각의 상기 구획을 상기 탐색 컨덕터와 연관된 상기 구획자에 대응하는 각각의 집합체 내에 포함시키는 단계를 포함하는
    컴퓨터 구현된 방법.
  31. 제 30 항에 있어서,
    상기 컴퓨터에 의해, 상기 스키마에 따라서 각각의 레코드 세트 내 상기 레코드를 조각으로 나누는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  32. 제 30 항에 있어서,
    상기 컴퓨터에 의해, 필드 레벨, 레코드 레벨, 구획 레벨, 집합체 레벨, 및 데이터베이스 레벨로 이루어지는 그룹으로부터 선택된 레벨로 상기 레코드를 압축해제하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  33. 인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템에 있어서,
    집합체의 하나 이상의 구획을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 복수의 저장 노드 - 각각의 저장 노드에 의해 저장된 상기 집합체는 데이터베이스의 하나 이상의 레코드를 포함하고, 각각의 저장 노드의 상기 저장 매체는 주 메모리를 포함함 -;
    사용자 노드로부터 수신된 탐색 조회를 이용하여 하나 이상의 탐색 컨덕터 조회를 생성하고, 상기 하나 이상의 탐색 컨덕터 조회를 상기 탐색 조회에 따라서 하나 이상의 탐색 컨덕터 노드로 전송하고, 하나 이상의 탐색 결과 세트를 수신함에 대응하여 상기 탐색 조회에 따라서 상기 하나 이상의 탐색 결과 세트를 하나 이상의 분석 에이전트 노드에 포워딩하는 프로세서를 포함하는 탐색 관리자 노드;
    상기 탐색 관리자 노드로부터 탐색 결과의 한 세트를 수신함에 대응하여 하나 이상의 분석 알고리즘을 실행하는 프로세서를 포함하는 분석 에이전트 노드;
    상기 탐색 관리자로부터 탐색 컨덕터 조회를 수신함에 응답하여 상기 탐색 컨덕터 조회에 따라 저장 노드의 상기 데이터베이스 레코드의 상기 집합체에 조회하고, 상기 하나 이상의 탐색 결과 세트를 식별함에 응답하여 상기 하나 이상의 탐색 결과 세트를 상기 탐색 관리자 노드로 전송하는 프로세서를 포함하는 탐색 컨덕터 노드 - 각각의 탐색 결과는 상기 탐색 컨덕터 조회를 만족하는 데이터를 포함하는 데이터베이스 레코드에 대응함 -; 및
    각각의 네트워크 세그먼트를 통해 통신하는 하나 이상의 노드들 사이의 하나 이상의 연결을 포함하는 복수의 네트워크 세그먼트 - 제 1 네트워크 세그먼트는 상기 탐색 관리자, 상기 탐색 컨덕터, 및 상기 분석 에이전트를 포함함 - 를 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  34. 제 33 항에 있어서,
    각각의 네트워크 세그먼트는 자원 수요를 기초로 하는 통신 형태와 연관된 상기 하나 이상의 연결을 포함하며,
    상기 통신 형태는 탐색 조회 데이터, 데이터베이스 레코드의 하나 이상의 집합체, 상태 데이터, 및 구성 패키지 파일로 이루어지는 그룹으로부터 선택되는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  35. 제 34 항에 있어서,
    각각의 통신 형태의 상기 자원 수요는 지연 수요 및 대역폭 수요에 따라서 결정되며, 상기 지연 수요는 상기 통신에 허용 가능한 양의 시간을 기초로 하며, 상기 대역폭 수요는 상기 통신의 데이터 량을 기초로 하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  36. 제 34 항에 있어서,
    상기 제 1 네트워크 세그먼트는 탐색 조회 데이터를 전달하는 상기 하나 이상의 연결을 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  37. 제 36 항에 있어서,
    상기 제 1 네트워크 세그먼트는 인피니밴드(InfiniBand)를 이용하는 물리적 연결을 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  38. 제 36 항에 있어서,
    데이터베이스 레코드의 하나 이상의 집합체를 분할하고 상기 하나 이상의 집합체를 수신함에 응답하여 스키마 파일에 따라서 상기 하나 이상의 집합체를 상기 하나 이상의 저장 노드에 분배하는 하나 이상의 구획자 노드를 더 포함하며,
    제 2 네트워크 노드 세그먼트는 상기 하나 이상의 집합체를 각각의 구획자로부터 상기 하나 이상의 저장 노드로 전달하는 상기 하나 이상의 연결을 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  39. 제 38 항에 있어서,
    상기 제 2 네트워크 세그먼트는 인피니밴드를 이용하는 제 2 물리적 연결을 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  40. 제 39 항에 있어서,
    상기 제 2 네트워크 세그먼트는 이더넷(Ethernet)을 이용하는 제 2 물리적 연결을 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  41. 제 38 항에 있어서,
    상기 시스템의 상기 하나 이상의 노드와 연관된 하나 이상의 상태를 계속하여 모니터링하고, 장애 노드의 장애 자원을 표시하는 상태를 수신함에 응답하여 구성 패키지 파일을 상기 하나 이상의 노드들 중 상기 장애 노드로 전송하도록 구성되는 프로세서를 포함하는 하나 이상의 슈퍼바이저 노드를 더 포함하며,
    제 3 네트워크 세그먼트는 각각의 노드의 각각의 상태를 상기 하나 이상의 슈퍼바이저 노드로 전달하는 상기 하나 이상의 연결을 포함하며 상기 구성 패키지 파일은 상기 슈퍼바이저 노드로부터 상기 장애 노드로 전송되는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  42. 제 41 항에 있어서,
    상기 제 3 네트워크 세그먼트는 이더넷을 이용하는 제 3 물리적 연결을 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  43. 제 41 항에 있어서,
    하나 이상의 구성 패키지 파일 및 종속 트리를 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 종속 관리자, 및 상기 장애 노드에 대한 상기 구성 패키지 파일을 결정하고 상기 구성 패키지 파일을 상기 슈퍼바이저 노드로부터 구성 패키지 파일의 요청에 응답하여 상기 종속 관리자 트리에 기초하여 상기 구성 패키지 파일을 슈퍼바이저 노드로 전송하도록 구성된 프로세서를 더 포함하며,
    상기 제 3 네트워크 세그먼트는 상기 구성 패키지 파일의 상기 요청을 전달하는 상기 하나 이상의 연결을 더 포함하는
    인-메모리 데이터베이스를 호스팅하는 하나 이상의 노드를 포함하는 시스템.
  44. 컴퓨터 구현된 방법에 있어서,
    슈퍼바이저 모듈을 실행하는 프로세서를 포함하는 컴퓨터에 의해, 노드에 저장된 하나 이상의 소프트웨어 모듈을 모니터링하는 노드 관리자에 의해 생성된 핫빗 신호를 모니터링하는 단계 - 상기 핫빗 신호는 상기 노드 관리자에 의해 모니터링되는 각각의 소프트웨어 모듈의 상태를 표시하는 이진 데이터를 포함함 -;
    상기 컴퓨터에 의해, 상기 노드의 상기 노드 관리자로부터 수신된 상기 핫빗 신호에 기초하여 상기 노드의 상기 하나 이상의 소프트웨어 모듈에서 장애 소프트웨어 모듈을 검출하는 단계;
    상기 컴퓨터에 의해, 상기 장애 소프트웨어 모듈을 검출함에 응답하여, 상기 노드에게 상기 장애 소프트웨어 모듈을 복구하라는 지시를 상기 노드의 상기 노드 관리자에 자동 전송하는 단계; 및
    상기 컴퓨터에 의해, 상기 노드 관리자가 상기 노드 관리자로부터 수신된 상기 핫빗 신호에 기초하여 상기 모듈을 성공적으로 복구하였는지를 결정하는 단계를 포함하는
    컴퓨터 구현된 방법.
  45. 제 44 항에 있어서,
    상기 컴퓨터에 의해, 상기 노드 관리자가 문턱치 시도 횟수 내에 상기 모듈을 복구하지 못할 때 상기 모듈을 실행할 페일오버 노드(failover node)를 결정하는 단계;
    상기 컴퓨터에 의해, 종속 관리자 노드로부터 상기 모듈과 연관된 구성 패키지를 검색하는 단계;
    상기 컴퓨터에 의해, 상기 구성 패키지를 상기 페일오버 노드와 연관된 페일오버 노드 관리자로 전송하는 단계 - 상기 페일오버 노드 관리자는 상기 모듈을 상기 페일오버 노드에 설치하려 시도하며, 상기 페일오버 노드 관리자는 상기 모듈을 복구하려 시도함 -;
    상기 컴퓨터에 의해, 상기 페일오버 노드 관리자가 상기 모듈을 상기 페일오버 노드에 성공적으로 설치하였는지를 결정하는 단계; 및
    상기 컴퓨터에 의해, 상기 페일오버 노드 관리자가 상기 모듈을 성공적으로 복구하였는지를 결정하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  46. 제 45 항에 있어서,
    상기 컴퓨터에 의해, 상기 페일오버 노드 관리자가 상기 모듈을 상기 페일오버 노드에 설치하지 못하거나 상기 페일오버 노드 관리자가 상기 모듈을 문턱치 시도 횟수 내에 복구하지 못할 때 상기 모듈을 실행할 다음 페일오버 노드를 결정하는 단계;
    상기 컴퓨터에 의해, 상기 구성 패키지를 상기 다음 페일오버 노드와 연관된 다음 페일오버 노드 관리자로 전송하는 단계;
    상기 컴퓨터에 의해, 상기 다음 페일오버 노드 관리자가 상기 모듈을 상기 다음 페일오버 노드에 성공적으로 설치하였는지를 결정하는 단계; 및
    상기 컴퓨터에 의해, 상기 다음 페일오버 노드 관리자가 상기 모듈을 성공적으로 복구하였는지를 결정하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  47. 제 46 항에 있어서,
    상기 컴퓨터에 의해, 하나 이상의 다음 페일오버 노드 관리자가 상기 모듈을 복구하려는 전체 문턱치 시도 횟수를 초과한 후 모듈 장애 경보를 발생하는 단계를 더 포함하며, 상기 컴퓨터는 상기 모듈을 복구하려는 상기 전체 문턱치 시도 횟수가 충족될 때까지 순차적으로 다음 페일오버 노드를 결정하는
    컴퓨터 구현된 방법.
  48. 제 44 항에 있어서,
    상기 컴퓨터에 의해, 상기 모듈을 모니터링하는 상기 노드 관리자의 장애를 검출하는 단계;
    상기 컴퓨터에 의해, 상기 모듈을 실행하는 페일오버 노드를 결정하는 단계 - 상기 페일오버 노드는 페일오버 노드 관리자와 연관됨 -;
    상기 컴퓨터에 의해, 종속 관리자 노드로부터 상기 모듈과 연관된 구성 패키지를 검색하는 단계;
    상기 컴퓨터에 의해, 상기 구성 패키지를 상기 페일오버 노드 관리자로 전송하는 단계 - 상기 페일오버 노드 관리자는 상기 모듈을 상기 페일오버 노드에 설치하려 시도하며, 상기 페일오버 노드 관리자는 상기 모듈을 복구하려 시도함 -;
    상기 컴퓨터에 의해, 상기 페일오버 노드 관리자가 상기 모듈을 상기 페일오버 노드에 성공적으로 설치한지를 결정하는 단계; 및
    상기 컴퓨터에 의해, 상기 페일오버 노드 관리자가 상기 모듈을 성공적으로 복구하는지를 결정하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  49. 제 48 항에 있어서,
    상기 컴퓨터에 의해, 상기 노드가 현재 상황에 따라서 기능하지 못할 때 상기 노드가 장애 노드라고 결정하는 단계;
    상기 컴퓨터에 의해, 상기 장애 노드에서 이전되어 하나 이상의 새로운 노드에서 복구될 상기 장애 노드에 의해 실행된 하나 이상의 모듈을 결정하는 단계;
    상기 컴퓨터에 의해, 상기 종속 관리자 노드로부터 각각의 상기 하나 이상의 모듈에 대한 구성 패키지를 검색하는 단계; 및
    상기 컴퓨터에 의해, 각각의 구성 패키지를 상기 하나 이상의 새로운 노드로 전송하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  50. 제 49 항에 있어서,
    상기 컴퓨터에 의해, 상기 장애 노드에서 이전된 상기 하나 이상의 모듈 내 모듈을 설치하고 실행할 수 있는 한 세트의 가용 자원을 갖는 다음의 새로운 노드를 결정하는 단계;
    상기 컴퓨터에 의해, 상기 모듈을 저장하는 새로운 노드의 새로운 노드 관리자에게 상기 모듈을 언로딩하라고 명령하는 단계; 및
    상기 컴퓨터에 의해, 상기 구성 패키지를 상기 다음의 새로운 노드로 전송하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  51. 컴퓨터 구현된 방법에 있어서,
    컴퓨터에 의해, 핫빗 신호를 계속 슈퍼바이저 노드로 전송하는 단계;
    상기 컴퓨터에 의해, 복구 지시를 수신할 때 장애 모듈을 복구하는 단계; 및
    상기 컴퓨터에 의해, 상기 컴퓨터가 상기 모듈이 복구된 것을 검출할 때 복구된 상태 신호를 상기 슈퍼바이저 노드로 전송하는 단계를 포함하는
    컴퓨터 구현된 방법.
  52. 제 51 항에 있어서,
    상기 컴퓨터에 의해, 문턱치 복구 시도 횟수에 도달했을 때 복구 실패 상태 신호를 상기 슈퍼바이저 노드로 전송하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  53. 장애 극복(fault-tolerant) 분산형 컴퓨팅 시스템에 있어서,
    핫빗 신호를 슈퍼바이저 노드로 전송하고 노드에 설치된 하나 이상의 소프트웨어 모듈의 실행을 모니터링하는 프로세서를 포함하는 하나 이상의 노드; 및
    상기 하나 이상의 노드로부터 수신된 하나 이상의 핫빗 신호를 모니터링하고 각각의 핫빗 신호에 기초하여 각각의 노드의 상태를 결정하는 프로세서를 포함하는 하나 이상의 슈퍼바이저 노드를 포함하는
    장애 극복 분산형 컴퓨팅 시스템.
  54. 제 53 항에 있어서,
    상기 노드 프로세서는 상기 슈퍼바이저 노드로부터 상기 소프트웨어 모듈을 복구하라는 지시를 수신함에 대응하여 상기 노드에 의해 실행되는 소프트웨어 모듈을 현재 상태 구성으로 복구하려 시도하도록 구성되는
    장애 극복 분산형 컴퓨팅 시스템.
  55. 제 54 항에 있어서,
    핫빗 신호를 상기 슈퍼바이저 노드로 전송하고, 상기 하나 이상의 노드 중의 노드에 설치된 소프트웨어 모듈을 실행하도록 구성된 프로세서를 포함하는 페일오버 노드를 더 포함하는
    장애 극복 분산형 컴퓨팅 시스템.
  56. 제 55 항에 있어서,
    하나 이상의 머신 판독 가능한 구성 패키지 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 종속 관리자 노드를 더 포함하는
    장애 극복 분산형 컴퓨팅 시스템.
  57. 제 56 항에 있어서,
    상기 슈퍼바이저 노드의 상기 프로세서는 상기 노드에 의해 상기 소프트웨어 모듈을 복구하려는 시도의 횟수를 결정하며, 상기 슈퍼바이저 노드의 상기 프로세서는 상기 시도 횟수가 상기 소프트웨어 모듈을 복구하려는 문턱치 시도 횟수를 초과하는 것을 결정함에 대응하여 자동으로 상기 종속 관리자로부터 상기 소프트웨어 모듈과 연관된 구성 패키지 파일을 검색하는
    장애 극복 분산형 컴퓨팅 시스템.
  58. 제 57 항에 있어서,
    상기 슈퍼바이저 노드의 상기 프로세서는 상기 종속 관리자로부터 상기 구성 패키지 파일을 수신함에 응답하여 상기 구성 패키지 파일을 상기 페일오버 노드로 전송하고, 상기 페일오버 노드의 상기 프로세서에게 상기 소프트웨어 모듈을 복구 시도하라고 명령하는
    장애 극복 분산형 컴퓨팅 시스템.
  59. 제 56 항에 있어서,
    상기 종속 관리자 노드의 상기 프로세서는 상기 슈퍼바이저 노드로부터 구성 패키지 파일을 식별하는 요청을 수신함에 응답하여 상기 구성 패키지 파일을 상기 슈퍼바이저 노드로 전송하는
    장애 극복 분산형 컴퓨팅 시스템.
  60. 제 59 항에 있어서,
    상기 구성 패키지 파일은 소프트웨어 모듈을 실행하는 상기 노드의 상기 핫빗 신호의 상기 노드 상태에 따라서 장애라고 검출되는 상기 소프트웨어 모듈과 연관되는
    장애 극복 분산형 컴퓨팅 시스템.
  61. 제 60 항에 있어서,
    상기 슈퍼바이저 노드는 상기 페일오버 노드의 상기 노드 상태가 상기 페일오버 노드가 상기 소프트웨어 모듈을 복구하기에 충분하지 않은 자원을 갖고 있음을 표시한다고 결정함에 대응하여 자원 이동 지시(resource-shifting command)를 상기 페일오버 노드로 전송하는
    장애 극복 분산형 컴퓨팅 시스템.
  62. 제 61 항에 있어서,
    상기 페일오버 노드의 상기 프로세서는 상기 자원 이동 지시에 응답하여 자동으로 상기 페일오버 노드로부터 설치된 소프트웨어 모듈을 설치해제하며, 상기 페일오버 노드는 상기 슈퍼바이저 노드로부터 수신한 상기 소프트웨어 모듈을 설치하고 복구하려 시도하는
    장애 극복 분산형 컴퓨팅 시스템.
  63. 제 53 항에 있어서,
    상기 하나 이상의 소프트웨어 모듈의 소프트웨어 모듈의 중복 사본(redundant copy)을 저장하는 비일시적 판독 가능한 저장 매체를 포함하는 중복 노드(redundant node), 및 상기 중복 노드에게 상기 소프트웨어 모듈의 상기 중복 사본을 실행하려 시도하라고 명령하는 상기 슈퍼바이저 노드로부터 상기 모듈을 복구하라는 지시를 수신함에 대응하여 상기 소프트웨어 모듈의 상기 중복 사본을 실행하려 시도하도록 구성된 프로세서를 더 포함하는
    장애 극복 분산형 컴퓨팅 시스템.
  64. 컴퓨터 구현된 방법에 있어서,
    분산형 컴퓨팅 시스템의 컴퓨터에 의해, 타겟 노드와 연관된 머신 판독 가능한 배치가능 패키지 파일의 요청을 종속 관리자 노드로 전송하는 단계 - 상기 종속 관리자 노드는 종속 트리에 따라서 상기 시스템의 하나 이상의 노드와 연관된 하나 이상의 배치가능 패키지 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함함 -;
    상기 컴퓨터에 의해, 상기 종속 노드로부터 상기 배치가능 패키지 파일을 수신함에 응답하여 상기 배치가능 패키지 파일을 상기 타겟 노드로 전송하는 단계 - 상기 타겟 노드와 연관된 상기 배치가능 패키지 파일은 상기 종속 트리에 기초하여 한 세트의 하나 이상의 종속 파일을 포함함 -; 및
    상기 컴퓨터에 의해, 상기 타겟 노드에게 상기 배치가능 패키지 내 상기 종속 세트를 상기 타겟 노드상에 설치하라고 명령하는 단계를 포함하는
    컴퓨터 구현된 방법.
  65. 제 64 항에 있어서,
    종속는 구획, 모듈, 파일, 및 데이터로 이루어지는 그룹으로부터 선택되는
    컴퓨터 구현된 방법.
  66. 제 64 항에 있어서,
    상기 종속 관리자 노드는 하나 이상의 데이터프레임으로부터 종속를 페치하고 상기 배치가능 패키지를 컴파일하는
    컴퓨터 구현된 방법.
  67. 제 64 항에 있어서,
    상기 배치가능 패키지 파일 내 각각의 종속 파일은 상기 종속 관리자 노드에 의해 상기 타겟 노드와 연관된 적어도 하나의 종속 트리를 이용하여 결정되는
    컴퓨터 구현된 방법.
  68. 제 67 항에 있어서,
    상기 배치가능 패키지 파일 내 각각의 종속 파일은 시스템 내 하나 이상의 노드의 서브세트에 설치된 대응하는 종속 파일과의 상기 종속 파일의 비교 관계를 기초로 하는
    컴퓨터 구현된 방법.
  69. 제 64 항에 있어서,
    상기 컴퓨터에 의해, 미리 결정된 간격마다 상기 분산형 컴퓨팅 시스템의 각각의 상기 하나 이상의 노드로부터 상기 각각의 노드의 상태를 표시하는 핫빗 신호를 수신하는 단계; 및
    상기 컴퓨터에 의해, 각각의 핫빗 신호에 기초하여 각각의 노드의 상기 상태를 결정하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  70. 제 69 항에 있어서,
    상기 컴퓨터에 의해, 상기 타겟 노드로부터 수신된 상기 핫빗 신호에 따라서 상기 타겟 노드에 설치된 하나 이상의 종속의 장애를 검출하는 단계를 더 포함하며, 상기 컴퓨터는 상기 장애를 검출함에 대응하여 자동으로 상기 배치 패키지를 요청하는
    컴퓨터 구현된 방법.
  71. 제 69 항에 있어서,
    상기 컴퓨터에 의해, 상기 시스템의 노드에 설치된 종속 파일과 연관된 벤더 서버로부터 상기 벤더 서버와 연관된 상기 종속 파일을 갖는 상기 노드를 업데이트하라는 프롬프트(prompt)를 수신하는 단계를 더 포함하며, 상기 배치 패키지 파일의 상기 하나 이상의 종속 파일은 상기 벤더 서버와 연관된 상기 종속 파일을 포함하는
    컴퓨터 구현된 방법.
  72. 컴퓨터 구현된 방법에 있어서,
    컴퓨터에 의해, 슈퍼바이저 노드로부터 타겟 노드를 구성하라는 요청을 수신함에 따라 상기 타겟 노드와 연관된 종속 트리를 이용하여 상기 타겟 노드에 설치될 한 세트의 하나 이상의 종속 파일을 결정하는 단계;
    상기 컴퓨터에 의해, 하나 이상의 종속 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 적어도 하나의 데이터 프레임으로부터 상기 하나 이상의 종속 파일 세트의 각각의 상기 종속 파일을 페치하는 단계;
    상기 컴퓨터에 의해, 상기 하나 이상의 종속 파일 세트를 포함하는 배치가능 패키지 파일을 생성하는 단계; 및
    상기 컴퓨터에 의해, 상기 배치가능 패키지 파일을 상기 슈퍼바이저 노드로 전송하는 단계를 포함하는
    컴퓨터 구현된 방법.
  73. 제 72 항에 있어서,
    상기 컴퓨터에 의해, 제 3자의 종속 소스로부터 상기 종속를 업데이트하라는 요청을 수신하면 상기 타겟 노드와 연관된 상기 종속 트리를 업데이트하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  74. 제 73 항에 있어서,
    상기 컴퓨터에 의해, 업데이트된 종속 트리와 연관된 상기 종속에 대한 업데이트를 검출하는 단계; 및
    상기 컴퓨터에 의해, 상기 업데이트된 종속를 포함하는 업데이트 배치 패키지를 업데이트되었던 상기 종속를 갖는 각각의 노드로 자동으로 전송하는 단계 - 각각의 노드의 상기 업데이트 배치 패키지는 상기 업데이트된 종속 트리에 기초함 - 를 더 포함하는
    컴퓨터 구현된 방법.
  75. 데이터베이스 관리 시스템에 있어서,
    하나 이상의 종속 파일을 저장하는 비일시적 머신 판독 가능한 저장 메모리, 및 상기 하나 이상의 종속 파일의 상태를 모니터링하는 프로세서를 포함하는 하나 이상의 노드 - 각각의 종속 파일은 제 2 노드에 설치된 대응하는 컴포넌트와의 비교 관계를 갖는 상기 노드의 컴포넌트임 -;
    각각의 상기 하나 이상의 노드의 상태를 모니터링하는 프로세서를 포함하며 각각의 노드의 상기 상태에 기초하여 한 세트의 종속 파일을 포함하는 배치가능 패키지를 각각의 상기 노드로 전송하도록 구성된 하나 이상의 슈퍼바이저 노드; 및
    상기 하나 이상의 노드와 연관된 하나 이상의 종속 트리 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체, 및 노드와 연관된 종속 트리에 따라서 배치가능 패키지 파일을 컴파일하도록 구성된 프로세서를 포함하는 하나 이상의 종속 관리자 노드 - 상기 배치가능 패키지 파일은 적어도 하나의 데이터 프레임에 저장된 한 세트의 하나 이상의 종속 파일을 포함하고, 상기 종속 관리자 노드는 상기 배치가능 패키지를 수신하도록 목표된 노드와 연관된 종속 트리에 기초하여 상기 배치가능 패키지에 포함시킬 종속를 결정함 - 를 포함하는
    데이터베이스 관리 시스템.
  76. 제 75 항에 있어서,
    상기 제 3자에 의해 생성된 종속에 대한 업데이트를 설치하는 하나 이상의 종속 파일에 대응하는 하나 이상의 머신 판독 가능한 업데이트 파일을 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 외부 데이터프레임; 및
    슈퍼바이저 노드에게 상기 제 3자 종속 소스의 상기 종속를 갖는 한 세트의 하나 이상의 노드를 업데이트하라는 요청을 전송하도록 구성된 프로세서를 더 포함하며,
    종속 관리자 노드는 상기 제 3자 종속 소스의 상기 데이터프레임으로부터 수신된 상기 하나 이상의 종속 업데이트를 포함하는 업데이트 배치 패키지를 컴파일하는
    데이터베이스 관리 시스템.
  77. 제 75 항에 있어서,
    새로운 노드 상태를 슈퍼바이저 노드로 전송하고 상기 새로운 노드와 연관된 종속 트리에 따라서 하나 이상의 배치 패키지를 수신하는 노드 관리자 모듈을 실행하는 프로세서를 포함하는 새로운 노드를 더 포함하는
    데이터베이스 관리 시스템.
  78. 제 75 항에 있어서,
    상기 종속 관리자 노드는 슈퍼바이저 노드로부터 상기 종속 트리를 업데이트하라는 요청이 수신될 때 노드와 연관된 종속 트리를 업데이트하는
    데이터베이스 관리 시스템.
  79. 제 75 항에 있어서,
    종속는 구획, 모듈, 파일, 및 데이터로 이루어지는 그룹으로부터 선택되는
    데이터베이스 관리 시스템.
  80. 인-메모리 데이터베이스 시스템에 있어서,
    데이터베이스의 하나 이상의 레코드를 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 하나 이상의 저장 노드 - 각각의 저장 노드의 상기 저장 매체는 상기 각각의 저장 노드의 주 메모리임 -;
    분석 모듈을 가리키는 분석 요청을 수신함에 대응하여 한 세트의 조회 결과를 입력 파라미터로서 이용하여 상기 분석 모듈을 실행하는 프로세서를 포함하는 분석 에이전트 노드 - 상기 조회 결과 세트는 상기 하나 이상의 레코드를 저장하는 상기 하나 이상의 저장 노드로부터 검색된 하나 이상의 레코드를 표현하는 이진 데이터를 포함함 -; 및
    하나 이상의 분석 모듈을 저장하는 비일시적 머신 판독 가능한 저장 매체, 및 새로운 분석 모듈을 하나 이상의 분석 에이전트 노드로 전송하도록 구성된 프로세서를 포함하는 분석 모듈 데이터 저장소를 포함하는
    인-메모리 데이터베이스 시스템.
  81. 제 80 항에 있어서,
    상기 탐색 조회가 상기 분석 요청을 포함하고 있다고 결정함에 대응하여 상기 조회 결과 세트를 상기 분석 에이전트 노드로 전송하는 프로세서를 포함하는 탐색 관리자 노드를 더 포함하는
    인-메모리 데이터베이스 시스템.
  82. 제 81 항에 있어서,
    상기 탐색 관리자 노드는 상기 탐색 조회를 탐색 컨덕터 노드로 전송하기 전에 상기 분석 에이전트 노드를 식별하는
    인-메모리 데이터베이스 시스템.
  83. 제 82 항에 있어서,
    상기 탐색 관리자 노드는 상기 탐색 조회를 상기 탐색 컨덕터 노드로 전송하기 전에 적용될 하나 이상의 분석 파라미터를 결정하는
    인-메모리 데이터베이스 시스템.
  84. 제 81 항에 있어서,
    상기 탐색 조회가 상기 분석 요청을 포함하고 있음을 상기 탐색 관리자가 결정함에 대응하여, 상기 분석 요청에 의해 식별되는 상기 분석 모듈을 실행하는 하나 이상의 분석 에이전트 노드를 식별하는 단계를 포함하는
    인-메모리 데이터베이스 시스템.
  85. 제 84 항에 있어서,
    탐색 컨덕터 조회를 실행하고, 탐색 컨덕터 노드로부터 상기 탐색 컨덕터 조회를 수신함에 응답하여, 상기 탐색 컨덕터 조회를 만족하는 저장 노드의 하나 이상의 레코드를 포함하는 한 서브세트의 조회 결과를 전송하는 프로세서를 포함하는 상기 탐색 컨덕터 노드를 더 포함하며,
    상기 탐색 컨덕터 노드는 상기 탐색 조회에 따라서 하나 이상의 탐색 컨덕터 조회를 생성하며, 상기 탐색 관리자는 각각의 탐색 컨덕터 조회를 각각의 탐색 컨덕터 노드로 전송하는
    인-메모리 데이터베이스 시스템.
  86. 제 85 항에 있어서,
    상기 탐색 관리자 노드는 상기 각각의 탐색 컨덕터로부터 수신된 각각의 조회 결과 서브세트를 집계하며, 그럼으로써 상기 조회 결과 세트를 생성하는
    인-메모리 데이터베이스 시스템.
  87. 제 80 항에 있어서,
    상기 탐색 관리자 노드는 상기 조회 결과 세트 내 적어도 하나의 레코드가 이진 데이터 압축 알고리즘에 따라 압축되었다고 상기 분석 에이전트로 전송하는
    인-메모리 데이터베이스 시스템.
  88. 제 80 항에 있어서,
    상기 분석 모듈은 명료화 모듈, 링킹 모듈, 스코어링 모듈, 및 즉석 링크 모듈로 이루어지는 그룹으로부터 선택되는
    인-메모리 데이터베이스 시스템.
  89. 제 80 항에 있어서,
    클라이언트 컴퓨터로부터 새로운 분석 모듈을 수신함에 대응하여 상기 새로운 분석 모듈을 상기 분석 모듈 저장소로 전송하는 프로세서를 포함하는 시스템 인터페이스 노드를 더 포함하는
    인-메모리 데이터베이스 시스템.
  90. 제 80 항에 있어서,
    하나 이상의 애플리케이션 프로그래밍 인터페이스에 따라서 상기 탐색 조회의 데이터를 입증하는 프로세서를 포함하는 시스템 인터페이스 노드를 더 포함하는
    인-메모리 데이터베이스 시스템.
  91. 제 80 항에 있어서,
    새로운 분석 모듈을 하나 이상의 분석 에이전트에 저장하고 애플리케이션 프로그래밍 인터페이스에 기초하여 하나 이상의 새로운 분석 모듈을 생성하도록 구성된 시스템 인터페이스 노드를 더 포함하는
    인-메모리 데이터베이스 시스템.
  92. 제 80 항에 있어서,
    하나 이상의 탐색 조회를 상기 탐색 관리자로 전송하는 프로세서를 포함하는 클라이언트 컴퓨터를 더 포함하는
    인-메모리 데이터베이스 시스템.
  93. 제 80 항에 있어서,
    상기 분석 에이전트 노드는 클라이언트 컴퓨터로부터 새로운 분석 모듈을 수신함에 대응하여 상기 새로운 분석 모듈을 수신한 상기 분석 에이전트 노드를 표시하는 핫빗 신호를 슈퍼바이저 노드로 자동으로 전송하는
    인-메모리 데이터베이스 시스템.
  94. 제 93 항에 있어서,
    종속 관리자 노드에 저장된 새로운 분석 에이전트와 연관된 종속 트리에 따라 새로운 분석 모듈을 상기 분석 모듈 저장소로부터 상기 새로운 분석 에이전트로 전송하는 프로세서를 포함하는 하나 이상의 슈퍼바이저 노드를 더 포함하는
    인-메모리 데이터베이스 시스템.
  95. 데이터베이스 레코드의 하나 이상의 집합체를 저장하는 비일시적 머신 판독 가능한 저장 매체를 포함하는 하나 이상의 저장 노드 - 각각의 집합체는 스키마에 따라서 하나 이상의 레코드를 저장하며, 상기 스키마는 각각의 레코드 내 데이터의 종류를 저장하는 하나 이상의 필드를 정의함 -;
    하나 이상의 데이터 종류의 데이터와 연관된 탐색 파라미터를 포함하는 탐색 조회를 수신하고, 상기 탐색 조회에서 필드 처리가 요청되는지를 결정하고, 탐색 조회에 기초하여 하나 이상의 탐색 컨덕터 조회를 생성하며, 상기 하나 이상의 탐색 컨덕터 조회를 하나 이상의 탐색 컨덕터 노드로 전송하는 프로세서를 포함하는 탐색 관리자; 및
    상기 탐색 컨덕터와 연관된 집합체에 질의하고, 탐색 관리자 노드로부터 상기 탐색 컨덕터 조회를 수신함에 응답하여 상기 탐색 컨덕터 조회의 하나 이상의 파라미터를 만족하는 데이터를 포함하는 한 세트의 하나 이상의 결과 레코드를 상기 탐색 관리자로 전송하는 프로세서를 포함하는 탐색 컨덕터 노드를 포함하는
    시스템.
  96. 제 95 항에 있어서,
    상기 탐색 관리자는 상기 탐색 조회의 적어도 하나의 파라미터와 일치하는 데이터를 포함하는 제 1 세트의 탐색 결과 레코드를 수신하고, 상기 레코드의 상기 필드는 제 1 스키마에 기초하며,
    상기 탐색 관리자는 상기 탐색 조회의 적어도 하나의 파라미터와 일치하는 데이터를 포함하는 제 2 세트의 탐색 결과 레코드를 수신하고, 상기 레코드의 상기 필드는 제 2 스키마에 기초하는
    시스템.
  97. 제 95 항에 있어서,
    상기 탐색 컨덕터는 상기 하나 이상의 레코드의 상기 각각의 필드 내 상기 데이터의 종류와 상기 탐색 조회의 상기 데이터의 종류의 일치함을 기초로 하여 상기 탐색 파라미터를 만족하는 상기 하나 이상의 레코드의 각각의 필드와 일치하는
    시스템.
  98. 제 97 항에 있어서,
    상기 탐색 컨덕터는 각각의 레코드의 상기 필드 내 데이터와 상기 하나 이상의 탐색 파라미터 간의 일치 횟수에 기초하여 각각의 레코드에 대한 스코어를 할당하는
    시스템.
  99. 제 98 항에 있어서,
    상기 탐색 컨덕터는 상기 일치 횟수에 기초하여 상기 집합체의 상기 레코드의 각각의 필드의 스코어를 매기며, 각각의 레코드에 할당된 상기 스코어는 상기 탐색 컨덕터 조회에 의해 명시된 탐색 알고리즘에 기초하는
    시스템.
  100. 제 98 항에 있어서,
    상기 탐색 컨덕터 조회는 문턱치 스코어 값을 표시하며, 상기 결과 레코드 세트의 각각의 레코드에 할당된 상기 스코어는 상기 문턱치 스코어를 만족하는
    시스템.
  101. 제 98 항에 있어서,
    상기 탐색 컨덕터는 상기 탐색 컨덕터와 연관된 상기 집합체의 각각의 레코드에 할당된 상기 스코어에 기초하여 상기 결과 레코드 세트를 분류하는
    시스템.
  102. 제 95 항에 있어서,
    상기 탐색 관리자의 상기 프로세서는 상기 탐색 조회에서 필드 처리가 요청된 것을 결정함에 응답하여 상기 탐색 조회에 따라서 하나 이상의 필드에 대해 필드 처리를 실행하는
    시스템.
  103. 컴퓨터 구현된 방법에 있어서,
    컴퓨터에 의해, 한 세트의 데이터 요소에서 수신된 하나 이상의 데이터 요소에 적용할 압축 기술을 결정하는 단계 - 상기 컴퓨터는 스키마를 사용하여 상기 데이터 요소의 데이터 종류에 따라서 각각의 데이터 요소에 적용할 상기 압축 기술을 결정함 -;
    상기 컴퓨터에 의해, 상기 스키마에 의해 정의된 상기 압축 기술을 이용하여 데이터 요소를 압축하는 단계 - 상기 압축 기술은 상기 데이터 요소가 탐색 조회에 응답하여 리턴될 때 개별적으로 압축해제되도록 상기 데이터 요소를 압축함 -;
    상기 컴퓨터에 의해, 각각의 압축된 데이터 요소를 상기 데이터 요소의 상기 데이터 종류의 데이터를 저장하는 레코드의 필드에 저장하는 단계;
    상기 컴퓨터에 의해, 스키마에 따라서 각각의 필드에 대한 참조 테이블 내 필드 표시를 연관시키는 단계 - 상기 대표적인 표시는 상기 필드의 상기 데이터 종류를 식별함 -;
    상기 컴퓨터에 의해, 탐색 컨덕터로부터 수신된 탐색 조회를 만족하는 한 세트의 하나 이상의 데이터 요소에 대한 상기 데이터베이스에 질의하는 단계; 및
    상기 컴퓨터에 의해, 상기 탐색 조회를 만족하는 상기 하나 이상의 데이터 요소 세트를 식별함에 대응하여, 상기 적용할 압축 기술을 이용하여 상기 탐색 조회를 만족하는 상기 하나 이상의 데이터 요소의 각각의 상기 하나 이상의 데이터 요소를 압축해제하는 단계 - 상기 탐색 조회를 만족하지 않은 각각의 데이터 요소는 압축된 채로 남아 있음 - 를 포함하는
    컴퓨터 구현된 방법.
  104. 제 103 항에 있어서,
    상기 컴퓨터는 토큰 테이블, n-그램 압축, 시리얼 데이 넘버 압축(serial day number compression), 및 이진 수 압축으로 이루어지는 그룹으로부터 선택된 압축 기술을 이용하여 상기 데이터를 압축하는
    컴퓨터 구현된 방법.
  105. 제 103 항에 있어서,
    상기 컴퓨터에 의해, 레코드의 하나 이상의 필드 내 상기 데이터 요소를 조각난 데이터로 조각으로 나누는 단계 - 조각난 데이터는 페어런트(parent) 데이터 요소보다 더 그래뉴러한(granular) 레코드의 필드 내 데이터 요소이며, 각각의 조각난 데이터는 더 그래뉴러한 데이터베이스 필드와 연관됨 -; 및
    상기 컴퓨터에 의해, 상기 조각난 데이터를 같은 구획에 저장하는 단계를 포함하는
    컴퓨터 구현된 방법.
  106. 제 105 항에 있어서,
    상기 컴퓨터에 의해, 조각난 레코드 식별자를 각각의 상기 조각난 데이터와 연관시키는 단계를 더 포함하며, 상기 조각난 레코드 식별자는 조각난 데이터의 상기 페어런트 데이터 요소를 식별하는
    컴퓨터 구현된 방법.
  107. 제 103 항에 있어서,
    상기 컴퓨터에 의해, 제 1 레코드의 하나 이상의 필드 내 상기 데이터 요소를 포함하는 제 1 데이터 요소 객체를 상기 제 1 데이터 요소 객체와 동일한 제 2 데이터 요소 객체를 참조하는 데이터 요소 표시 객체로 대체하는 단계를 더 포함하며, 상기 제 2 데이터 요소 객체는 제 2 레코드의 하나 이상의 필드 내 상기 데이터 요소를 포함하는
    컴퓨터 구현된 방법.
  108. 제 107 항에 있어서,
    상기 컴퓨터에 의해, 소프트웨어 모듈로부터 수신된 조회에 응답하여 상기 제 1 객체의 데이터베이스에 질의하는 단계; 및
    상기 컴퓨터에 의해, 상기 제 1 객체에 대체된 상기 참조하는 객체에 의해 참조되는 상기 제 2 객체를 상기 소프트웨어 모듈로 출력하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  109. 제 103 항에 있어서,
    상기 컴퓨터는 상기 하나 이상의 필드를 토큰 테이블 기술을 이용하여 압축하며, 상기 방법은,
    상기 컴퓨터에 의해, 새로운 데이터를 저장하는 하나 이상의 새로운 필드를 레코드에 추가하는 단계 - 각각의 필드는 토큰 테이블과 연관됨 -;
    상기 컴퓨터에 의해, 상기 새로운 데이터가 상기 연관된 토큰 테이블 내 기존 데이터와 일치하지 않을 때 상기 새로운 필드를 압축하는 단계; 및
    상기 컴퓨터에 의해, 상기 토큰 테이블을 상기 새로운 필드의 상기 새로운 데이터를 이용하여 업데이트하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  110. 제 109 항에 있어서,
    상기 컴퓨터에 의해, 구식 기술에 따라서 압축된 데이터를 압축해제하는 단계; 및
    상기 컴퓨터에 의해, 상기 데이터를 개선된 압축 기술에 따라 압축하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  111. 제 109 항에 있어서,
    상기 컴퓨터에 의해, 빈도수 곱하기 길이를 포함하는 더 높이 가중된 데이터를 토큰 테이블의 낮은 번호를 가진 인덱스에 저장하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  112. 제 104 항에 있어서,
    상기 컴퓨터는 상기 하나 이상의 필드를 n-그램 테이블 기술을 이용하여 압축하며, 상기 방법은,
    상기 컴퓨터에 의해, 새로운 데이터를 저장하는 하나 이상의 새로운 필드를 레코드에 추가하는 단계 - 각각의 필드는 n-그램 테이블과 연관됨 -;
    상기 컴퓨터에 의해, 상기 새로운 데이터가 상기 연관된 n-그램 테이블 내 기존 데이터와 일치할지 않을 때 상기 새로운 필드를 압축하는 단계; 및
    상기 컴퓨터에 의해, 상기 n-그램 테이블을 상기 새로운 필드의 상기 데이터를 이용하여 업데이트하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  113. 제 112 항에 있어서,
    상기 컴퓨터에 의해, 구식 기술에 따라서 압축된 데이터를 압축해제하는 단계; 및
    상기 컴퓨터에 의해, 상기 데이터를 개선된 압축 기술에 따라 압축하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  114. 제 112 항에 있어서,
    상기 컴퓨터에 의해, 빈도수 곱하기 길이를 포함하는 더 높이 가중된 데이터를 n-그램 테이블의 낮은 번호를 가진 인덱스에 저장하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  115. 제 104 항에 있어서,
    상기 컴퓨터에 의해, 한 세트의 필드를 레코드 서술자 바이트의 옵셋을 이용하여 탐색하는 단계; 및
    상기 컴퓨터에 의해, 액세스된 데이터를 필드 레벨에서 압축해제하는 단계; 및
    상기 컴퓨터에 의해, 상기 액세스된 데이터를 리턴하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  116. 제 115 항에 있어서,
    상기 컴퓨터에 의해, 조회를 만족하는 한 세트의 필드가 발견될 때 압축해제를 중단하는 단계를 더 포함하는
    컴퓨터 구현된 방법.
  117. 컴퓨팅 시스템에 있어서,
    하나 이상의 집합체를 저장하는 하나 이상의 노드 - 각각의 집합체는 한 세트의 하나 이상의 레코드를 포함하고, 각각의 레코드는 데이터를 저장하는 한 세트의 필드를 포함함 -; 및
    집합체와 연관된 스키마에 따라 하나 이상의 상기 필드를 압축하는 압축 프로세서를 포함하는
    컴퓨팅 시스템.
  118. 제 117 항에 있어서,
    상기 압축 프로세서는 필드에 저장된 상기 데이터의 데이터 종류에 기초하여 상기 하나 이상의 필드를 압축하는
    컴퓨팅 시스템.
  119. 제 117 항에 있어서,
    상기 압축 프로세서는 토큰 테이블, N-그램 압축, 시리얼 데이 넘버 압축, 및 이진 수 압축으로 이루어지는 그룹으로부터 선택된 압축 기술을 이용하여 필드를 압축하는
    컴퓨팅 시스템.
  120. 제 119 항에 있어서,
    상기 스키마에 따라서 연관된 집합체를 하나 이상의 구획으로 분할하는 하나 이상의 구획자를 더 포함하는
    컴퓨팅 시스템.
  121. 제 120 항에 있어서,
    상기 압축 프로세서는 조각난 데이터를 레코드의 하나 이상의 필드에 저장하며,
    상기 압축 프로세서는 상기 조각난 데이터를 상기 집합체의 구획에서 인접하게 저장하는
    컴퓨팅 시스템.
  122. 제 121 항에 있어서,
    각각의 상기 조각난 데이터는 상기 조각난 데이터의 원래 레코드를 식별하는 하나 이상의 조각난 레코드 식별자와 연관되는
    컴퓨팅 시스템.
  123. 제 122 항에 있어서,
    복수의 필드는 의미론적으로 유사한 데이터를 저장하는
    컴퓨팅 시스템.
  124. 제 117 항에 있어서,
    하나 이상의 필드는 한 세트의 0이상의 값을 포함하는 데이터 값의 어레이를 저장하는
    컴퓨팅 시스템.
  125. 제 124 항에 있어서,
    레코드는 상기 스키마에 따라서 함께 그룹화되는 복수의 필드를 포함하는 객체인
    컴퓨팅 시스템.
  126. 제 125 항에 있어서,
    구획은 객체와 연관된 참조 값을 갖는 값 참조 테이블을 저장하고,
    상기 객체는 제 1 레코드에 저장되고 복수의 그룹화된 필드를 포함하며,
    제 2 레코드는 상기 참조 테이블에 따라서 상기 객체와 연관된 상기 참조 값을 저장하는
    컴퓨팅 시스템.
  127. 제 117 항에 있어서,
    상기 객체의 하나 이상의 객체 값을 하나 이상의 모듈 프로세서로 출력하는 하나 이상의 출력 프로세서를 더 포함하는
    컴퓨팅 시스템.
  128. 제 117 항에 있어서,
    상기 압축 프로세서는 상기 제 1 레코드에 저장된 업데이트된 객체에 따라서 상기 제 2 레코드에 저장된 상기 참조 값을 업데이트하도록 구성되는
    컴퓨팅 시스템.
  129. 제 117 항에 있어서,
    압축하기 전에 레코드의 필드에 저장된 데이터를 정규화하는 정규화 프로세서를 더 포함하는
    컴퓨팅 시스템.
  130. 제 117 항에 있어서,
    하나 이상의 토큰 테이블을 저장하는 토큰 테이블 저장소를 더 포함하며, 각각의 토큰 테이블은 필드와 연관되고, 상기 압축 프로세서는 새로운 데이터를 갖는 하나 이상의 새로운 필드를 각각의 상기 새로운 필드와 연관된 각각의 상기 토큰 테이블에 따라서 레코드에 추가하는
    컴퓨팅 시스템.
  131. 제 117 항에 있어서,
    상기 압축 프로세서는 새로운 데이터가 토큰 테이블 내 기존 데이터와 일치하지 않을 때 제 2 압축 기술을 적용하는
    컴퓨팅 시스템.
  132. 제 117 항에 있어서,
    상기 압축 프로세서는 새로운 데이터가 토큰 테이블 내 기존 데이터와 일치하지 않을 때 상기 새로운 데이터에 따라서 상기 토큰 테이블을 업데이트하는
    컴퓨팅 시스템.
  133. 제 117 항에 있어서,
    상기 압축 프로세서는 주기적으로 상기 토큰 테이블을 업데이트하는
    컴퓨팅 시스템.
  134. 제 117 항에 있어서,
    옵셋 데이터를 포함하는 하나 이상의 서술자 바이트는 검색을 위해 필드 내 데이터를 어드레싱하는
    컴퓨팅 시스템.
  135. 제 117 항에 있어서,
    상기 하나 이상의 필드 내 데이터는 탐색 컨덕터 프로세서에 의해 상기 집합체의 상기 스키마에 따라서 인덱싱 되거나, 압축되거나, 인덱싱 및 압축되는
    컴퓨팅 시스템.
  136. 제 117 항에 있어서,
    상기 하나 이상의 필드 내 데이터는 구획자에 의해 상기 집합체의 상기 스키마에 따라서 인덱싱 되거나, 압축되거나, 인덱싱 및 압축되는
    컴퓨팅 시스템.
  137. 제 117 항에 있어서,
    탐색 컨덕터 프로세서는 필드 레벨에서 탐색 조회를 만족하는 데이터를 페치하여 압축해제하는
    컴퓨팅 시스템.
  138. 제 137 항에 있어서,
    상기 탐색 컨덕터 프로세서는 상기 탐색 조회를 만족하는 한 세트의 데이터가 리턴될 때 레코드의 압축해제를 중단하도록 구성되는
    컴퓨팅 시스템.
  139. 제 117 항에 있어서,
    하나 이상의 n-그램 테이블을 저장하는 n-그램 테이블 저장소를 더 포함하며, 각각의 n-그램 테이블은 필드와 연관되고, 상기 압축 프로세서는 새로운 데이터를 갖는 하나 이상의 새로운 필드를 각각의 상기 새로운 필드와 연관된 각각의 상기 n-그램 테이블에 따라서 레코드에 추가하는
    컴퓨팅 시스템.
  140. 제 117 항에 있어서,
    상기 압축 프로세서는 상기 새로운 데이터가 n-그램 테이블 내 기존 데이터와 일치하지 않을 때 상기 새로운 기술에 따라서 상기 n-그램 테이블을 업데이트하는
    컴퓨팅 시스템.
  141. 제 117 항에 있어서,
    상기 압축 프로세서는 주기적으로 상기 n-그램 테이블을 업데이트하는
    컴퓨팅 시스템.
KR1020167017530A 2013-12-02 2014-12-02 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법 KR20160124744A (ko)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201361910850P 2013-12-02 2013-12-02
US201361910867P 2013-12-02 2013-12-02
US201361910873P 2013-12-02 2013-12-02
US201361910834P 2013-12-02 2013-12-02
US201361910860P 2013-12-02 2013-12-02
US201361910864P 2013-12-02 2013-12-02
US201361910856P 2013-12-02 2013-12-02
US61/910,860 2013-12-02
US61/910,834 2013-12-02
US61/910,873 2013-12-02
US61/910,850 2013-12-02
US61/910,856 2013-12-02
US61/910,867 2013-12-02
US61/910,864 2013-12-02
PCT/US2014/068002 WO2015099961A1 (en) 2013-12-02 2014-12-02 Systems and methods for hosting an in-memory database

Publications (1)

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

Family

ID=53479525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017530A KR20160124744A (ko) 2013-12-02 2014-12-02 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법

Country Status (6)

Country Link
EP (1) EP3077930A4 (ko)
JP (1) JP2017505936A (ko)
KR (1) KR20160124744A (ko)
CN (1) CN106164897A (ko)
CA (1) CA2932403A1 (ko)
WO (1) WO2015099961A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102102313B1 (ko) * 2019-11-27 2020-04-20 주식회사 리얼타임테크 인메모리 데이터베이스 기반의 시계열 데이터 관리시스템
KR102157336B1 (ko) * 2019-11-29 2020-09-17 주식회사 리얼타임테크 데이터베이스 관리시스템에서 json 데이터 저장 및 검색 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424294B2 (en) 2013-12-02 2016-08-23 Qbase, LLC Method for facet searching and search suggestions
CA3128753C (en) * 2017-02-27 2023-04-18 Timescale, Inc. Scalable database system for querying time-series data
CN107480002B (zh) * 2017-07-26 2020-06-30 阿里巴巴集团控股有限公司 消息处理方法及装置、电子设备
CN107784063B (zh) * 2017-07-27 2020-03-17 平安科技(深圳)有限公司 算法的生成方法及终端设备
US11138230B2 (en) * 2018-03-26 2021-10-05 Mcafee, Llc Methods, apparatus, and systems to aggregate partitioned computer database data
CN109543712B (zh) * 2018-10-16 2023-04-07 哈尔滨工业大学 时态数据集上的实体识别方法
CN109918432B (zh) * 2019-01-28 2024-05-28 中国平安财产保险股份有限公司 提取任务关系链的方法、装置、计算机设备和存储介质
US11106698B2 (en) * 2019-06-11 2021-08-31 Sap Se Multi-master with ownership transfer
CN110888714B (zh) * 2019-11-26 2023-06-23 北京京东尚科信息技术有限公司 容器的调度方法、装置和计算机可读存储介质
CN111198711B (zh) * 2020-01-13 2023-02-28 陕西心像信息科技有限公司 基于MongoDB的Collection版本控制方法及系统
CN111914151A (zh) * 2020-08-11 2020-11-10 上海毅博电子商务有限责任公司 一种关联表对象查询优化方法
CN112269804B (zh) * 2020-11-06 2022-05-20 厦门美亚亿安信息科技有限公司 一种用于内存数据的模糊检索方法和系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7428530B2 (en) * 2004-07-01 2008-09-23 Microsoft Corporation Dispersing search engine results by using page category information
US20060294071A1 (en) * 2005-06-28 2006-12-28 Microsoft Corporation Facet extraction and user feedback for ranking improvement and personalization
US8392400B1 (en) * 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7624118B2 (en) * 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7392250B1 (en) * 2007-10-22 2008-06-24 International Business Machines Corporation Discovering interestingness in faceted search
WO2009117835A1 (en) * 2008-03-27 2009-10-01 Hotgrinds Canada Search system and method for serendipitous discoveries with faceted full-text classification
JP4688111B2 (ja) * 2008-11-28 2011-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、データベース・システム、情報処理方法、およびプログラム
US8694505B2 (en) * 2009-09-04 2014-04-08 Microsoft Corporation Table of contents for search query refinement
US20110125764A1 (en) * 2009-11-26 2011-05-26 International Business Machines Corporation Method and system for improved query expansion in faceted search

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102102313B1 (ko) * 2019-11-27 2020-04-20 주식회사 리얼타임테크 인메모리 데이터베이스 기반의 시계열 데이터 관리시스템
WO2021107211A1 (ko) * 2019-11-27 2021-06-03 주식회사 리얼타임테크 인메모리 데이터베이스 기반의 시계열 데이터 관리시스템
KR102157336B1 (ko) * 2019-11-29 2020-09-17 주식회사 리얼타임테크 데이터베이스 관리시스템에서 json 데이터 저장 및 검색 방법

Also Published As

Publication number Publication date
EP3077930A4 (en) 2017-09-27
EP3077930A1 (en) 2016-10-12
CA2932403A1 (en) 2015-07-02
CN106164897A (zh) 2016-11-23
WO2015099961A1 (en) 2015-07-02
JP2017505936A (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
KR20160124744A (ko) 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법
US9430547B2 (en) Implementation of clustered in-memory database
US10776396B2 (en) Computer implemented method for dynamic sharding
US11238069B2 (en) Transforming a data stream into structured data
US9710517B2 (en) Data record compression with progressive and/or selective decomposition
US10296611B2 (en) Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes
CN113227998A (zh) 全面支持自主json文档对象(ajd)云服务的技术
US20180276304A1 (en) Advanced computer implementation for crawling and/or detecting related electronically catalogued data using improved metadata processing
AU2013210018B2 (en) Location independent files
CN106484820B (zh) 一种重命名方法、访问方法及装置
US11514697B2 (en) Probabilistic text index for semi-structured data in columnar analytics storage formats
US11113265B2 (en) Information processing apparatus and information processing system
CN113434506B (zh) 数据管理及检索方法、装置、计算机设备及可读存储介质
US10083121B2 (en) Storage system and storage method
US20220222225A1 (en) Model generation service for data retrieval
Shriparv Learning HBase
WO2021238691A1 (zh) 用于管理存储设备的用户界面显示的方法和装置
US20240126750A1 (en) Accelerating query execution by optimizing data transfer between storage nodes and database nodes
US20240119037A1 (en) Techniques for adaptive independent compression of key and non-key portions of database rows in index organized tables (iots)
WO2018087823A1 (ja) コンテナ型仮想コンピュータ管理装置、方法、及びコンピュータプログラム
CN114519049A (zh) 一种数据处理方法及装置
CN116860700A (zh) 处理分布式文件系统中元数据的方法、装置、设备及介质
THU et al. Building a full-‐text index
KR20140108618A (ko) 확장 가능한 분산 인덱스를 사용하여 데이터를 저장하는 장치 및 방법
KR20130013400A (ko) 확장 가능한 분산 인덱스를 사용하여 데이터를 저장하는 장치 및 방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination