KR102001409B1 - 호스팅된 분석계를 위한 동적 n-차원 큐브 - Google Patents

호스팅된 분석계를 위한 동적 n-차원 큐브 Download PDF

Info

Publication number
KR102001409B1
KR102001409B1 KR1020177001694A KR20177001694A KR102001409B1 KR 102001409 B1 KR102001409 B1 KR 102001409B1 KR 1020177001694 A KR1020177001694 A KR 1020177001694A KR 20177001694 A KR20177001694 A KR 20177001694A KR 102001409 B1 KR102001409 B1 KR 102001409B1
Authority
KR
South Korea
Prior art keywords
hierarchy
data
data points
computing
subset
Prior art date
Application number
KR1020177001694A
Other languages
English (en)
Other versions
KR20170033303A (ko
Inventor
샌토시 캘키
스리니바산 선더 래허번
티모시 앤드류 래스
무컬 비제이 카닉
애몰 데브건
스와미나산 시버서브러머니안
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/494,524 external-priority patent/US10776397B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20170033303A publication Critical patent/KR20170033303A/ko
Application granted granted Critical
Publication of KR102001409B1 publication Critical patent/KR102001409B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)

Abstract

온라인 분석 프로세싱 시스템은 각각의 슬라이스가 데이터 포인트의 하나 이상의 계층구조를 포함하는 슬라이스-기반 파티셔닝을 사용하여 구조화된 n-차원 큐브를 포함할 수 있다. 계층구조의 영역은 영역과 연관된 계산 수요에 따라 분류될 수 있다. 스케일링 또는 복제 메커니즘은 그 영역과 연관된 계산 수요에 기반하여 영역에 적용될 수 있다.

Description

