KR20080002743A - 데이터 웨어하우징을 위한 장치 및 방법 - Google Patents

데이터 웨어하우징을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20080002743A
KR20080002743A KR1020077016255A KR20077016255A KR20080002743A KR 20080002743 A KR20080002743 A KR 20080002743A KR 1020077016255 A KR1020077016255 A KR 1020077016255A KR 20077016255 A KR20077016255 A KR 20077016255A KR 20080002743 A KR20080002743 A KR 20080002743A
Authority
KR
South Korea
Prior art keywords
data
warehouses
warehouse
query
subset
Prior art date
Application number
KR1020077016255A
Other languages
English (en)
Other versions
KR101266683B1 (ko
Inventor
크리스토퍼 알. 벨
폴 제이. 보이드
마크 이. 던랩
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20080002743A publication Critical patent/KR20080002743A/ko
Application granted granted Critical
Publication of KR101266683B1 publication Critical patent/KR101266683B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Abstract

데이터 웨어하우징 시스템을 구현하는 장치 및 방법. 제1 실시예에 따르면, 시스템은 하나 이상의 데이터 소스로부터 다수의 데이터 웨어하우스 중 하나 이상에 저장할 데이터 세트를 추출하도록 구성된 다수의 데이터 웨어하우스 및 데이터 웨어하우스 매니저를 포함할 수 있다. 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각은 데이터 웨어하우스 매니저에 의해 추출된 제1 데이터 세트의 개별 레플리카를 저장하도록 구성될 수 있다. 또한, 데이터 웨어하우스 매니저는, 제1 데이터 세트의 각각의 개별 레플리카가 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에, 제1 데이터 세트에 종속하는 쿼리가 데이터 웨어하우스의 제1 서브셋 중 하나에 의해 계산되게 허용하도록 구성될 수도 있다.
데이터, 추출, 쿼리, 업데이트, 레플리카, 복제, 계산

Description

데이터 웨어하우징을 위한 장치 및 방법{APPARATUS AND METHOD FOR DATA WAREHOUSING}
본 발명은 컴퓨터 시스템에 관한 것이며, 더 상세하게는, 데이터 웨어하우징 시스템의 구현에 관한 것이다.
기업 내에서 자동화되는 직무의 수가 증가함에 따라 기업에 의해 생성되는 데이터의 양도 그에 대응하여 증가한다. 그러한 데이터는 기업 전체에 걸쳐, 예를 들어 데이터베이스 시스템 및 상이한 부서 또는 지리적 단위체에 의해 구현되는 다른 종류의 시스템 내에서 분산될 수 있다. 일부의 경우에는, 기업 데이터의 유용한 분석이, 존재하는 시스템 또는 위치들 사이의 자연적 경계를 넘어서 이루어질 수도 있다. 그러한 분석을 편리하게 하기 위해, 데이터 웨어하우징 시스템이 채용되어 단일의 데이터베이스 등과 같은 단일의 시스템 내의 다수의 상이한 시스템 또는 위치로부터 데이터를 모으게 할 수 있다. 그리고, 분석 도구는 다양하게 분산된 데이터 소스보다는 단일의 집합된 시스템을 표적으로 할 수도 있으며, 그것이 분석 도구의 설계를 단순화하고 분석 성능을 향상시킬 수 있다.
흔히, 데이터 웨어하우징 시스템은 요구된 분석 성능을 제공하도록 구성된 하이엔드 컴퓨터 시스템을 이용하여 아주 대량의 데이터를 저장하고 쿼리하는 것을 지원한다. 그러나, 특정한 데이터 웨어하우징 애플리케이션에 대해 고도로 맞춰진 하이엔드 시스템은 조달 및 관리 비용이 비싸고 기업의 데이터 웨어하우징 요구사항이 늘어남에 따라 올바르게 스케일(scale)하지 못할 수도 있다. 예를 들어, 비용으로 인해 단일의 데이터 웨어하우징 시스템만 제공되어 있는 경우에, 단일의 웨어하우스가 고장나면, 데이터 유용성이 손상될 수 있다. 또 한편, 다수의 데이터 웨어하우징 시스템이 제공되는 경우에는, 분석 애플리케이션이 단일의 집합된 데이터 소스를 가정하는 단순성을 상실할 수 있다. 예를 들어, 분석 애플리케이션은 다수의 데이터 웨어하우스 내에서 요구된 데이터의 위치를 추적하도록 구성될 것이 요구될 수 있다.
데이터 웨어하우징 시스템을 구현하기 위한 장치 및 방법의 다양한 실시예가 개시되어 있다. 한 실시예에 따르면, 시스템은 수개의 데이터 웨어하우스 및, 하나 이상의 데이터 소스로부터 하나 이상의 데이터 웨어하우스에 저장하기 위한 데이터 세트를 추출하도록 구성된 데이터 웨어하우스 매니저를 포함할 수 있다. 둘 이상의 데이터 웨어하우스의 각각은 데이터 웨어하우스 매니저에 의해 추출된 데이터 세트의 개별 레플리카를 저장하도록 구성될 수 있다. 또한, 데이터 웨어하우스 매니저는, 데이터 세트의 개별 레플리카의 각각이 대응하는 다른 하나의 데이터 웨어하우스에 저장되기 전에, 데이터 세트에 종속하는 쿼리가 데이터 웨어하우스 중 하나에 의해 계산되게 하도록 구성될 수도 있다. 마찬가지로, 데이터 웨어하우스 매니저는, 데이터 세트에 대한 변경이 대응하는 다른 하나의 데이터 웨어하우스에 복제되기 전에, 데이터 세트에 종속하는 쿼리가 데이터 웨어하우스 중 하나에 의해 계산되게 하도록 구성될 수도 있다.
또한, 한 실시예에 따르면, 하나 이상의 데이터 소스로부터 하나 이상의 데이터 웨어하우스에 저장하기 위한 데이터 세트를 추출하고, 둘 이상의 데이터 웨어하우스를 포함하는 제1 서브셋의 각각에 제1 데이터 세트의 개별 레플리카를 저장하며, 제1 데이터 세트의 개별 레플리카의 각각이 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에 제1 데이터 세트에 종속하는 쿼리가 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하는 것을 포함할 수 있는 방법도 생각된다.
제2 실시예에 따르면, 시스템은 하나 이상의 데이터 소스로부터 추출된 데이터 세트를 저장하게 구성된 데이터 웨어하우스 및, 데이터 웨어하우스들을 클라이언트에게 단일의 데이터 웨어하우스로 보여주도록 구성된 데이터 웨어하우스 매니저를 포함할 수 있다. 데이터 웨어하우스 내의 데이터 세트의 위치는 클라이언트에게 투명해질 수 있다. 또한, 어떤 당해 시각에서, 제1 데이터 웨어하우스에 의해 저장되고 클라이언트가 그 당해 시각에 쿼리를 위해 이용할 수 있는 제1 데이터 세트는 제2 데이터 웨어하우스에 의해 저장되고 클라이언트가 그 당해 시각에 쿼리를 위해 이용할 수 있는 제2 데이터 세트와 다를 수 있다. 클라이언트로부터 하나 이상의 데이터 웨어하우스에 의해 저장된 데이터 세트로 보내지는 쿼리를 수신하는 것에 응답하여, 데이터 웨어하우스 매니저는 데이터 웨어하우스 중 쿼리를 계산할 수 있는 특정한 하나를 식별하고 계산을 위해 쿼리를 그 특정한 데이터 웨어하우스로 전달하도록 구성될 수 있다.
또한, 한 실시예에 따르면, 하나 이상의 데이터 소스로부터 하나 이상의 데이터 웨어하우스에 저장하기 위한 데이터 세트를 추출하고, 데이터 웨어하우스들을 클라이언트에게 단일의 데이터 웨어하우스로 보여주는 것을 포함할 수 있는 방법도 생각된다. 데이터 웨어하우스 내의 데이터 세트의 위치는 클라이언트에게 투명해질 수도 있다. 그 방법은, 클라이언트로부터 하나 이상의 데이터 웨어하우스에 의해 저장된 데이터 세트로 보내지는 쿼리를 수신하는 것에 응답하여, 데이터 웨어하우스 중 쿼리를 계산할 수 있는 특정한 하나를 식별하고 계산을 위해 쿼리를 그 특정한 데이터 웨어하우스로 전달하는 것을 포함할 수도 있다. 어떤 당해 시각에서, 제1 데이터 웨어하우스에 의해 저장되고 클라이언트가 그 당해 시각에 쿼리를 위해 이용할 수 있는 제1 데이터 세트는 제2 데이터 웨어하우스에 의해 저장되고 클라이언트가 그 당해 시각에 쿼리를 위해 이용할 수 있는 제2 데이터 세트와 다를 수도 있다.
도 1은 데이터 웨어하우징 시스템의 한 실시예를 도시하는 블록 다이어그램이다.
도 2는 데이터 웨어하우스간 데이터 세트 복제의 한 실시예를 도시하는 블록 다이어그램이다.
도 3은 추출된 데이터를 러프 싱크로나이제이션을 이용하여 데이터 웨어하우스에 저장하는 방법의 한 실시예를 도시한 순서도이다.
도 4는 러프 싱크로나이제이션을 이용하여 데이터 웨어하우스에 의해 저장된 데이터를 쿼리하는 방법의 한 실시예를 도시한 순서도이다.
도 5A는 러프 싱크로나이제이 하에서의 데이터 세트 업데이트와 쿼리 사이의 관계의 한 실시예를 도시한 타이밍 다이어그램이다.
도 5B-D는 러프 싱크로나이제이션을 이용하여 복제된 데이터 세트의 예시적 실시예를 도시한 블록 다이어그램이다.
도 6은 데이터 웨어하우스를 클라이언트에 대해 가상화하는 방법의 한 실시예를 도시한 순서도이다.
도 7은 데이터 웨어하우스 컴퓨팅 클러스터의 한 실시예를 도시한 블록 다이어그램이다.
도 8은 컴퓨터 시스템의 예시적 실시예를 도시한 블록 다이어그램이다.
본 발명은 다양한 변경 및 선택적 형태를 허용할 수 있지만, 그 특정한 실시예들이 도면에 예시적으로 도시되어 있고 여기에서 상세하게 설명될 것이다. 그러나, 도면 및 그에 대한 상세한 설명은 발명을 개시된 특정한 형태로 제한하려는 것이 아니며, 오히려 첨부된 청구항에 의해 정의된 본 발명의 정신 및 범위 내에 드는 모든 변경, 균등 및 선택사양을 포함하려는 의도이다.
데이터 웨어하우징 시스템의 개요
일부의 복잡한 기업 컴퓨팅 환경에서는, 다양한 데이터 소스가 기업 내에 두루 분산될 수도 있다. 예를 들어, 기업은 회계, 재무, 전자상거래, 인력자원, 조 달, 제조, 유통 등과 같은 상이한 직무에 대해 별도의 컴퓨터 시스템 및/또는 애플리케이션을 구현할 수 있다. 또한, 그러한 시스템 및/또는 애플리케이션은 예를 들어 각각의 유통현장에 유통관리 시스템을 제공하는 것과 같이 지리적으로 흩어져 있고 복제되어 있을 수 있다. 일부의 그런 기업에서는, 데이터베이스 또는 기타의 데이터 저장부나 분석 도구 및 기타의 애플리케이션이 장소 또는 직무에 특유한 것일 수 있고, 기타의 직무 또는 장소를 위한 시스템과 상호작용하는 주변장치일 수 있다.
특수한 직무 또는 장소에 그 임무의 대부분을 수행하기 위해 필요한 데이터와 자원만 제공하면, 기업 내에 잉여 또는 과도한 자원을 할당하는 것을 회피할 수 있다. 그러나, 어떤 경우에는, 기업 전체의 데이터가 전체적으로 분석되는 것이 필요할 수도 있다. 예를 들어, 기업 차원의 재무 또는 생산 동향의 분석은 다수의 상이한 장소 또는 상이한 부서들 사이에서 생성되고 유지되는 데이터에 종속할 수 있다. 어떤 경우에는, 데이터 분석 도구가 단일의 직무를 따로 분리하여 분석해서는 직접 알아낼 수 없는 직무간의 복잡한 상호관계를 탐지하게 구성될 수도 있다. 예를 들어, (인사 부서에서 추적한) 직원의 경험과 훈련, 유통생산성과 재무실적(예를 들어, 유통 오류에 의한 반품 수의 감소) 사이에는 어떤 관계가 있을 수 있다. 그러한 관계는 이러한 직무들의 각각으로부터의 데이터를 수집해서 상호관계를 검사함으로써 알아낼 수 있다.
일부의 실시예에서는, 기업이 기업 차원의 데이터의 처리 및 분석을 편리하게 하는 중앙 집중형 데이터 웨어하우징 시스템을 제공할 수도 있다. 일반적으로 말해서, 데이터 웨어하우스는 하나 이상의 데이터 소스에 저장된 데이터를 모으도록 구성된 데이터베이스 또는 기타의 데이터 리포지터리를 포함할 수도 있다. 데이터 소스는 그 자체가 데이터를 저장하거나 생성하는 기업 내의 다른 데이터베이스 또는 다른 애플리케이션일 수 있다. 흔히, 데이터 웨어하우스 내에 저장된 데이터는 기업 내의 다른 곳에 저장된 데이터의 파생물일 수 있다. 그러나, 어떤 경우에는, 데이터 웨어하우스가 기업 차원의 분석 데이터나 기업 업무 또는 현장 데이터 등과 같은 일부의 데이터를 위한 1차 저장부의 역할을 하도록 구성될 수도 있다.
데이터 웨어하우스 시스템의 한 실시예가 도 1에 도시되어 있다. 도시된 실시예에서, 데이터 웨어하우스 시스템(100)은 도 1의 데이터 웨어하우스(120a-d)로 도시한 바와 같은 다수의 데이터 웨어하우스와 상호작용하도록 구성된 데이터 웨어하우스 매니저(110)를 포함한다. 도 1에 도시한 다수의 데이터 웨어하우스(120a-d)는 단지 예시적이며 다른 실시예들에서는 달라질 수도 있다. 데이터 웨어하우스 매니저(110)는 오퍼레이션즈 데이터베이스(130)와도 상호작용하게 구성될 수 있다. 데이터 웨어하우스 매니저(110)는 데이터 웨어하우스 시스템(100)에 대해 외부적인 것일 수 있는 (예를 들어, 기업 전체에, 여러 기업들에 또는 상이한 논리적 또는 물리적 장소들에 분산된) 하나 이상의 클라이언트(140) 및 데이터 소스(160)와 상호작용하도록 구성될 수도 있다. 일부의 실시예에서는, 일부의 클라이언트(140)가 웹 서비스 인터페이스(150)를 통해 데이터 웨어하우스 매니저(110)와 상호작용하도록 구성될 수 있다. 일부의 실시예에서는, 데이터 웨어하우스 매니저(110)가 웹 서비스 인터페이스 (도시 안됨)를 통해 일부의 데이터 소스(160)와 상호작용하도록 구성될 수 있다.
한 실시예에서는, 데이터 웨어하우스(120a-d)가 개별 관계형 데이터베이스를 포함할 수 있다. 예를 들어, 어떤 당해 데이터 웨어하우스(120)는 오라클(Oracle), DB2, 사이베이스(Sybase), 인포믹스(Informix), 아다바스(Adabas) 또는 기타의 전용 또는 공개 소스 데이터베이스 등과 같은 데이터베이스를 포함할 수 있다. 일부의 실시예에서는, 상이한 데이터 웨어하우스(120)들이 상이한 공급자로부터 구입한 상이한 종류의 데이터베이스 소프트웨어를 구현할 수 있다. 일반적으로 말해서, 관계형 데이터베이스는, 다차원 관계형 데이터베이스 구조가 고려되기도 하지만, 여러 세트의 데이터 아이템을 다수의 행과 열을 포함하는 표 등과 같은 하나 이상의 정규 구조로 편성할 수도 있다. 또한, 많은 실시예에서, 관계형 데이터베이스는 당해 쿼리를 충족시키는 한 서브셋의 데이터를 선택하기 위해 데이터베이스 내에 저장된 데이터에 대한 쿼리를 계산하도록 구성될 수 있다. 예를 들어, 데이터베이스는 고객 식별자, 주문 식별자, 운송상태 정보, 주문단가 등과 같은 데이터를 포함하는 하나 또는 수개의 표로 편성될 수 있는 고객 주문정보를 저장하게 구성될 수 있다. 미처리 배송 대기중인 모든 고객을 찾아내고자 노력하는 사용자는 데이터베이스에 대해 특정한 일자 및/또는 시점에서 미처리 주문이 있는 모든 고객 식별자를 선택하라고 지정하는 쿼리를 제출할 수 있다. 그에 따라, 데이터베이스는 그 콘텐츠를 검사하고 쿼리의 제약조건을 충족시키는 데이터 레코드를 보내어 답할 수 있다. 일부의 실시예에서는 상이한 데이터 웨어하우스(120)가 상이한 물리적 위치 또는 장소에 배치될 수 있으며, 그것은 아래에서 설명하는 데이터 세트 복제와 관련하여 어느 한 장소에서의 고장이 모든 데이터 웨어하우스(120)에 영향을 미칠 가능성을 감소시킴으로써 데이터 세트의 신뢰성과 유용성을 향상시킬 수 있음에 유의해야 한다.
데이터 웨어하우스(120)가 흔하게는 관계형 데이터베이스를 포함할 수 있을지라도, 어떤 실시예에서는 당해 데이터 웨어하우스(120)가 비관계형 데이터베이스를 포함할 수도 있음에 유의해야 한다. 통상적으로, 관계형 데이터베이스에서는, 특정한 데이터 아이템의 의미가 표 또는 기타의 관계형 데이터 구조 내의 데이터 아이템의 위치에 의해 암시적으로 나타내어질 수 있다. 예를 들어, 특수한 2차원 관계형 데이터베이스 표에서는, 한 열은 고객 식별자를 저장하게 정의되고, 다른 열은 운송상태 정보를 저장하게 정의되며, 제3 열은 주문단가를 저장하게 정의될 수 있다. 그리고, 표의 각각의 행은 특정 주문기록에 대응할 수 있고, 어떤 행의 제1 열에 저장된 데이터 아이템은 그 위치로 인해 한 고객 식별자로 해석될 수 있다. 대조적으로, 한 실시예에서는 비관계형 데이터베이스가, 정의된 데이터 구조 내의 데이터 아이템의 위치에 의해서라기 보다는, 당해 데이터 아이템과 관련한 명시적 메타데이터에 의해 그 해석이 결정되는 데이터 아이템을 저장할 수도 있다. 예를 들어, 한 실시예에서는 데이터 웨어하우스(120)가 데이터 아이템을 어느 한 버전의 확장 가능한 마크업 언어 (XML : Markup Language)에 의해 구분된(delimited) 레코드로서 저장하게 구성될 수 있다. 그러한 실시예에서는, 고객 식별자 등과 같은 당해 데이터 아이템이 데이터 아이템의 종류를 식별하는 메타데 이터 필드 또는 태그에 의해 구분될 수 있다. 예를 들어, 고객 식별자 "smith"는 "<cust_id>smith</cust_id>"로 저장될 수 있고, 여기에서 메타데이터 태그 cust_id는 그 태그에 의해 구분된 데이터가 고객 식별자로 해석될 수 있음을 의미한다. 일반적으로, 비관계형 데이터베이스 내의 레코드의 데이터 아이템은, 당해 데이터 아이템의 의미가 데이터 아이템의 위치에 의해 암시적으로 저장되기보다는 데이터 아이템에 따라 명시적으로 저장되므로, 레코드 내에서 어떤 순서로든 저장될 수 있다.
앞서 언급했듯이, 일부의 실시예에서는 데이터 웨어하우스(120)가 데이터 소스(160)에 의하는 것 등과 같이 기업 내의 어디에든 저장되어 있는 데이터를 모으게 구성될 수 있다. 일부의 실시예에서는, 아래에서 더 상세히 설명하듯이, 데이터 웨어하우스(120)에 의해 저장된 데이터의 양은 예를 들어 수 테라바이트(TB)일 정도로 매우 클 수 있다. 도시된 실시예에서, 데이터 웨어하우스 매니저(110)는 다수의 데이터 웨어하우스(120) 사이에서 데이터가 리트리브되어 저장되는 방법을 조정하거나 도시된 클라이언트(140) 등과 같은 클라이언트가 데이터 웨어하우스(120)에 접근하는 것을 조정하도록 구성될 수 있다. 자세히 말하자면, 한 실시예에서 데이터 웨어하우스 매니저(110) (또는, 단순히 매니저(110))는 하나 이상의 데이터 소스(160)로부터 데이터를 추출하고, 추출된 데이터를 하나 이상의 데이터 웨어하우스(120)에 저장하는 것을 조정하도록 구성될 수 있다.
어떤 경우에는, 매니저(110)가 추출된 데이터를 그것이 저장되기 전에 부가적으로 변환할 수 있다. 예를 들어, 한 실시예에서는 당해 데이터 웨어하우 스(120)가 수개의 상이한 데이터 소스(160)로부터 파생된 데이터를 포함하는 표를 저장할 수 있다. 그러한 실시예에서는, 매니저(110)가 상이한 데이터 소스(160)로부터 인출한 개별적 데이터 아이템을 당해 데이터 웨어하우스(120)에 의해 요구된 포맷으로 변환하도록 구성될 수 있다. 일부의 실시예에서는, 데이터의 변환이 데이터를 재배열 또는 포맷을 변환하는 것이 아니라 데이터 자체를 변경하는 것을 포함할 수 있다. 예를 들어, 일부의 실시예에서는 매니저(110)가 특정한 데이터 아이템을 데이터 웨어하우스(120)에 저장하기 전에 스케일 하거나 사사오입하도록 구성될 수도 있으며, 기타의 적절한 변환을 가할 수도 있다. 일부의 실시예에서는, 매니저(110)가 추출, 변환 및 로드 (ETL : extraction, transformation and load) 매니저라고 지칭될 수도 있다.
도시된 실시예에서는, 오퍼레이션즈 데이터베이스(130)가 데이터 웨어하우스 시스템(100)의 오퍼레이션 상태에 관한 정보를 저장하고 추적하도록 구성될 수 있으며, 그것은 데이터 웨어하우스(120) 내의 데이터 아이템 또는 데이터 세트 (예를 들어, 표 또는 개별적 레코드 등과 같은)의 위치나 데이터 웨어하우스(120) 내의 데이터를 변경하려는 미처리 오퍼레이션에 관한 데이터 아이템 또는 데이터 세트의 상태에 관한 정보를 포함할 수 있다. 일부의 실시예에서, 오퍼레이션즈 데이터베이스(130)는 앞서 설명한 것과 마찬가지로 그 콘텐츠에 접근하거나 변경하기 위한 쿼리 인터페이스를 포함하는 관계형 또는 비관계형 데이터베이스를 포함할 수 있지만, 다른 실시예에서는 오퍼레이션즈 데이터베이스(130)가 예를 들어 커스텀 애플리케이션 프로그래밍 인터페이스 (API)에 정의된 프로시저 호를 통해 매니저(110) 와 상호작용할 수 있도록 구성된 커스텀 소프트웨어 애플리케이션을 포함할 수 있다. 다양한 실시예에서, 데이터 웨어하우스(120)에 로드하고 데이터 웨어하우스(120)의 모습을 클라이언트(140)에게 가상화하려는 오퍼레이션즈 데이터베이스(130)와 관련한 매니저(110)의 오퍼레이션은 도 3-6의 설명과 관련하여 아래에서 더 상세히 설명된다.
일부의 실시예에서는, 매니저(110) 및/또는 오퍼레이션즈 데이터베이스(130)가 강건한 무정지형 시스템(fault-tolerant system)에 의해 구현될 수 있다고 생각된다. 예를 들어, 하나 이상의 시스템의 고장시에도 매니저 또는 데이터베이스 오퍼레이션이 계속될 수 있도록, 중복되거나(예를 들어, 비상대기) 클러스터된 컴퓨터 시스템을 이용함으로써 매니저(110) 및/또는 오퍼레이션즈 데이터베이스(130)의 전반적인 신뢰성과 유용성이 증대될 수 있다. 어떤 적절한 고장극복(failover) 메커니즘이 채용되어 매니저(110) 또는 오퍼레이션즈 데이터베이스(130)의 고장에 대한 데이터 웨어하우스 시스템(100)의 민감성을 감소시킬 수 있다.
또한, 일부의 실시예에서는, 매니저(110) 및/또는 오퍼레이션즈 데이터베이스(130)의 구현을 데이터 웨어하우스(120)의 구현으로부터 분리함으로써 데이터 웨어하우스 시스템(100)과 관련한 비용 및 복잡성을 감소시킬 수 있다고 생각된다. 예를 들어, 그러한 분리는 매니저(110) 및 오퍼레이션즈 데이터베이스(130)의 제어기능을 구현하기 위해 상용 컴퓨터 시스템 및/또는 데이터베이스 소프트웨어를 이용하는 것을 편리하게 할 수 있다. 그러한 분리는 제어 하드웨어가 데이터 웨어하우스 하드웨어와 별도로 업그레이드되게 함으로써 데이터 웨어하우스 시스템(100) 의 스케일링을 편리하게 할 수도 있다. 일부의 실시예에서는, 그러한 분리가 데이터 웨어하우스 시스템(100)의 전반적인 유용성을 증대시키고 고장복구시간을 줄일 수도 있다. 예를 들어, 하나의 데이터 웨어하우스(120)가 고장나면, 고장난 웨어하우스를 복구하면서 오퍼레이션즈 데이터베이스(130) 및 매니저(110)는 다른 데이터 웨어하우스(120)에서 계속 로드할 수 있다. 마찬가지로, 오퍼레이션즈 데이터베이스(130)가 고장나면, 어떤 데이터 웨어하우스(120)도 복구할 필요가 없으므로, 전반적인 고장복구시간을 줄일 수 있다.
클라이언트(140)는 일반적으로 데이터 웨어하우스 시스템(100)에 접근하게 구성된 어떤 소프트웨어 애플리케이션 또는 기타의 엔티티를 포함할 수 있다. 예를 들어, 한 실시예에서는 클라이언트(140)가 데이터를 리트리브하도록 구성된 애플리케이션 (예를 들어, 쿼리에 의해)을 포함할 수 있다. 그러한 애플리케이션은 데이터 분석 애플리케이션, 판단 지원 시스템, 데이터 뷰잉 애플리케이션, 또는 기타의 적절한 애플리케이션을 포함할 수 있다. 클라이언트(140)는 데이터 웨어하우스 시스템(100)의 오퍼레이션을 구성할 수 있는 관리 애플리케이션 또는 유틸리티를 포함할 수도 있다. 예를 들어, 데이터 애널리스트 또는 관리자는 미래 분석을 위해 데이터 웨어하우스 시스템(100)에 의해 특정 세트의 데이터 소스(160)로부터의 데이터 아이템의 조합이 모아져야 한다고 판단할 수 있다. 애널리스트 또는 관리자는 클라이언트(140)를 이용하여 매니저(110)에게 데이터 소스(160)로부터 관련 데이터 세트를, 예를 들어 한 번 또는 반복적으로 추출하도록 명령할 수 있다. 다양한 실시예에서, 클라이언트(140)는 예를 들어 범용 컴퓨터 시스템, 핸드헬드 시 스템 또는 임베디드 시스템 등과 같은 적절한 종류의 시스템에서 작동하도록 구성될 수 있다. 일부의 실시예에서는, 클라이언트(140)가 인터비닝 시스템(intervening system)을 통해 데이터 웨어하우스 시스템(100)과 상호작용하도록 구성될 수 있다. 예를 들어, 클라이언트(140)는 클라이언트-서버 시스템 (도시 안됨)에 의해 구현될 수 있으며, 여기에서 서버 시스템은 클라이언트(140)와 데이터 웨어하우스 시스템(100) 사이의 통신을 중개하도록 구성된다.
매니저(110)에 의해 제공되는 API와의 직접 통신 대신에, 일부의 실시예에서는 일부 또는 전부의 클라이언트(140)가 웹 서비스 인터페이스(150)를 거쳐 매니저(110)와 통신하도록 구성될 수 있다. 일반적으로 말해서, 웹 서비스 인터페이스는 수행될 어떤 서비스를 요청하는 클라이언트와 서비스 프로바이더 사이의 통신을 위해 스탠더드 크로스플랫폼 API를 제공하도록 구성될 수 있다. 일부의 실시예에서는, 웹 서비스 인터페이스(150)가 서비스 요구 및 그 요구에 대한 응답을 설명하는 정보를 포함하는 문서의 교환을 지원하도록 구성될 수 있다. 그러한 문서는 예를 들어, 하이퍼텍스트 전송 프로토콜 (HTTP) 등과 같은 표준적 웹 프로토콜을 이용하여 교환될 수 있고, 예를 들어, XML 등과 같은 플랫폼 종속적 데이터 포맷으로 포맷될 수도 있다. 스탠더드 웹 프로토콜 및 플랫폼 종속적 문서 포맷을 이용하는 것을 포함하는 웹 서비스 모델의 채용에 의해, 매니저(110)가 지원해야 할 인터페이스의 종류의 수가 감소될 수 있고, 클라이언트(140)와 매니저(110)의 크로스 플랫폼 상호운용 가능성이 향상될 수 있다.
일부의 실시예에서는, 데이터 소스(160) 자체가 관계형 또는 비관계형 데이 터베이스를 포함하고 기업 전체에 분산될 수 있다. 그러한 데이터베이스는 데이터 웨어하우스(120)와 동일한 종류 (예를 들어, 공급자 또는 포맷)일 수도 있고 아닐 수도 있다. 다른 실시예에서는, 데이터 소스(160)가 문서형태 또는 다른 형태로 데이터를 저장하도록 구성된 맞춤 또는 전용의 애플리케이션 등과 같이 데이터베이스가 아닌 애플리케이션일 수 있다. 그러한 실시예에서, 매니저(110)는 데이터를 얻기 위해 필요한 프로토콜 (예를 들어, 데이터 소스의 API에 의해 정의된 특정 포맷의 프로시저 호)을 이용하여 데이터 소스(160)와 통신하도록 구성될 수 있다. 데이터 소스(160)는 거래 로그, 전자메일 통신, 워드 프로세서/오피스 애플리케이션 문서, 이미지 또는 멀티미디어 파일, 웹 페이지 문서, XML 문서, 전자상거래 사이트의 운영 메트릭스 또는 기타의 적절한 종류의 문서 또는 데이터의 수집 또는 저장 등과 같은 문서의 리포지터리를 포함할 수도 있다. 예를 들어, 한 실시예에서는 데이터 소스(160)가 독립조작 가능한 디스크 어레이 또는 스토리지 에어리어 네트워크 (SAN : storage area network)에 연결된 저장 장치 등과 같은 네트워크 부착 매스미디어 저장 장치를 포함할 수 있다.
데이터 소스(160)의 특정한 종류와 무관하게, 매니저(110)는 거기에서 필요한 데이터 세트를 추출하려는 임의의 오퍼레이션을 수행하고, 그 데이터를 데이터 웨어하우스(120)에 저장하기에 적절한 포맷으로 변환하기 위해 필요한 변환을 가하며, 추출된 데이터를 하나 이상의 데이터 웨어하우스(120)에 로드하도록 구성될 수 있다. 특정한 데이터 소스(160)의 데이터 내용이 데이터 웨어하우스(120)에 의해 저장된 데이터와 포맷이 매우 다르면, 매니저(110)는 데이터 내용과 관련 있는 메 트릭 또는 지시를 이끌어 내기 위해 데이터 소스(160)를 분석하거나 그러한 분석을 수행할 다른 애플리케이션을 불러내도록 구성될 수 있다.
데이터 웨어하우스 복제, 러프 싱크로나이제이션 및 가상화
데이터 웨어하우스(120)에 의해 저장된 데이터는 어떤 경우에는 기업의 운영에 결정적으로 중요한 것일 수 있다. 예를 들어, 일부의 실시예에서는 분석 소프트웨어가 보관된 데이터에서 리포트를 생성하거나 동향을 알아내도록 작동하게 구성될 수 있으며, 그것은 주문/조달 결정, 경영보좌 결정 등과 같은 경영 결정에 영향을 줄 수 있다. 예를 들어, 어느 날의 생산 메트릭스의 기업 차원의 분석은 기업 내에서의 자원을 이동하기 위한 결정에 영향을 주거나, 다음날의 생산 계획을 수정하거나 재료공급 또는 재고 조달 등을 촉진할 수 있다. 관련 분석을 수행할 데이터가 데이터 웨어하우스(120) 내에서 분실 또는 오염되면, 경영상 또는 전략적 의사결정 프로세스가 심각한 불능에 빠지거나, 어떤 경우에는 완전히 불능될 수 있다.
일부의 보관된 데이터는 위에서 설명했듯이 데이터 소스(160)에 저장된 데이터로부터 파생된 것일 수 있고, 원칙적으로 데이터 소스(160)로부터 데이터 웨어하우스(120)에 관련 데이터를 재로드함으로써 재저장될 수 있다. 그러나, 그러한 재로드는 예를 들어 손실 또는 오염된 데이터의 양이 크거나 데이터 소스(160)가 요청된 데이터를 리트리브하기 위해 느린 저장 매체(테이프 또는 오프라인 매체 등과 같은)에 접근해야 한다면 많은 시간을 소요하고서야 완료할 수 있다. 보관된 데이터에 종속하는 프로세스들에 대해 최소의 중단을 일으키는 시간 범위 내에서 요구 된 데이터를 재로드 하는 것이 가능하지 않을 수도 있다. 또한, 어떤 경우에는, 데이터 웨어하우스(120)에 저장된 데이터는 데이터 웨어하우스 시스템(100) 을 활용하는 애플리케이션(예를 들어, 분석 애플리케이션)의 1차 출력일 수 있고, 그래서 단순히 데이터 소스(160)로부터 그것을 재로드하는 것만으로는 복구되지 않을 수도 있다.
데이터 손실 및 그에 따른 중단의 가능성을 줄이기 위해, 한 실시예에서는 한 서브셋의 데이터 웨어하우스(120)가 특정한 데이터 세트를 복제하도록 구성될 수 있다. 즉, 둘 이상의 데이터 웨어하우스(120)가 하나의 표 또는 세트의 레코드 등과 같은 데이터 세트의 개별 레플리카를 저장하도록 구성될 수 있다. 그러한 복제를 도시한 한 실시예가 도 2에 도시되어 있다. 도시된 실시예에서는, 데이터 웨어하우스(120a-b)가 고객 주문 데이터 및 고객 운송 데이터를 포함하는 표의 레플리카를 저장하도록 각각 구성된다. 일부의 실시예에서는, 특정한 데이터 세트가 두 개 내지 데이터 웨어하우스 시스템(100) 내에 있는 데이터 웨어하우스(120)의 개수까지의 임의의 수의 데이터 웨어하우스(120)에 의해 복제될 수 있음에 유의해야 한다. 또 한편, 일부의 실시예에서는, 특정한 데이터 세트들이 전혀 복제되지 않거나 다른 데이터 웨어하우스에 복제될 수도 있다. 도시된 실시예에서는, 데이터 웨어하우스(120a-b)의 각각이 다른 데이터 웨어하우스에 의해 복제되지 않는 표(각각의 재무보고 데이터 및 세션 추적 데이터)를 포함한다. 일부의 실시예에서는, 상이한 데이터 세트들이 상이한 데이터베이스 스키마를 이용하여 (예를 들어, 상이한 데이터 필드 정의 및/또는 구조를 이용하여) 데이터 웨어하우스(120)에 의 해 저장될 수도 있음에 유의해야 한다.
일부의 실시예에서는, 데이터 웨어하우스(120)에 의해 저장된 데이터 세트가 많은 상이한 종류의 기업들에게 공통적인 것일 수 있다. 예를 들어, 고객 주문 및 운송 데이터는 전통적 오프라인 (brick-and-mortar) 기업들과 가상적 고객 인터페이스 (예를 들어, 웹 기반 전자상거래 인터페이스)를 제공하는 기업들 모두에서 공통적으로 이용할 수 있는 데이터 세트이다. 그러나, 일부의 실시예에서는, 전자상거래 인터페이스를 지원하는 기업들이 판매가 일어나기 전이라도 기업과의 고객 상호작용에 관한 상당한 양의 정보를 수집하고 저장하도록 구성될 수 있다. 한 실시예에서는, 도 2에 도시된 세션 추적 데이터 세트가 전자상거래 인터페이스와의 모든 측면에서의 고객의 상호작용에 관한 데이터를 저장하도록 구성될 수 있다. 예를 들어, 세션 추적 데이터 세트는 기업의 웹 사이트에 대한 한번의 방문 (예를 들어, 한 세션) 동안에 고객이 본 특정한 아이템과 그 관찰시간, 그 세션 동안에 고객이 순항한 링크, 고객에 의해 수행된 검색 등을 나타내는 데이터를 저장하도록 구성될 수 있다. 분석 애플리케이션은 고객 취향을 알아내고, 다양한 아이템에 대한 고객의 주문 가능성을 예견하며, 그 고객에 대해 제공될 전자상거래 인터페이스를 맞춤화하는 것 등을 위해 위와 같은 데이터 및 다른 종류의 추적 데이터를 분석하도록 구성될 수 있다.
그러나, 데이터 웨어하우징 및 아래에서 설명할 다양한 기법들이 실질적인 전자상거래 컴포넌트가 없는 기업들에서도 동등하게 적용할 수 있음에 유의해야 한다. 예를 들어, 일부의 기업은 수 많은 직무적 지리적 구획들을 연결해주는 매우 복잡한 내부 프로세스를 가질 수 있고, 외부 고객의 활동은 차치하고라도 보관해야 할 막대한 양의 데이터를 내부적으로 생성할 수 있다. 또한, 일부의 실시예에서는 기업이 기업 내부에서의 활동 및 거래를 위해 앞서 설명한 전자상거래를 지향하는 활동과 유사한 정보수집 전략을 채용할 수도 있다. 예를 들어, 기업 내의 상이한 직무 단위체들이 마치 외부의 고객에 대한 것과 마찬가지로 다른 직무 단위체와 상호작용할 수 있고, 마찬가지로 고객 데이터를 생성할 수도 있다.
일부의 실시예에서는, 다수의 서브셋의 데이터 웨어하우스(120)가 복제의 정도를 달리하는 상이한 종류의 데이터를 저장하도록 구성될 수 있다. 예를 들어, 도 2의 실시예에서는, 데이터 웨어하우스(120a-b)가 고객 주문 및 운송 데이터를 도시된 바와 같이 복제본으로 저장하도록 구성될 수 있다. 유사한 실시예에서, 데이터 웨어하우스(120c-d)는 이력적 세션 추적 데이터 (예를 들어, 과거 15개월 분의 추적 데이터)를 복제본(도시 안됨)으로 저장하도록 구성될 수 있다. 그러한 데이터 웨어하우스(120)의 구성에서, 웨어하우스(120a-b)는 고객 주문 및 운송 데이터에 관한 분석에 특히 적절하게 기능적으로 클러스터되거나 그룹지어진 한 세트의 웨어하우스를 형성할 수 있고, 웨어하우스(120c-d)도 마찬가지로 세션 추적 데이터에 관한 분석에 특히 적절하게 기능적으로 클러스터된 한 세트의 웨어하우스를 형성할 수 있다. 각각의 경우에, 비교적 중요한 데이터는 데이터 손실에 대한 보호를 위해 복제될 수 있다. 그러한 웨어하우스(120a-d)의 구성에서, 고객 데이터에 대한 분석 구동형 쿼리(analysis-driver query)는 종종 최근의 세션 추적 데이터를 표적으로 할 수 있다. 예를 들어, 고객 주문 및 운송 패턴의 분석은 최근의 세션 추적 데이터 (예를 들어, 과거 90일 분의 추적 데이터)에 대해 그러한 패턴을 서로 연관시키고자 시도할 수 있다. 그래서, 도 2의 실시예에서는, 데이터 웨어하우스(120b)가 한 세트의 세션 추적 데이터를 저장하도록 구성된다. 그러나, 데이터 웨어하우스(120c-d)가 크기가 큰 세션 추적 데이터 세트를 중복적으로 저장하도록 구성되기 때문에 (그에 따라, 데이터 웨어하우스(120b)에 의해 저장된 세트가 필요하면 재구성될 수 있음), 데이터 웨어하우스(120b)에 의해 저장된 세션 추적 데이터는 복제되지 않을 수도 있다.
상이한 그룹의 데이터 웨어하우스(120)가 상이한 종류의 쿼리에 대해 최적화 될 수 있도록 특정한 데이터 세트들에 관해서 데이터 웨어하우스(120)를 클러스터링 또는 그룹화하는 것은 데이터 웨어하우스 시스템(100)이 예견되는 이용 패턴에 대해 좀더 최적으로 조정되게 할 수 있다. 예를 들어, 데이터 웨어하우스(120)의 하위에 있는 하드웨어 시스템들은 도 7의 설명과 관련하여 아래에서 더 상세히 설명하듯이 당해 클러스터링의 데이터 웨어하우스(120)가 처리할 것으로 예상되는 활동의 정도에 따라 더 많은 또는 더 적은 컴퓨팅 자원을 준비할 수 있다. 그러나, 다른 실시예에서는, 데이터 세트가 좀더 균질적(homogeneous)인 방식으로 데이터 웨어하우스(120) 간에 분산될 수 있다. 예를 들어, 한 실시예에서는 각각의 데이터 웨어하우스(120)가 대략 동일한 세트의 컴퓨팅 자원들을 포함할 수 있고, 데이터 세트는 대략 대등한 데이터 웨어하우스(120) 간에 다양한 정도의 복제로 분산될 수 있다. 그러한 실시예에서는 데이터 저장 및 리트리브 활동에 관해서 하드웨어 자원의 조정이 거의 최적화되지 못할 수 있지만, 예를 들어 점진적으로 늘어나는 데이터 분석 요구에 대해 필요에 따라 유사하게 구성된 또다른 데이터 웨어하우스(120)를 부가함으로써 데이터 웨어하우스(120)의 상당히 균질한 구현이 좀더 쉽게 스케일 될 수 있다.
앞서 설명했듯이, 데이터 웨어하우스(120) 간 데이터 세트의 복제는 당해 데이터 웨어하우스(120)의 고장으로 인해 데이터 손실이 일어날 가능성을 감소시킴으로써 데이터의 전반적인 신뢰성을 증대시킬 수 있다. 그러한 복제는 예를 들어 쿼리에 대한 응답으로 복제된 데이터 세트를 클라이언트에게 제공할 수 있는 데이터 웨어하우스(120)의 수를 증대시킴으로써 데이터 세트의 유용성을 증대시킬 수도 있다. 도 1에 도시된 데이터 웨어하우스 시스템(100)의 실시예에서는, 매니저(110)가 다수의 웨어하우스(120) 간의 데이터 세트의 복제를 포함하여 데이터 웨어하우스(120)에 대한 데이터의 저장을 조정하도록 구성될 수 있다. 그래서, 도시된 실시예에서는, 당해 데이터 세트가 복제되는지 여부가 특정한 데이터 웨어하우스(120)에게 투명해질 수 있다. 그러나, 일부의 실시예에서는, 여기에서는 매니저(110)의 기능이라고 설명한 데이터 웨어하우스(120) 간 데이터 세트의 관리 및 복제가 오히려 데이터 웨어하우스(120) 간에 협력적으로 분산되거나, 데이터 웨어하우스 및 매니저의 기능을 모두 하도록 구성된 특정한 데이터 웨어하우스(120)에 의해 구현될 수 있다고 생각된다.
데이터 웨어하우스(120)에 의해 저장된 개별적 데이터 세트는 어떤 경우에는 예를 들어 수백 메가바이트 (MB) 또는 기가바이트 (GB)에 이를 정도로 상당히 클 것이다. 또한, 예를 들어 데이터 소스(160)로부터의 새로운 오퍼레이션 데이터의 주기적 추출에 응답한 매니저(110)에 의한 당해 데이터 세트에 대한 부분적 업데이트일지라도, 당해 데이터 웨어하우스(120)에 전달되어야 할 상당한 양의 데이터를 포함할 수 있다. 데이터 세트가 다수의 데이터 웨어하우스(120) 간에 복제되면, 결국 데이터 세트를 포함하는 데이터나 그 데이터에 대해 진행중인 업데이트는 그러한 다수의 데이터 웨어하우스(120) 간에 저장될 것이다. 그러나, 그러한 저장은 즉시 일어나지 않을 수 있다. 예를 들어, 매니저(110)가 데이터 웨어하우스(120a-b)에 대해 동일한 데이터의 저장을 동시에 시작했을지라도, 데이터 저장은 양쪽 데이터 웨어하우스(120a-b)에서 동시에 완료되지 않을 수 있다. 그렇게 컴퓨팅 로드 (예를 들어, 쿼리의 서비싱)나 하위 자원 구성이 다른 것 등과 같은 요인이 한 데이터 웨어하우스(120)가 다른 것보다 저장 오퍼레이션을 좀더 빨리 끝내게 할 수 있다. 결과적으로, 저장 오퍼레이션이 양쪽 데이터 웨어하우스(120a-b) 모두에서 완료되기 전 어느 당해 시각에, 저장되는 데이터 세트의 상태가 데이터 웨어하우스(120a-b)에 따라 다를 수 있다. 이러한 상태에 있는 동안은 데이터 세트가 싱크로나이제이션을 벗어났다고 말하거나 동기되지 않았다고 말할 수 있다.
비동기 데이터는 데이터를 리트리브하려고 시도하는 클라이언트(140)에게 문제를 줄 수 있다. 예를 들어, 당해 데이터 세트를 표적으로 하는 쿼리가 매니저(110)에 의해 수신되었을 때 당해 복제 데이터 세트가 데이터 웨어하우스(120a-b)에 따라 두 개의 상이한 상태에 있다면, 쿼리는 계산을 위해 쿼리가 보내진 특정한 데이터 웨어하우스(120)에서의 당해 데이터 세트의 상태에 따라 두 개의 상이한 결과를 보낼 수 있다. 그러한 불일치는 모순된 클라이언트 오퍼레이션을 일으킬 수 있고, 특히 데이터 웨어하우스(120) 간의 데이터 세트의 복제 (또는 좀더 광범위하게, 데이터 웨어하우스 시스템(100)의 일반적 구성)가 클라이언트(140)에게 투명하다면 더욱 그렇다.
비동기 데이터에 대한 통제되지 않은 접근으로 인한 모순된 클라이언트 동작을 방지하는 한 방법은 다수의 데이터 웨어하우스(120) 간에 복제된 데이터 세트가 비동기인 동안에 그 데이터 세트에 대한 어떠한 접근도 방지하는 매니저(110)를 포함할 수 있다. 예를 들어, 한 실시예에서는 매니저(110)가 복제된 데이터 세트에 대한 업데이트를 원자조작적인 또는 트랜잭셔널 오퍼레이션으로서 구현하도록 구성될 수 있다. 일반적으로 말해서, 다수의 엔티티 간 싱크로나이제이션에 관한 원자조작적인 또는 트랜잭셔널 오퍼레이션은 다른 오퍼레이션에 대해서는 불가분적인 것으로 처리되는 것이며, 즉 그러한 오퍼레이션은 그 엔티티들을 표적으로 하는 다른 오퍼레이션의 진행이 허용되기 전에, 그 엔티티들의 전부에 대해 완료되거나 어떤 엔티티들에 대해서도 완료되지 않는 것이다. 그래서, 한 실시예에서는 매니저(110)가 관련 데이터 웨어하우스(120)의 모두에 저장된 데이터 세트의 모든 레플리카가 완료되기까지 저장되거나 변경되는 복제된 데이터 세트에 접근하려는 시도를 불허하여 클라이언트가 복제된 데이터 세트에 접근하려고 시도할 때 모순된 결과를 수신하지 않게 할 수 있다.
그러나, 모든 데이터 세트 레플리카 간에 원자조작적인 또는 트랜잭셔널 싱크로나이제이션을 구현하는 것은 데이터 웨어하우스 시스템(100)의 성능을 현저히 감소시킬 수 있다. 예를 들어, 당해 복제 데이터 세트가 크면, 데이터 세트에 접 근할 수 있기 전에 완료할 모든 데이터 세트 레플리카에 대한 업데이트를 기다림에 있어서 심각한 지체가 일어날 수 있다. 결과적으로, 한 실시예에서는 매니저(110)가 데이터 웨어하우스(120) 간에 복제된 데이터 세트들을 대략적으로 동기화하도록 구성될 수 있다. 한 실시예에서는, 데이터 세트의 러프 싱크로나이제이션, 즉 대략적 동기화가 특정한 데이터 웨어하우스(120) 내의 복제된 데이터 세트에 대한 업데이트를 원자조작적으로 동기화하면서 기타의 데이터 웨어하우스(120)에 의해 저장된 그 데이터 세트의 기타의 레플리카에 대한 접근은 허용하는 것을 포함할 수 있다. 즉, 한 실시예에서는 매니저(110)가 특정한 데이터 웨어하우스(120)의 특정한 표 (도 2에 도시된 데이터 웨어하우스(120a)의 고객 주문 데이터 표 등과 같은)를 업데이트 하는 동안에 그 특정한 표를 다른 읽기 또는 쓰기 접근에 대해 원자조작적으로 잠글 수 있다. 한편, 매니저(110)는 특정하게 잠궈진 표(예를 들어, 데이터 웨어하우스(120b)의 복제된 고객 주문 데이터 표)의 레플리카가 다른 데이터 웨어하우스(120)에서 접근되는 것을 조건적으로 허용할 수 있다. 선택사양적 실시예에서는, 매니저(110)가 모든 데이터 웨어하우스(120)를 원자조작적으로 잠그고 거기에 저장된 데이터 세트를 업데이트 하거나, 어떤 표의 한 행 등과 같은 데이터 세트의 단지 일부만을 잠글 수도 있으며, 매니저(110)가 어떤 적절한 록킹 그래뉼래러티(locking granularity)든 채용할 수 있다고 생각된다. 또한, 일부의 실시예에서는, 매니저(110)가 당해 데이터 웨어하우스(120)에서 업데이트 되고 있는 데이터 세트의 일부를 잠그고 당해 데이터 웨어하우스(120)의 동일한 데이터 세트의 잠궈지지 않은 부분은 읽기 또는 업데이트에 대해 따로따로 접근되게 허용하도록 구 성될 수 있다고 생각된다.
한 실시예에서는, 매니저(110)는 접근이 데이터 업데이트에 종속되는 것이 아니라면 하나의 데이터 세트 레플리카가 업데이트되는 동안 다른 데이터 세트 레플리카로의 접근을 허용할 수 있다. 예를 들어, 클라이언트(140)가 과거의 완전한 분기 (예를 들어, 현 분기를 제외함) 동안의 모든 고객 운송 데이터를 요구하는 쿼리를 제출할 수 있다. 한편, 매니저(110)는 데이터 소스(160)를 각각 포함할 수 있는 수 많은 고객 요구 이행 사이트로부터 전일의 고객 운송 데이터를 추출하는 프로세스 내에 있을 수 있다. 매니저(110)는 데이터 웨어하우스(120a) 내의 싱크로나이제이션을 보장하는 임의의 잠금 구조를 이용하여 데이터 웨어하우스(120a)에 의해 저장된 고객 운송 데이터 표를 업데이트 하도록 구성될 수 있다. 웨어하우스(120a)에 대한 업데이트가 진행중일 때, 그것의 고객 운송 데이터 레플리카에 대한 쿼리 (또는, 일부의 실시예에서는, 웨어하우스(120a) 내의 모든 데이터에 대한 쿼리)가 허용되지 않을 수 있다. 그러나, 매니저(110)는 과거 분기의 고객 운송 데이터에 대해 제출된 쿼리가 데이터 웨어하우스(120a)에 대해 현재진행중인 업데이트에 종속하지 않는 것을 탐지하도록 구성될 수 있다. 즉, 쿼리를 충족시키기 위해 필요한 모든 데이터는 데이터 웨어하우스(120b) 내의 고객 운송 데이터가 데이터 웨어하우스(120a) 내의 레플리카와 완전히 동기되지 않을지라도 데이터 웨어하우스(120b) 내에 있을 수 있다. 결과적으로, 매니저(110)는 고객 운송 데이터 업데이트가 데이터 웨어하우스(120b)에 저장되기 전에 쿼리가 데이터 웨어하우스(120b)에 의해 계산되는 것을 허용할 수 있다. 이 예에서는, 당해 데이터 세트 가 데이터 웨어하우스(120a-b) 간에 완전하게 동기되지 않고 대략적으로 동기되며, 여기에서는 쿼리를 계산하기에 충분한 데이터를 갖는 데이터 웨어하우스(120)가 최신 버전의 당해 데이터 세트를 처리하지 않을지라도 쿼리를 계산하는 것이 허용된다.
도 1에 도시된 데이터 웨어하우스 시스템(100)의 실시예에서는, 매니저(110)가 당해 데이터 세트가 저장되는 위치 (예를 들어, 당해 데이터 세트의 단독 복제 또는 레플리카를 갖는 특정 데이터 웨어하우스(120))를 식별하는 정보나 어떤 진행중인 업데이트 활동에 대한 데이터 세트의 각각의 복제의 상태를 식별하는 정보 등과 같은 데이터 웨어하우스(120)에 의해 저장된 데이터 세트에 관한 정보를 관리하기 위해 오퍼레이션즈 데이터베이스(130)를 이용하도록 구성될 수 있다. 예를 들어, 한 실시예에서는 오퍼레이션즈 데이터베이스(130)가 데이터 웨어하우스(120)에 저장된 고객 운송 데이터 표의 각각의 복제에 대응하는 각각의 레코드를 포함할 수 있다. 도 2에 도시된 실시예의 경우에, 오퍼레이션즈 데이터베이스(130)는 고객 운송 데이터 표의 개별 레플리카를 저장함에 따라 개별 데이터 웨어하우스(120a-b)를 각각 식별하는 두 개의 그러한 레코드를 저장할 수 있다. 또한, 각각의 레코드는 대응하는 데이터 웨어하우스(120a-b) 내의 표의 상태를 나타내는 필드를 포함할 수 있다. 위 단락에 기재된 예를 참조하면, 매니저(110)가 데이터 웨어하우스(120a) 내의 고객 운송 데이터 표의 업데이트를 조정하는 동안에, 오퍼레이션즈 데이터베이스(130) 내의 대응하는 레코드는 그 레플리카가 업데이트 되고 있거나 이용 불가하거나 기타의 적절한 상태에 있음을 나타낼 수 있다. 대조적으로, 데이 터 웨어하우스(120b)에 의해 저장된 고객 운송 데이터 레플리카의 레코드는 레플리카가 업데이트 되고 있지 않거나 그 업데이트가 이미 완료되었음을 나타낼 수 있다.
다양한 실시예에서, 오퍼레이션즈 데이터베이스(130)는 데이터 세트의 위치 및 상태를 식별하는 상이한 종류의 데이터를 저장하도록 구성될 수 있다. 예를 들어, 위치 식별 데이터는 시스템 명, 인터넷 프로토콜 (IP) 어드레스, 또는 기타의 적절한 식별자 등과 같은 데이터 웨어하우스(120)를 위한 고유의 식별자를 포함할 수 있다. 상태 정보는 당해 데이터 세트의 상태를 특징하는 필드를 좀더 복잡하게 하는 당해 데이터 세트의 업데이트가 진행중인지 여부를 나타내는 단순한 세마포어(semaphore)로부터 얻어질 수 있다. 예를 들어, 일부의 실시예에서는, 데이터 세트에 대응하는 상태 정보는 그것이 업데이트 된 최종 시각, 업데이트 수행에 이용된 데이터 소스(160), 업데이트의 이유 (예를 들어, 계획된 오퍼레이션 또는 매뉴얼 오퍼레이션에 의하는 것) 또는 기타의 적절한 상태 정보를 나타낼 수 있다. 일부의 실시예에서는, (예를 들어, 매니저(110)가 데이터 웨어하우스(120)에 대한 다수의 동시적 읽기 또는 쓰기 오퍼레이션을 지원하게 구성된 실시예에서는) 매니저(110)가 오퍼레이션 상태의 싱크로나이제이션을 보장하기 위해 오퍼레이션즈 데이터베이스(130)를 읽거나 변경하기 위해 트랜잭셔널 오퍼레이션을 이용하도록 구성될 수 있다.
한 실시예에서는, 매니저(110)가 오퍼레이션즈 데이터베이스(130)에 의해 저장된 위치 및 상태 정보를 이용하여 데이터 웨어하우스(120)에 의해 저장된 데이터 의 러프 싱크로나이제이션을 구현할 수 있다. 즉, 매니저(110)는, 데이터를 추출하여 데이터 웨어하우스(120)에 저장할 때나 저장된 데이터를 리트리브하기 위한 오퍼레이션 (예를 들어, 쿼리)을 수신할 때 오퍼레이션즈 데이터베이스(130)를 살펴보도록 구성될 수 있다. 러프 싱크로나이제이션을 이용하여 추출된 데이터를 데이터 웨어하우스(120) 내에 저장하는 방법의 한 실시예가 도 3에 도시되어 있다. 도 1 내지 도 3을 살펴보면, 오퍼레이션은 블록 300에서 시작되고, 거기에서는 하나 이상의 데이터 소스로부터 데이터 세트를 추출하기 위한 오퍼레이션이 시작된다. 예를 들어, 한 실시예에서 매니저(110)는 기업 전체에 걸쳐 분산된 고객 요구 이행 사이트 등과 같은 하나 이상의 데이터 소스(160)로부터 고객 운송 데이터 등과 같은 데이터 세트를 주기적으로 (예를 들어, 매시, 매일 밤, 매주) 추출하도록 구성될 수 있다. 대안적으로, 사용자 또는 애플리케이션은 클라이언트(140)를 통해 데이터 세트가 추출되고 저장될 것을 요청할 수 있다. 일부의 실시예에서는, 다수의 데이터 세트가 동시에 데이터 소스(160)로부터 추출되고 하나 이상의 데이터 웨어하우스(120) 내에 업데이트 될 수 있는 것으로 생각된다. 예를 들어, 다수의 데이터 세트가 계획된 일괄 작업 등과 같은 일괄 작업 또는 프로세스로서 동시에 추출되고 저장되거나, 또는 데이터 세트가 데이터 소스(160)로부터 동적으로 스트림 되고 데이터 웨어하우스(120) 내에 업데이트 될 수 있다.
그 후, 매니저(110)는 예를 들어 데이터 소스(160)에 대해 데이터를 찾아내라는 쿼리 또는 다른 명령을 줌으로써 추출된 데이터를 리트리브한다 (블록 302). 추출된 데이터는 필요하다면 변환될 수 있다 (블록 304). 예를 들어, 추출된 데이 터는 재포맷되거나 앞서 설명했듯이 데이터 웨어하우스(120)의 데이터 저장 요구조건에 따라 데이터 자체가 변경될 수 있다.
그리고, 매니저(110)는 어떤 데이터 웨어하우스(120)가 호스트로서 추출된 데이터 세트를 받아들일 것인지 판단한다 (블록 306). 예를 들어, 한 실시예에서 매니저(110)는 추출된 데이터 세트가 상주할 위치를 거기에 저장된 레코드에 따라 판단하기 위해 오퍼레이션즈 데이터베이스(130)를 살펴볼 수 있다. 그리고, 매니저(110)는 추출된 데이터 세트로 업데이트 할 특정한 데이터 웨어하우스(120)를 선택하고 업데이트가 일어나고 있음을 나타내기 위해 그 데이터 세트에 관한 상태 정보를 업데이트 한다 (블록 308). 일부의 실시예에서, 매니저(110)는 이러한 업데이트가 상이한 시각에 시작되고 끝날지라도 호스트로서 추출된 데이터 세트를 병렬적 또는 중첩적으로 받아들이는 각각의 데이터 웨어하우스(120)를 업데이트 하도록 구성될 수 있다. 그러한 병렬 처리는 도 3에서 블록 308-312가 반복되는 것으로 도시되어 있으며, 그것은 수개의 상이한 데이터 세트 또는 데이터 세트 레플리카의 각각에 대해 병렬로 수행될 수 있다. 예를 들어, 매니저(110)는 추출된 데이터 세트를 수개의 상이한 데이터 웨어하우스(120)에 업데이트 하는 것을 동시에 시작하도록 구성되거나, 또는 다수의 업데이트의 시간이 부분적으로 중첩되게 하는 방식으로 엇갈리게 할 수도 있다. 또한, 일부의 실시예에서는, 다수의 상이한 데이터 세트가 다수의 상이한 데이터 웨어하우스(120) 내에 동시에 업데이트 될 수도 있음에 유의해야 한다.
다른 실시예에서, 매니저(110)는 데이터 웨어하우스(120)를 직렬적 또는 조 건적으로 업데이트하도록 구성될 수 있다. 예를 들어, 추출된 데이터 세트가 한 서브셋의 데이터 웨어하우스(120)에 의해 복제되는 경우에, 매니저(110)는 업데이트를 시작하기 위한 특정한 데이터 웨어하우스(120)를 랜덤 하게 선택할 수 있다. 대안적으로, 매니저(110)는 그 서브셋 중 가장 덜 바쁜 데이터 웨어하우스(120)를 선택하거나, 또는 기타의 선택 기준을 이용할 수 있다. 오퍼레이션즈 데이터베이스(130)가 미처리 데이터 세트 판독 오퍼레이션을 추적하는 일부의 실시예에서는, 데이터 세트가 (예를 들어, 쿼리에 의해) 현재 판독되고 있다면, 그 데이터 웨어하우스(120)는 데이터 세트 업데이트를 위해 선택되지 않을 수 있다. 한 실시예에서, 어떤 데이터 웨어하우스(120)가 선택되면, 매니저(110)는 그 데이터 세트 및 선택된 데이터 웨어하우스(120)와 관련하여 오퍼레이션즈 데이터베이스(130)에 저장된 레코드에 있는 상태 정보를 업데이트하여 선택된 데이터 웨어하우스에서 그 데이터 세트가 변경되고 있음을 나타낼 수 있다. 위에서 알 수 있듯이, 일부의 실시예에서 매니저(110)는 예를 들어 다수의 동시적 오퍼레이션의 적절한 순서를 정하는 것을 보장하기 위해 트랜잭셔널 오퍼레이션을 이용하여 오퍼레이션즈 데이터베이스(130)와 상호작용할 수 있다.
그리고, 추출된 데이터 세트는 선택된 데이터 웨어하우스(120)에 저장된다 (블록 310). 선택된 데이터 웨어하우스(120)에 대한 업데이트가 진행되는 동안에 데이터 세트의 다른 레플리카들은 다른 데이터 웨어하우스(120)에 의해 접근되거나 업데이트 될 수 있음에 유의해야 한다. 업데이트가 완료되면, 매니저(110)는 그 데이터 세트에 관한 상태 정보를 업데이트 하여 업데이트 완료를 나타낸다 (블록 312).
일부의 실시예에서, 매니저(110)는 추출된 데이터 세트가 그것에 대응하는 데이터 웨어하우스(120)에 순차로 저장되는 동안에 그것을 버퍼 할 필요가 없다고 생각된다. 한 선택사양적 실시예에서, 매니저(110)는 데이터 소스(160)로부터 데이터 추출을 시작하기 전에 업데이트 할 데이터 웨어하우스(120)를 선택할 수 있다. 그리고, 매니저(110)는 추출된 데이터 (임의의 변환을 가함)를 선택된 데이터 웨어하우스(120)로 스트림 하거나 스트림되게 할 수 있고, 그 후 업데이트 된 데이터 웨어하우스(120)를 다른 데이터 웨어하우스(120)를 업데이트 하기 위한 데이터 소스로 이용할 수 있다. 또한, 일부의 실시예에서는, 다수의 데이터 웨어하우스(120)가 순차적이기 보다는 동시에 업데이트 될 수 있다고 생각된다. 예를 들어, 당해 데이터 세트가 3개의 데이터 웨어하우스(120)에 복제되는 경우에, 그 중의 두개는 동시에 업데이트 되고 세번째 것은 당해 데이터 세트에 대한 쿼리에 의해 이용될 수 있게 남겨둘 수 있다. 마지막으로, 일부의 실시예에서는 오퍼레이션즈 데이터베이스(130)에서 상태를 적절하게 나타내어 모든 (또는 선택된 서브셋의) 데이터 웨어하우스(120)를 동시에 업데이트 함으로써 완전한 싱크로나이제이션 (러프 싱크로나이제이션과 대립하는 것으로서)이 이루어질 수 있다.
러프 싱크로나이제이션을 이용하여 데이터 웨어하우스(120)에 저장된 데이터를 쿼리하는 방법의 한 실시예가 도 4에 도시되어 있다. 도 1 내지 도 4를 살펴보면, 오퍼레이션은 블록(400)에서 시작되고, 거기에서는 데이터 웨어하우스(120)에 의해 저장된 하나 이상의 데이터 세트에 종속하는 쿼리 오퍼레이션이 수신된다. 예를 들어, 한 실시예에서 매니저(110)는 클라이언트(140)로부터 그러한 쿼리를 직접적으로 또는 웹 서비스 인터페이스(150)를 거쳐서 수신하도록 구성될 수 있다.
그 후, 매니저(110)는 쿼리의 데이터 세트 종속성을 판단하기 위해 수신된 쿼리를 분석한다 (블록 402). 일부의 실시예에서, 데이터 세트 종속성을 판단하는 것은 쿼리에 의해 조회될 특정한 데이터 세트뿐만 아니라, 종속하는 데이터 세트에 관한 부가적인 상태 정보를 판단하는 것을 포함할 수 있다. 예를 들어, 한 실시예에서 매니저(110)는 특정한 쿼리가 도 2에 도시된 고객 운송 데이터 표에 종속한다고 판단하고, 또한 종속하는 데이터가 과거 분기에 관한 데이터인 것으로 판단할 수 있다.
그리고, 매니저(110)는 종속하는 데이터 세트의 데이터 웨어하우스(120) 내에서의 위치뿐만 아니라 저장된 데이터 세트에 관한 현재의 상태 정보를 판단한다 (블록 404). 예를 들어, 매니저(110)는 종속하는 각각의 데이터 세트에 대해 어느 데이터 웨어하우스(120)가 호스트로서 그 데이터 세트의 사본을 받아들이는지 뿐만 아니라 그 사본에 관한 상태 정보 (예를 들어, 현재업데이트 중인지, 특정한 일자 당시의 현황, 보수를 위한 오프라인 등)를 판단하기 위해 오퍼레이션즈 데이터베이스(130)를 살펴볼 수 있다.
수신된 쿼리의 데이터 세트 종속성의 분석뿐만 아니라 데이터 웨어하우스(120) 내에서의 데이터 세트의 위치 및 상태에 관한 정보에 기반하여, 매니저(110)는 어떤 데이터 웨어하우스(120)가 수신된 쿼리를 계산하기에 충분한 데이터를 갖는지 여부를 판단할 수 있다 (블록 406). 예를 들어, 한 실시예에서, 매니 저(110)는, 어떤 데이터 웨어하우스(120)가 쿼리가 종속하는 각각의 데이터 세트의 사본을 갖고, 종속하는 각각의 데이터 세트가 다른 방법으로 (예를 들어, 도 3에 도시된 추출 및 저장 오퍼레이션에 의해)업데이트 되고 있지 않으며, 종속하는 각각의 데이터 세트가 쿼리의 상태 요구조건 (예를 들어, 각각의 데이터 세트가 적어도 쿼리에 의해 정해진 일자 당시까지의 현황일 것)을 충족한다면, 그 데이터 웨어하우스가 당해 쿼리를 계산하기에 충분한 데이터를 갖는다고 판단할 수 있다. 다른 실시예에서, 매니저(110)는 상이한 또는 부가적인 기준을 이용하여 당해 쿼리에 대한 당해 데이터 웨어하우스(120)의 데이터가 충분한지 여부를 판단할 수 있다. 예를 들어, 그러한 기준은 쿼리 언어의 종류를 계산할 능력 또는 복잡한 쿼리를 취급하기 위해 이용 가능한 컴퓨팅 자원 등과 같은 데이터 웨어하우스(120)의 능력 및 자원에 관한 정보를 포함할 수 있다.
일부의 실시예에서는, 하나 이상의 데이터 웨어하우스(120)가 당해 데이터 웨어하우스(120)에 의해 동시에 계산될 수 있는 쿼리의 수를 제한하는 것 등에 의해 쿼리 계산 자원을 관리하도록 구성될 수 있다. 예를 들어, 데이터 웨어하우스(120)는 쿼리 계산을 위한 특정한 수의 “잡 슬롯(job slots)"을 제공하도록 구성될 수 있고 모든 슬롯이 점유되면 부가적인 쿼리를 받아들일 수 없게 할 수도 있다. 일부의 실시예에서는, 당해 쿼리가 쿼리의 복잡성에 무관하게 이용 가능한 하나의 잡 슬롯에 대응할 수 있다. 다른 실시예에서는 좀더 복잡한 쿼리가 다수의 잡 슬롯을 점유할 수 있거나, 또는 데이터 웨어하우스(120)가 다른 종류의 로드 밸런싱 전략을 채용할 수 있다. 일부의 실시예에서는, 당해 데이터 웨어하우스(120) 가 당해 쿼리를 계산하기에 충분한 데이터를 갖는지 여부를 판단하는 매니저(110)가 당해 데이터 웨어하우스(120)의 이용 가능한 쿼리 계산 자원을 고려할 수도 있다. 예를 들어, 한 실시예에서 쿼리를 계산하기 위한 데이터는 충분하지만 쿼리 계산에 이용 가능한 자원은 없는 데이터 웨어하우스(120)는 매니저(110)에 의해 선택되지 않을 수 있다.
수신된 쿼리를 계산하기 위한 충분한 데이터를 가진 데이터 웨어하우스(120)가 없으면 (또는, 일부의 실시예에서는, 수신된 쿼리를 계산하기 위해 이용 가능한 자원을 가진 데이터 웨어하우스(120)가 없으면), 매니저(110)는 충분한 데이터 웨어하우스(120)을 식별해낼 수 있을 시각까지 그 쿼리를 대기시킬 수 있다 (블록 408). 예를 들어, 한 실시예에서는, 매니저(110)가 수신된 쿼리가 특정한 데이터 웨어하우스(120)에서 현재업데이트 되고 있는 데이터 세트에 종속한다는 것을 식별해낼 수 있고, 업데이트가 완료되면 그 쿼리가 그 특정한 데이터 웨어하우스(120)에서 계산되게 계획할 수 있다. 대안적으로, 매니저(110)는 데이터 웨어하우스(120)가 쿼리를 계산하기 위해 이용 가능하게 되었는지 여부를 판단하기 위해 대기중인 쿼리를 가끔 재계산할 수 있다. 일부의 실시예에서, 클라이언트 교착상태를 회피하기 위해, 매니저(110)는 쿼리가 대기상태를 유지하는 시간에 제한을 둘 수 있고, 쿼리가 대기시간 제한을 초과하면 클라이언트에게 에러 상태라고 응답할 수 있다.
수신된 쿼리를 계산하기에 충분한 데이터 웨어하우스(120)가 식별되면, 매니저(110)는 계산을 위해 수신된 쿼리를 그 데이터 웨어하우스(120)로 보낸다 (블록 410). 러프 싱크로나이제이션 상태에서, 특정한 데이터 세트의 레플리카가 한 데이터 웨어하우스(120)에서 업데이트 되고 있는 동안에 그 특정한 데이터 세트를 표적으로 하는 쿼리는 다른 데이터 웨어하우스(120)에 의해 계산될 수 있음에 유의해야 한다.
러프 싱크로나이제이션 상태에서 데이터 세트의 업데이트와 데이터 세트의 쿼리 사이의 관계의 한 실시예를 나타내는 타이밍 다이어그램이 도 5A에 도시되어 있다. 도시된 타이밍 다이어그램에서, 매니저(110)는 시각 T1에 특정한 데이터 세트의 업데이트를 시작하며, 거기에서는 데이터 세트가 데이터 웨어하우스(120a-b)에 의해 복제된다. 그 후, 업데이트 되고 있는 데이터 세트를 표적으로 하는 쿼리는 시각 T2에서 매니저(110)에 의해 수신된다. 데이터 세트 업데이트는 T2보다 늦은 시각 T3에 데이터 웨어하우스(120a)에서 완료되고, T3보다 늦은 시각 T4에 데이터 웨어하우스(120b)에서 완료된다.
도시된 실시예에서는, 수신된 쿼리를 계산할 수 있는 3개의 시간 범위를 보여준다. 제1의 경우에, 쿼리는 업데이트 되고 있는 데이터 세트의 프리업데이트(pre-update) 콘텐츠에 의해 충족될 수 있다. 예를 들어, 오퍼레이션즈 데이터베이스(130)에 관련되어 있는 매니저(110)는 쿼리를 계산하기 위해 필요한 데이터가 현재의 업데이트에 종속하고 있지 않는다고 판단할 수 있다. 이 경우에, 쿼리는 시각 T2 후에 관련 데이터 세트를 호스트로서 받아들이는 이용 가능한 데이터 웨어하우스(120)에 의해 계산될 수 있다. 즉, 쿼리는 그것이 수신된 후 구현 가능해지자마자 계산될 수 있으며, 그것은 어떤 경우에는 지체를 일으킬 수 있다. 예 를 들어, 일부의 실시예에서는, 위에서 설명했듯이 쿼리는 현재업데이트 되고 있는 데이터 웨어하우스(120)에서 계산하는 것이 허용되지 않을 수 있다. 또한, 어떤 경우에는, 데이터 웨어하우스(120)가 쿼리를 즉각 받아들이기에는 너무 바쁠 수 있다. 그러나, 일부의 실시예에서는, 프리업데이트 데이터에 종속하는 쿼리의 경우, 그 쿼리가 시각 T2 후에 구현할 수 있을 때는 어떤 업데이트 관련 시간적 제한도 있을 필요가 없다.
제2 및 제3의 경우, 쿼리는 업데이트 되고 있는 데이터 세트의 포스트업데이트(post-update) 콘텐츠에 종속할 수 있다. 즉, 쿼리는 정확한 계산을 위해 시각 T1에서 시작된 데이터 세트 업데이트에 반영된 데이터를 필요로 할 수 있다. 도시된 실시예에서는, 이 업데이트가 시각 T3에 데이터 웨어하우스(120a)에서 완료되고 시각 T4에 데이터 웨어하우스(120b)에서 완료된다. 그에 대응해서, 쿼리는 시각 T3 후의 어느 시각에 데이터 웨어하우스(120a)에 의해 계산되고 시각 T4 후의 어느 시각에 데이터 웨어하우스(120b)에 의해 계산될 수 있다. 앞서 설명하고 도 5A에 도시된 바와 같이, 러프 싱크로나이제이션 상태에서 쿼리는 그 쿼리에 의해 표적된 데이터 세트의 모든 레플리카가 업데이트 되기 전 및 일부의 경우 (예를 들어, 쿼리가 프리업데이트 데이터에 종속하는 경우)에는 그 데이터 세트의 레플리카가 특정한 데이터 웨어하우스(120)에서 업데이트 되기 전에 그 특정한 데이터 웨어하우스(120)에 의해 계산될 수 있다. 위에서 설명했듯이, 일부의 실시예에서는 특정한 데이터 세트가 한 데이터 웨어하우스(120)에 저장되기 전에 그 특정한 데이터 세트를 표적으로 하는 쿼리가 다른 데이터 웨어하우스(120)에 의해 계산될 수 있다. 또한, 일부의 실시예에서는, 특정한 데이터 세트가 당해 데이터 웨어하우스(120)에 저장된 후, 그 당해 데이터 웨어하우스(120)가 특정한 데이터 세트로 보내진 쿼리를 계산할 수 있다. 예를 들어, 복제된 데이터 세트가 대응하는 데이터 웨어하우스(120)의 일부 또는 전부에 업데이트 된 후, 업데이트 된 데이터 웨어하우스(120) 중 어느 것이든 복제된 데이터 세트에 대한 쿼리를 충족시킬 수 있게 될 수도 있다.
또한, 위에서 설명했듯이 데이터 세트의 일부를 잠그기 위한 파인그레인드 메커니즘(fine-grained mechanisms)을 채용하는 일부의 실시예에서는, 업데이트 되고 있는 데이터 세트를 호스트로서 받아들이는 당해 데이터 웨어하우스(120)는 업데이트가 완료되기 전에 그 데이터 세트에 대한 쿼리를 계산하기 위해 이용 가능해질 수 있다는 것에 유의해야 한다. 예를 들어, 일부의 실시예에서는 매니저(110) 및 오퍼레이션즈 데이터베이스(130)가 데이터 세트의 일부 (예를 들어, 표의 개별적 행 또는 행 세트)의 상태를 추적하도록 구성될 수 있다. 특정한 데이터 세트의 일부가 당해 데이터 웨어하우스(120)에서 업데이트 되고 있는 동안에, 매니저(110)는 당해 쿼리가 그 특정한 데이터 세트의 현재업데이트 되지 않고 있는 부분에 종속한다고 판단할 수 있고, 그에 따라 쿼리가 당해 데이터 웨어하우스(120)에 의해 계산되는 것을 허용할 수 있다. 그러한 실시예에서, 데이터 세트의 업데이트 되고 있지 않는 부분에 대한 쿼리는, 기능적으로 마치 쿼리가 업데이트 되고 있는 데이터 세트로부터 독립적인 데이터 세트에 종속했었던 것과 같이 취급될 수 있고, 업데이트와 독립적으로 계산하는 것이 허용될 수 있다. 도 5A와 같은 상황에서, 그 러한 쿼리는 시각 T3 및 T4에서의 업데이트 완료 시점과 동기되지 않고 시각 T2에서 그것이 수신된 후 어느 시각에든 계산되게 허용될 수 있다.
도 5B-5D는 도 5A에 도시된 다양한 시점에 대한 러프 싱크로나이제이션을 이용하여 복제된 데이터 세트의 한 실시예의 특정한 예를 도시한다. 도 5B-5D에 도시된 실시예에서는, 고객 주문 데이터 세트가 데이터 웨어하우스(120a-b)에 의해 복제되도록 구성된다. 도 5B는 업데이트를 시작하기 전 어느 시각 (예를 들어, 도 5A에 도시된 시각 T1 전의 어느 시각)에서의 고객 주문 데이터 세트의 레플리카를 도시한다. 도 5B에서, 두개의 고객 주문 데이터 세트 레플리카 모두 프리업데이트 상태로 도시되어 있다.
도 5C는 데이터 웨어하우스(120a)의 레플리카가 업데이트 된 후, 데이터 웨어하우스(120b)의 레플리카가 업데이트 되기 전의 어느 시각 (예를 들어, 도 5A에 도시된 시각 T3와 T4 사이의 어느 시각)에서의 고객 주문 데이터 세트의 레플리카를 도시한다. 도 5C에 보이듯이, 두개의 고객 주문 데이터 세트 레플리카는 다른 상태에 있다. 마지막으로, 도 5D는 두개의 레플리카 모두 업데이트 된 후의 어느 시각 (예를 들어, 도 5A에 도시된 시각 T4 후의 어느 시각)에서의 고객 주문 데이터 세트의 레플리카를 도시한다. 위에서 설명했듯이, 고객 주문 데이터 세트에 대한 쿼리는 데이터 세트에 대한 업데이트가 시작된 후 어느 시각에든 도달할 수 있다. 그 데이터 세트 요구조건에 따라, 특정한 쿼리는 두개의 데이터 세트 레플리카가 (예를 들어, 도 5C에 도시된 바와 같이) 다른 콘텐츠를 갖는 어느 시각을 포함하여 두개의 데이터 웨어하우스(120a-b)에 대한 업데이트가 완료되기 전에 어느 데이터 웨어하우스(120a-b)에서든 구현되는 것이 허용될 수 있다.
일부의 실시예에서는, 데이터 웨어하우스 시스템(100)의 편성이 시스템(100)과 상호작용하도록 구성된 클라이언트(140)에게 완전히 투명할 수 있다는 것에 유의해야 한다. 즉, 일부의 실시예에서는, 클라이언트(140)가 데이터 웨어하우스(120) 내의 당해 데이터 세트의 위치 또는 상태에 관해 아무런 지식도 갖지 않을 수 있다. 일부의 그러한 실시예에서, 매니저(110)는 클라이언트(140)의 관점에서 볼 때 데이터 웨어하우스(120)를 단일의 가상적 데이터 웨어하우스로 보여주도록 구성될 수 있다 (예를 들어, 매니저(110)는 데이터 웨어하우스(120)를 가상화하도록 구성될 수 있다). 그래서, 일부의 그러한 실시예서는, 매니저(110)가 클라이언트(140)에게 단일의 안정적 인터페이스 (쿼리 인터페이스 등과 같은)를 보여주면서, 데이터 세트를 재량적으로 자유롭게 복제하거나 데이터 웨어하우스(120) 간에 데이터 세트를 재배치하거나 또는 시스템(100) 내에 저장된 데이터의 편성을 달리 변경할 수 있다.
한 실시예에서는, 어느 당해 시각에, 데이터 웨어하우스(120)에 의해 저장된 다수의 데이터 세트가 당해 클라이언트(140)에 의한 쿼리에 이용 가능해질 수 있고, 어느 당해 시각에, 저장된 데이터 세트 중 하나가 저장된 데이터 세트 중 다른 하나와 달라질 수 있다. 예를 들어, 그것들이 상이한 종류의 데이터를 저장하도록 정의되기 때문에 두개의 저장된 데이터 세트가 다를 수 있다. 대안적으로, 두개의 저장된 데이터 세트는 동일한 데이터를 복제하도록 구성될 수 있지만, 위에서 설명한 러프 싱크로나이제이션의 오퍼레이션으로 인해 당해 시각에 다를 수 있다. 일 부의 실시예에서는, 이러한 시나리오의 어느 것에 의하든 다수의 데이터 세트가 클라이언트(140)에 의한 쿼리에 이용될 수 있고, 매니저(110)는 그러한 데이터 세트가 클라이언트(140)에게 투명한 방식으로 데이터 웨어하우스 시스템(100) 내에 배치되고 조작되는 상세한 방법을 관리하도록 구성될 수 있다.
클라이언트(140)에 대한 데이터 웨어하우스(120)의 가상화는 데이터 웨어하우스(120) 내에 저장된 데이터 세트가 복제되는지 여부에 무관하게 일어날 수 있다. 데이터 웨어하우스(120)를 클라이언트(140)에게 단일의 데이터 웨어하우스로 가상화하는 방법의 한 실시예가 도 6에 도시되어 있다. 도 1 내지 도 6을 살펴보면, 오퍼레이션은 블록(600)에서 시작되며, 거기에서는 데이터 웨어하우스(120)에 있는 데이터 세트에 관한 위치 정보를 저장한다. 예를 들어, 한 실시예에서는, 매니저(110)가 오퍼레이션즈 데이터베이스(130)의 각각의 데이터 세트에 대한 위치 정보를, 데이터 세트의 상태를 식별하는 다른 정보, 데이터 세트가 복제되는지 여부 등과 함께 저장할 수 있다.
그 후, 매니저(110)는 데이터 웨어하우스 시스템(100) 내에 저장된 특정한 데이터 세트를 표적으로 하는 쿼리를 수신한다 (블록 602). 그에 대한 응답으로, 매니저(110)는 수신된 쿼리를 계산할 수 있는 특정한 데이터 웨어하우스(120)를 식별해낸다 (블록 604). 예를 들어, 매니저(110)는 위에서 설명했듯이 데이터 세트 및 상태 종속성을 탐지하기 위해 쿼리를 분석하고 쿼리를 계산할 수 있는 하나의 (또는, 데이터 세트가 복제되는 경우에는 하나 이상의) 데이터 웨어하우스(120)를 식별해내기 위해 오퍼레이션즈 데이터베이스(130)를 살펴보도록 구성될 수 있다. 진행중인 데이터 세트 업데이트, 데이터 웨어하우스 워크로드 등과 같은 다른 요인들이 쿼리 계산을 위한 적절한 데이터 웨어하우스(120)의 식별에 영향을 줄 수 있다.
어떤 데이터 웨어하우스(120)가 수신된 쿼리를 계산하도록 식별되면, 매니저(110)는 계산을 위해 쿼리를 선택된 데이터 웨어하우스(120)에 보낸다 (블록 606). 그리고, 쿼리가 계산되고 (블록 608), 결과가 매니저(110)를 거쳐 요청 클라이언트(140)로 보내진다 (블록 610). 일부의 실시예에서는, 쿼리의 제출과 쿼리 결과의 수신 사이의 모든 단계들이 클라이언트(140)에게 투명할 수 있음에 유의해야 한다. 또한, 어떤 경우에는, 매니저(110)가 계산을 위한 적절한 데이터 웨어하우스(120)를 즉각 식별해낼 수 없으면 쿼리를 대기시킬 수 있음에 유의해야 한다. 또한, 어떤 경우에는, 예를 들어 쿼리가 잘못된 것이거나 데이터 웨어하우스(120)를 대기하는 시간이 지난 경우에 매니저(110)가 요청 클라이언트(140)에게 에러 상태라고 응답할 수 있다.
데이터 웨어하우스 컴퓨팅 기반
각각의 데이터 웨어하우스(120)는 데이터 웨어하우징 기능을 구현하게 구성된 개별 세트의 컴퓨팅 하드웨어뿐만 아니라 운영 체제 소프트웨어 및 데이터 웨어하우징 소프트웨어 (예를 들어, 데이터베이스 소프트웨어)를 포함할 수 있다. 일부의 실시예에서는, 사용되는 컴퓨팅 하드웨어가 특정한 시스템에 특화된 맞춤 버전의 운영 체제 및 데이터 웨어하우징 소프트웨어로 세밀하게 조직될 수 있는 전용의 하이엔드 멀티프로세서 컴퓨터 시스템을 포함할 수 있다. 그러나, 그러한 구성 은 구매, 관리 및 유지 비용이 비쌀 수 있다. 결과적으로, 일부의 실시예에서는, 어느 또는 모든 데이터 웨어하우스(120)의 각각이 널리 유통되거나 오픈 소스인 운영 체제 및/또는 데이터 웨어하우징 소프트웨어를 구현하는 덜 비싼 (예를 들어, 상용) 컴퓨터 시스템으로 조립된 개별 컴퓨팅 클러스터를 포함할 수 있다.
데이터 웨어하우스(120)가 구현될 수 있는 컴퓨팅 클러스터의 한 실시예가 도 7에 도시되어 있다. 도시된 실시예에서는, 데이터 웨어하우스 클러스터(700) (또는 단순히, 클러스터(700))가 다수의 컴퓨팅 노드(710) (또는 단순히, 노드(710))를 포함한다. 각각의 노드(710)는 다수의 스위치(720)의 각각에 연결되어 있고, 각각의 스위치(720)는 제각기 다수의 스토리지 어레이(730)에 연결되어 있다. 그래서, 도시된 실시예에서는, 각각의 노드(710)가 적절한 스위치(720)를 통해 어떤 스토리지 어레이(730)에든 접근할 수 있다. 한 실시예에서는, 클러스터(700)가 17개 노드(710), 8개 스위치(720) 및 64개 스토리지 어레이(730)를 포함할 수 있다. 그러나, 다양한 실시예에서, 임의의 수의 노드(710), 스위치(720) 및 스토리지 어레이(730) 뿐만 아니라 이러한 구성 요소들을 서로 연결하는 다양한 토폴로지가 채용될 수 있음에 유의해야 한다.
한 실시예에서는, 각각의 노드(710)가 도 8의 설명과 관련하여 아래에서 더 상세히 설명하듯이 유니프로세서 또는 멀티프로세서 컴퓨터 시스템을 포함할 수 있다. 일부의 실시예에서는, 노드(710)가 선마이크로시스템즈(Sun Microsystems), 휴렛팩커드(Hewlett-Packard), IBM, 델(Dell) 또는 어느 적절한 시스템 제조업자를 포함하는 다수의 공급자 중 누구로부터든 구매할 수 있는 제너릭 서버, 퍼스널 컴 퓨터 또는 워크스테이션 시스템을 포함할 수 있다. 또한, 노드(710)는 어느 한 버전의 리눅스(Linux), 마이크로소프트 윈도우(Microsoft Windows), 솔라리스(Solaris), HP-UX, AIX 또는 다른 어느 적절한 일반적으로 구매할 수 있거나 전용의 운영 체제에 따른 운영체제 등과 같은 하나 이상의 적절한 운영 체제를 실행하도록 구성될 수 있다.
일반적으로 말해서, 각각의 노드(710)는 스위치(730)가 노드(710)와 스토리지 어레이(730) 사이의 연결을 이루는 동안에 스토리지 어레이(730)에 의해 저장될 수 있는 데이터 세트에 대해 매니저(110)를 거쳐 수신한 쿼리뿐만 아니라 기타의 데이터 웨어하우스 오퍼레이션을 계산하도록 작동할 수 있다. 그래서, 도시된 실시예에서는, 특정한 노드(710)에서 계산되고 있는 쿼리가 스토리지 어레이(730)의 어느 것에 저장된 데이터 세트에든지 균질하게 접근할 수 있다. 다른 실시예에서는, 데이터 세트가 노드(710)에 대해 비균질적으로 이용 가능할 수도 있다. 예를 들어, 당해 노드(710)가 일부의 데이터 세트를 포함하지만 다른 것은 포함하지 않는 특정한 하나 이상의 스토리지 어레이(730)에 대해 연결되는 맵(map)을 가질 수 있다. 그러한 실시예에서, 특정한 쿼리가 종속된 데이터 세트가 스토리지 어레이(730) 간에 분산되는 방법에 따라 그 쿼리의 계산에 다수의 노드(710)가 참가할 필요가 있을 수 있다.
일부의 실시예에서는, 스위치(720) 및 스토리지 어레이(730)가 스토리지 에어리어 네트워크 (SAN : storage area network)를 포함할 수 있다. 예를 들어, 스위치(720)는 파이버 채널(Fibre Channel) 연결 또는 기타의 적절한 SAN 연결 및 유 지 기술을 이용하여 노드(710) 및 스토리지 어레이(730)에 연결될 수 있다. 그러나, 어떤 적절한 종류의 네트워크든 클러스터(700)의 장치들을 서로 연결하기 위해 이용될 수 있다고 생각된다. 예를 들어, 한 실시예에서는, 기가바이트 이더넷(Gigabit Ethernet) 또는 10-Gigabit Ethernet이 연결기술로 이용될 수 있다.
각각의 스토리지 어레이(730)는 고정식 자기 디스크 드라이브 등과 같은 하나 이상의 대용량 저장 장치를 포함할 수 있다. 예를 들어, 한 실시예에서는 각각의 스토리지 어레이(730)가 RAID(Redundant Array of Independent Disks) 어레이로 구성된 동수의 SCSI (Small Computer Systems Interface) 하드 드라이브를 포함할 수 있다. 예를 들어, 디스크 스트리핑, 미러링 및 데이터 패리티 등과 같은 스토리지 어레이(730)에 의해 지원되는 다양한 저장 특성이 스토리지 어레이(730) 자체에 의해 조작될 수 있다. 예를 들어, 스토리지 어레이(730)는 대용량 저장 장치 외에, 그러한 장치를 조작하도록 구성된 부가적인 하드웨어를 포함할 수 있다. 대안적으로, 스토리지 어레이(730)는 비교적 수동적일 수 있고, 그 저장 특성은 인텔리전트 스위치(720)에 의해 조작될 수 있다. 스토리지 어레이(730)가 자기 디스크에 더하거나 또는 대신하여, 예를 들어 광학 매체 또는 자기 테이프 등과 같은 다른 종류의 저장 장치를 포함할 수도 있다고 생각된다. 또한, 일부의 실시예에서는 각각의 스토리지 어레이(730)가 동일하게 구성될 수도 있지만, 다른 실시예에서는 스토리지 어레이(730)들이 그 구성 및/또는 특징 구성이 이질적일 수도 있다고 생각된다.
일부의 실시예에서는, 클러스터(700)가 당해 데이터 웨어하우스(120)의 예상 되는 워크로드에 맞게 용이하게 조정될 수 있다. 예를 들어, 데이터 웨어하우스(120)가 부정기적으로 수신하는 대량의 데이터 또는 비교적 간단한 쿼리들을 수용해야 할 것으로 예상되면, 스토리지 어레이(730)는 예상되는 양의 데이터 (위에서 설명했듯이 어떤 요구되는 데이터 세트 복제를 포함하여)를 저장할 준비를 해두어야 할 수 있고 노드(710)는 예상되는 워크로드에 따라 따로따로 준비해두어야 할 수도 있다. 쿼리 워크로드 또는 저장 요구조건이 증대되면, 후에 부가적인 노드(710), 스위치(720) 및/또는 스토리지 어레이(730)가 더해질 수 있다.
일부의 실시예에서는, 위에서 설명한 어떤 방법 또는 기법, 예를 들어, 매니저(110) 또는 데이터 웨어하우스(120)의 기능 또는 도 3, 4 및 6에 도시된 방법이 컴퓨터 접근 가능한 매체에 의해 저장되거나 보내질 수 있는 프로그램 명령 및 데이터로서 구현될 수 있다고 생각된다. 그러한 프로그램 명령은 데이터 웨어하우징 및 가상화, 저장 관리, 쿼리 및 데이터 세트 분석, 쿼리 계산, 운영 체제 기능성, 애플리케이션 및/또는 다른 어떤 적절한 기능 등과 같은 특정한 컴퓨팅 기능을 수행하도록 구현될 수 있다. 한 실시예에서는, 노드(710)가 컴퓨터 접근 가능한 매체를 포함할 수 있다. 노드(710)의 예시일 수 있는 컴퓨터 시스템의 한 실시예가 도 8에 도시되어 있다. 도시된 실시예에서는, 컴퓨터 시스템(800)이 입출력 (I/O) 인터페이스(830)에 의해 시스템 메모리(820)에 연결된 하나 이상의 프로세서(810)를 포함한다. 노드(710)는 I/O 인터페이스(830)에 각각 연결된 네트워크 인터페이스(840) 및 SAN 인터페이스(850)를 부가적으로 포함한다.
일부의 실시예에서는, 컴퓨터 시스템(800)의 인스턴스가 클러스터(700)로부 터 독립하여 구성되고 데이터 웨어하우스 시스템(100) 내의 다른 애플리케이션 또는 기능을 구현하도록 구성될 수 있음에 유의해야 한다. 예를 들어, 한 실시예에서는, 컴퓨터 시스템(800)의 하나 이상의 인스턴스가 클러스터(700)에 대해 외적으로 준비해두고 컴퓨터 접근 가능한 매체에 의해 저장되거나 보내질 수 있는 프로그램 명령 및 데이터를 구현하도록 구성되며 매니저(110)를 구현하도록 구성될 수 있다. 일부의 그러한 실시예에서는, 매니저(110)를 구현하도록 구성된 컴퓨터 시스템(800)의 인스턴스의 구성이 도 8에 도시된 것과 다를 수 있다. 예를 들어, 일부의 실시예에서는, 컴퓨터 시스템(800)의 그러한 인스턴스가 더 많거나 적은 프로세서(810)를 포함할 수 있다. 또한, 일부의 실시예에서는 그러한 인스턴스가 SAN 인터페이스(850)를 간직할 수 있지만, 이 인터페이스는 생략될 수도 있다.
위에서 설명했듯이, 다양한 실시예에서 컴퓨터 시스템(800)이 하나의 프로세서(810)를 포함하는 유니프로세서 시스템 또는 수개 (예를 들어, 둘, 넷, 여덟 또는 다른 적절한 수)의 프로세서(810)를 포함하는 멀티프로세서 시스템일 수 있다. 프로세서(810)는 명령을 구현할 수 있는 적절한 어떤 프로세서일 수도 있다. 예를 들어, 다양한 실시예에서 프로세서(810)는 x86, PowerPC, SPARC 또는 MIPS ISAs나 다른 어떤 적절한 ISA 등과 같은 다양한 명령 구성 아키텍처 (ISAs : instruction-set architectures)를 구현하는 범용 또는 임베디드 프로세서일 수 있다. 멀티프로세서 시스템에서, 각각의 프로세서(810)는 반드시 그렇지는 않지만 공통적으로 동일한 ISA를 구현할 수 있다.
시스템 메모리(820)는 프로세서(810)에 의해 접근 가능한 명령 및 데이터를 저장하도록 구성될 수 있다. 다양한 실시예에서, 시스템 메모리(820)는 스태틱 랜덤 액세스 메모리 (SRAM), 싱크로너스 다이내믹 RAM (SDRAM), 비휘발성/플래시 타입 메모리 또는 다른 어떤 종류의 메모리 등과 같은 적절한 어떤 메모리 기술을 이용해서든 구현될 수 있다. 도시된 실시예에서는, 위에서 설명한 바와 같은 요구되는 기능을 구현하는 프로그램 명령 및 데이터가 시스템 메모리(820) 내에 코드(825)로 저장된 것으로 도시되어 있다.
한 실시예에서는, I/O 인터페이스(830)가 프로세서(810), 시스템 메모리(820) 및 네트워크 인터페이스(840), SAN 인터페이스(850) 또는 다른 주변 인터페이스를 포함하는 그 장치에 있는 어떤 주변 장치 사이의 I/O 트래픽을 조정하도록 구성될 수 있다. 일부의 실시예에서는, I/O 인터페이스(830)가 한 구성요소 (예를 들어, 시스템 메모리(820))로부터의 데이터 신호를 다른 구성요소 (예를 들어, 프로세서(810))가 이용하기에 적절한 포맷으로 변환하기 위하여 어떤 요구되는 프로토콜, 타이밍 또는 기타의 데이터 변환을 수행할 수 있다. 일부의 실시예에서는, I/O 인터페이스(830)가 예를 들어 PCI(Peripheral Component Interconnect) 버스 스탠더드 또는 USB(Universal Serial Bus) 스탠더드의 변형 등과 같은 다양한 종류의 주변 버스를 통해 부착된 장치를 위한 지원을 포함할 수 있다. 일부의 실시예에서는, I/O 인터페이스(830)의 기능은 예를 들어 노드 브릿지 및 사우드 브릿지 등과 같은 둘 이상의 별개의 구성요소로 나뉠 수 있다. 또한, 일부의 실시예에서는 시스템 메모리(820)에 대한 인터페이스 등과 같은 I/O 인터페이스(830)의 기능성의 일부 또는 전부가 프로세서(810) 속에 직접 합체될 수 있다.
네트워크 인터페이스(840)는 컴퓨터 시스템(800)과 네트워크에 부착된 다른 장치 사이에서 데이터가 교환되는 것을 허용하도록 구성될 수 있다. 예를 들어, 매니저(110)는 클러스터(700) 외부의 컴퓨터 시스템(800)에서 구현하도록 구성될 수 있고 클러스터(700) 내의 노드(710)로서 구성된 특정한 컴퓨터 시스템(800)은 네트워크 인터페이스(840)를 통해 외부 시스템에 있는 매니저(110)와 통신할 수 있다. 다양한 실시예에서, 네트워크 인터페이스(840)는 예를 들어 어떤 적절한 종류의 이더넷 네트워크 등과 같은 유선 또는 무선 제너럴 데이터 네트워크를 통한 통신이나, 아날로그 보이스 네트워크 또는 디지털 파이버 통신 네트워크 등과 같은 원격 통신/전화 네트워크를 통한 통신이나, 파이버 채널 SAN 등과 같은 스토리지 에어리어 네트워크를 통한 통신 또는 다른 어떤 적절한 종류의 네트워크 및/또는 프로토콜을 통한 통신을 지원할 수 있다.
한 실시예에서, SAN 인터페이스(850)는 스위치(720)를 통해 컴퓨터 시스템(800)과 스토리지 어레이(730)사이에서 데이터가 교환되는 것을 허용하도록 구성될 수 있다. 일부의 실시예에서는, 위에서 설명했듯이, SAN 인터페이스(850)가 파이버 채널 인터페이스 또는 다른 적절한 인터페이스를 포함할 수 있다. 그러나, 일부의 실시예에서는, SAN 연결이 스탠더드 네트워크 인터페이스를 통하여 구현될 수도 있다고 생각된다. 그러한 실시예에서, 컴퓨터 시스템(800)은 저장 장치 및 다른 컴퓨터 시스템과의 통신을 위한 단일의 네트워크 인터페이스 (예를 들어, 네트워크 인터페이스(840))를 제공할 수 있거나, 또는 컴퓨터 시스템(800)이 저장 장치 및 제너럴 네트워크 통신을 수개의 유사하게 구성된 네트워크 인터페이스 간에 균질하게 분산시킬 수도 있다.
일부의 실시예에서는, 시스템 메모리(820)가 위에서 설명했듯이 프로그램 명령 및 데이터를 저장하도록 구성된 컴퓨터 접근 가능한 매체의 한 실시예일 수 있다. 그러나, 다른 실시예에서는, 프로그램 명령 및/또는 데이터가 상이한 종류의 컴퓨터 접근 가능한 매체 상에서 수신, 송신 또는 저장될 수 있다. 일반적으로 말해서, 컴퓨터 접근 가능한 매체는 자기 또는 광학 매체, 예를 들어, I/O 인터페이스(830)를 통해 컴퓨터 시스템(800)에 연결된 디스크, CD-ROM 또는 DVD-ROM, 또는 SAN 인터페이스(850)를 통해 컴퓨터 시스템(800)에 연결된 스토리지 어레이(730) 등과 같은 저장 매체 또는 메모리 매체를 포함할 수 있다. 또한, 컴퓨터 접근 가능한 매체는 컴퓨터 시스템(800)의 일부의 실시예에서 시스템 메모리(820) 또는 다른 종류의 메모리로서 포함될 수 있는 RAM (예를 들어 SDRAM, DDR SDRAM, RDRAM, SRAM 등), ROM 등과 같은 어떤 휘발성 또는 비휘발성 매체든 포함할 수 있다. 또한, 컴퓨터 접근 가능한 매체는 네트워크 인터페이스(840) 또는 SAN 인터페이스(850)를 통해 구현될 수 있는 네트워크 및/또는 무선 링크 등과 같은 통신 매체를 통해 보내지는 전기적, 전자기적 또는 디지털 신호 등과 같은 전송 매체 또는 신호를 포함할 수 있다.
위에서 실시예들을 상세하게 설명하였을지라도, 위 설명을 잘 이해하면 수 많은 변화 및 변경이 이 기술분야에서 숙련된 자에게 자명해질 것이다. 다음의 특허청구의 범위는 모든 그러한 변화 및 변경을 포함하도록 해석될 것을 의도하고 있다.

Claims (69)

  1. 다수의 데이터 웨어하우스, 및
    하나 이상의 데이터 소스로부터 상기 다수의 데이터 웨어하우스 중 하나 이상에 저장하기 위한 데이터 세트를 추출하도록 구성된 데이터 웨어하우스 매니저
    를 포함하고,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각은 상기 데이터 웨어하우스 매니저에 의해 추출된 제1 데이터 세트의 개별 레플리카를 저장하게 구성되며,
    상기 데이터 웨어하우스 매니저는, 상기 제1 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에, 상기 제1 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하도록 구성된 시스템.
  2. 제1항에 있어서,
    상기 제1 데이터 세트가 상기 제1 서브셋의 다른 데이터 웨어하우스에 저장되고 있는 동안, 상기 쿼리가 상기 제1 서브셋의 제1 데이터 웨어하우스에 의해 계산되는 것을 특징으로 하는 시스템.
  3. 제1항에 있어서,
    상기 데이터 웨어하우스 매니저는, 상기 제1 데이터 세트가 상기 제1 서브셋의 어느 당해 데이터 웨어하우스에 저장된 후에, 상기 쿼리가 상기 제1 서브셋의 상기 당해 데이터 웨어하우스에 의해 계산되게 하도록 구성된 것을 특징으로 하는 시스템.
  4. 제1항에 있어서,
    상기 제1 서브셋의 데이터 웨어하우스의 각각에 상기 제1 데이터 세트를 저장하는 것이 적어도 부분적으로는 동시에 일어나는 것을 특징으로 하는 시스템.
  5. 제1항에 있어서,
    상기 다수의 데이터 웨어하우스 중 당해 하나가 상기 데이터 웨어하우스 매니저에 의해 추출된 제2 데이터 세트를 저장하게 구성되고, 상기 다수의 데이터 웨어하우스 중 적어도 다른 하나는 상기 제2 데이터 세트의 어떤 레플리카도 저장하지 않는 것을 특징으로 하는 시스템.
  6. 제1항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 관계형 데이터베이스를 포함하는 것을 특징으로 하는 시스템.
  7. 제1항에 있어서,
    상기 데이터 웨어하우스 매니저가 상기 다수의 데이터 웨어하우스 내에 저장된 각각의 데이터 세트에 대응하는 식별 정보를 오퍼레이션즈 데이터베이스에 저장하도록 구성된 것을 특징으로 하는 시스템.
  8. 제7항에 있어서,
    상기 제1 데이터 세트에 관해서는, 상기 식별 정보가 상기 제1 서브셋의 데이터 웨어하우스의 각각의 개별 아이덴티티 및 상기 제1 데이터 세트가 상기 제1 서브셋의 데이터 웨어하우스 중 대응하는 하나에 저장되었는지를 나타내는 개별 상태 정보를 포함하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서,
    상기 데이터 웨어하우스 매니저는, 상기 개별 상태 정보에 따라 상기 제1 서브셋의 데이터 웨어하우스 중 당해 하나가 상기 쿼리를 계산하기에 충분한 데이터를 갖는지 판단하고, 그에 따라, 계산을 위해 상기 제1 서브셋의 상기 당해 하나에 상기 쿼리를 전달하도록 구성된 것을 특징으로 하는 시스템.
  10. 제1항에 있어서,
    상기 다수의 데이터 웨어하우스 중 적어도 둘은 상이한 물리적 장소에 배치되어 있는 것을 특징으로 하는 시스템.
  11. 제1항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 컴퓨팅 클러스터를 포함하고, 당해 개별 컴퓨팅 클러스터가 스토리지 에어리어 네트워크 (SAN : storage area network)를 거쳐서 다수의 저장 장치에 연결된 적어도 하나의 컴퓨팅 노드를 포함하는 것을 특징으로 하는 시스템.
  12. 제11항에 있어서,
    상기 적어도 하나의 컴퓨팅 노드가 어느 한 버전의 리눅스에 따른 운영 체제를 실행하게 구성된 것을 특징으로 하는 시스템.
  13. 제1항에 있어서,
    상기 데이터 웨어하우스 매니저가 웹 서비스 인터페이스를 통해 요청 애플리케이션으로부터 상기 쿼리를 수신하게 구성된 것을 특징으로 하는 시스템.
  14. 하나 이상의 데이터 소스로부터 다수의 데이터 웨어하우스 중 하나 이상에 저장하기 위한 데이터 세트를 추출하는 단계,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 데이터 웨어하우스의 각각에 제1 데이터 세트의 개별 레플리카를 저장하는 단계, 및
    상기 제1 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에 상기 제1 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서,
    상기 제1 서브셋의 다른 데이터 웨어하우스가 상기 제1 데이터 세트를 저장하고 있는 동안, 상기 제1 서브셋의 제1 데이터 웨어하우스가 상기 쿼리를 계산하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  16. 제14항에 있어서,
    상기 제1 데이터 세트가 상기 제1 서브셋의 어느 당해 데이터 웨어하우스에 저장된 후에, 상기 쿼리가 상기 제1 서브셋의 상기 당해 데이터 웨어하우스에 의해 계산되게 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제14항에 있어서,
    상기 제1 서브셋의 데이터 웨어하우스의 각각에 상기 제1 데이터 세트를 저장하는 단계가 적어도 부분적으로는 동시에 행해지는 것을 특징으로 하는 방법.
  18. 제14항에 있어서,
    상기 다수의 데이터 웨어하우스 중 당해 하나가 상기 데이터 웨어하우스 매니저에 의해 추출된 제2 데이터 세트를 저장하게 구성되고, 상기 다수의 데이터 웨 어하우스 중 적어도 다른 하나는 상기 제2 데이터 세트의 어떤 레플리카도 저장하지 않는 것을 특징으로 하는 방법.
  19. 제14항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 관계형 데이터베이스를 포함하는 것을 특징으로 하는 방법.
  20. 제14항에 있어서,
    상기 다수의 데이터 웨어하우스 내에 저장된 각각의 데이터 세트에 대응하는 식별 정보를 오퍼레이션즈 데이터베이스에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  21. 제20항에 있어서,
    상기 제1 데이터 세트에 관해서는, 상기 식별 정보가 상기 제1 서브셋의 데이터 웨어하우스의 각각의 개별 아이덴티티 및 상기 제1 데이터 세트가 상기 제1 서브셋의 데이터 웨어하우스 중 대응하는 하나에 저장되었는지를 나타내는 개별 상태 정보를 포함하는 것을 특징으로 하는 방법.
  22. 제21항에 있어서,
    상기 개별 상태 정보에 따라 상기 제1 서브셋의 데이터 웨어하우스 중 당해 하나가 상기 쿼리를 계산하기에 충분한 데이터를 갖는지 판단하는 단계, 및
    상기 판단에 따라 계산을 위해 상기 제1 서브셋의 상기 당해 하나에 상기 쿼리를 전달하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  23. 제14항에 있어서,
    상기 다수의 데이터 웨어하우스 중 적어도 둘은 상이한 물리적 장소에 배치되어 있는 것을 특징으로 하는 방법.
  24. 제14항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 컴퓨팅 클러스터를 포함하고, 당해 개별 컴퓨팅 클러스터가 스토리지 에어리어 네트워크 (SAN : storage area network)를 거쳐서 다수의 저장 장치에 연결된 적어도 하나의 컴퓨팅 노드를 포함하는 것을 특징으로 하는 방법.
  25. 제24항에 있어서,
    상기 적어도 하나의 컴퓨팅 노드가 어느 한 버전의 리눅스에 따른 운영 체제를 구현하게 구성된 것을 특징으로 하는 방법.
  26. 제14항에 있어서,
    웹 서비스 인터페이스를 통해 요청 애플리케이션으로부터 상기 쿼리를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  27. 하나 이상의 데이터 소스로부터 다수의 데이터 웨어하우스 중 하나 이상에 저장하기 위한 데이터 세트를 추출하고,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각에 제1 데이터 세트의 개별 레플리카를 저장하며,
    상기 제1 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에 상기 제1 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하도록 컴퓨터 시스템에 의해 실행할 수 있는 프로그램 명령을 포함하는 컴퓨터 접근 가능한 매체.
  28. 제27항에 있어서,
    상기 제1 서브셋의 다른 데이터 웨어하우스가 상기 제1 데이터 세트를 저장하고 있는 동안, 상기 제1 서브셋의 제1 데이터 웨어하우스가 상기 쿼리를 계산하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  29. 제27항에 있어서,
    상기 프로그램 명령이, 상기 제1 데이터 세트가 상기 제1 서브셋의 어느 당해 데이터 웨어하우스에 저장된 후에, 상기 쿼리가 상기 제1 서브셋의 상기 당해 데이터 웨어하우스에 의해 계산되게 하도록 더 실행할 수 있는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  30. 제27항에 있어서,
    상기 제1 서브셋의 데이터 웨어하우스의 각각에 상기 제1 데이터 세트를 저장하는 것이 적어도 부분적으로는 동시에 일어나는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  31. 제27항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 관계형 데이터베이스를 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  32. 제27항에 있어서,
    상기 프로그램 명령이 상기 다수의 데이터 웨어하우스 내에 저장된 각각의 데이터 세트에 대응하는 식별 정보를 오퍼레이션즈 데이터베이스에 저장하도록 더 실행할 수 있는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  33. 제32항에 있어서,
    상기 제1 데이터 세트에 관해서는, 상기 식별 정보가 상기 제1 서브셋의 데이터 웨어하우스의 각각의 개별 아이덴티티 및 상기 제1 데이터 세트가 상기 제1 서브셋의 데이터 웨어하우스 중 대응하는 하나에 저장되었는지를 나타내는 개별 상태 정보를 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  34. 제33항에 있어서,
    상기 프로그램 명령이,
    상기 개별 상태 정보에 따라 상기 제1 서브셋의 데이터 웨어하우스 중 당해 하나가 상기 쿼리를 계산하기에 충분한 데이터를 갖는지 판단하고,
    상기 판단에 따라 계산을 위해 상기 제1 서브셋의 상기 당해 하나에 상기 쿼리를 전달하도록 더 실행할 수 있는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  35. 제27항에 있어서,
    상기 프로그램 명령이 어느 한 버전의 리눅스에 따른 운영 체제를 구현하도록 더 실행할 수 있는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  36. 제27항에 있어서,
    상기 프로그램 명령이 웹 서비스 인터페이스를 통해 요청 애플리케이션으로부터 상기 쿼리를 수신하도록 부가적으로 실행할 수 있는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  37. 하나 이상의 데이터 소스로부터 추출된 데이터 세트를 저장하게 구성된 다수 의 데이터 웨어하우스, 및
    상기 다수의 데이터 웨어하우스를 클라이언트에게 단일의 데이터 웨어하우스로 보여주도록 구성된 데이터 웨어하우스 매니저 - 상기 다수의 데이터 웨어하우스 내의 상기 데이터 세트의 위치는 상기 클라이언트에게 투명함 -
    를 포함하고,
    당해 시각에, 상기 다수의 데이터 웨어하우스 중 제1의 것에 의해 저장되고 상기 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제1 데이터 세트가 상기 다수의 데이터 웨어하우스 중 제2의 것에 의해 저장되고 상기 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제2 데이터 세트와 다르며,
    상기 데이터 웨어하우스 매니저는, 상기 클라이언트로부터 상기 다수의 데이터 웨어하우스 중 하나 이상에 의해 저장된 데이터 세트로 보내지는 쿼리를 수신하는 것에 응답하여, 상기 다수의 데이터 웨어하우스 중 상기 쿼리를 계산할 수 있는 특정한 데이터 웨어하우스를 식별하고 계산을 위해 상기 쿼리를 상기 특정한 데이터 웨어하우스로 전달하도록 구성된 시스템.
  38. 제37항에 있어서,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각이 당해 데이터 세트의 개별 레플리카를 저장하도록 구성된 것을 특징으로 하는 시스템.
  39. 제38항에 있어서,
    상기 데이터 웨어하우스 매니저는, 상기 당해 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에, 상기 당해 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하도록 구성된 것을 특징으로 하는 시스템.
  40. 제37항에 있어서,
    상기 다수의 데이터 웨어하우스 중 당해 하나가 제2 데이터 세트를 저장하게 구성되고, 상기 다수의 데이터 웨어하우스 중 적어도 다른 하나는 상기 제2 데이터 세트의 어떤 레플리카도 저장하지 않는 것을 특징으로 하는 시스템.
  41. 제37항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 관계형 데이터베이스를 포함하는 것을 특징으로 하는 시스템.
  42. 제37항에 있어서,
    상기 데이터 웨어하우스 매니저는 상기 다수의 데이터 웨어하우스 내에 저장된 각각의 데이터 세트에 대응하는 식별 정보를 오퍼레이션즈 데이터베이스에 저장하도록 구성된 것을 특징으로 하는 시스템.
  43. 제42항에 있어서,
    당해 데이터 세트에 관해서는, 상기 식별 정보가 상기 당해 데이터 세트가 저장되어 있거나 저장될 상기 하나 이상의 데이터 웨어하우스의 각각의 개별 아이덴티티를 포함하고, 상기 식별 정보는 상기 당해 데이터 세트가 대응하는 데이터 웨어하우스에 저장되었는지를 나타내는 개별 상태 정보를 더 포함하는 것을 특징으로 하는 시스템.
  44. 제43항에 있어서,
    상기 데이터 웨어하우스 매니저가 상기 쿼리를 계산할 수 있는 상기 특정한 데이터 웨어하우스를 식별하는 것은, 상기 개별 상태 정보에 따라 상기 특정한 데이터 웨어하우스가 상기 쿼리를 계산하기에 충분한 데이터를 갖는지 판단하는 것을 더 포함하는 것을 특징으로 하는 시스템.
  45. 제37항에 있어서,
    상기 데이터 웨어하우스 매니저가 웹 서비스 인터페이스를 통해 요청 애플리케이션으로부터 상기 쿼리를 수신하게 구성된 것을 특징으로 하는 시스템.
  46. 하나 이상의 데이터 소스로부터 다수의 데이터 웨어하우스 중 하나 이상에 저장하기 위한 데이터 세트를 추출하는 단계,
    상기 다수의 데이터 웨어하우스를 클라이언트에게 단일의 데이터 웨어하우스 로 보여주는 단계 - 상기 다수의 데이터 웨어하우스 내의 상기 데이터 세트의 위치는 상기 클라이언트에게 투명함 -, 및
    상기 클라이언트로부터 상기 다수의 데이터 웨어하우스 중 하나 이상에 의해 저장된 데이터 세트로 보내지는 쿼리를 수신하는 것에 응답하여, 상기 다수의 데이터 웨어하우스 중 상기 쿼리를 계산할 수 있는 특정한 데이터 웨어하우스를 식별하고 계산을 위해 상기 쿼리를 상기 특정한 데이터 웨어하우스로 전달하는 단계
    를 포함하고,
    당해 시각에, 상기 다수의 데이터 웨어하우스 중 제1의 것에 의해 저장되고 상기 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제1 데이터 세트가, 상기 다수의 데이터 웨어하우스 중 제2의 것에 의해 저장되고 상기 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제2 데이터 세트와 다른 것을 특징으로 하는 방법.
  47. 제46항에 있어서,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각이 당해 데이터 세트의 개별 레플리카를 저장하도록 구성된 것을 특징으로 하는 방법.
  48. 제47항에 있어서,
    상기 당해 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에, 상기 당해 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  49. 제46항에 있어서,
    상기 다수의 데이터 웨어하우스 중 당해 하나가 제2 데이터 세트를 저장하게 구성되고, 상기 다수의 데이터 웨어하우스 중 적어도 다른 하나는 상기 제2 데이터 세트의 어떤 레플리카도 저장하지 않는 것을 특징으로 하는 방법.
  50. 제46항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 관계형 데이터베이스를 포함하는 것을 특징으로 하는 방법.
  51. 제46항에 있어서,
    상기 다수의 데이터 웨어하우스 내에 저장된 각각의 데이터 세트에 대응하는 식별 정보를 오퍼레이션즈 데이터베이스에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  52. 제51항에 있어서,
    당해 데이터 세트에 관해서는, 상기 식별 정보가 상기 당해 데이터 세트가 저장되어 있거나 저장될 상기 하나 이상의 데이터 웨어하우스의 각각의 개별 아이 덴티티를 포함하고, 상기 식별 정보는 상기 당해 데이터 세트가 대응하는 데이터 웨어하우스에 저장되었는지를 나타내는 개별 상태 정보를 더 포함하는 것을 특징으로 하는 방법.
  53. 제52항에 있어서,
    상기 쿼리를 계산할 수 있는 상기 특정한 데이터 웨어하우스를 식별하는 단계는, 상기 개별 상태 정보에 따라 상기 특정한 데이터 웨어하우스가 상기 쿼리를 계산하기에 충분한 데이터를 갖는지 판단하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  54. 제46항에 있어서,
    웹 서비스 인터페이스를 통해 요청 애플리케이션으로부터 상기 쿼리를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  55. 하나 이상의 데이터 소스로부터 다수의 데이터 웨어하우스 중 하나 이상에 저장하기 위한 데이터 세트를 추출하고,
    상기 다수의 데이터 웨어하우스를 클라이언트에게 단일의 데이터 웨어하우스로 보여주고 - 상기 다수의 데이터 웨어하우스 내의 상기 데이터 세트의 위치는 상기 클라이언트에게 투명함 -,
    상기 클라이언트로부터 상기 다수의 데이터 웨어하우스 중 하나 이상에 의해 저장된 데이터 세트로 보내지는 쿼리를 수신하는 것에 응답하여, 상기 다수의 데이터 웨어하우스 중 상기 쿼리를 계산할 수 있는 특정한 데이터 웨어하우스를 식별하고 계산을 위해 상기 쿼리를 상기 특정한 데이터 웨어하우스로 전달하도록 실행할 수 있는 프로그램 명령을 포함하며,
    당해 시각에, 상기 다수의 데이터 웨어하우스 중 제1의 것에 의해 저장되고 상기 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제1 데이터 세트가 상기 다수의 데이터 웨어하우스 중 제2의 것에 의해 저장되고 상기 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제2 데이터 세트와 다른 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  56. 제55항에 있어서,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각이 당해 데이터 세트의 개별 레플리카를 저장하도록 구성된 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  57. 제56항에 있어서,
    상기 당해 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에, 상기 당해 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하는 것을 부가적으로 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  58. 제55항에 있어서,
    상기 다수의 데이터 웨어하우스 중 당해 하나가 제2 데이터 세트를 저장하게 구성되고, 상기 다수의 데이터 웨어하우스 중 적어도 다른 하나는 상기 제2 데이터 세트의 어떤 레플리카도 저장하지 않는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  59. 제55항에 있어서,
    상기 다수의 데이터 웨어하우스의 각각이 개별 관계형 데이터베이스를 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  60. 제55항에 있어서,
    상기 다수의 데이터 웨어하우스 내에 저장된 각각의 데이터 세트에 대응하는 식별 정보를 오퍼레이션즈 데이터베이스에 저장하는 것을 더 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  61. 제60항에 있어서,
    당해 데이터 세트에 관해서는, 상기 식별 정보가 상기 당해 데이터 세트가 저장되어 있거나 저장될 상기 하나 이상의 데이터 웨어하우스의 각각의 개별 아이덴티티를 포함하고, 상기 식별 정보는 상기 당해 데이터 세트가 대응하는 데이터 웨어하우스에 저장되었는지를 나타내는 개별 상태 정보를 더 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  62. 제61항에 있어서,
    상기 쿼리를 계산할 수 있는 상기 특정한 데이터 웨어하우스를 식별하는 것은, 상기 개별 상태 정보에 따라 상기 특정한 데이터 웨어하우스가 상기 쿼리를 계산하기에 충분한 데이터를 갖는지 판단하는 것을 더 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  63. 제55항에 있어서,
    웹 서비스 인터페이스를 통해 요청 애플리케이션으로부터 상기 쿼리를 수신하는 것을 더 포함하는 것을 특징으로 하는 컴퓨터 접근 가능한 매체.
  64. 다수의 데이터 웨어하우스,
    상기 다수의 데이터 웨어하우스 중 하나 이상에 저장하기 위해 하나 이상의 데이터 소스로부터 데이터 세트를 추출하도록 구성된 데이터 웨어하우스 매니저, 및
    상기 데이터 웨어하우스 매니저와 상호작용하고 상기 데이터 세트와 관련된 데이터 웨어하우스 상태 정보를 저장하게 구성된 오퍼레이션즈 데이터베이스
    를 포함하고,
    상기 데이터 웨어하우스 매니저는, 다수의 클라이언트 중 당해 하나로부터 상기 다수의 데이터 웨어하우스 중 하나 이상에 의해 저장된 데이터 세트로 보내지는 쿼리를 수신하는 것에 응답하여, 상기 다수의 데이터 웨어하우스 중 상기 쿼리를 계산할 수 있는 특정한 데이터 웨어하우스를 식별하고 계산을 위해 상기 쿼리를 상기 특정한 데이터 웨어하우스로 전달하도록 구성되며, 상기 식별은 상기 데이터 웨어하우스 상태 정보에 종속하는 시스템.
  65. 제64항에 있어서,
    당해 데이터 세트에 관해서는, 상기 당해 데이터 세트와 관련된 상기 데이터 웨어하우스 상태 정보가 상기 당해 데이터 세트를 저장하도록 구성된 상기 다수의 데이터 웨어하우스 중 하나 이상을 식별하는 정보를 포함하는 것을 특징으로 하는 시스템.
  66. 제64항에 있어서,
    당해 데이터 세트에 관해서는, 상기 당해 데이터 세트와 관련된 상기 데이터 웨어하우스 상태 정보가 상기 당해 데이터 세트의 내용을 변경하는 오퍼레이션에 관한 상기 당해 데이터 세트의 상태를 식별하는 정보를 포함하는 것을 특징으로 하는 시스템.
  67. 제64항에 있어서,
    상기 다수의 데이터 웨어하우스 중 둘 이상을 포함하는 제1 서브셋의 각각이 상기 데이터 웨어하우스 매니저에 의해 추출된 제1 데이터 세트의 개별 레플리카를 저장하도록 구성되고, 상기 데이터 웨어하우스 매니저가, 상기 제1 데이터 세트의 개별 레플리카의 각각이 상기 제1 서브셋의 대응하는 데이터 웨어하우스에 저장되기 전에, 상기 제1 데이터 세트에 종속하는 쿼리가 상기 제1 서브셋의 데이터 웨어하우스 중 하나에 의해 계산되게 하도록 구성된 것을 특징으로 하는 시스템.
  68. 제64항에 있어서,
    상기 데이터 웨어하우스 매니저는, 상기 다수의 데이터 웨어하우스를 상기 당해 클라이언트에게 단일의 데이터 웨어하우스로 보여주도록 구성되고, 상기 다수의 데이터 웨어하우스 내의 상기 데이터 세트의 위치는 상기 당해 클라이언트에게 투명한 것을 특징으로 하는 시스템.
  69. 제68항에 있어서,
    당해 시각에, 상기 다수의 데이터 웨어하우스 중 제1의 것에 의해 저장되고 상기 당해 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제1 데이터 세트가, 상기 다수의 데이터 웨어하우스 중 제2의 것에 의해 저장되고 상기 당해 클라이언트가 상기 당해 시각에 쿼리를 위해 이용할 수 있는 제2 데이터 세트와 다른 것을 특징으로 하는 시스템.
KR1020077016255A 2004-12-17 2005-12-14 데이터 웨어하우징을 위한 장치 및 방법 KR101266683B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/016,563 US7415487B2 (en) 2004-12-17 2004-12-17 Apparatus and method for data warehousing
US11/016,563 2004-12-17
PCT/US2005/045349 WO2006065953A2 (en) 2004-12-17 2005-12-14 Apparatus and method for data warehousing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020127024262A Division KR101323500B1 (ko) 2004-12-17 2005-12-14 데이터 웨어하우징을 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20080002743A true KR20080002743A (ko) 2008-01-04
KR101266683B1 KR101266683B1 (ko) 2013-06-26

Family

ID=36046631

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020077016255A KR101266683B1 (ko) 2004-12-17 2005-12-14 데이터 웨어하우징을 위한 장치 및 방법
KR1020127024262A KR101323500B1 (ko) 2004-12-17 2005-12-14 데이터 웨어하우징을 위한 장치 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127024262A KR101323500B1 (ko) 2004-12-17 2005-12-14 데이터 웨어하우징을 위한 장치 및 방법

Country Status (7)

Country Link
US (1) US7415487B2 (ko)
EP (2) EP3352103A1 (ko)
JP (1) JP5047806B2 (ko)
KR (2) KR101266683B1 (ko)
CN (2) CN102142039B (ko)
CA (2) CA2879549C (ko)
WO (1) WO2006065953A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140064718A (ko) * 2011-02-21 2014-05-28 아마데우스 에스.에이.에스. 데이터 웨어하우스로부터 통계자료를 산출하는 방법 및 시스템

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090171847A2 (en) * 2005-01-24 2009-07-02 Microsoft Corporation Multi-merchant purchasing environment for downloadable products
US20060167811A1 (en) * 2005-01-24 2006-07-27 Microsoft Corporation Product locker for multi-merchant purchasing environment for downloadable products
EP2033122B1 (en) * 2006-06-26 2011-02-23 International Business Machines Corporation Method and system for ensuring consistency over time of data gathered by distinct software applications
US8392358B2 (en) * 2006-06-29 2013-03-05 Nice Systems Technologies Inc. Temporal extent considerations in reporting on facts organized as a dimensionally-modeled fact collection
US20080028028A1 (en) * 2006-07-27 2008-01-31 Gr8 Practice Llc E-mail archive system, method and medium
US8606799B2 (en) 2006-12-28 2013-12-10 Sap Ag Software and method for utilizing a generic database query
US8417731B2 (en) 2006-12-28 2013-04-09 Sap Ag Article utilizing a generic update module with recursive calls identify, reformat the update parameters into the identified database table structure
US7730056B2 (en) * 2006-12-28 2010-06-01 Sap Ag Software and method for utilizing a common database layout
US20080177892A1 (en) * 2007-01-19 2008-07-24 International Business Machines Corporation Method for service oriented data extraction transformation and load
CA2576703C (en) * 2007-02-02 2014-08-12 Cognos Incorporated System and method for optimizing business intelligence data queries within a client-server architecture
ITRM20070161A1 (it) * 2007-03-27 2008-09-28 Uni Del Salento Metodo e formalismo per inviare istruzioni a database distribuiti realizzato mediante programma per computer
US7739547B2 (en) * 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
US20110004622A1 (en) * 2007-10-17 2011-01-06 Blazent, Inc. Method and apparatus for gathering and organizing information pertaining to an entity
CN101471956B (zh) * 2007-12-28 2011-08-31 英业达股份有限公司 目标端的储存设备状态的识别及动态更新方法
US8521682B2 (en) * 2008-01-17 2013-08-27 International Business Machines Corporation Transfer of data from transactional data sources to partitioned databases in restartable environments
US7933873B2 (en) * 2008-01-17 2011-04-26 International Business Machines Corporation Handling transfer of bad data to database partitions in restartable environments
US8156084B2 (en) * 2008-01-17 2012-04-10 International Business Machines Corporation Transfer of data from positional data sources to partitioned databases in restartable environments
US8688622B2 (en) * 2008-06-02 2014-04-01 The Boeing Company Methods and systems for loading data into a temporal data warehouse
US7917547B2 (en) * 2008-06-10 2011-03-29 Microsoft Corporation Virtualizing objects within queries
US8010648B2 (en) * 2008-10-24 2011-08-30 Microsoft Corporation Replica placement in a distributed storage system
US8380663B2 (en) * 2008-12-17 2013-02-19 Sybase, Inc. Data integrity in a database environment through background synchronization
AU2013202073B2 (en) * 2009-02-12 2014-04-17 Accenture Global Services Limited A data system architecture to analyze distributed data sets
US20100205153A1 (en) * 2009-02-12 2010-08-12 Accenture Global Services Gmbh Data System Architecture to Analyze Distributed Data Sets
US8135666B2 (en) * 2010-03-11 2012-03-13 International Business Machines Corporation Systems and methods for policy based execution of time critical data warehouse triggers
US10162851B2 (en) * 2010-04-19 2018-12-25 Salesforce.Com, Inc. Methods and systems for performing cross store joins in a multi-tenant store
CN102541959B (zh) * 2010-12-31 2014-03-12 中国移动通信集团安徽有限公司 Etl调度方法、装置及系统
AU2012203333A1 (en) 2011-06-15 2013-01-10 Agile Software Pty Limited Method and apparatus for testing data warehouses
CN102279886B (zh) * 2011-08-16 2012-10-17 中国民生银行股份有限公司 元数据处理方法及设备
CN102799651B (zh) * 2012-06-28 2015-01-21 用友软件股份有限公司 查询处理装置和查询处理方法
CN104662539B (zh) * 2012-09-27 2018-02-23 艾玛迪斯简易股份公司 存储并检索数据的方法和系统
CN103902583B (zh) * 2012-12-27 2019-03-12 方正国际软件(北京)有限公司 一种etl流程执行系统
CN103345468B (zh) * 2013-05-13 2017-03-29 中国科学技术大学 一种基于太阳能建筑的建筑材料热物性数据库系统
US10158579B2 (en) * 2013-06-21 2018-12-18 Amazon Technologies, Inc. Resource silos at network-accessible services
US10198292B2 (en) * 2013-11-27 2019-02-05 Actian Sub Iii, Inc. Scheduling database queries based on elapsed time of queries
US20150169609A1 (en) * 2013-12-06 2015-06-18 Zaius, Inc. System and method for load balancing in a data storage system
US11809451B2 (en) 2014-02-19 2023-11-07 Snowflake Inc. Caching systems and methods
US10545917B2 (en) 2014-02-19 2020-01-28 Snowflake Inc. Multi-range and runtime pruning
US9553762B1 (en) * 2014-06-26 2017-01-24 Altera Corporation Network-on-chip with fixed and configurable functions
US10304025B2 (en) * 2015-05-26 2019-05-28 Locanis Ag Controlling industrial trucks in a warehouse
CN106921614B (zh) * 2015-12-24 2020-05-22 北京国双科技有限公司 业务数据处理方法和装置
CN106933913B (zh) * 2015-12-31 2020-05-08 北京国双科技有限公司 数据处理方法和装置
CN109075994B (zh) * 2016-04-28 2022-04-05 斯诺弗雷克公司 多集群仓库
US10785295B2 (en) * 2016-06-30 2020-09-22 Intel Corporation Fabric encapsulated resilient storage
CN107563925A (zh) * 2017-08-31 2018-01-09 上海德衡数据科技有限公司 一种智能化区域急救医疗集成数据中心系统架构
CN107992526B (zh) * 2017-11-10 2021-03-23 广州虎牙信息科技有限公司 主播推荐方法、存储设备及计算机设备
EP3514742A1 (en) * 2018-01-19 2019-07-24 Siemens Aktiengesellschaft Collecting data from a data-source into a mom data warehouse
CN109299180B (zh) * 2018-10-31 2021-08-27 武汉光谷联众大数据技术有限责任公司 一种数据仓库etl操作系统
US11614976B2 (en) 2019-04-18 2023-03-28 Oracle International Corporation System and method for determining an amount of virtual machines for use with extract, transform, load (ETL) processes
US11803798B2 (en) 2019-04-18 2023-10-31 Oracle International Corporation System and method for automatic generation of extract, transform, load (ETL) asserts
US11169728B2 (en) * 2019-09-10 2021-11-09 Western Digital Technologies, Inc. Replication configuration for multiple heterogeneous data stores
US11321285B2 (en) 2020-10-01 2022-05-03 Bank Of America Corporation Automatic database script generation for copying data between relational databases
US20220164349A1 (en) * 2020-11-20 2022-05-26 AtScale, Inc. Distributed queries through dynamic views
US11934670B2 (en) 2021-03-31 2024-03-19 Netapp, Inc. Performing various operations at the granularity of a consistency group within a cross-site storage solution
US11893261B2 (en) 2021-05-05 2024-02-06 Netapp, Inc. Usage of OP logs to synchronize across primary and secondary storage clusters of a cross-site distributed storage system and lightweight OP logging
US11416815B1 (en) * 2021-06-11 2022-08-16 Coupang Corp. Systems and computerized methods for balancing inventory
US11537314B1 (en) * 2021-10-07 2022-12-27 Netapp, Inc. Resynchronization of individual volumes of a consistency group (CG) within a cross-site storage solution while maintaining synchronization of other volumes of the CG
US11892982B2 (en) 2021-10-20 2024-02-06 Netapp, Inc. Facilitating immediate performance of volume resynchronization with the use of passive cache entries
CN114595294B (zh) * 2022-03-11 2022-09-20 北京梦诚科技有限公司 一种数据仓库建模和抽取方法及系统
US11907562B2 (en) 2022-07-11 2024-02-20 Netapp, Inc. Methods and storage nodes to decrease delay in resuming input output (I/O) operations after a non-disruptive event for a storage object of a distributed storage system by utilizing asynchronous inflight replay of the I/O operations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4769772A (en) * 1985-02-28 1988-09-06 Honeywell Bull, Inc. Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases
US6374251B1 (en) 1998-03-17 2002-04-16 Microsoft Corporation Scalable system for clustering of large databases
US6263337B1 (en) 1998-03-17 2001-07-17 Microsoft Corporation Scalable system for expectation maximization clustering of large databases
US6167405A (en) * 1998-04-27 2000-12-26 Bull Hn Information Systems Inc. Method and apparatus for automatically populating a data warehouse system
US6178418B1 (en) 1998-07-28 2001-01-23 Noetix Corporation Distributed data warehouse query and resource management system
US6243715B1 (en) * 1998-11-09 2001-06-05 Lucent Technologies Inc. Replicated database synchronization method whereby primary database is selected queries to secondary databases are referred to primary database, primary database is updated, then secondary databases are updated
US6163774A (en) * 1999-05-24 2000-12-19 Platinum Technology Ip, Inc. Method and apparatus for simplified and flexible selection of aggregate and cross product levels for a data warehouse
US6550057B1 (en) 1999-08-31 2003-04-15 Accenture Llp Piecemeal retrieval in an information services patterns environment
US6502095B2 (en) 1999-09-09 2002-12-31 Lucent Technologies Inc. Timestamp-based system and method for serializing lazy updates in a distributed database
US6438538B1 (en) 1999-10-07 2002-08-20 International Business Machines Corporation Data replication in data warehousing scenarios
JP2001297026A (ja) * 2000-04-11 2001-10-26 Hitachi Ltd 複数のデータベースマネージメントシステムを有する計算機システム
US6922685B2 (en) 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US7010553B2 (en) 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
US7149759B2 (en) 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network
US7627597B2 (en) * 2003-03-13 2009-12-01 International Business Machines Corporation Usage-based optimization of network traffic and data warehouse size
US6973654B1 (en) 2003-05-27 2005-12-06 Microsoft Corporation Systems and methods for the repartitioning of data
EP1501021A1 (en) 2003-07-22 2005-01-26 Sap Ag A system and method for extracting data sets from an online relational database into a data warehouse
US20050240354A1 (en) 2003-08-27 2005-10-27 Ascential Software Corporation Service oriented architecture for an extract function in a data integration platform

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140064718A (ko) * 2011-02-21 2014-05-28 아마데우스 에스.에이.에스. 데이터 웨어하우스로부터 통계자료를 산출하는 방법 및 시스템
US9710506B2 (en) 2011-02-21 2017-07-18 Amadeus S.A.S. Method and system for providing statistical data from a data warehouse

Also Published As

Publication number Publication date
EP3352103A1 (en) 2018-07-25
CN101305365B (zh) 2011-07-06
KR101266683B1 (ko) 2013-06-26
CN102142039A (zh) 2011-08-03
WO2006065953A3 (en) 2006-09-14
CN102142039B (zh) 2012-12-26
CA2594568A1 (en) 2006-06-22
EP1828935A2 (en) 2007-09-05
EP1828935B1 (en) 2018-05-09
JP2008524715A (ja) 2008-07-10
US20060136354A1 (en) 2006-06-22
CA2879549A1 (en) 2006-06-22
CN101305365A (zh) 2008-11-12
KR101323500B1 (ko) 2013-10-31
JP5047806B2 (ja) 2012-10-10
CA2879549C (en) 2016-07-26
CA2594568C (en) 2015-04-14
KR20120120444A (ko) 2012-11-01
WO2006065953A2 (en) 2006-06-22
US7415487B2 (en) 2008-08-19

Similar Documents

Publication Publication Date Title
KR101266683B1 (ko) 데이터 웨어하우징을 위한 장치 및 방법
US10990576B2 (en) Providing snapshots of journal tables
US11068501B2 (en) Single phase transaction commits for distributed database transactions
CN107844388B (zh) 从备份系统流式恢复数据库
Hobbs et al. Oracle 10g data warehousing
US7620661B2 (en) Method for improving the performance of database loggers using agent coordination
US20050278393A1 (en) System and method for discriminatory replaying of log files during tablespace recovery in a database management system
Yang et al. F1 Lightning: HTAP as a Service
Parida Principles & Implementation of Datawarehousing
Muddana Managing Huge IoT Workloads Using Oracle Database 19c
Ballard et al. Data Warehousing with the Informix Dynamic Server
Parziale et al. Enhancing SAP by Using DB2 9 for z/OS
Parida ORACLE 10g Performance Tuning
Gray SQL Server Megaservers: Scalability, Availability, Manageability
Zhao et al. An Overview of the NoSQL World.
Zhao et al. 9 An Overview of the
Babb et al. Oracle Database High Availability Overview, 11g Release 1 (11.1) B28281-01
Ball et al. Big Data for the SQL Server DBA
Myllylahti A patented method for active data warehousing

Legal Events

Date Code Title Description
A201 Request for examination
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170428

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190426

Year of fee payment: 7