호스팅된 분석계를 위한 동적 N-차원 큐브{DYNAMIC N-DIMENSIONAL CUBES FOR HOSTED ANALYTICS}
관련 출원에 대한 상호-참조
본 출원은 2014년 6월 20일자로 출원된 미국 가특허출원 제62/015,312호(발명의 명칭 "DYNAMIC CUBES FOR CLOUD-BASED ANALYTICS"); 2014년 9월 23일자로 출원된 미국 특허출원 제14/494,506호(발명의 명칭 "DYNAMIC N-DIMENSIONAL CUBES FOR HOSTED ANALYTICS"); 2014년 9월 23일자로 출원된 미국 특허출원 제14/494,513호(발명의 명칭 "USE OF DEPENDENCY GRAPHS TO DYNAMICALLY UPDATE N-DIMENSIONAL CUBES"); 및 2014년 9월 23일자로 출원된 미국 특허출원 제14/494,524호("DATA INTEREST ESTIMATION FOR N-DIMENSIONAL CUBE COMPUTATIONS")의 이익을 주장하며, 그 내용은 그 전체가 참조에 의해 여기에 편입된다.
본 출원은 동시 계류 중인 2014년 6월 20일자로 출원된 미국 가특허출원 제62/015,302호(발명의 명칭 "EMBEDDABLE CLOUD ANALYTICS")와는 물론, 동시 계류 중인 2014년 6월 20일자로 출원된 미국 가특허출원 제62/015,308호(발명의 명칭 "AUTOMATED HIERARCHY DETECTION FOR CLOUD-BASED ANALYTICS")와도, 동시 계류 중인 2014년 6월 20일자로 출원된 미국 가특허출원 제62/015,294호("REAL-TIME HOSTED SYSTEM ANALYTICS")와도, 그리고 동시 계류 중인 2014년 6월 20일자로 출원된 미국 가특허출원 제62/015,307호(발명의 명칭 "CLOUD ANALYTICS MARKETPLACE")와도 관련되며, 그 전체가 참조에 의해 여기에 편입된다.
데이터 웨어하우스 및 온라인 분석 프로세싱("OLAP") 시스템은 데이터 마이닝, 보고, 및 예측과 관련된 다양한 기능을 수행하는데 사용될 수 있다. OLAP 시스템은 전형적으로는 관계형 데이터베이스와 같은 트랜잭션형 시스템으로부터 획득되고 다차원 큐브 구조로 로딩되는 데이터의 다차원 분석을 가능하게 할 수 있다. 다양한 총계 값과 같은 데이터 포인트는 n-차원 큐브 구조 내에서 그것이 포함하고 있는 다양한 차원의 각각의 교차점에서 계산될 수 있다. 따라서, 다차원 큐브 구조를 파퓰레이팅하는 프로세스는 상당한 양의 계산을 수반할 수 있다. 부가적으로, n-차원 큐브는 새로운 데이터를 편입하기 위해 주기적 기반으로 업데이트될 수 있다. n-차원 큐브를 업데이트하는 것은 그 차원의 각각의 교차점에서 데이터 포인트를 리컴퓨팅하는 것을 수반할 수 있다. 리컴퓨팅은 n-차원 큐브에 새로운 차원이 추가되어야 할 때 훨씬 더 부담스러울 수 있다. 따라서, 이들 유형의 n-차원 큐브 구조는 동적 데이터 환경에 그다지 적당하지는 않다.
이하의 상세한 설명은 첨부 도면과 함께 읽을 때 더 잘 이해될 수 있다. 예시의 목적으로, 본 발명의 태양의 다양한 예가 도면에 도시된다; 그렇지만, 본 발명은 개시된 특정 방법 및 수단으로 한정되지 않는다.
도 1a는 클라우드-기반 분석계와 연관하여 사용가능한 n-차원 큐브를 유지하기 위한 시스템의 일 실시형태를 묘사하는 블록 선도,
도 1b는, 클라우드-기반 분석계와 연관하여 사용가능한 n-차원 큐브를 유지하기 위한 시스템의 일 실시형태의 연산으로서, 실시간 데이터 스트림에서 관찰된 새로운 차원의 추가와 관련 있는 연산을 묘사하는 블록 선도,
도 2a는, 클라우드-기반 분석계를 수행하기 위한 시스템의 일 실시형태의 연산으로서, n-차원 큐브에 새로운 차원의 추가시 종속성 그래프의 유지를 수반하는 연산을 묘사하는 블록 선도,
도 2b는, 클라우드-기반 분석계를 수행하기 위한 시스템의 일 실시형태의 연산으로서, n-차원 큐브에 속성의 추가를 수반하는 연산을 묘사하는 블록 선도,
도 2c는 슬라이스 내에 포함되어 있는 계층구조 데이터에 대한 스케일링가능한 저장 메커니즘의 일 실시형태를 묘사하는 선도,
도 3a는 클라우드-기반 분석계에 적응된 n-차원 큐브를 유지하기 위한 프로세스의 일 실시형태를 묘사하는 순서도,
도 3b는 n-차원 큐브에서 데이터 포인트의 계산을 연기하기 위한 프로세스의 일 실시형태를 묘사하는 순서도,
도 4는 클라우드-기반 분석계에 적응된 n-차원 큐브에서 연기된 컴퓨팅을 수행하기 위한 프로세스의 일 실시형태를 묘사하는 순서도,
도 5a는 호스팅된 분석계 서비스를 제공하기 위한 시스템의 일 실시형태를 묘사하는 블록 선도,
도 5b는 실시간 데이터 소스로부터의 데이터의 유입 및 프로세싱을 위한 프로세스의 묘사도,
도 6은 본 발명의 태양이 실시될 수 있는 컴퓨팅 환경의 일례를 묘사하는 블록 선도, 및
도 7은 본 발명의 태양이 실시될 수 있는 컴퓨팅 시스템의 일 실시형태를 묘사하는 블록 선도.
본 발명의 태양은, 호스팅된 분석계 플랫폼을 포함하는, 동적 데이터 환경에 적합한 구조를 사용하여 n-차원 큐브를 유지하도록 채용될 수 있다. 실시형태는, n-차원 큐브에 포함되면 분석계에 유용할 수 있는, 새로운 속성, 차원 또는 계층구조(hierachy)를 도입할 수 있는 데이터의 스트림과 함께 분석계를 제공하도록 채용될 수 있다. 실시형태는 슬라이스-기반 파티셔닝 기법을 사용하여 구조화된 n-차원 큐브를 채용할 수 있다. 각각의 슬라이스는 슬라이스를 가로질러 고정된 차원 값 세트 및 가변이 허용되는 차원 값 세트에 대응하는 데이터 포인트를 포함할 수 있다. 속성, 차원 또는 계층구조는 새로운 슬라이스의 추가 또는 기존 슬라이스의 수정에 의해 n-차원 큐브에 추가될 수 있다. n-차원 큐브의 뷰는 슬라이스들, 슬라이스 영역들, 및 개개의 데이터 포인트들 간 종속성 링크를 형성함으로써 부분적으로 예비 컴퓨팅될 수 있다. 여기에서 설명되는 접근법은 n-차원 큐브의 대규모의 완전 재계산 또는 리컴퓨팅을 요구하지 않고 추가적 차원 및 속성에 대해 확장 또는 수축될 수 있는 n-차원 큐브 구조를 가능하게 하도록 채용될 수 있다.
도 1a는 클라우드-기반 분석계와 연관하여 사용가능한 n-차원 큐브(100)를 유지하기 위한 시스템의 일 실시형태를 묘사하는 블록 선도이다. 클라우드-기반 분석계 시스템의 사용자는 교차점 포인트에서 총계 데이터 및 관련 속성을 포함하고 있는 다차원 어레이로서 분석 데이터를 볼 수 있다. 다차원 어레이는 희소할 수 있는데, 그러한 경우에, 비교적 적은 수의 교차점 포인트가 데이터와 연관됨을 의미한다.
클라우드-기반 분석계 시스템은, 개념적으로는 그 사용자에 의해 다차원 어레이로서 보일 수 있기는 하지만, 복수의 슬라이스(102-106) 및 리파지토리(repository)(108)를 포함할 수 있는 n-차원 큐브(100)를 포함할 수 있다. 슬라이스(102)는 n-차원 큐브의 나머지 차원에 고정된 어레이 교차점의 1-차원 리스트에 대한 총계 데이터 세트 및 속성 세트를 포함할 수 있다. 다양한 실시형태에서, 다차원 "슬라이스"가 채용될 수 있는데, 즉, 슬라이스는 n-차원 큐브의 나머지 차원에 고정된 다차원 구조를 또한 포함할 수 있다.
리파지토리(108)는 슬라이스(102-106)에 관한 정보의 집합을 유지하고 있는, 관계형 또는 비-관계형 데이터베이스와 같은, 데이터 리파지토리를 포함할 수 있다. 리파지토리(108)에 유지될 수 있는 데이터의 비-한정적 예는 슬라이스 식별자, 고정 차원의 식별자, 가변 차원의 식별자, 종속성 정보, 리프레시 또는 진부함 데이터 등을 포함한다.
슬라이스(102-106)는 파티션(110, 112)과 같은 하나 이상의 파티션 상에 유지될 수 있다. 파티션은 슬라이스(102-106) 중 하나 이상의 구성 데이터를 유지하기 위한 데이터베이스 관리 시스템 또는 다른 메커니즘을 호스팅하는 서버 또는 다른 컴퓨팅 노드를 포함할 수 있다. 다양한 파티셔닝 기법은 파티션(110, 112) 간 작업부하 및 저장 요건을 분배하도록 채용될 수 있다.
실시형태는 또한 복제본(114, 116)으로 파티션(110, 112)의 복제를 수행할 수 있다. 실시형태는 n-차원 큐브(100)를 채용하는 클라우드-기반 분석계 시스템의 신뢰도 및 성능을 개선하도록 복제를 사용할 수 있다. 슬라이스, 계층구조, 또는 계층구조의 영역과 같은, n-차원 큐브의 부분들은 n-차원 큐브에서 데이터 포인트를 유지하는 것과 연관된 계산 수요에 부응하기 위해 파티셔닝 또는 복제될 수 있다. 예를 들어, 높은 판독 활동을 받게 되는 n-차원 큐브의 부분은 기록가능한 파티션을 호스팅하는 컴퓨팅 노드 및 판독-전용 파티션을 호스팅하는 여러 추가적 컴퓨팅 노드를 포함하도록 아웃-스케일링될 수 있다. 높은 기록 활동과 연관된 n-차원 큐브의 부분은 부-부분으로 더 분할되고 여러 컴퓨팅 노드들 간에 파티셔닝될 수 있다.
일 실시형태에서, 데이터는 액세스 패턴에 기반하여 노드들 간에 할당될 수 있다. 할당은 파티셔닝 기법을 식별 및 구현하는 것, 요청되면 복제를 가능하게 하는 것, 부하 밸런싱 메커니즘을 구성하는 것 등을 수반할 수 있다. 파티셔닝 및 복제는, 여기에서 설명되는 바와 같이, 슬라이스에 의한, 계층구조에 의한, 계층구조의 영역에 의한 등과 같은 다양한 레벨에서 발생할 수 있다. 액세스 패턴은 특정 슬라이스 상에서 또는 n-차원 큐브에 의해 수행된 질의의 패턴 및 동향을 수반할 수 있다. 액세스 패턴에 관한 다양한 통계 및 다른 메트릭은 할당을 위해 수집 및 사용될 수 있다. 이것들은 업데이트 연산의 빈도 및 비율, 계산을 요구하는 연산의 빈도 및 비율, 데이터 이동을 수반하는 연산의 빈도 및 비율 등을 레코딩하는 메트릭을 포함한다.
일 실시형태에서, 슬라이스 부분과 관련된 계산 수요는 파티션 호스트의 성능 특성에 비교되고, 그리고 그에 따라 데이터는 파티션 호스트들 간에 할당될 수 있다. 예를 들어, 높은 정도의 데이터 이동에 참가하고 있는 슬라이스는 동일한 컴퓨팅 노드 상에 병설되거나, 네트워크의 동일한 브랜치에 접속된 컴퓨팅 노드 상에 배치되거나, 또는 더 높은-속도 네트워크에 의해 접속된 컴퓨팅 노드 상에 배치될 수 있다. 다른 일례는 성능 특성이 최적화된 양의 CPU 능력 및/또는 메모리를 포함하는 컴퓨팅 노드 상에서의 높은 정도의 컴퓨팅을 수반하는 데이터를 할당하는 것을 수반한다.
일 실시형태에서, 데이터는 보안 고려사항에 기반하여 노드들 간에 할당될 수 있다. 계층구조의 어떤 차원 또는 레벨이 컴퓨팅에 사용되지만 n-차원 큐브의 사용자에게는 보일 수 있지 않는 것이 사실일 수 있다. 데이터는 각각의 컴퓨팅 노드와 연관된 보안 속성에 기반하여 컴퓨팅 노드들 간에 할당될 수 있다. 예를 들어, 컴퓨팅 노드는 (컴퓨팅이 수행될 수 있도록) n-차원 큐브의 부분을 호스팅하는 컴퓨팅 노드에 의해 기원된 요청을 프로세싱하도록 구성될 수 있고, 그리고, n-차원 큐브의 고객으로부터 기원하는 것들과 같은, 다른 당사자에 의해 발행된 요청에 응답하지 않도록 더 예비-구성될 수 있다. 이러한 컴퓨팅 노드에는 컴퓨팅에 요구되지만 사용자에 의해 보일 수 있지는 않은 데이터가 할당될 수 있다. 그렇게 구성되지 않은 다른 컴퓨팅 노드는 사용자에 의해 보일 수 있는 데이터를 호스팅할 수 있다.
도 1b는 클라우드-기반 분석계와 연관하여 사용가능한 n-차원 큐브를 유지하기 위한 시스템의 일 실시형태의 연산을 묘사하는 블록 선도로서, 연산은 실시간 데이터 스트림에서 관찰된 새로운 차원의 추가와 관련 있다. 데이터 스트림(160)은 트랜잭션형 데이터, 실시간 데이터, 로그 정보 등을 포함할 수 있다. 데이터 스트림(160)에서 도착하는 데이터는 데이터의 도착 이전에는 n-차원 큐브(150)에 포함되지 않은 속성 및 차원을 포함할 수 있다.
실시형태는 기존 n-차원 큐브 상에서 파괴적 연산을 수행함이 없이 새로운 차원(162)을 반영하는 분석계를 가능하게 함으로써 새로운 차원(162)의 도착에 응답할 수 있다. n-차원 큐브의 종래 기술 실시형태는, 각각의 교차점에서의 총계, 또는 다양한 유도된 값과 같은, n-차원 큐브 내에서의 기존 데이터 포인트의 실체적 리컴퓨팅을 수행함이 없이 새로운 차원을 편입할 수 없을 수 있다.
도 1b에 묘사된 바와 같이, n-차원 큐브(150)는 슬라이스(152-156)를 포함할 수 있으며, 여기서 각각의 슬라이스는 n-차원 큐브의 차원의 서브세트에 고정되고 나머지 차원에 걸쳐 가변이다. 리파지토리(158)는, 위치, 마지막 리프레시 시간, 종속성 정보 등과 같은, 슬라이스(152-156)에 관한 정보를 유지하고 있을 수 있다.
새로운 슬라이스(164)는 데이터 스트림(160)을 통해 새로운 차원(162)의 도착에 응답하여 n-차원 큐브(150)에 추가될 수 있다. 새로운 차원(162)을 포함하는 새로운 슬라이스(164)는 하나 이상의 차원이 달라질 수 있다. 새로운 슬라이스(164)를 기술하는 엔트리는 리파지토리(158)에 추가될 수 있다. 기존 슬라이스(152-156)는 그들 슬라이스의 사용 이전에 발생하는 실체적 리컴퓨팅 없이 사용 중인 채로 있을 수 있다. 실시형태는 새로운 슬라이스(164)를 나타내는 정보를 리파지토리(158)에 추가할 수 있다. 실시형태는 또한 기존 슬라이스(152-156)와 새로운 슬라이스(164)에서의 데이터 간 종속성 관계를 나타내는 정보를 추가할 수 있다. 종속성 정보는 슬라이스에 유지되는 데이터의 종속성 그래프를 포함할 수 있다. 종속성 그래프는 슬라이스들, 차원들, 슬라이스 영역들, 데이터 포인트들 등 간 종속성을 나타낼 수 있다. 실시형태는 또한 슬라이스, 슬라이스 영역, 슬라이스 내의 데이터 포인트 등에 대한 계산 우선순위를 나타내는 정보를 리파지토리(158)에 추가할 수 있다. 우선순위는, 데이터 포인트에서의 관심의 추정된 개연성, 다른 데이터가 계산에 종속하는 정도 등을 포함하는, 다양한 인자에 기반할 수 있다.
도 2a는 클라우드-기반 분석계를 수행하기 위한 시스템의 일 실시형태의 연산을 묘사하는 블록 선도로서, 연산은 n-차원 큐브에 새로운 차원의 추가시 종속성 그래프의 유지를 수반한다. 도 2a는 국가 차원 및 주 차원을 처음에 포함하고 있는 n-차원 큐브의 일례의 수반을 묘사한다. 하나 이상의 척도 또는 다른 값 또는 속성은 이들 차원의 각각의 교차점에서 연관될 수 있다. 슬라이스(218)는, 고정 차원("국가 A")(222)에 의해 표시된 바와 같이, 국가 차원에서의 "A"에 고정될 수 있다. 슬라이스(218)는, 가변 차원 엔트리(224-230)에 의해 도 2a에 묘사된 바와 같이, 비-고정 차원을 따른 하나 이상의 엔트리를 더 포함하고 있을 수 있다. 다양한 데이터 포인트는 차원 엔트리(224-230)와 연관될 수 있다. 예를 들어, 가변 차원 엔트리(226)는 데이터 포인트(238)와 연관될 수 있다. 데이터 포인트(238)는, "국가 A"의 "주 B"에서의 총 판매와 같은, 다양한 척도를 표현할 수 있다. 도 2a에서는 데이터 포인트(238)만이 특히 불러 내어져 있지만, 다른 가변 차원 엔트리(224, 228, 230)의 각각은 유사한 데이터 포인트를 가질 수 있다. 유사하게, 슬라이스(220)는, 고정 차원("국가 B")(240)에 의해 표시된 바와 같이, 국가 차원에서의 국가 "B"에 고정될 수 있고, 가변 차원 엔트리(232-236)를 가질 수 있으며, 그 각각은 연관된 데이터 포인트를 가질 수 있다.
실시형태는 n-차원 큐브에 새로운 데이터를 편입하도록 데이터 스트림(200)을 프로세싱할 수 있다. 들어오는 데이터는 기존 차원과 관련될 수 있고 관련 슬라이스, 슬라이스 영역, 데이터 포인트 등을 구식이거나 진부한 것으로 마킹함으로써 편입될 수 있다. 데이터 사전은 다양한 슬라이스, 슬라이스 영역, 및 데이터 포인트에 대한 진부함 데이터를 유지하는데 사용될 수 있다. 실시형태는 또한, 데이터 스트림(200)의 프로세싱을 통해, 새로운 차원(202)이 조우되었고 n-차원 큐브에 편입될 수 있다고 결정할 수 있다. 예를 들어, 도 2a는 새로운 차원(202), "지역" 차원의 추가를 묘사한다. 새로운 슬라이스(212)는 슬라이스(218, 220)를 이미 포함하고 있는 n-차원 큐브에 추가될 수 있다. 새로운 슬라이스(212)는 고정 차원("지역 R")(204)으로 지역 차원에서 일정하게 유지될 수 있고, 가변 차원 엔트리(208, 210)에 의해 묘사된 바와 같이, 주 차원과 같은 하나 이상의 다른 차원에서 가변일 수 있다.
실시형태는 새로운 슬라이스(212)와 기존 슬라이스(218, 220) 간 종속성 관계를 확립할 수 있다. 예를 들어, 종속성 정보(214)는 슬라이스(220)에서의 정보 또는, 더 정밀하게는, 가변 차원 엔트리(232)에 대한 가변 차원 엔트리(208)와 연관된 데이터 포인트의 종속성을 나타낼 수 있다. 유사하게, 종속성 정보(216)는 슬라이스(218) 또는 가변 차원 엔트리(226)에 대한 가변 차원 엔트리(210)와 연관된 데이터 포인트의 종속성을 나타낼 수 있다. 실시형태는 종속성 관계를 확립함에 있어서 다양한 레벨의 세밀도 및 방향성을 이용할 수 있다. 예를 들어, 종속성 관계는 슬라이스들, 가변 차원 엔트리들, 고정된 데이터 포인트들 등 간 형성될 수 있고, 기존 슬라이스들 간 또는 기존 슬라이스와 새로운 슬라이스 간 어느 방향으로든 형성될 수 있다. 실시형태는 슬라이스, 슬라이스 영역, 데이터 포인트 등을 진부한 것으로 마킹하도록 종속성 관계를 이용할 수 있다. 실시형태는 또한 예비-계산된 총계 또는 계산된 추가적 총계, 다양한 유도된 값 등의 다른 컴포넌트의 위치를 찾아내도록 종속성 관계를 이용할 수 있다. 가변 차원 엔트리(208, 210)는, 관련 값의 계산이 연기될 수 있도록, 공백 또는 진부한 상태로 형성될 수 있음을 주목한다.
도 2b는 클라우드-기반 분석계를 수행하기 위한 시스템의 일 실시형태의 연산을 묘사하는 블록 선도로서, 연산은 n-차원 큐브에 속성의 추가를 수반한다. 실시형태는 데이터 스트림(250)을 프로세싱하고 슬라이스(258)의 기존 요소와 연관된 새로운 속성의 존재를 결정하는데, 슬라이스(258)는 고정 차원("국가 B")(260) 및 가변 차원 엔트리(262-264)와 연관된다. 속성은, 개념적 레벨에서, n-차원 큐브에서의 차원의 교차점과 연관된 값이라고 생각될 수 있다. 실시형태는, 슬라이스 엔트리가 링크된 리스트 또는 다른 구조를 통하여, 속성 엔트리(256)와 같은, 하나 이상의 속성과 연관되는, 도 2b에서 묘사된 메커니즘을 사용하여 속성을 저장할 수 있다. "주 A"와 연관된 새로운 속성(252)을 검출시, 실시형태는 가변 차원 엔트리("주 A")(262)의 위치를 찾아내고 새로운 속성(254)을 연관된 속성의 리스트에 추가할 수 있다. 실시형태는 속성이 연관될 추가적 슬라이스 및 고정 차원 엔트리에 대해 이러한 연산을 다수 횟수 반복할 수 있다.
종속성 정보는 속성에 대해 식별 및 저장될 수 있다. 예를 들어, 도 2b는 종속성 정보(266)를 묘사한다. 묘사된 종속성 정보(266)는 새로운 속성 엔트리(254)와 계층구조(268) 간 종속성 관계를 나타낼 수 있다. 종속성 관계는 또한 기존 속성과 계층구조 간 유지될 수 있다.
계층구조 및 다양한 유도된 또는 계산된 값은 다양한 속성 값 또는 속성 유형에 종속할 수 있다. 예를 들어, 계층구조는, 색상과 같은 속성으로 필터링된, 제품의 판매에 대한 총계 값을 포함할 수 있다. 속성의 값에 대한 변경은 계층구조의 리컴퓨팅을 요구할 수 있다. 따라서, 제품 색상 속성과 계층구조 간 종속성 관계가 있을 수 있다. 유사한 관계는 다른 유도된 또는 계산된 값에 대해 존재할 수 있다. 새롭게 추가된 속성은 또한 계층구조와의 관계를 가질 수 있다. 일례는 새롭게 추가된 속성이 기존 속성과 동일한 클래스이거나 본성이 유사할 때 발생할 수 있다. 기존 속성이 기존 계층구조의 요소인 경우, 새로운 속성은 기존 것과 병렬인 새로운 계층구조의 요소로 될 수 있다. 새로운 계층구조를 즉시 계산하기보다는, 새로운 속성과 새로운 계층구조 간 관계를 나타내도록 종속성 정보가 저장될 수 있어서, 순차로 새로운 계층구조의 연기된 또는 온-디맨드 컴퓨팅이 가능하게 할 수 있다.
도 2c는 슬라이스 내에 포함되어 있는 계층구조 데이터에 대한 스케일링가능한 저장 메커니즘의 일 실시형태를 묘사하는 선도이다. 일부 경우 및 실시형태에서, 데이터의 각각의 슬라이스가 별개의 컴퓨팅 노드 상에 유지될 수 있도록, 슬라이스들 간 n-차원 큐브의 파티셔닝이 있을 수 있다. 일부 경우에 스케일링가능성은 슬라이스들 간 복제 및 부하 밸런싱을 수행함으로써 달성될 수 있다. 다른 실시형태에서, 슬라이스-기반 파티셔닝에 부가하여 또는 그 대신에, 슬라이스 내에서 파티셔닝이 행해질 수 있다.
일부 실시형태에서, 슬라이스 내에 포함되어 있는 데이터 포인트의 계층구조는 영역에 의해 세분되고 여러 컴퓨팅 노드 상에 저장될 수 있다. 데이터 포인트의 계층구조의 영역은 계층구조의 서브세트라고 지칭될 수 있다. 스케일링 메커니즘은 영역 내에 포함되어 있는 데이터 포인트 또는 데이터 포인트들과 연관된 계산 수요에 기반하여 계층구조의 각각의 영역(또는 서브세트)에 대해 선택될 수 있다.
n-차원 큐브의 슬라이스는 차원 데이터의 다양한 계층구조를 포함할 수 있다. 예를 들어, 슬라이스는 시간 단위로 총계한 판매 데이터를 포함할 수 있다. 예시적 목적으로, 도 2c는 시간 차원 및 판매 차원에 관하여 설명될 것이다. 그렇지만, 도 2c의 다양한 태양을 예시하기 위한 시간 및 판매의 사용은 본 발명의 범위를 한정하는 것으로 보여서는 안됨을 인식할 것이다.
도 2c에서, 계층구조(281)은 계층구조 노드(286-298)를 포함할 수 있다. 계층구조에서의 각각의 노드는 값의 합의 저장된 표현일 수 있다. 일례로서 시간 및 판매 차원을 사용할 때, 계층구조 노드(292, 294, 296, 298)는 각각 6-시간 시간 기간 동안 판매 수치의 합을 포함하고 있을 수 있다. 계층구조 노드(288, 290)는 각각 6-시간 수치의 총계를 포함하고 있을 수 있다. 예를 들어, 계층구조 노드(288)는 12-시간 기간을 표현하고 계층구조 노드(292, 294)와 연관된 값의 총계를 포함하고 있을 수 있다. 유사하게, 계층구조 노드(290)는 제2의 12-시간 기간을 표현하고 계층구조 노드(296, 298)와 연관된 값의 총계를 포함하고 있을 수 있다. 계층구조 노드(286)는 계층구조 노드(288, 290)를 포함하는 24-시간 기간에 대한 총계를 포함하고 있을 수 있다. 실시형태는, 계층구조에 시간 차원의 포함으로부터, 더 많은 현재 시간 기간이 빈번한 기록을 수반할 개연성이 더 있다고 추론할 수 있다. 실시형태는 시간 차원으로부터 업데이트의 예측된 레벨로의 매핑을 이용하고, 그로써 계층구조의 영역 내 유지된 데이터 포인트에 수반될 개연성이 있는 계산 수요를 추정할 수 있다.
n-차원 큐브의 스케일링가능성은 트리-기반 저장 메커니즘을 사용하여 증가될 수 있다. 일 실시형태에서, 트리-기반 저장 메커니즘은, 도 2c에서의 계층구조(281)과 같이, 계층구조 트리를 병렬화할 수 있다. 계층구조에 대한 업데이트는, 일부 실시형태에서, 다음과 같이 진행된다: 1) 새로운 데이터가 잎 노드에 저장되고, 잎에서의 어느 총계 값이라도 조절될 수 있다; 2) 잎 노드의 부모의 총계 값이 조절될 수 있다; 그리고 3) 잎 노드의 부모의 부모의 총계 값이 조절될 수 있다, 등등.
일례로서 시간 및 판매를 사용할 때, 현재 시간 기간을 표현하는 노드는 빈번하게 업데이트될 수 있다. 이것은 순차로, 총계 값에 대한 조절이 상속의 체인을 통해 위로 흐르므로, n-차원 큐브에서의 그 선조가 빈번하게 업데이트되게 야기할 수 있다. 예를 들어, 계층구조 노드(298)는 현재 6-시간 윈도를 표현할 수 있다. 현재 윈도에 대한 판매 데이터가 수집될 때, 계층구조 노드(298)와 연관된 값은 빈번하게 조절될 수 있다. 이것은 순차로 계층구조 노드(290, 286)가 조절되게 야기할 수 있다. 일부 실시형태는 계층구조의 다양한 레벨에서의 총계 계산을 연기할 수 있다.
계층구조 데이터에 대한 스케일링 메커니즘은 계층구조에서의 영역의 분류에 기반할 수 있다. 분류는 계층구조 중 일부 또는 전부를 호스팅하는 컴퓨팅 노드 상에 부과된 계산 수요와 같은 인자를 포함할 수 있다. 분류는 활동의 빈도 및 활동의 유형을 포함할 수 있다. 예를 들어, 높은 기록 활동과 연관된 영역(284)은, 물론, 다양한 경우 및 실시형태에서, 하나보다 많은 계층구조 노드가 이러한 방식으로 분류될 수 있기는 하지만, 계층구조 노드(298)와 연관될 수 있다. 높은 수의 기록은, 현재 시간 기간으로부터의 데이터를 포함하고 있는 계층구조 노드(298)와 같은, 계층구조에 포함되어 있는 데이터의 유형의 결과일 수 있다. 계층구조(281)의 다른 영역은 높은 계산 부하와 연관된 영역(280)인 것으로 분류될 수 있다. 이 영역(280)은 총계 값을 계산하는 것과 연관된 더 많은 수요와 연관될 수 있다. 예를 들어, 계층구조 노드(298)가 추가적 데이터를 포함하도록 업데이트되고 있으면, 그 선조 노드(290, 286)는 총계 또는 다른 유도된 값의 비교적 빈번한 재계산에 관여될 수 있다. 다른 분류는 낮은 기록 활동과 연관된 영역(282)을 식별시킬 수 있다. 추가적 분류는, 높은 판독 활동(283)과 연관된 영역과 같은, 빈번한 질의 및 검색 연산에 연루된 영역을 수반할 수 있다. 분류는 또한 비교적 적은 활동을 갖는 그들 영역을 수반할 수 있다.
계층구조를 유지하기 위한 스케일링 메커니즘은 계산 수요의 전술한 분류 중 하나 이상에 기반할 수 있다. 일 실시형태에서, 높은 계산 부하와 연관된 영역(280)에서의 계층구조 노드는 그 영역에서의 노드와 연관된 계산을 더 세분함으로써 파티셔닝될 수 있다. 예를 들어, 계층구조 노드(286)와 관련된 계산은 계층구조 노드(290)와 관련된 것들과는 별개인 컴퓨팅 노드 상에서 수행될 수 있다. 계층구조 노드(286)와 관련된 계산은 여러 컴퓨팅 노드 간에 더 파티셔닝될 수 있다. 예를 들어, 계층구조 노드(288)로 시작하는 계층구조의 브랜치와 관련된 계산은 계층구조 노드(290)로 시작하는 브랜치와 관련된 것들과는 별개인 컴퓨팅 노드 상에서 수행될 수 있다.
높은 기록 활동과 연관된 영역에서의 계층구조 노드는 다수의 컴퓨팅 노드에 걸쳐 기록 부하를 분산시키도록 수평으로 파티셔닝될 수 있다. 낮은 기록 활동을 갖지만 높은 판독 활동을 갖는 영역에 대해서는, 다수의 컴퓨팅 노드에 걸쳐 판독 부하를 분산시키도록 복제가 사용될 수 있다.
실시형태는 또한 전술한 분류에 기반하여 특정 자원 유형의 사용을 강조할 수 있다. 예를 들어, 빈번한 컴퓨팅 또는 기록과 연관된 계층구조를 유지하고 있는 컴퓨팅 노드는 데이터를 인-메모리 유지할 수 있는 한편, 낮은 활동과 연관된 것들은 관용적 저장소를 이용할 수 있다.
다양한 경우 및 실시형태에서, 계층구조의 영역은 계층구조를 통한 경로로 이루어질 수 있다. 예를 들어, 영역은 제1 노드, 제1 노드의 부모 등으로 이루어질 수 있다. 계층구조에서의 경로는, 경로에서의 데이터가 빈번하게 액세스되는 동안, 주 시스템 메모리에, 또는 다른 비교적 낮은-레이턴시 저장 디바이스 상에 유지될 수 있다. 경로에서의 하위-레벨 노드 상에서 수행된 기록 연산은 캐스케이딩 업데이트를 트리거링할 수 있다. 실시형태는 이들 및 유사한 유형의 업데이트를 효율적으로 프로세싱하기 위해 빈번하게 기록된 노드의 부모를 주 시스템 메모리에 유지할 수 있다. 액세스 빈도, 특히 기록 빈도가 임계 레벨 위에 있을 때, 경로는 주 메모리에 유지될 수 있다. 액세스 빈도가 특정 레벨 아래로 떨어질 때, 경로는 비교적 높은 레이턴시를 갖는 디바이스 상에 유지될 수 있다.
다양한 실시형태에서, 계층구조의 영역은 컴퓨팅 노드의 분류에 기반하여 컴퓨팅 노드에 매핑될 수 있다. 계층구조는 잠재적 가변 구성을 갖는 여러 컴퓨팅 노드 상에 호스팅될 수 있다. 컴퓨팅 노드 중 일부는, 예를 들어, 컴퓨팅 노드가 계산을 수행함에 있어서 개선된 효율을 제공하도록 구성됨을 나타낼 수 있는, 계산-집약적 노드로서 구성될 수 있다. 다른 컴퓨팅 노드는 데이터를 저장하는 것에 대해 개선된 효율을 제공하도록 구성될 수 있다.
도 3a는 클라우드-기반 분석계에 적응된 n-차원 큐브를 유지하기 위한 프로세스의 일 실시형태를 묘사하는 순서도이다. 연산의 시퀀스로서 묘사되기는 하지만, 당업자는 묘사된 순서가 본 발명의 범위를 한정하는 것으로 해석되지 않아야 함과 그리고 묘사된 연산 중 적어도 일부는 개조, 생략, 순서변경, 부가적 연산으로 보충, 또는 병렬로 수행될 수 있음을 인식할 것이다. 묘사된 프로세스의 실시형태는, 여기에서 설명된 컴퓨팅 시스템과 같은, 컴퓨팅 시스템에 의해 실행되는 컴퓨터-실행가능한 명령어의 다양한 조합을 사용하여 구현될 수 있다.
연산(300)은 n-차원 큐브에 편입될 수 있는 새로운 차원, 속성, 척도, 또는 다른 값을 식별하는 것을 묘사한다. 실시형태는 새로운 차원, 속성, 척도, 또는 다른 값을 추가하는 것을 나타내는 새로운 데이터에 대한 데이터 스트림을 프로세싱할 수 있다. 데이터 스트림은 전형적으로는 데이터의 연속형 또는 반-연속형 스트림과 연관된 실시간 데이터 소스, 로그 파일, 또는 다른 데이터 소스에 대응할 수 있다. 이들 데이터 소스는 일반적으로는 증분 기반으로 데이터를 제공하는 것으로 설명될 수 있다.
데이터 스트림은 또한, 연속형 기반으로보다는 주기적으로 n-차원 큐브에 편입 또는 업데이트될 수 있는, 이력 데이터, 트랜잭션 데이터 등과 연관될 수 있다. 이러한 유형의 데이터 소스는 일반적으로는 벌크 부하 데이터를 제공하는 것으로 설명될 수 있다.
n-차원 큐브로의 편입을 위해 새로운 데이터를 식별하기 위한 프로세스는 증분적으로 로딩된 데이터 및 벌크-부하 데이터 양자에 대해 유사하게 동작할 수 있다. 연산(302)은 새롭게 발견된 차원에 기반하여 n-차원 큐브에 새로운 슬라이스를 추가하는 것을 묘사한다. 도 1a를 참조하면, 새로운 슬라이스의 추가는, 도 1a에서의 파티션(110)과 같은, 슬라이스를 호스팅할 파티션을 배정하는 것, 슬라이스를 복제본(114)과 같은 복제본으로 복제하는 것, 및 리파지토리(108)를 업데이트하는 것을 수반할 수 있다. 다양한 실시형태에서, 새로운 차원을 편입시키는 분석계는 이들 단계가 완료되기 이전에 수행될 수 있다.
연산(304)은 데이터 스트림으로부터 들어오는 데이터에서 식별된 새로운 속성, 척도, 또는 다른 값에 기반하여 하나 이상의 슬라이스를 업데이트하는 것을 묘사한다. 실시형태는 파티션 상에 유지된 슬라이스 데이터를 업데이트하고 데이터의 복제를 트리거링할 수 있다.
실시형태는 또한, 슬라이스, 슬라이스 영역, 및 데이터 포인트를, 그것들이 새롭게 도착된 데이터에 기인하여 구식으로 렌더링되면, 진부한 것으로 마킹하는 것을 포함하여, 데이터 사전이 업데이트된 데이터의 존재를 반영하도록 업데이트되게 야기할 수 있다. 연산(306)은 슬라이스, 슬라이스 영역, 및 데이터 포인트의 리프레시 상태 및 종속성 정보를 유지하는 것을 묘사한다. 실시형태는 종속성 정보에 대해 여러 다른 레벨의 세밀도를 채용할 수 있다. 일 실시형태는, 예를 들어, 데이터 슬라이스 레벨에서만 거친 세밀도를 유지할 수 있다.
연산(308)은 새롭게 추가된 슬라이스를 증분적으로 파퓰레이팅하는 것 및 기존 슬라이스를 증분적으로 리프레시하는 것을 묘사한다. 실시형태는 새로운 차원의 존재의 발견시 새로운 슬라이스를 추가할 수 있는데, 그때 비교적 작은 양의 관련 데이터가 - 하나 또는 심지어 영만큼 적은 데이터 포인트가 - 이용가능할 수 있다. 따라서, 슬라이스는 본질적으로 공백 상태로 생성되고 슬라이스와 관련 있는 데이터가 데이터 스트림을 통해 도착함에 따라 파퓰레이팅될 수 있다.
연산(310)에 의해 묘사된 바와 같이, 다양한 실시형태는 새로운 슬라이스로부터, 또는 새로운 슬라이스 내의 슬라이스 영역 또는 데이터 포인트로부터 기존 슬라이스, 슬라이스 영역 또는 데이터 포인트로의 종속성 링크를 형성함으로써 새롭게 추가된 슬라이스에서의 뷰를 부분적으로 실체화할 수 있다. 새로운 슬라이스는 링크의 가용성이 새로운 슬라이스 내의 데이터 포인트의 응답적 계산에 대해 그것이 필요로 될 때 허용할 수 있기 때문에 부분적으로 실체화된다고 생각될 수 있다.
연산(312)에 의해 묘사된 바와 같이, 실시형태는 계산을 위한 우선순위에 기반하여 추가된 슬라이스에서의 데이터 포인트를 부분적으로 컴퓨팅할 수 있다. 실시형태는 우선순위를 결정하기 위한 다양한 인자를 이용할 수 있다. 일 실시형태에서, 사용자 관심은 계산의 우선순위를 결정하기 위한 다양한 인자에 의해 추정될 수 있다. 사용자 관심은, 예를 들어, 데이터 포인트 위로의 호버링과 같은, 마우스 움직임을 모니터링함으로써 추정될 수 있다. 클라이언트 애플리케이션은 마우스 움직임을 모니터링하고 대응하는 정보를 클라우드-기반 분석계 플랫폼에 송신할 수 있다. 정보는, 데이터로의 드릴-다운(drill-down) 소망을 나타낼 수 있는, 사용자가 마우스를 사용하여 위로 호버링하고 있었던 슬라이스 데이터의 영역을 나타낼 수 있다. 실시형태는 그때 드릴-다운에 필요한 데이터의 계산을 트리거링할 수 있다. 일 실시형태는 또한 우선순위결정되도록 데이터를 분류하고 카테고리를 각각의 카테고리에 대한 관심의 추정된 레벨에 상관시킴으로써 관심을 추정할 수 있다. 다양한 추가적 기술은, 다른 데이터와의 종속성 정도와 같이, 우선순위를 결정하도록 채용될 수 있다.
연산(314)은 총계 데이터를 재사용함으로써 슬라이스의 컴퓨팅을 최적화하는 것을 묘사한다. 슬라이스 내의 다양한 데이터 포인트의 계산은 더 많은 수의 값들의 총계를 형성하도록 조합되거나, 또는 더 적은 수의 값들의 총계를 형성하도록 분할될 수 있는 총계 값을 수반할 수 있다. 실시형태는 총계 재사용과 함께 사용하기 위해 종속성 그래프 정보를 유지할 수 있다.
연산(316)은 반영에 기반하여 슬라이스 컴퓨팅을 최적화하는 것을 묘사한다. 여기에서, 용어 반영은 관련된 차원들 간 형성된 대각선 축 상에서 (하나 이상의 슬라이스 상으로 투영될 수 있는) n-차원 큐브 매트릭스를 프로세싱하는 것, 및 대각선의 하나의 절반 상에서의 완료된 컴퓨팅을 사용하여 다른 절반 상에서의 컴퓨팅을 완료하는 것을 수반하는 기술을 지칭할 수 있다. 예를 들어, 모델-년-판매를 수반하는 계산은 년-모델-판매를 수반하는 계산을 수행하는데 재사용될 수 있다. 이러한 기술은 수가 임계 값 위에 있는 속성의 분포에 걸쳐 분산된 (판매와 같은) 단일 키 성능 표시자가 있는 것에 응답하여 적용될 수 있다.
다양한 실시형태에서, 새로운 차원은 n-차원 큐브에 추가될 수 있다. 새로운 차원은, 새로운 차원을 추가하라는 요청을 수신하는 것, n-차원 큐브에 이미 표현되지 않은 차원에 대응하는 데이터 스트림으로부터의 데이터를 수신하는 것 등과 같은, 다양한 이벤트 또는 조건에 응답하여 추가될 수 있다. 실시형태는 데이터 슬라이스를 형성하고 그것을 n-차원 큐브를 구성할 수 있는 복수의 추가적 데이터 슬라이스에 추가함으로써 새로운 차원을 추가할 수 있다. 슬라이스가 호스팅되는 컴퓨팅 노드에 대한 정보를 포함할 수 있는, 새로운 데이터 슬라이스를 기술하는 정보는 n-차원 큐브에 대한 정보를 포함하고 있는 리파지토리에 추가될 수 있다. 리파지토리는 슬라이스-간 종속성 정보를 포함할 수 있다.
데이터 슬라이스는 새로운 차원과 n-차원 큐브에 이미 표현된 하나 이상의 다른 차원의 교차점에 대응하는 복수의 데이터 포인트를 포함할 수 있다. 총계 및 다른 유도된 값과 같은 값은 데이터 포인트와 연관될 수 있다.
새로운 데이터 슬라이스를 형성하는 것은 n-차원 큐브에서 데이터 포인트의 계층구조를 부분적으로 실체화하는 것을 포함할 수 있다. 부분적으로 실체화된 계층구조는 계층구조에서의 데이터 포인트와 연관된 값 중 영 개 이상을 계산하는 것을 포함할 수 있다. 이들 데이터 포인트의 계산은 그것들이 필요로 될 때까지 연기될 수 있다. 데이터 포인트의 각각을 예비-계산하는 대신에, 실시형태는 데이터 포인트에 대한 종속성 정보를 예비-계산할 수 있다. 예를 들어, 제1 데이터 포인트와 연관된 값은 제2 데이터 포인트와 연관된 값을 계산하는데 사용될 수 있다. 실시형태는 n-차원 큐브에 새로운 차원의 추가시 이러한 종속성을 식별하고, 또한 종속성을 기술하는 정보를 저장할 수 있다. 종속성을 기술하는 정보는 데이터 슬라이스 내에, 또는 외부에 리파지토리에 저장될 수 있다. 일부 경우에는, 슬라이스-간 종속성이 있을 수 있다. 그러한 경우에, 실시형태는, 데이터 슬라이스를 호스팅하는 컴퓨팅 노드 상에보다는, 중앙 리파지토리에 종속성 정보를 저장할 수 있다.
실시형태는 결정된 우선순위에 기반하여 데이터 포인트와 연관된 값을 계산할 수 있다. 계산을 위한 우선순위는 데이터 포인트와 연관된 값을 계산하기 위한 상대적 순서를 나타낼 수 있고, 또한 값을 판독하라는 요청에 응답할 필요가 있을 때까지 또는 없는 한 값이 컴퓨팅되지 않아야 함을 나타낼 수 있다.
실시형태는 다양한 인자에 기반하여 연기된 계산의 우선순위를 조절할 수 있다. 이것은 계산을 즉시 수행하는 것을 포함할 수 있다. 실시형태는, 국한되는 것은 아니지만, 계산될 데이터 포인트를 포함하고 있는 계층구조와 개념상 유사할 수 있는 계층구조에서의 데이터와 같은, 동일한 데이터 상의 또는 유사한 데이터 상의 이전 액세스 패턴, 사용자 조치 등을 포함하는 인자에 대한 우선순위를 조절할 수 있다. 예를 들어, 실시형태는 특정 유형의 드릴-다운, 드릴-업, 또는 피벗 연산이 공통적으로 수행된다고 결정하고 관련된 계산은 고도로 우선순위결정 또는 즉시 수행할 수 있다.
계산의 우선순위를 결정하는데 이용될 수 있는 다른 인자는 보안이다. 실시형태는, 예를 들어, 차원, 계층구조 또는 n-차원 큐브와 연관된 것들과 같은, 다양한 보안 속성에 기반하여 데이터 포인트를 계산하기 위한 우선순위를 결정할 수 있다.
실시형태는 계산을 위한 결정된 우선순위를 나타내는 값을 정렬하는 것에 기반하여 데이터 포인트를 계산 아니면 컴퓨팅하도록 결정할 수 있다. 예를 들어, 실시형태는 데이터 포인트에(또는 데이터 포인트와 연관된 슬라이스 또는 계층구조의 영역에) 우선순위 스코어를 배정하고, 그에 따라 데이터 포인트를 정렬할 수 있다. 다양한 기술은 데이터 포인트와 연관된 우선순위 값을 표현하는 콤팩트, 정렬가능한 구조를 생성하도록 채용될 수 있다.
실시형태는 경로의 베이스에서의 값에 대한 변경 다음에 재계산을 필요로 할 수 있는 데이터 포인트의 계층구조에서의 경로를 식별하도록 종속성 정보를 채용할 수 있다. 예를 들어, 계층구조의 베이스에서의 값이 업데이트될 때, 그 선조는 재계산을 요구할 수 있다. 실시형태는 변경된 값과 연관된 데이터 포인트와 선조 간 경로를 식별하고, 그 경로를 따른 데이터 포인트를 후손에 대해 구식인 것으로 마킹할 수 있다. 선조 데이터 포인트의 계산은 그 후 여기에서 개시된 다양한 기술을 사용하여 우선순위결정될 수 있다.
일부 경우에, 데이터 포인트는 데이터의 불완전 세트에 종속할 수 있다. 예를 들어, 현재 24-시간 기간 동안의 총계 값은 그 24-시간 기간이 경과할 때까지는 불완전할 수 있다. 실시형태는 불완전한 데이터 세트와 연관된 데이터 포인트를 추적하고 데이터 세트가 완전하다고 생각될 수 있을 때에 적어도 부분적으로 기반하여 컴퓨팅 우선순위를 조절할 수 있다. 예를 들어, 불완전한 데이터 세트에 종속하는 데이터 포인트의 선조는 데이터세트가 불완전한 동안 리컴퓨팅을 위한 낮은 우선순위로서 마킹될 수 있다. 그 후, 우선순위는 데이터세트가 완전하게 될 때 상향 조절될 수 있다.
일 실시형태에서, 데이터 포인트는 컴퓨팅될 데이터 포인트의 후손과 연관된 값을 외삽하는 것에 기반하여 컴퓨팅될 수 있다. 예를 들어, 현재 주간 판매 수치에 대한 총계 값은 그 주의 마지막 날 이전에는 불완전할 수 있다. 그렇지만, 빠져 있는 데이터 포인트에 대한 값은, 예를 들어, 이전 주에서의 대응하는 날에 기반하여 외삽될 수 있다.
도 3b는 n-차원 큐브에서 데이터 포인트의 계산을 연기하기 위한 프로세스의 일 실시형태를 묘사하는 순서도이다. 연산의 시퀀스로서 묘사되기는 하지만, 당업자는 묘사된 순서가 본 발명의 범위를 한정하는 것으로 해석되지 않아야 함과 그리고 묘사된 연산 중 적어도 일부는 개조, 생략, 순서변경, 부가적 연산으로 보충, 또는 병렬로 수행될 수 있음을 인식할 것이다. 묘사된 프로세스의 실시형태는, 여기에서 설명된 컴퓨팅 시스템과 같은, 컴퓨팅 시스템에 의해 실행되는 컴퓨터-실행가능한 명령어의 다양한 조합을 사용하여 구현될 수 있다.
연산(350)은 제1 데이터 포인트와 제2 데이터 포인트 간 종속성을 식별하는 일 실시형태를 묘사한다. 종속성은, 제1 데이터 포인트가 제2 데이터 포인트에 대한 값을 유도하는데 사용되는 계산으로의 입력으로서 역할하는 것과 같은, 2개의 값들 간 관계를 반영할 수 있다. 제1 데이터 포인트가 변경될 때, 제2 데이터 포인트는 정확한 채로 있기 위해 재계산될 필요가 있을 수 있다. 그렇지만, 실시형태는, 여기에서 제시되는 바와 같이, 제2 데이터 포인트의 계산을 연기하고 다양한 기술 및 메커니즘을 사용하여 계산을 스케줄링할 수 있다.
연산(352)은 제2 데이터 포인트가 액세스될 확률을 결정하는 것을 묘사한다. 데이터 포인트의 액세스는 다른 데이터 포인트와 관련된 컴퓨팅에서의 그 사용을 수반할 수 있다. 이러한 목적으로 액세스의 확률은 종속성 그래프 또는 유사한 구조를 사용하여, 다양한 실시형태에 의해, 계산될 수 있다. 다양한 다른 인자는 제2 데이터 포인트가 액세스될 확률을 결정하도록 다양한 실시형태에 의해 이용될 수 있다.
일 실시형태에서, 제2 데이터 포인트가 액세스될 확률은 현재 또는 장래 드릴-다운, 드릴-업, 또는 피벗 연산을 나타내거나 시사하는 인터페이스와의 사용자 상호작용을 나타내는 정보를 수신하는 것에 적어도 부분적으로 기반하여 결정될 수 있다. 더 일반적 관점에서, 사용자는 데이터 포인트가 액세스될 증가된 확률 또는 확실성을 나타내는 방식으로 사용자 인터페이스와 상호작용할 수 있다. 이들 조치는 데이터 필드 위로의 마우스 호버링, 드릴-다운, 드릴-업, 또는 피벗이 수행되어야 함을 나타내는 버튼 위로의 호버링 또는 클릭킹 등을 포함할 수 있다.
실시형태는 또한 사용자에 디스플레이를 위해 클라이언트 애플리케이션에 송신되었던 데이터를 고려할 수 있다. 예를 들어, 계층구조의 레벨 "N"에서의 데이터가 클라이언트 애플리케이션에서 디스플레이 중이면, 레벨 "N-1" 및 "N+1"에서의 데이터 포인트는 액세스의 증가된 개연성을 가질 수 있다.
실시형태는 데이터 포인트를 계산함에 있어서 경과할 수 있는 시간과 데이터 포인트를 계산하는 비용의 비교를 이용할 수 있다. 일부 경우에서, 호스팅된 데이터 분석계 서비스의 고객은 비용 대비 성능에 대한 선호를 나타낼 수 있다. 그러한 경우에, 일 실시형태는 지연을 최소화하도록 컴퓨팅을 공격적으로 우선순위결정할 수 있다. 다른 경우에, 고객은 데이터 분석계 서비스를 이용하는 비용을 감축하기를 바랄 수 있고, 비용 절약에 대한 선호를 나타낼 수 있다. 비용 절약은, 일부 경우에, 계산을 연기하는 것으로부터 초래될 수 있는 감소된 성능과의 절충으로서 달성될 수 있다.
실시형태는 n-차원 큐브와 관련된 트랜잭션 데이터 소스에 대한 또는 n-차원 큐브에 대한 액세스 패턴을 이용할 수 있다. 예를 들어, n-차원 큐브에 대비하여 또는 트랜잭션 데이터 소스에 대비하여 수행된 이전 질의는 다른 것들보다 더 큰 중요도를 갖는 특정 총계 또는 다른 값을 나타낼 수 있다. 그러한 총계 또는 다른 값과 관련된 데이터 포인트는 액세스될 증가된 개연성을 가질 수 있다. 이들 데이터 포인트는, 그에 따라, 다른 데이터 포인트보다 계산을 위한 더 높은 우선순위를 배정받을 수 있다.
도 4는 클라우드-기반 분석계에 적응된 n-차원 큐브에서 연기된 컴퓨팅을 수행하기 위한 프로세스의 일 실시형태를 묘사하는 순서도이다. 연산의 시퀀스로서 묘사되기는 하지만, 당업자는 묘사된 순서가 본 발명의 범위를 한정하는 것으로 해석되지 않아야 함과 그리고 묘사된 연산 중 적어도 일부는 개조, 생략, 순서변경, 부가적 연산으로 보충, 또는 병렬로 수행될 수 있음을 인식할 것이다. 묘사된 프로세스의 실시형태는, 여기에서 설명된 컴퓨팅 시스템과 같은, 컴퓨팅 시스템에 의해 실행되는 컴퓨터-실행가능한 명령어의 다양한 조합을 사용하여 구현될 수 있다.
실시형태는, 연산(400)에 의해 묘사된 바와 같이, 데이터를 기존 메모리 구조에 첨부함으로써 새롭게 식별된 속성 및 관련된 총계 좌표를 n-차원 큐브에 추가할 수 있다. 실시형태는 램("RAM")과 같은 시스템 메모리에 슬라이스 데이터 구조를 유지할 수 있다. 실시형태는, 부가적 파티션에 복제될 수 있는, 배킹 파티션(backing partition) 상에 슬라이스 데이터 구조의 사본을 더 유지할 수 있다.
다양한 실시형태에서, 새로운 차원은 최종 사용자에 의해 자동-발견가능하도록 될 수 있다. 실시형태는, 새로운 차원의 표시를 최종 사용자에 디스플레이할 수 있는, 내장가능한 분석계 모듈을 동작시키는 클라이언트 디바이스에 새로운 차원을 나타내는 정보를 송신할 수 있다. 마우스 움직임 또는 마우스 클릭과 같은, 새로운 차원에 대한 사용자의 반응은 새로운 차원에 대한 사용자의 관심을 측정하고 n-차원 큐브에서의 데이터 포인트를 컴퓨팅하기 위한 우선순위를 조절하도록 사용될 수 있다.
연산(402)에 의해 묘사된 바와 같이, 실시형태는 중앙집중화된 데이터 사전을 통해 슬라이스를 첨부 및 교체할 수 있다. 데이터 사전은 데이터베이스 관리 시스템에서의 하나 이상의 테이블을 포함할 수 있다. 데이터 사전은 개선된 부하 밸런싱 능력 및 증가된 신뢰도를 제공할 목적으로 파티셔닝 및 복제될 수 있다. 연산(404)에 의해 묘사된 바와 같이, 실시형태는, 용어 매트릭스 또는 매트릭스들에 의해 지칭될 수 있는, n-차원 큐브의 영역을 나타내는 다양한 인덱스 구조를 유지할 수 있다. 실시형태는 또한 슬라이스, 슬라이스 영역, 및 데이터 포인트에 대한 인덱스 구조를 유지할 수 있다.
실시형태는, 연산(406)에 의해 묘사된 바와 같이, 종속성 트리를 구축함으로써 n-차원 큐브의 뷰를 부분적으로 실체화할 수 있다. 종속성 트리를 구축하는 것은 n-차원 큐브에서의 각각의 좌표 교차점에서 데이터 포인트를 직접 계산하는 대신에 수행될 수 있다. 다양한 기술은, 연산(408, 410)에 의해 묘사된 것들과 같이, 종속성 트리를 구축하도록 채용될 수 있다.
연산(408)은 종속성 트리를 구축하도록 차원 속성 내에서의 고유 계층구조를 이용하는 것을 묘사한다. 실시형태는 가장 거친 입도에서의 총계보다 더 높은 우선순위로 가장 미세한 입도에서의 총계를 계산할 수 있다. 미세-입도 총계는 그 후 거친-입도 총계를 형성하도록 투영될 수 있다. 실시형태는, 사용자 관심의 표시에 응답하여서와 같이, 필요로 될 때까지 거친-입도 총계의 계산을 연기할 수 있다.
연산(410)은 유사한 종속성 트리가 적용되어야 하는 n-차원 큐브 구조를 식별하기 위해 추론, 추정, 분류 모델, 및 다른 유사한 기술을 사용하는 것을 묘사한다. 새로운 차원, 척도 또는 속성은, 추가적 개조와 함께 또는 없이, 그 종속성 모델이 클로닝될 수 있도록 기존 차원성과의 유사성을 가질 수 있다. 실시형태는, 일부 경우에, 새로운 속성들 간 고유한 대응을 식별할 수 있을 수 있다. 예를 들어, 새로운 스토어는 기존 스토어와 동일한 데이터 종속성을 가질 수 있다. 고유한 대응이 발견되지 않는 경우, 가장 가까운 이웃이, 분류와 같은, 기술을 사용하여 발견될 수 있다. 가장 가까운 이웃의 종속성 트리가 그 후 발견되고 새로운 차원, 척도, 또는 속성에 적용을 위해 필요에 따라 조절될 수 있다.
분류 및 추론 기술은 클로닝되어야 하는 n-차원 큐브 구조를 식별하기 위해 n-차원 큐브의 액세스 패턴에 적용될 수 있다. 예를 들어, n-차원 큐브의 사용자는 그룹으로 분류될 수 있다. 그룹 내의 사용자의 액세스 패턴은, 예를 들어, 어느 n-차원 큐브 구조가 가장 빈번하게 액세스되는지 결정하는 것, 전형적 드릴-다운 깊이를 식별하는 것, 공통적 피벗을 식별하는 것 등에 의해 분석될 수 있다. 동일한 그룹 내에 드는 새로운 사용자에 대한 n-차원 큐브 구조를 구축할 때, 이러한 정보는, 컴퓨팅 우선순위와 같은, 새로운 n-차원 큐브 구조의 다양한 태양에서 반영될 수 있다.
도 5a는 호스팅된 분석계 서비스를 제공하기 위한 시스템의 일 실시형태를 묘사하는 블록 선도이다. 호스팅된 분석계 시스템(500)은 시스템의 다양한 모듈의 활동을 조정하는 제어 평면(502)에 의해 관리될 수 있다.
이미지 렌더링(504) 모듈은, 그래프 및 차트와 같은, 매립형 사용자-인터페이스 컴포넌트에 대한 렌더링 서비스를 제공할 수 있다. 결과 세트 관리(506) 모듈은 분석을 수행한 결과와 관련 있는 이력 정보, 데이터 캐시 등을 유지하고 있을 수 있다. 사용자 인터페이스 카탈로그(508) 모듈은, 매립형 분석계 특징을 포함하는 애플리케이션의 사용자 인터페이스에 삽입될 수 있는, 이미지 등과 같은, 매립형 분석계에 대한 사용자 인터페이스 요소의 리파지토리를 유지하고 있을 수 있다. 보고 파라미터 관리(510) 모듈은, 시간 기간, 지리적 지역, 보고에 포함할 차원, 소망의 드릴-다운 레벨 등과 같은, 분석 보고를 발생시키는데 사용될 파라미터의 리파지토리를 포함할 수 있다.
총계(512) 모듈은 다양한 차원 및 차원의 조합에서 총계 값을 계산하기 위한 연산을 수행할 수 있다. 예를 들어, 총계(512) 모듈은 특정 상점, 지리적 지역, 및 주에 대한 매월, 매주, 및 매일 판매 데이터를 계산할 수 있다.
유도된 계산(514) 모듈은 총계 데이터 및 다른 정보에 기반하여 2차 계산을 수행할 수 있다. 맞춤형 계산(516) 모듈은 보고-특정적 또는 사용자-제공된 계산을 수행할 수 있다. 맞춤형 계산은, 예를 들어, 애플리케이션 발행자에 의해 제공될 수 있다.
시나리오 층(518) 모듈은 "홧-이프(what-if)" 시나리오의 시뮬레이션, 프로젝션 또는 다른 유형과 관련된 연산을 수행할 수 있다. 이것들은, 예를 들어, 애플리케이션 발행자에 의해 제공된 맞춤형 시나리오일 수 있다.
소스 및 접속 파라미터 카탈로그(520)는 다양한 정보 소스의 위치를 찾아내고 그에 접속하는데 사용되는 정보를 유지하고 있을 수 있다. 소스의 위치를 찾아내기 위한 정보는 네트워크 주소, 유니폼 리소스 로케이터("URL") 등을 포함할 수 있다. 접속하기 위한 정보는 다양한 형태의 크리덴셜, 계정, 사용자 이름 등을 포함할 수 있다.
메타데이터 관리(522) 모듈은, 관계형 데이터 소스(528), 비-관계형 데이터 소스(530), 파일-기반 소스(532), 스트리밍 소스(534), 및 클라우드-기반 데이터 소스(536)와 같은, 다양한 데이터 소스와 인터페이싱하는데 사용되는 다양한 형태의 메타데이터 및 다른 정보를 유지하고 있을 수 있다. 실시형태는 데이터 변환(524) 모듈과 함께 메타데이터 관리(522) 모듈로부터 메타데이터를 채용할 수 있다. 데이터 변환(524) 모듈은 들어오는 데이터 상에 데이터 변환 및 데이터 정화 연산을 수행할 수 있다.
스케줄러(526) 모듈은 호스팅된 분석계 시스템(500)에 의해 수행되는 다양한 활동의 타이밍을 조정할 수 있다. 조정은 n-차원 큐브 재구축을 스케줄링하는 것, 데이터 검색을 스케줄링하는 것 등을 수반할 수 있다.
다양한 데이터 소스가 채용될 수 있다. 이것들은 SQL-기반 관계형 데이터베이스 관리 시스템과 같은 관계형 데이터 소스(528)는 물론 비-관계형 데이터 소스(530)도 포함한다. 다양한 비-관계형 데이터 소스(530)는 NoSQL 데이터베이스 시스템, 키-값 쌍 데이터베이스, 객체-관계형 데이터베이스 등을 포함할 수 있다. 문서 리파지토리, 로그 파일 등과 같은 다양한 파일-기반 소스(532)가 사용될 수 있다. 로그 파일은 또한, 데이터가 진행 중 기반으로 업데이트될 수 있는 데이터 소스의 다른 유형을 또한 포함할 수 있는, 스트리밍 데이터 소스(534)로서 처리될 수 있다. 다른 스트리밍 데이터 소스(534)로 분류될 수 있는 다른 일례는, 멀티-플레이어 비디오 게임과 같은, 비디오게임으로부터 발생된 데이터이다.
다양한 유형의 클라우드-기반 데이터 소스(536)가 사용될 수 있다. 이것들은 호스팅된 분석계 서비스의 제공자, 애플리케이션 발행자, 애플리케이션의 사용자, 또는 제3자에 의해 유지되는 다양한 웹 사이트 또는 데이터 소스를 포함할 수 있다.
도 5b는 실시간 데이터 소스로부터의 데이터의 유입 및 프로세싱을 위한 프로세스를 묘사한다. 데이터 소스(560)는 어댑터(556) 및 정화 파이프라인(552)에 통신 결합될 수 있다. 데이터 소스(562)와 같은 부가적 데이터 소스는, 어댑터(558) 및 정화 파이프라인(554)과 같은, 다른 어댑터 및 파이프라인에 통신 결합될 수 있다.
어댑터(556)는 데이터 소스(560)로부터의 데이터를 정화 파이프라인(552)에 의한 프로세싱에 적합한 포맷으로 변환할 수 있다. 정화 파이프라인(552)에 의해 수행되는 연산은 들어오는 데이터 상에 하나 이상의 번역 또는 변환을 수행하는 것을 포함할 수 있다. 예는 어간 찾기, 기본형 찾기 등을 포함한다. 정화 파이프라인(552)은 멀티플렉싱일 수 있다. 이것은 각각의 수신지 n-차원 큐브에서 사용된 정규화된 포맷과 매칭하는 정규화된 포맷으로 데이터를 산출하기 위해 다수의 경로를 따라 정화를 수행하는 것을 포함할 수 있다.
도 5b는 분석계 및 저장(550) 모듈을 묘사한다. 이것은, 도 5a에서의 모듈(502-526)과 같은, 분석계를 수행하기 위한 다양한 컴포넌트를 지칭할 수 있다. 정화 파이프라인(552, 554)으로부터 들어오는 정화된 데이터는 분석계 및 저장(550) 모듈에 의해 프로세싱될 수 있다. 프로세싱은 총계를 수행하는 것, 맞춤형 계산을 수행하는 것, 시나리오 모델링 등과 같은 연산을 포함할 수 있다. 정화 파이프라인(552, 554)으로부터의 데이터뿐만 아니라, 어느 계산된 또는 유도된 값이라도, 적합한 n-차원 큐브에 라우팅 및 저장될 수 있다.
본 발명의 실시형태는 많은 유형의 데이터베이스 관리 시스템("DBMS")과 함께 채용될 수 있다. DBMS는 저장 및 검색 연산이 수행될 수 있는 데이터의 조직된 집합을 유지하기 위한 소프트웨어 및 하드웨어 시스템이다. DBMS에서, 데이터는 전형적으로는 키 값과 추가적 데이터 간 연관에 의해 조직된다. 연관의 본성은 데이터의 집합에서 존재하는 현실-세계 관계에 기반할 수도 있고, 그것은 임의일 수도 있다. 데이터 정의, 질의, 업데이트 및 관리를 포함하는 다양한 연산이 DBMS에 의해 수행될 수 있다. 일부 DBMS는 구조화된 질의 언어("SQL")와 같은 질의 언어를 사용하여 데이터베이스와의 상호작용을 위해 제공되는 한편, 다른 것들은 put 및 get 등과 같은 연산을 포함하고 있는 API를 사용한다. 데이터베이스와의 상호작용은 또한, 하이퍼텍스트 마크업 언어("HTML") 및 확장 마크업 언어("XML")와 같은, 다양한 프로토콜 또는 표준에 기반할 수 있다. DBMS는 고체-상태 드라이브와 같은 하나 이상의 저장 디바이스 상에 데이터를 저장하도록 역할하는 저장 엔진과 같은 다양한 아키텍처 컴포넌트를 포함할 수 있다.
도 6은 본 발명의 태양이 실시될 수 있는 분산형 컴퓨팅 환경의 일례를 묘사하는 선도이다. 다양한 사용자(600a)는 데이터 센터(620) 내의 다양한 컴퓨팅 노드(610a, 610b, 610c) 상에서 실행되는 프로세스로 통신 네트워크(604)를 통하여 통신하도록, 어느 유형의 컴퓨팅 디바이스(602a) 상에서라도 동작하는, 다양한 클라이언트 애플리케이션과 상호작용할 수 있다. 대안으로, 클라이언트 애플리케이션(602b)은 사용자 개입 없이 통신할 수 있다. 통신 네트워크(604)는, 인터넷, 유선 및 무선 랜, 광섬유 네트워크, 위성 통신 등을 포함하는, 통신 기술의 어느 조합이라도 포함할 수 있다. 어느 수의 네트워킹 프로토콜이라도 채용될 수 있다.
데이터 센터(620) 내에서 동작하는 컴퓨팅 노드(610a, 610b, 610c) 상에서 실행되는 프로세스와의 통신은 게이트웨이(606) 및 라우터(608)를 통하여 제공될 수 있다. 수많은 다른 네트워크 구성이 또한 채용될 수 있다. 도 6에 명시적으로 묘사되지는 않지만, 다양한 인증 메커니즘, 웹 서비스 층, 비즈니스 객체, 또는 다른 중간 층이 컴퓨팅 노드(610a, 610b, 610c) 상에서 실행되는 프로세스와의 통신을 중개하도록 제공될 수 있다. 이들 중간 층 중 일부는 자체가 컴퓨팅 노드 중 하나 이상 상에서 실행되는 프로세스를 포함할 수 있다. 컴퓨팅 노드(610a, 610b, 610c) 및 거기서 실행되는 프로세스는 또한 라우터(608)를 통하여 서로 통신할 수 있다. 대안으로, 별개의 통신 경로가 채용될 수 있다. 일부 실시형태에서, 데이터 센터(620)는, 컴퓨팅 노드 및 거기서 실행되는 프로세스가 다른 데이터 센터 내에서 동작하는 컴퓨팅 노드 및 프로세스와 통신할 수 있도록, 부가적 데이터 센터와 통신하도록 구성될 수 있다.
컴퓨팅 노드(610a)는 하나 이상의 프로세서(616), 하나 이상의 메모리(618), 및 하나 이상의 저장 디바이스(614)를 포함하는 물리적 하드웨어 상에 상주하는 것으로 묘사된다. 컴퓨팅 노드(610a) 상의 프로세스는 운영 체제와 함께 실행될 수 있거나 대안으로, 프로세서(616), 메모리(618) 또는 저장 디바이스(614)와 같은, 물리적 자원과 직접 상호작용하는 베어-메탈 프로세스(bare-metal process)로서 실행될 수 있다.
컴퓨팅 노드(610b, 610c)는, 물리적 프로세서, 메모리 및 저장 디바이스와 같은 다양한 물리적 자원으로의 공유된 액세스를 제공할 수 있는, 가상 머신 호스트(612) 상에서 동작하는 것으로 묘사된다. 어느 수의 가상화 메커니즘이라도 컴퓨팅 노드를 호스팅하도록 채용될 수 있다.
도 6에 묘사된 다양한 컴퓨팅 노드는 웹 서비스, 데이터베이스 관리 시스템, 비즈니스 객체, 모니터링 및 진단 기능 등을 호스팅하도록 구성될 수 있다. 컴퓨팅 노드는 퍼스널 컴퓨터, 서버, 클러스터링된 컴퓨팅 디바이스 등과 같은 다양한 유형의 컴퓨팅 자원을 지칭할 수 있다. 컴퓨팅 노드는, 예를 들어, 셀 폰, 스마트폰, 태블릿, 임베디드 디바이스 등과 같은 다양한 컴퓨팅 디바이스를 지칭할 수 있다. 하드웨어 형태로 구현될 때, 컴퓨팅 노드는 일반적으로는 컴퓨터-판독가능한 명령어를 저장하도록 구성된 하나 이상의 메모리 및 명령어를 판독 및 실행하도록 구성된 하나 이상의 프로세서와 연관된다. 하드웨어-기반 컴퓨팅 노드는 또한 하나 이상의 저장 디바이스, 네트워크 인터페이스, 통신 버스, 사용자 인터페이스 디바이스 등을 포함할 수 있다. 컴퓨팅 노드는 또한, 하이퍼바이저와 함께 또는 없이 구현된 가상 머신, 가상화된 베어-메탈 환경 등과 같은 가상화된 컴퓨팅 자원을 망라한다. 가상화-기반 컴퓨팅 노드는 하드웨어 자원으로의 가상화된 액세스는 물론 비-가상화된 액세스도 가질 수 있다. 컴퓨팅 노드는 운영 체제는 물론 하나 이상의 애플리케이션 프로그램도 실행하도록 구성될 수 있다. 일부 실시형태에서, 컴퓨팅 노드는 또한 베어-메탈 애플리케이션 프로그램을 포함할 수 있다.
적어도 일부 실시형태에서, 여기에서 설명되는 기술 중 하나 이상 중 일부 또는 전부를 구현하는 서버는 하나 이상의 컴퓨터-액세스가능한 매체를 포함하거나 그에 액세스하도록 구성되는 범용 컴퓨터 시스템을 포함할 수 있다. 도 7은 하나 이상의 컴퓨터-액세스가능한 매체를 포함하거나 그에 액세스하도록 구성되는 범용 컴퓨터 시스템을 묘사한다. 예시된 실시형태에서, 컴퓨팅 디바이스(700)는 입/출력(I/O) 인터페이스(730)를 통하여 시스템 메모리(720)에 결합된 (여기에서는 단수형으로 프로세서(710)로 또는 복수형으로 프로세스(710)들로 지칭될 수 있는) 하나 이상의 프로세서(710a, 710b, 및/또는 710n)를 포함한다. 컴퓨팅 디바이스(700)는 I/O 인터페이스(730)에 결합된 네트워크 인터페이스(740)를 더 포함한다.
다양한 실시형태에서, 컴퓨팅 디바이스(700)는 하나의 프로세서(710)를 포함하는 유니프로세서, 또는 수 개의 프로세서(710)(예를 들어, 2개, 4개, 8개 또는 다른 적합한 수)를 포함하는 멀티프로세서 시스템일 수 있다. 프로세서(710)는 명령어를 실행할 수 있는 어느 적합한 프로세서라도 될 수 있다. 예를 들어, 다양한 실시형태에서, 프로세서(610)는, x86, PowerPC, SPARC, 또는 MIPS ISA, 또는 어느 다른 적합한 ISA와 같은 각종 명령어 세트 아키텍처(ISA) 중 어느 것이라도 구현하는 범용 또는 내장 프로세서일 수 있다. 멀티프로세서 시스템에서, 프로세서(610)의 각각은, 반드시는 아니지만, 공통으로 동일한 ISA를 구현할 수 있다.
일부 실시형태에서, 그래픽 프로세싱 유닛("GPU")(712)은 그래픽 렌더링 및/또는 물리 프로세싱 능력을 제공하는데 참가할 수 있다. GPU는, 예를 들어, 그래픽 계산에 전문적인 고도로 병렬화된 프로세서 아키텍처를 포함할 수 있다. 일부 실시형태에서, 프로세서(710) 및 GPU(712)는 동일한 유형의 디바이스 중 하나 이상으로서 구현될 수 있다.
시스템 메모리(720)는 프로세서(들)(610)가 액세스가능한 데이터 및 명령어를 저장하도록 구성될 수 있다. 다양한 실시형태에서, 시스템 메모리(720)는, 정적 램("SRAM"), 동기식 동적 RAM("SDRAM"), 비휘발성/플래시®-유형 메모리, 또는 어느 다른 유형의 메모리와 같은, 어느 적합한 메모리 기술이라도 사용하여 구현될 수 있다. 예시된 실시형태에서, 위에서 설명된 그들 방법, 기술 및 데이터와 같은, 하나 이상의 소망 기능을 구현하는 프로그램 명령어 및 데이터는 코드(725) 및 데이터(726)로서 시스템 메모리(720) 내에 저장되는 것으로 도시되어 있다.
일 실시형태에서, I/O 인터페이스(730)는 프로세서(710)와, 시스템 메모리(720)와, 네트워크 인터페이스(들)(740) 또는 다른 주변 인터페이스를 포함하는, 디바이스 내 어느 주변장치 간 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시형태에서, I/O 인터페이스(730)는 어느 필요한 프로토콜, 타이밍, 또는 다른 데이터 변환이라도 수행하여 하나의 컴포넌트(예를 들어, 시스템 메모리(720))로부터의 데이터 신호를 다른 컴포넌트(예를 들어, 프로세서(610))에 의한 사용에 적합한 포맷으로 변환할 수 있다. 일부 실시형태에서, I/O 인터페이스(730)는, 예를 들어, 주변 컴포넌트 상호접속(PCI) 버스 표준 또는 범용 직렬 버스(USB) 표준의 변종과 같이 다양한 유형의 주변 버스를 통해 배속된 디바이스에 대한 지원을 포함할 수 있다. 일부 실시형태에서, I/O 인터페이스(730)의 기능은, 예를 들어, 노스 브리지 및 사우스 브리지와 같은 2개 이상의 별개 컴포넌트로 나뉠 수 있다. 또한, 일부 실시형태에서, 시스템 메모리(620)로의 인터페이스와 같은, I/O 인터페이스(730)의 기능성 중 일부 또는 전부는 프로세서(710)에 직접 편입될 수 있다.
네트워크 인터페이스(들)(740)는 컴퓨팅 시스템(700)과, 예를 들어, 다른 컴퓨터 시스템 또는 디바이스와 같이 네트워크 또는 네트워크들(750)에 배속된 다른 디바이스 또는 디바이스들(760) 간 데이터가 교환될 수 있게 하도록 구성될 수 있다. 다양한 실시형태에서, 네트워크 인터페이스(들)(740)는, 예를 들어, 이더넷 네트워크 유형과 같은 어느 적합한 유선 또는 무선 일반 데이터 네트워크라도 통하여 통신을 지원할 수 있다. 부가적으로, 네트워크 인터페이스(들)(740)는 아날로그 음성 네트워크 또는 디지털 광섬유 통신 네트워크와 같은 원격통신/전화 네트워크를 통하여, 광섬유 채널 SAN(저장소 영역 네트워크)과 같은 저장소 영역 네트워크를 통하여, 또는 어느 다른 적합한 유형의 네트워크 및/또는 프로토콜이라도 통하여 통신을 지원할 수 있다.
일부 실시형태에서, 시스템 메모리(720)는 대응하는 방법 및 장치의 실시형태를 구현하도록 위에서 설명된 바와 같은 프로그램 명령어 및 데이터를 저장하도록 구성된 컴퓨터-액세스가능한 매체의 일 실시형태일 수 있다. 그렇지만, 다른 실시형태에서, 프로그램 명령어 및/또는 데이터는 여러 다른 유형의 컴퓨터-액세스가능한 매체 상에서 수신, 송신 또는 저장될 수 있다. 일반적으로 말하면, 컴퓨터-액세스가능한 매체는 자기 또는 광학 매체, 예를 들어, I/O 인터페이스(730)를 통하여 컴퓨팅 디바이스(700)에 결합된 디스크 또는 DVD/CD와 같은 메모리 매체 또는 비-일시적 저장 매체를 포함할 수 있다. 비-일시적 컴퓨터-액세스가능한 저장 매체는 또한 시스템 메모리(720) 또는 다른 유형의 메모리로서 컴퓨팅 디바이스(700)의 일부 실시형태에 포함될 수 있는 RAM(예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM 등), ROM 등과 같은 어느 휘발성 또는 비-휘발성 매체라도 포함할 수 있다. 더욱, 컴퓨터-액세스가능한 매체는 네트워크 인터페이스(740)를 통하여 구현될 수 있는 것들과 같은 네트워크 및/또는 무선 링크와 같은 통신 매체를 통하여 전해지는 전기, 전자기 또는 디지털 신호와 같은 신호 또는 전송 매체를 포함할 수 있다. 도 7에 예시된 것과 같은 다수의 컴퓨팅 디바이스 중 일부 또는 전부는 다양한 실시형태에서 설명된 기능성을 구현하도록 사용될 수 있다; 예를 들어, 다양한 다른 디바이스 및 서버 상에서 실행되는 소프트웨어 컴포넌트는 기능성을 제공하도록 협업할 수 있다. 일부 실시형태에서, 설명된 기능성 중 일부는, 범용 컴퓨터 시스템을 사용하여 구현되는 대신에 또는 그에 부가하여, 특수용 컴퓨터 시스템, 네트워크 디바이스, 또는 저장 디바이스를 사용하여 구현될 수 있다. 용어 "컴퓨팅 디바이스"는, 여기에서 사용될 때, 적어도 모든 이들 유형의 디바이스를 지칭하고, 이들 유형의 디바이스로 한정되지는 않는다.
컴퓨팅 노드라고도 지칭될 수 있는 컴퓨트 노드는, 태블릿 컴퓨터, 퍼스널 컴퓨터, 스마트폰, 게임 콘솔, 상품-하드웨어 컴퓨터, 가상 머신, 웹 서비스, 컴퓨팅 클러스터, 및 컴퓨팅 기기와 같은, 광범위한 다양한 컴퓨팅 환경 상에서 구현될 수 있다. 이들 컴퓨팅 디바이스 또는 환경 중 어느 것이라도, 편의상, 컴퓨트 노드라고 또는 컴퓨팅 노드라고 기술될 수 있다.
인터넷 및/또는 다른 네트워크를 통하여 분산형 클라이언트 세트에 액세스가능한 (다양한 유형의 클라우드-기반 컴퓨팅 또는 저장과 같은) 하나 이상의 웹 서비스를 제공하도록 공중 부문 조직 또는 회사와 같은 개체에 의해 셋업된 네트워크는 제공자 네트워크라고 칭해질 수 있다. 그러한 제공자 네트워크는, 제공자 네트워크에 의해 제공되는 기반구조 및 웹 서비스를 구현 및 분산시키는데 필요로 되는, 물리적 및/또는 가상화된 컴퓨터 서버, 저장 디바이스, 네트워킹 장비 등의 집합과 같은, 다양한 자원 풀을 호스팅하는 수많은 데이터 센터를 포함할 수 있다. 자원은 일부 실시형태에서, 저장소에 대한 소정 양의 저장 용량, 프로세싱을 위한 프로세싱 능력, 인스턴스, 관련 서비스 세트 등과 같은, 웹 서비스와 관련된 다양한 유닛으로 클라이언트에 제공될 수 있다. 가상 컴퓨팅 인스턴스는, 예를 들어, (CPU의 유형 및 수, 주 메모리 사이즈 등을 나타냄으로써 특정될 수 있는) 특정된 계산 능력 및 특정된 소프트웨어 스택(예를 들어, 순차로 하이퍼바이저 위에서 실행될 수 있는 특정 버전의 운영 체제)을 갖는 하나 이상의 서버를 포함할 수 있다.
여러 다른 유형의 컴퓨팅 디바이스는, 범용 또는 특수용 컴퓨터 서버, 저장 디바이스, 네트워크 디바이스 등을 포함하여, 여러 다른 실시형태에서 제공자 네트워크의 자원을 구현하도록 조합으로 또는 단독으로 사용될 수 있다. 일부 실시형태에서, 클라이언트 또는 사용자에게는, 예를 들어, 관리책임자 로그인 및 패스워드를 사용자에 부여함으로써 자원 인스턴스로의 직접 액세스가 제공될 수 있다. 다른 실시형태에서, 제공자 네트워크 운용자는, 예를 들어, 클라이언트가 인스턴스 또는 실행 플랫폼에 직접 액세스할 것을 요구함이 없이, 클라이언트가 특정된 클라이언트 애플리케이션에 대한 실행 요건을 특정할 수 있게 하고 애플리케이션에 적합한 (애플리케이션 서버 인스턴스, JavaTM 가상 머신(JVM), 범용 또는 특수용 운영 체제, 다양한 해석된 또는 컴파일링된 프로그래밍 언어를 지원하는 플랫폼 - 루비(Ruby), 펄(Perl), 파이선(Python), C, C++ 등 - 또는 고성능 컴퓨팅 플랫폼과 같은) 실행 플랫폼 상에서 클라이언트를 대리하여 애플리케이션의 실행을 스케줄링할 수 있다. 소정 실행 플랫폼은 일부 구현에서는 하나 이상의 자원 인스턴스를 이용할 수 있다; 다른 구현에서는 다수의 실행 플랫폼이 단일 자원 인스턴스에 매핑될 수 있다.
많은 환경에서, 여러 다른 유형의 가상화된 컴퓨팅, 저장, 및/또는 다른 네트워크-액세스가능한 기능성을 구현하는 제공자 네트워크의 운용자는 고객이 다양한 자원 취득 모드로 자원으로의 액세스를 예약 또는 구입할 수 있게 할 수 있다. 컴퓨팅 자원 제공자는 고객이 소망 컴퓨팅 자원을 선택 및 론칭하고, 애플리케이션 컴포넌트를 컴퓨팅 자원에 전개하고, 그리고 환경에서 실행되는 애플리케이션을 유지하기 위한 기능을 제공할 수 있다. 부가적으로, 컴퓨팅 자원 제공자는, 애플리케이션에 대한 수요 또는 그 용량 요건이 변화함에 따라, 수동으로든 자동 스케일링을 통해서든, 고객이 애플리케이션에 할당된 자원의 수 및 유형을 신속하고 용이하게 업 스케일링 또는 다운 스케일링하기 위한 추가적 기능을 제공할 수 있다. 컴퓨팅 자원 제공자에 의해 제공된 컴퓨팅 자원은, 인스턴스라고 지칭될 수 있는, 개별 유닛에서 이용가능하게 될 수 있다. 인스턴스는 물리적 서버 하드웨어 플랫폼, 서버 상에서 실행되는 가상 머신 인스턴스, 또는 그 둘의 어떤 조합을 표현할 수 있다. 여러 다른 운영 체제(OS) 및/또는 하이퍼바이저를 실행하는 자원의 여러 다른 사이즈를 포함하는, 그리고 다양한 설치된 소프트웨어 애플리케이션, 런타임 등을 갖는, 인스턴스의 다양한 유형 및 구성이 이용가능하게 될 수 있다. 인스턴스는, 예를 들어, 논리적 영역, 결함 내성 영역, 데이터 센터, 또는 기저 컴퓨팅 하드웨어의 다른 지리적 장소를 표현하는 특정 가용성 구역에서 더 이용가능할 수 있다. 인스턴스는 인스턴스의 중복을 개선하도록 가용성 구역을 가로질러 또는 가용성 구역 내에 복사될 수 있고, 인스턴스는 특정 가용성 구역 내에서 또는 가용성 구역을 가로질러 이주될 수 있다. 일례로서, 가용성 구역에서의 특정 서버와의 클라이언트 통신에 대한 레이턴시는 다른 서버와의 클라이언트 통신에 대한 레이턴시보다 더 작을 수 있다. 그와 같이, 인스턴스는 전반적 클라이언트 경험을 개선하기 위해 더 높은 레이턴시 서버로부터 더 낮은 레이턴시 서버로 이주될 수 있다.
일부 실시형태에서, 제공자 네트워크는 복수의 지리적 지역으로 조직될 수 있고, 각각의 지역은 하나 이상의 가용성 구역을 포함할 수 있다. 순차로 (가용성 컨테이너라고도 지칭될 수 있는) 가용성 구역은 소정 가용성 구역에서의 자원이 다른 가용성 구역에서의 장애로부터 격리 또는 고립될 수 있는 그러한 방식으로 구성된 하나 이상의 구별되는 장소 또는 데이터 센터를 포함할 수 있다. 즉, 하나의 가용성 구역에서의 장애는 어느 다른 가용성 구역에서의 장애도 초래할 것으로 예상되지 않을 수 있다. 그리하여, 자원 인스턴스의 가용성 프로파일은 다른 가용성 구역에서의 자원 인스턴스의 가용성 프로파일과는 독립적이도록 의도된다. 클라이언트는 각각의 가용성 구역에서 다수의 애플리케이션 인스턴스를 론칭함으로써 단일 장소에서의 장애로부터 그들 애플리케이션을 보호할 수 있을 수 있다. 동시에, 일부 구현에서는 저렴하고 낮은 레이턴시 네트워크 접속성이 동일한 지리적 지역 내에 상주하는 자원 인스턴스들 간에 제공될 수 있다(그리고 동일한 가용성 구역의 자원들 간 네트워크 송신은 훨씬 더 빠를 수 있다).
선행하는 절에서 설명된 프로세스, 방법 및 알고리즘의 각각은 하나 이상의 컴퓨터 또는 컴퓨터 프로세서에 의해 실행되는 코드 모듈에서 구체화되고, 그리고 그에 의해 완전히 또는 부분적으로 자동화될 수 있다. 코드 모듈은, 하드 드라이브, 고체 상태 메모리, 광학 디스크 등과 같은, 어느 유형의 비-일시적 컴퓨터-판독가능한 매체 또는 컴퓨터 저장 디바이스 상에라도 저장될 수 있다. 프로세스 및 알고리즘은 부분적으로 또는 전적으로 애플리케이션-특정 회로에서 구현될 수 있다. 개시된 프로세스 및 프로세스 단계의 결과는, 예를 들어, 휘발성 또는 비-휘발성 저장소와 같은 어느 유형의 비-일시적 컴퓨터 저장소에라도, 영속적으로 또는 달리, 저장될 수 있다.
위에서 설명된 다양한 특징 및 프로세스는 서로 독립적으로 사용될 수 있거나, 다양한 방식으로 조합될 수 있다. 모든 가능한 조합 및 하위-조합은 본 발명의 범위 내에 들도록 의도된다. 부가적으로, 특정 방법 또는 프로세스 블록은 일부 구현에서는 생략될 수 있다. 여기에서 설명된 방법 및 프로세스는 또한 어느 특정 시퀀스로도 한정되지 않고, 그리고 그와 관련된 블록 또는 상태는 적합한 다른 시퀀스로 수행될 수 있다. 예를 들어, 설명된 블록 또는 상태는 구체적으로 개시된 것과는 다른 순서로 수행될 수 있거나, 또는 다수의 블록 또는 상태는 단일 블록 또는 상태로 조합될 수 있다. 그 예의 블록 또는 상태는 직렬로, 병렬로, 또는 어떤 다른 방식으로 수행될 수 있다. 블록 또는 상태는 개시된 예의 실시형태에 부가되거나 그로부터 제거될 수 있다. 여기에서 설명된 예의 시스템 및 컴포넌트는 설명된 것과는 다르게 구성될 수 있다. 예를 들어, 요소는 개시된 예의 실시형태에 부가되거나, 그로부터 제거되거나, 또는 그에 비해 재배열될 수 있다.
다양한 항목이 사용되고 있는 동안 저장소 상에 또는 메모리에 저장되어 있는 것으로 예시됨과, 그리고 이들 항목 또는 그 일부는 메모리 관리 및 데이터 무결성의 목적으로 메모리와 다른 저장 디바이스 간에 전송될 수 있음을 또한 인식할 것이다. 대안으로, 다른 실시형태에서, 소프트웨어 모듈 및/또는 시스템 중 일부 또는 전부는 다른 디바이스 상의 메모리에서 실행될 수 있고 컴퓨터-간 통신을 통하여 예시된 컴퓨팅 시스템과 통신할 수 있다. 더욱, 일부 실시형태에서, 시스템 및/또는 모듈의 일부 또는 전부는, 국한되는 것은 아니지만, 하나 이상의 주문형 반도체(ASIC), 표준 집적 회로, 컨트롤러(예를 들어, 적합한 명령어를 실행하는 것에 의함, 그리고 마이크로컨트롤러 및/또는 내장형 컨트롤러를 포함함), 필드-프로그래머블 게이트 어레이(FPGA), 콤플렉스 프로그래머블 로직 디바이스(CPLD) 등을 포함하는 펌웨어 및/또는 하드웨어에 적어도 부분적으로와 같이, 다른 방식으로 제공 또는 구현될 수 있다. 모듈, 시스템 및 데이터 구조 중 일부 또는 전부는, 적합한 접속을 통하여 또는 적합한 디바이스에 의해 판독될 하드 디스크, 메모리, 네트워크, 또는 포터블 미디어 물품과 같은, 컴퓨터-판독가능한 매체 상에 (예를 들어, 소프트웨어 명령어 또는 구조화된 데이터로서) 저장될 수 있다. 시스템, 모듈 및 데이터 구조는 또한, 무선-기반 및 유선/케이블-기반 매체를 포함하는, 다양한 컴퓨터-판독가능한 전송 매체 상에서 (예를 들어, 반송파 또는 다른 아날로그 또는 디지털 전파되는 신호의 일부분으로서) 발생된 데이터 신호로서 전송될 수 있고, (예를 들어, 단일 또는 멀티플렉싱된 아날로그 신호의 일부분으로서, 또는 다수의 이산 디지털 패킷 또는 프레임으로서) 다양한 형태를 취할 수 있다. 그러한 컴퓨터 프로그램은 또한 다른 실시형태에서는 다른 형태를 취할 수 있다. 따라서, 본 발명은 다른 컴퓨터 시스템 구성으로 실시될 수 있다.
상기한 것은 이하의 조항을 고려하여 더 잘 이해될 수 있다:
1. 데이터 분석계를 수행하기 위한 시스템으로서, 시스템은 개선된 스케일링 특성을 보유하고, 시스템은
제1 하나 이상의 컴퓨팅 노드 및 제2 하나 이상의 컴퓨팅 노드를 포함하는 복수의 컴퓨팅 노드로서, 복수의 컴퓨팅 노드는, 활성화될 때, n-차원 큐브의 슬라이스를 유지하고, 슬라이스는 데이터 포인트의 계층구조를 포함하고, 데이터 포인트는 하나 이상의 고정 차원과 하나 이상의 가변 차원의 교차점에 대응하는 복수의 컴퓨팅 노드; 및
컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 포함하고, 컴퓨터-판독가능한 명령어는, 실행시, 시스템으로 하여금 적어도
데이터 포인트의 계층구조의 제1 서브세트를 제1 하나 이상의 컴퓨팅 노드 상에 유지하되, 데이터 포인트는 계층구조의 데이터 포인트가 계산 수요의 제1 분류와 연관되는 것에 적어도 부분적으로 기반하여 제1 서브세트에 포함되고;
데이터 포인트의 계층구조의 제2 서브세트를 제2 하나 이상의 컴퓨팅 노드 상에 유지하되, 데이터 포인트는 계층구조의 데이터 포인트가 계산 수요의 제2 분류와 연관되는 것에 적어도 부분적으로 기반하여 제2 서브세트에 포함되고; 그리고
계층구조의 데이터 포인트에 액세스하라는 제1 요청을 제1 하나 이상의 컴퓨팅 노드 상에서 프로세싱함으로써 요청을 프로세싱하되, 제1 하나 이상의 컴퓨팅 노드는 계산 수요의 제1 분류에 적어도 부분적으로 기반하여 스케일링 메커니즘으로 구성되게 하는, 시스템.
2. 제1 조항에 있어서, 제1 분류는 높은 기록 빈도에 기반하고 그리고 스케일링 메커니즘은 계층구조의 제1 서브세트에서의 데이터 포인트를 제1 하나 이상의 컴퓨팅 노드 간에 수평으로 파티셔닝하는 것을 포함하는, 시스템.
3. 제1 조항에 있어서, 제1 분류는 높은 판독 빈도에 기반하고 그리고 스케일링 메커니즘은 제1 하나 이상의 컴퓨팅 노드가 기록가능한 파티션의 적어도 하나의 판독-전용 복제본을 포함하는 것을 포함하는, 시스템.
4. 제1 조항에 있어서, 실행시, 시스템으로 하여금 적어도
계층구조와 연관된 차원과 차원과 연관된 하나 이상의 계산 수요 간 매핑에 적어도 부분적으로 기반하여 계층구조의 영역을 분류하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
5. 제1 조항에 있어서, 실행시, 시스템으로 하여금 적어도
경로에서의 데이터 포인트에 대한 액세스의 빈도에 적어도 부분적으로 기반하여 계층구조에서의 경로를 식별하고; 그리고
액세스의 빈도가 임계 레벨 위에 있는 동안 경로와 연관된 데이터 포인트를 주 메모리에 유지하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
6. n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법으로서,
n-차원 큐브에서 데이터 포인트의 계층구조의 제1 서브세트를 식별하는 단계로서, 서브세트는 계층구조의 제1 서브세트에서의 데이터 포인트와 연관된 계산 수요에 적어도 부분적으로 기반하여 식별되는 식별하는 단계;
데이터 포인트와 연관된 계산 수요에 적어도 부분적으로 기반하여 스케일링 메커니즘을 선택하는 단계; 및
계층구조의 제1 서브세트를 적어도 제1 컴퓨팅 노드 및 제2 컴퓨팅 노드 상에 유지하는 단계로서, 계층구조의 제1 서브세트는 선택된 스케일링 메커니즘에 기반하여 적어도 제1 컴퓨팅 노드와 제2 컴퓨팅 노드 간에 파티셔닝 또는 복제되는 유지하는 단계를 포함하는, 방법.
7. 제6 조항에 있어서, 스케일링 메커니즘은 판독 빈도에 비해 기록 빈도가 높은 것에 적어도 부분적으로 기반하여 선택되는, 방법.
8. 제7 조항에 있어서,
계층구조의 제1 서브세트에서의 데이터 포인트를 적어도 제1 컴퓨팅 노드와 제2 컴퓨팅 노드 간에 수평으로 파티셔닝하는 단계를 더 포함하는, 방법.
9. 제6 조항에 있어서, 스케일링 메커니즘은 계층구조의 제1 서브세트에서의 데이터를 판독하라는 요청에 응답하기 위한 제1 컴퓨팅 노드의 용량에 비해 판독 빈도가 높은 것에 적어도 부분적으로 기반하여 선택되는, 방법.
10. 제9 조항에 있어서,
계층구조의 제1 서브세트의 적어도 일부를 제2 컴퓨팅 노드 상에 복제하는 단계로서, 계층구조의 제1 서브세트의 적어도 일부는 제1 컴퓨팅 노드 상에 유지되는 복제하는 단계를 더 포함하는, 방법.
11. 제6 조항에 있어서,
계층구조와 연관된 차원과 차원과 연관된 계산 수요 간 매핑에 적어도 부분적으로 기반하여 계층구조의 영역을 분류하는 단계를 더 포함하는, 방법.
12. 제6 조항에 있어서,
경로에서의 데이터 포인트에 대한 액세스의 빈도에 적어도 부분적으로 기반하여 계층구조에서의 경로를 식별하는 단계; 및
액세스의 빈도가 임계 레벨 위에 있는 동안 경로와 연관된 데이터 포인트를 주 메모리에 유지하는 단계를 더 포함하는, 방법.
13. 제6 조항에 있어서,
추가적 서브세트에서의 데이터 포인트와 연관된 계산 수요에 적어도 부분적으로 기반하여, 계층구조의 추가적 서브세트에 대한 제2 스케일링 메커니즘을 선택하는 단계를 더 포함하는, 방법.
14. 비-일시적 컴퓨터-판독가능한 저장 매체로서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
데이터 포인트의 계층구조를 적어도 제1 컴퓨팅 노드 및 제2 컴퓨팅 노드 상에 저장하기로 결정하고;
데이터 포인트의 계층구조의 제1 서브세트를 제1 하나 이상의 컴퓨팅 노드 상에 저장하되, 데이터 포인트는 계층구조에서의 데이터 포인트가 계산 수요의 제1 분류와 연관되는 것에 적어도 부분적으로 기반하여 제1 서브세트에 포함되고; 그리고
데이터 포인트의 계층구조의 제2 서브세트를 제2 하나 이상의 컴퓨팅 노드 상에 저장하되, 데이터 포인트는 계층구조에서의 데이터 포인트가 계산 수요의 제2 분류와 연관되는 것에 적어도 부분적으로 기반하여 제2 서브세트에 포함되게 하는 명령어를 저장해 놓은 비-일시적 컴퓨터-판독가능한 저장 매체.
15. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
제1 컴퓨팅 노드 및 제2 컴퓨팅 노드를 포함하는 복수의 컴퓨팅 노드 상에 n-차원 큐브의 슬라이스를 저장하기로 결정하되, 슬라이스는 하나 이상의 고정 차원과 하나 이상의 가변 차원의 교차점에 대응하는 데이터 포인트 및 추가적 데이터 포인트의 계층구조를 포함하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
16. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
제1 하나 이상의 컴퓨팅 노드로부터 데이터 포인트의 계층구조의 제1 서브세트의 일부를 재위치시키기로 결정하게 하는 추가적 명령어를 포함하고, 결정은 데이터 포인트와 연관된 계산 수요를 모니터링하는 것에 적어도 부분적으로 기반하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
17. 제14 조항에 있어서, 제1 분류는 높은 기록 빈도에 기반하고 그리고 계층구조의 제1 서브세트의 데이터 포인트는 제1 하나 이상의 컴퓨팅 노드 간에 수평으로 파티셔닝되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
18. 제14 조항에 있어서, 제1 분류는 높은 판독 빈도에 기반하고 그리고 제1 하나 이상의 컴퓨팅 노드는 기록가능한 파티션 및 판독-전용 복제본을 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
19. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
계층구조와 연관된 차원과 차원과 연관된 하나 이상의 계산 수요 간 매핑에 적어도 부분적으로 기반하여 계층구조의 영역을 분류하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
20. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
경로에서의 데이터 포인트에 대한 액세스의 빈도에 적어도 부분적으로 기반하여 계층구조에서의 경로를 식별하고; 그리고
액세스의 빈도가 임계 레벨 위에 있는 동안 경로와 연관된 데이터 포인트를 주 메모리에 유지하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
그리고 상기한 것은 이하의 추가적 세트의 조항을 고려하여 더 잘 이해될 수 있다:
1. 실시간 데이터 스트림을 수반하는 데이터 상에 온라인 분석 프로세싱을 수행하기 위한 시스템으로서, 시스템은
복수의 차원을 포함하는 n-차원 큐브를 유지하는 복수의 컴퓨팅 노드; 및
컴퓨터 판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 포함하고, 컴퓨터 판독가능한 명령어는, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
추가적 차원을 n-차원 큐브에 추가하는 것을 나타내는 정보를 수신하고;
데이터 슬라이스를 형성하고, 데이터 슬라이스는 적어도 추가적 차원과 복수의 차원 중 적어도 하나의 교차점에 대응하는 복수의 데이터 포인트를 포함하고; 그리고
복수의 데이터 포인트의 계층구조를 부분적으로 실체화하게 하되, 계층구조를 부분적으로 실체화하는 것은 복수의 데이터 포인트 중 제1 데이터 포인트와 복수의 데이터 포인트 중 제2 데이터 포인트 간 종속성을 식별하는 것을 포함하되, 부분적 실체화 동안 복수의 데이터 포인트 중 전부 미만이 컴퓨팅되고 있는, 시스템.
2. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
종속성을 나타내는 정보를 복수의 컴퓨팅 노드 중 적어도 하나 상에 유지된 리파지토리에 저장하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
3. 제2 조항에 있어서, 리파지토리는 데이터 슬라이스와 n-차원 큐브의 추가적 데이터 슬라이스 간 제2 종속성을 나타내는 정보를 포함하는, 시스템.
4. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
계층구조의 제1 데이터 포인트와 연관된 값을 계산하고;
제1 데이터 포인트로부터 계층구조의 추가적 데이터 포인트로의 경로를 식별하고, 추가적 데이터 포인트는 제1 데이터 포인트의 선조이고; 그리고
추가적 데이터 포인트가 제1 데이터 포인트에 대해 구식이라는 표시를 레코딩하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
5. 제1 조항에 있어서, 추가적 차원을 n-차원 큐브에 추가하는 것을 나타내는 정보는 추가적 차원에 대응하는 데이터를 포함하는, 시스템.
6. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
추가적 데이터 포인트의 후손이 데이터의 불완전한 세트와 연관되는 것에 적어도 부분적으로 기반하여, 계층구조의 추가적 데이터 포인트의 계산을 연기하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
7. n-차원 큐브를 복수의 컴퓨팅 노드 상에 유지하는 컴퓨터-구현된 방법으로서,
적어도 데이터 슬라이스를 복수의 컴퓨팅 노드 중 적어도 하나 상에 형성함으로써 추가적 차원을 n-차원 큐브에 추가하는 단계로서, 데이터 슬라이스는 적어도 추가적 차원과 n-차원 큐브의 복수의 차원 중 적어도 하나의 교차점에 대응하는 복수의 데이터 포인트를 포함하는 추가하는 단계; 및
복수의 데이터 포인트의 계층구조를 부분적으로 형성하는 단계를 포함하되, 계층구조를 부분적으로 형성하는 단계는 복수의 데이터 포인트 중 제1 데이터 포인트와 복수의 데이터 포인트 중 제2 데이터 포인트 간 종속성을 식별하는 단계를 포함하는, 컴퓨터-구현된 방법.
8. 제7 조항에 있어서,
데이터 슬라이스와 복수의 컴퓨팅 노드 중 제2 적어도 하나 상에 유지된 다른 데이터 슬라이스 간 제2 종속성을 식별하는 단계; 및
종속성을 나타내는 정보를 복수의 컴퓨팅 노드 중 제3 적어도 하나 상에 유지된 리파지토리에 저장하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
9. 제7 조항에 있어서,
계층구조의 제1 데이터 포인트에 대한 값을 계산하는 단계;
제1 데이터 포인트로부터 계층구조의 추가적 데이터 포인트로의 경로를 식별하는 단계로서, 추가적 데이터 포인트는 제1 데이터 포인트의 선조인 식별하는 단계; 및
추가적 데이터 포인트가 제1 데이터 포인트에 대해 구식이라는 표시를 레코딩하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
10. 제7 조항에 있어서,
추가적 차원을 n-차원 큐브에 추가하는 것을 나타내는 정보를 수신하는 단계를 더 포함하고, 정보는 추가적 차원에 대응하는 데이터를 포함하는, 컴퓨터-구현된 방법.
11. 제7 조항에 있어서,
추가적 데이터 포인트의 후손이 데이터의 불완전한 세트와 연관되는 것에 적어도 부분적으로 기반하여, 계층구조의 추가적 데이터 포인트의 계산을 연기하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
12. 제11 조항에 있어서, 추가적 데이터 포인트는 시간 기간을 표현하는 총계 값과 연관되는, 컴퓨터-구현된 방법.
13. 제11 조항에 있어서,
n-차원 큐브에서의 데이터에 대한 이전 액세스 패턴에 적어도 부분적으로 기반하여 추가적 데이터 포인트를 컴퓨팅하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
14. 제7 조항에 있어서,
추가적 데이터 포인트의 후손과 연관된 값을 외삽하는 것에 적어도 부분적으로 기반하여 계층구조의 추가적 데이터 포인트를 컴퓨팅하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
15. 제7 조항에 있어서,
계층구조가 변경된 속성 값에 대해 구식이라고 결정하는 단계;
변경된 속성 값에 대해 계층구조의 제1 레벨의 계산을 우선순위결정하는 단계;
계층구조의 제2 레벨의 계산을 연기하는 단계로서, 제2 레벨은 제1 레벨에 종속하는 연기하는 단계; 및
드릴-다운, 드릴-업, 또는 피벗 이벤트 중 적어도 하나에 응답하여 계층구조의 제2 레벨의 계산을 우선순위결정하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
16. 비-일시적 컴퓨터-판독가능한 저장 매체로서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
적어도 데이터 슬라이스를 복수의 컴퓨팅 노드 중 적어도 하나 상에 형성함으로써 추가적 차원을 n-차원 큐브에 추가하고, 데이터 슬라이스는 적어도 추가적 차원과 n-차원 큐브의 복수의 차원 중 적어도 하나의 교차점에 대응하는 복수의 데이터 포인트를 포함하고; 그리고
복수의 데이터 포인트의 계층구조를 부분적으로 형성하되, 계층구조를 부분적으로 형성하는 것은 복수의 데이터 포인트 중 제1 데이터 포인트와 복수의 데이터 포인트 중 제2 데이터 포인트 간 종속성을 식별하는 것을 포함하게 하는 명령어를 저장해 놓은 비-일시적 컴퓨터-판독가능한 저장 매체.
17. 제16 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
데이터 슬라이스와 복수의 컴퓨팅 노드 중 제2 적어도 하나 상에 유지된 다른 데이터 슬라이스 간 제2 종속성을 식별하고; 그리고
종속성을 나타내는 정보를 복수의 컴퓨팅 노드 중 제3 적어도 하나 상에 유지된 리파지토리에 저장하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
18. 제16 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
계층구조의 제1 데이터 포인트에 대한 값을 계산하고;
제1 데이터 포인트로부터 계층구조의 추가적 데이터 포인트로의 경로를 식별하고, 추가적 데이터 포인트는 제1 데이터 포인트의 선조이고; 그리고
추가적 데이터 포인트와 연관된 추가적 값이 제1 데이터 포인트에 대해 구식이라는 표시를 레코딩하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
19. 제16 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
추가적 차원을 n-차원 큐브에 추가하는 것을 나타내는 정보를 수신하게 하는 추가적 명령어를 포함하고, 정보는 추가적 차원에 대응하는 데이터를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
20. 제16 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
추가적 데이터 포인트의 후손이 데이터의 불완전한 세트와 연관되는 것에 적어도 부분적으로 기반하여, 계층구조의 추가적 데이터 포인트와 연관된 값의 계산을 연기하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
21. 제16 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
데이터의 불완전한 세트에 기반하여 계층구조의 추가적 데이터 포인트에 대한 총계 값을 컴퓨팅하고, 데이터의 불완전한 세트는 아직 경과하지 않은 시간의 기간에 대응하고;
처음에 추가적 데이터 포인트의 선조와 연관된 값의 계산을 연기하고; 그리고
시간 기간이 경과하는 것에 응답하여 추가적 데이터 포인트의 선조와 연관된 값의 계산을 우선순위결정하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
22. 제16 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
계층구조가 변경된 속성 값에 대해 구식이라고 결정하고;
변경된 속성 값에 대해 계층구조의 제1 레벨의 계산을 우선순위결정하고; 그리고
처음에 계층구조의 제2 레벨의 계산을 연기하고, 제2 레벨은 제1 레벨에 종속하고; 그리고
드릴-다운, 드릴-업, 또는 피벗 이벤트 중 적어도 하나에 응답하여 계층구조의 제2 레벨의 계산을 우선순위결정하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
부가적으로, 상기한 것은 이들 추가적 조항을 고려하여 더 잘 이해될 수 있다:
1. 실시간 데이터 스트림을 수반하는 데이터 상에 온라인 분석 프로세싱을 수행하기 위한 시스템으로서, 시스템은
복수의 차원 및 복수의 차원의 적어도 하나의 서브세트의 교차점에 대응하는 복수의 데이터 포인트를 포함하는 n-차원 큐브를 유지하는 하나 이상의 컴퓨팅 노드로서, 복수의 데이터 포인트는 제1 데이터 포인트 및 제2 데이터 포인트를 포함하는 하나 이상의 컴퓨팅 노드; 및
컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 포함하고, 컴퓨터-판독가능한 명령어는, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
제1 데이터 포인트와 제2 데이터 포인트 간 종속성을 식별하고, 종속성은 제1 데이터 포인트에 기반하는 제2 데이터 포인트의 계산을 포함하고;
제2 데이터 포인트를 계산하기 위한 우선순위를 결정하고, 우선순위는 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 나타내는 정보에 적어도 부분적으로 기반하고; 그리고
제1 데이터 포인트에 대한 변경에 그리고 우선순위에 적어도 부분적으로 기반하여 제2 데이터 포인트의 계산을 스케줄링하게 하는, 시스템.
2. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
사용자 인터페이스와의 상호작용을 나타내는 정보를 수신하는 것에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
3. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
n-차원 큐브 또는 n-차원 큐브와 관련된 트랜잭션 데이터 소스 중 적어도 하나에 대비하여 실행된 질의에 의해 내포된 액세스 패턴에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
4. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
드릴-다운, 드릴-업, 또는 피벗 중 적어도 하나를 수행하라는 요청에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
5. 제1 조항에 있어서, 하나 이상의 컴퓨팅 노드에 의한 실행시, 시스템으로 하여금 적어도
제2 데이터 포인트를 계산하는 동안 경과된 시간에 적어도 부분적으로 기반하여 제2 값을 계산하기 위한 우선순위를 결정하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
6. n-차원 큐브의 데이터 포인트와 연관된 값을 계산하기 위한 컴퓨터-구현된 방법으로서, 방법은
제1 데이터 포인트와 제2 데이터 포인트 간 종속성을 식별하는 단계;
제2 데이터 포인트를 계산하기 위한 우선순위를 결정하는 단계로서, 우선순위는 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 나타내는 정보에 적어도 부분적으로 기반하는 결정하는 단계; 및
제1 데이터 포인트에 대한 변경에 그리고 우선순위에 적어도 부분적으로 기반하여 제2 데이터 포인트의 계산을 스케줄링하는 단계를 포함하는, 컴퓨터-구현된 방법.
7. 제6 조항에 있어서, 제2 데이터 포인트의 계산을 스케줄링하는 단계는 우선순위에 적어도 부분적으로 기반하여 제1 및 제2 데이터 포인트를 정렬하는 단계를 포함하는, 컴퓨터-구현된 방법.
8. 제6 조항에 있어서,
드릴-다운, 드릴-업, 또는 피벗 제어 중 적어도 하나와의 상호작용을 나타내는 정보를 수신하는 것에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
9. 제6 조항에 있어서,
n-차원 큐브 또는 n-차원 큐브와 관련된 트랜잭션 데이터 소스 중 적어도 하나에 대비하여 실행된 질의에 의해 내포된 액세스 패턴에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
10. 제9 조항에 있어서, 액세스 패턴은 총계 값으로의 액세스를 포함하는, 컴퓨터-구현된 방법.
11. 제6 조항에 있어서,
제2 데이터 포인트를 컴퓨팅하는 비용에 적어도 부분적으로 기반하여 제2 데이터 포인트를 계산하기 위한 우선순위를 결정하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
12. 제6 조항에 있어서,
제2 데이터 포인트에 액세스하라는 요청을 수신하는 것에 적어도 부분적으로 기반하여 제2 데이터 포인트를 계산하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
13. 제6 조항에 있어서,
제1 데이터 포인트가 사용자에게 디스플레이를 위해 컴퓨팅 디바이스에 송신되는 것에 적어도 부분적으로 기반하여, 제2 값에 액세스하라는 요청을 수신할 가망이 증가된다고 결정하는 단계를 더 포함하는, 컴퓨터-구현된 방법.
14. 비-일시적 컴퓨터-판독가능한 저장 매체로서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
n-차원 큐브의 제1 데이터 포인트와 제2 데이터 포인트 간 종속성을 식별하고;
제2 데이터 포인트를 계산하기 위한 우선순위를 결정하고, 우선순위는 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 나타내는 정보에 적어도 부분적으로 기반하고; 그리고
제1 데이터 포인트에 대한 변경에 그리고 우선순위에 적어도 부분적으로 기반하여 제2 데이터 포인트의 계산을 스케줄링하게 하는 명령어를 저장해 놓은 비-일시적 컴퓨터-판독가능한 저장 매체.
15. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
드릴-다운, 드릴-업, 또는 피벗 연산 중 적어도 하나를 수행하는 것을 나타내는 정보를 수신하는 것에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
16. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
n-차원 큐브 또는 n-차원 큐브와 관련된 트랜잭션 데이터 소스 중 적어도 하나에 대비하여 실행된 질의에 의해 내포된 액세스 패턴에 적어도 부분적으로 기반하여 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망을 계산하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
17. 제16 조항에 있어서, 액세스 패턴은 n-차원 큐브 또는 n-차원 큐브와 관련된 트랜잭션 데이터 소스 중 적어도 하나에 의해 프로세싱된 질의를 포함하고, 질의는 총계 절을 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
18. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
제2 데이터 포인트를 컴퓨팅하는 비용에 적어도 부분적으로 기반하여 제2 데이터 포인트를 계산하기 위한 우선순위를 결정하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
19. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
제2 데이터 포인트에 액세스하라는 요청을 수신하는 것에 적어도 부분적으로 기반하여 제2 데이터 포인트를 계산하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
20. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
제1 값이 사용자에게 디스플레이를 위해 컴퓨팅 디바이스에 송신되는 것에 적어도 부분적으로 기반하여, 제2 데이터 포인트에 액세스하라는 요청을 수신할 가망이 증가된다고 결정하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
21. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
우선순위에 적어도 부분적으로 기반하여 제2 데이터 포인트를 계산하기로 결정하게 하는 추가적 명령어를 포함하고, 우선순위는 n-차원 큐브에서의 다른 데이터 포인트를 계산하기 위한 우선순위에 상대적인, 비-일시적 컴퓨터-판독가능한 저장 매체.
22. 제14 조항에 있어서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
제2 데이터 포인트, 차원, 계층구조, 또는 n-차원 큐브 중 적어도 하나와 연관된 보안 속성에 적어도 부분적으로 기반하여 제2 데이터 포인트를 계산하기로 결정하게 하는 추가적 명령어를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
특히, "할 수 있다", "하였을 수 있다", "하였을 수도 있다", "할 수도 있다", "예를 들어" 등과 같은, 여기에서 사용된 조건법 언어는, 특히 달리 서술되거나, 아니면 사용된 대로 맥락 내에서 이해되지 않는 한, 일반적으로는 소정 특징, 요소 및/또는 단계를 소정 실시형태는 포함하지만 다른 실시형태는 포함하지 않음을 전하도록 의도된다. 그리하여, 그러한 조건법 언어는 일반적으로는 특징, 요소 및/또는 단계가 어떤 식으로라도 하나 이상의 실시형태에는 필요로 된다는 것 또는 하나 이상의 실시형태가, 저자 입력 또는 프롬프트가 있거나 없이, 이들 특징, 요소 및/또는 단계가 어느 특정 실시형태에서 수행되게 되거나 포함되는지 결정하기 위한 로직을 반드시 포함한다는 것을 내포하도록 의도되지는 않는다. 용어 "포함하고 있는", "포함하는", "갖는" 등은 동의어이고, 개방단 방식으로, 포함적으로 사용되고, 부가적 요소, 특징, 단계, 동작 등을 배제하지 않는다. 또한, 용어 "또는"은, 예를 들어, 소정 목록의 요소들을 연결하도록 사용될 때, 용어 "또는"이 목록 내 요소 중 하나, 일부 또는 전부를 의미하도록 (그 배타적 의미가 아니라) 그 포함적 의미로 사용된다.
특정 예의 실시형태가 설명되었지만, 이들 실시형태는 단지 예로서 제시되었을 뿐이고, 여기에서 개시된 발명의 범위를 한정하려는 의도는 아니다. 그리하여, 상기 설명에서의 어느 것도 어느 특정 특징, 특성, 단계, 모듈 또는 블록이 필수적이거나 불가피한 것임을 내포하려는 의도는 아니다. 실로, 여기에서 설명된 신규 방법 및 시스템은 다양한 다른 형태로 구체화될 수 있다; 더욱, 여기에서 설명된 방법 및 시스템의 형태에서의 다양한 생략, 대체, 및 변경이 여기에서 개시된 본 발명의 취지로부터 벗어남이 없이 이루어질 수 있다. 수반 청구범위 및 그 균등물은 여기에서 개시된 본 발명의 특정의 범위 및 취지 내에 드는 바와 같은 그러한 형태 또는 수정을 망라하도록 의도된다.

Claims (15)

  1. 데이터 분석계를 수행하기 위한 시스템으로서, 상기 시스템은
    제1 하나 이상의 컴퓨팅 노드 및 제2 하나 이상의 컴퓨팅 노드를 포함하는 복수의 컴퓨팅 노드로서, 상기 복수의 컴퓨팅 노드는, 활성화될 때, n-차원 큐브의 슬라이스(a slice of an n-dimensional cube)를 저장하고, 상기 슬라이스는 데이터 포인트의 계층구조(hierachy)를 포함하고, 상기 데이터 포인트는 하나 이상의 고정 차원과 하나 이상의 가변 차원의 교차점에 대응하는 상기 복수의 컴퓨팅 노드; 및
    컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 포함하고, 상기 컴퓨터-판독가능한 명령어는, 실행시, 상기 시스템으로 하여금 적어도
    데이터 포인트의 상기 계층구조의 제1 서브세트를 상기 제1 하나 이상의 컴퓨팅 노드 상에 저장하되, 데이터 포인트는 상기 계층구조의 데이터 포인트가 계산 수요(computational demands)의 제1 분류(a first classification)와 연관되는 것에 적어도 부분적으로 기반하여 상기 제1 서브세트에 포함되고;
    데이터 포인트의 상기 계층구조의 제2 서브세트를 상기 제2 하나 이상의 컴퓨팅 노드 상에 저장하되, 데이터 포인트는 상기 계층구조의 데이터 포인트가 계산 수요의 제2 분류와 연관되는 것에 적어도 부분적으로 기반하여 상기 제2 서브세트에 포함되고; 그리고
    상기 제1 하나 이상의 컴퓨팅 노드 상에서 상기 계층구조의 데이터 포인트에 액세스하되, 상기 제1 하나 이상의 컴퓨팅 노드는 계산 수요의 상기 제1 분류에 적어도 부분적으로 기반하여 스케일링 메커니즘(a scaling mechanism)으로 구성되게 하는, 시스템.
  2. 제1항에 있어서, 상기 제1 분류는 높은 기록 빈도에 기반하고 그리고 상기 스케일링 메커니즘은 상기 계층구조의 상기 제1 서브세트에서의 데이터 포인트를 상기 제1 하나 이상의 컴퓨팅 노드 간에 수평으로 파티셔닝하는 것을 포함하는, 시스템.
  3. 제1항에 있어서, 상기 제1 분류는 높은 판독 빈도에 기반하고 그리고 상기 스케일링 메커니즘은 상기 제1 하나 이상의 컴퓨팅 노드가 기록가능한 파티션의 적어도 하나의 판독-전용 복제본을 포함하는 것을 포함하는, 시스템.
  4. 제1항에 있어서, 실행시, 상기 시스템으로 하여금 적어도
    상기 계층구조와 연관된 차원과 상기 차원과 연관된 하나 이상의 계산 수요 간 매핑에 적어도 부분적으로 기반하여 상기 계층구조의 영역을 분류하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
  5. 제1항에 있어서, 실행시, 상기 시스템으로 하여금 적어도
    경로에서의 데이터 포인트에 대한 액세스의 빈도에 적어도 부분적으로 기반하여 상기 계층구조에서의 상기 경로를 식별하고; 그리고
    액세스의 상기 빈도가 임계 레벨 위에 있는 동안 상기 경로와 연관된 상기 데이터 포인트를 주 메모리에 유지하게 하는 컴퓨터-판독가능한 명령어를 저장해 놓은 하나 이상의 메모리를 더 포함하는, 시스템.
  6. n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법으로서,
    상기 n-차원 큐브에서 데이터 포인트의 계층구조의 제1 서브세트를 식별하는 단계로서, 상기 서브세트는 상기 계층구조의 상기 제1 서브세트에서의 데이터 포인트와 연관된 계산 수요에 적어도 부분적으로 기반하여 식별되는 상기 식별하는 단계;
    상기 데이터 포인트와 연관된 상기 계산 수요에 적어도 부분적으로 기반하여 스케일링 메커니즘을 선택하는 단계; 및
    상기 계층구조의 상기 제1 서브세트를 적어도 제1 컴퓨팅 노드 및 제2 컴퓨팅 노드 상에 저장하는 단계로서, 상기 계층구조의 상기 제1 서브세트는 선택된 상기 스케일링 메커니즘에 기반하여 적어도 상기 제1 컴퓨팅 노드와 상기 제2 컴퓨팅 노드 간에 파티셔닝 또는 복제되는, 상기 저장하는 단계를 포함하는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  7. 제6항에 있어서, 상기 스케일링 메커니즘은 판독 빈도에 비해 기록 빈도가 높은 것에 적어도 부분적으로 기반하여 선택되는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  8. 제7항에 있어서,
    상기 계층구조의 상기 제1 서브세트에서의 데이터 포인트를 적어도 상기 제1 컴퓨팅 노드와 상기 제2 컴퓨팅 노드 간에 수평으로 파티셔닝하는 단계를 더 포함하는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  9. 제6항에 있어서, 상기 스케일링 메커니즘은 상기 계층구조의 상기 제1 서브세트에서의 데이터를 판독하라는 요청에 응답하기 위한 상기 제1 컴퓨팅 노드의 용량에 비해 판독 빈도가 높은 것에 적어도 부분적으로 기반하여 선택되는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  10. 제9항에 있어서,
    상기 계층구조의 상기 제1 서브세트의 적어도 일부를 상기 제2 컴퓨팅 노드 상에 복제하는 단계로서, 상기 계층구조의 상기 제1 서브세트의 상기 적어도 일부는 상기 제1 컴퓨팅 노드 상에 유지되는, 상기 복제하는 단계를 더 포함하는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  11. 제6항에 있어서,
    상기 계층구조와 연관된 차원과 상기 차원과 연관된 계산 수요 간 매핑에 적어도 부분적으로 기반하여 상기 계층구조의 영역을 분류하는 단계를 더 포함하는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  12. 제6항에 있어서,
    경로에서의 데이터 포인트에 대한 액세스의 빈도에 적어도 부분적으로 기반하여 상기 계층구조에서의 상기 경로를 식별하는 단계; 및
    액세스의 상기 빈도가 임계 레벨 위에 있는 동안 상기 경로와 연관된 상기 데이터 포인트를 주 메모리에 유지하는 단계를 더 포함하는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  13. 제6항에 있어서,
    추가적 서브세트에서의 데이터 포인트와 연관된 계산 수요에 적어도 부분적으로 기반하여, 상기 계층구조의 상기 추가적 서브세트에 대한 제2 스케일링 메커니즘을 선택하는 단계를 더 포함하는, n-차원 큐브를 유지하기 위한 컴퓨터-구현 방법.
  14. 시스템으로서,
    프로세서; 및
    비-일시적 컴퓨터-판독가능한 저장 매체로서, 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 상기 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
    데이터 포인트의 계층구조의 제1 서브세트를 하나 이상의 제1 컴퓨팅 노드 상에 저장하되, 데이터 포인트는 계층구조에서의 데이터 포인트가 계산 수요의 제1 분류와 연관되는 것에 적어도 부분적으로 기반하여 상기 제1 서브세트에 포함되고; 그리고
    데이터 포인트의 계층구조의 제2 서브세트를 하나 이상의 제2 컴퓨팅 노드 상에 저장하되, 데이터 포인트는 계층구조에서의 데이터 포인트가 계산 수요의 제2 분류와 연관되는 것에 적어도 부분적으로 기반하여 상기 제2 서브세트에 포함되게 하는 명령어를 저장해 놓은 상기 비-일시적 컴퓨터-판독가능한 저장 매체를 포함하는, 시스템.
  15. 제14항에 있어서, 상기 하나 이상의 컴퓨팅 디바이스에 의한 실행시, 상기 하나 이상의 컴퓨팅 디바이스로 하여금 적어도
    상기 제1 컴퓨팅 노드 및 상기 제2 컴퓨팅 노드를 포함하는 복수의 컴퓨팅 노드 상에 n-차원 큐브의 슬라이스를 저장하기로 결정하되, 상기 슬라이스는 하나 이상의 고정 차원과 하나 이상의 가변 차원의 교차점에 대응하는 데이터 포인트 및 추가적 데이터 포인트의 상기 계층구조를 포함하게 하는 추가적 명령어를 포함하는, 시스템.
KR1020177001694A 2014-06-20 2015-06-19 호스팅된 분석계를 위한 동적 n-차원 큐브 KR102001409B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201462015312P 2014-06-20 2014-06-20
US62/015,312 2014-06-20
US14/494,524 US10776397B2 (en) 2014-06-20 2014-09-23 Data interest estimation for n-dimensional cube computations
US14/494,513 US20150370882A1 (en) 2014-06-20 2014-09-23 Use of dependency graphs to dynamically update n-dimensional cubes
US14/494,506 US10430438B2 (en) 2014-06-20 2014-09-23 Dynamic n-dimensional cubes for hosted analytics
US14/494,506 2014-09-23
US14/494,524 2014-09-23
US14/494,513 2014-09-23
PCT/US2015/036834 WO2015196176A1 (en) 2014-06-20 2015-06-19 Dynamic n-dimensional cubes for hosted analytics

Publications (2)

Publication Number Publication Date
KR20170033303A KR20170033303A (ko) 2017-03-24
KR102001409B1 true KR102001409B1 (ko) 2019-10-21

Family

ID=54936173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177001694A KR102001409B1 (ko) 2014-06-20 2015-06-19 호스팅된 분석계를 위한 동적 n-차원 큐브

Country Status (8)

Country Link
EP (1) EP3158477B1 (ko)
JP (1) JP6305645B2 (ko)
KR (1) KR102001409B1 (ko)
CN (1) CN106575296B (ko)
AU (1) AU2015276830B2 (ko)
CA (1) CA2952877C (ko)
SG (1) SG11201610603TA (ko)
WO (1) WO2015196176A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6780576B2 (ja) * 2017-04-27 2020-11-04 トヨタ自動車株式会社 解析手法提示システム、方法及びプログラム
CN109343791B (zh) * 2018-08-16 2021-11-09 武汉元鼎创天信息科技有限公司 一种大数据一体机
KR102156439B1 (ko) * 2018-11-06 2020-09-16 한국전자기술연구원 클라우드-엣지 시스템 및 이의 데이터 처리 방법
US11641371B2 (en) * 2021-02-17 2023-05-02 Saudi Arabian Oil Company Systems, methods and computer-readable media for monitoring a computer network for threats using OLAP cubes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130125057A1 (en) 2010-07-08 2013-05-16 Alexey Kashik Analysis of complex data objects and multiple parameter systems

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3952518B2 (ja) * 1996-03-29 2007-08-01 株式会社日立製作所 多次元データ処理方法
JP2002108896A (ja) * 2000-09-29 2002-04-12 Hitachi Kokusai Electric Inc データベースアクセス方法及び多次元データベースアクセスシステム
ATE381191T1 (de) * 2000-10-26 2007-12-15 Prismedia Networks Inc Verfahren und system zur verwaltung von verteilten inhalten und entsprechenden metadaten
US7315946B1 (en) * 2003-04-14 2008-01-01 Aol Llc Out-of-band tokens for rights access
US7895191B2 (en) * 2003-04-09 2011-02-22 International Business Machines Corporation Improving performance of database queries
US7284011B1 (en) * 2004-12-28 2007-10-16 Emc Corporation System and methods for processing a multidimensional database
US20070022120A1 (en) * 2005-07-25 2007-01-25 Microsoft Corporation Caching and modifying portions of a multi-dimensional database on a user device
US7761407B1 (en) * 2006-10-10 2010-07-20 Medallia, Inc. Use of primary and secondary indexes to facilitate aggregation of records of an OLAP data cube
JP5046750B2 (ja) * 2007-06-08 2012-10-10 キヤノン株式会社 二次元コードを含む原稿のアクセス制御を行う画像処理装置、画像処理方法、プログラム、および記憶媒体
US8447722B1 (en) * 2009-03-25 2013-05-21 Mcafee, Inc. System and method for data mining and security policy management
US8732118B1 (en) * 2012-01-13 2014-05-20 Amazon Technologies, Inc. Distributed performance of data aggregation operations
CN103793422B (zh) * 2012-10-31 2017-05-17 国际商业机器公司 基于增强星型模型的立方体元数据及查询语句生成
CN103281376B (zh) * 2013-05-31 2015-11-11 武汉大学 一种云环境下海量时序遥感影像的自动缓存构建方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130125057A1 (en) 2010-07-08 2013-05-16 Alexey Kashik Analysis of complex data objects and multiple parameter systems

Also Published As

Publication number Publication date
JP2017526090A (ja) 2017-09-07
AU2015276830A1 (en) 2017-02-02
WO2015196176A8 (en) 2017-01-12
CN106575296B (zh) 2020-04-03
SG11201610603TA (en) 2017-01-27
CA2952877C (en) 2021-01-19
EP3158477B1 (en) 2019-05-29
AU2015276830B2 (en) 2018-09-06
CN106575296A (zh) 2017-04-19
KR20170033303A (ko) 2017-03-24
CA2952877A1 (en) 2015-12-23
JP6305645B2 (ja) 2018-04-04
WO2015196176A1 (en) 2015-12-23
EP3158477A1 (en) 2017-04-26

Similar Documents

Publication Publication Date Title
US10776397B2 (en) Data interest estimation for n-dimensional cube computations
JP6697392B2 (ja) 半構造データスキーマのトランスペアレントディスカバリ
US20190102447A1 (en) System and method for metadata sandboxing and what-if analysis in a multidimensional database environment
US20160299919A1 (en) Management of Intermediate Data Spills during the Shuffle Phase of a Map-Reduce Job
EP3238097B1 (en) Identifying join relationships based on transactional access patterns
US11055352B1 (en) Engine independent query plan optimization
US9471657B1 (en) Range query capacity allocation
Humbetov Data-intensive computing with map-reduce and hadoop
US9330158B1 (en) Range query capacity allocation
US10769175B1 (en) Real-time hosted system analytics
KR102001409B1 (ko) 호스팅된 분석계를 위한 동적 n-차원 큐브
Merceedi et al. A comprehensive survey for hadoop distributed file system
Singh et al. Spatial data analysis with ArcGIS and MapReduce
Alves Peixoto et al. A framework for parallel map-matching at scale using Spark
US10169083B1 (en) Scalable method for optimizing information pathway
US11947537B1 (en) Automatic index management for a non-relational database
US10311019B1 (en) Distributed architecture model and management
US11868496B1 (en) Nested row access policies
Cugnasco et al. The OTree: Multidimensional indexing with efficient data sampling for HPC
Nidzwetzki BBoxDB–A Distributed Key-Bounding-Box-Value Store
US11868372B1 (en) Automated hierarchy detection for cloud-based analytics
Malensek Low-Latency, Query-Driven Analytics Over Voluminous Multidimensional, Spatiotemporal Datasets
WO2023097270A1 (en) Detecting idle periods at network endpoints for management actions at processing clusters for managed databases
Tapdiya Large Scale Data Management for Enterprise Workloads
WO2024064578A1 (en) Location-constrained storage and analysis of large data sets

Legal Events

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