KR20220129085A - 통계 수집 오프로딩 - Google Patents

통계 수집 오프로딩 Download PDF

Info

Publication number
KR20220129085A
KR20220129085A KR1020227030112A KR20227030112A KR20220129085A KR 20220129085 A KR20220129085 A KR 20220129085A KR 1020227030112 A KR1020227030112 A KR 1020227030112A KR 20227030112 A KR20227030112 A KR 20227030112A KR 20220129085 A KR20220129085 A KR 20220129085A
Authority
KR
South Korea
Prior art keywords
statistics
database system
generating
source
cost
Prior art date
Application number
KR1020227030112A
Other languages
English (en)
Inventor
데니스 버터스틴
올리버 벤케
토바이어스 버그만
펠릭스 베이어
테렌스 퍼셀
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20220129085A publication Critical patent/KR20220129085A/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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • 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/2462Approximate or statistical 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Sink And Installation For Waste Water (AREA)
  • Nitrogen And Oxygen Or Sulfur-Condensed Heterocyclic Ring Systems (AREA)
  • Treatment Of Liquids With Adsorbents In General (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Solid-Sorbent Or Filter-Aiding Compositions (AREA)

Abstract

데이터베이스 통계를 생성하기 위한 방법들 및 시스템들이 제공된다. 소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계가 관찰되고, 타겟 데이터베이스 시스템을 이용하여 통계 생성 비용이 추정되며, 그리고 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용이 추정된다. 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용이 비교되고 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들이, 상기 소스 데이터베이스 시스템에 의해, 트리거 된다. 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들이, 상기 타겟 데이터베이스 시스템에 의해, 수행된다. 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계가 전송되고, 상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계는 업데이트되며, 그리고 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계가 사용된다.

Description

통계 수집 오프로딩
[0001] 본 발명은 전기, 전자 및 컴퓨터 기술에 관한 것으로서, 더 구체적으로는, 관계형 데이터베이스(relational databases) 등에 관한 것이다.
[0002] 데이터베이스 시스템은 통상적으로 쿼리 계획(query plan)에서 데이터베이스 쿼리(database queries)를 스케줄(schedule)한다. 전통적으로, 쿼리 계획은 관계 연산자의 트리(a tree of relational operators)로 표현된다. 비용 절감, 성능 향상 등을 위해, 최적화기(optimizer)는 쿼리를 수행하기 위한 보다 최적의 계획을 생성하는데 자주 사용된다. 예를 들어, 데이터베이스 테이블 내의 데이터 분포(distribution)에 관한 통계는 쿼리 계획의 최적화(optimization of the query plan)를 용이하게 하기 위해 사용될 수 있다. 상기 계획은 수신된 쿼리(received queries)를 수행하기 위한 가장 비용이 적게 드는 쿼리 계획을 결정하는 것을 목표로 하는 비용에 기반하여 최적화될 수 있다.
[0003] 통계는 데이터베이스의 테이블 및 인덱스(indexes) 내의 데이터 분포, 데이터의 공통성(commonality) 등을 기준으로 할 수 있다. 통계는 단일 열 또는 복수의 열을 기반으로 생성될 수 있다. 통계에는 열에 대한 값의 분포를 나타내는 히스토그램(histogram)이 포함될 수 있고, 경우에 따라, 열들 간 값들의 상관관계(a correlation of values between columns)가 포함될 수 있다. 오늘날 대부분의 관계형 데이터베이스는 쿼리를 처리하는 가장 빠른 실행 계획(execution plan)을 계산하기 위해 이 통계 정보에 크게 의존한다. 기존의 데이터베이스 제품은 이 특정 데이터에 의존하여 쿼리 추적 및 쿼리 분석을 위한 일부 기능을 구현한다. 따라서 최적화기(optimizer)가 선택하는 계획의 품질은 수집된 통계 데이터의 정확성에 따라 달라진다. 쿼리가 데이터베이스 상태를 변경함에 따라, 초기의 수집된 통계 데이터는 시간이 지남에 따라 달라진다. 이로 인해, 선택된 계획의 품질이 저하된다.
[0004] 선택된 계획의 품질을 높게 유지하기 위해서는, 통계 데이터를 정기적으로 업데이트할 필요가 있다. 이러한 업데이트는 비용과 관련이 있다: 따라서 데이터베이스 시스템은, 예를 들어, 통계를 수집할 테이블을 선택하고, 선택한 테이블의 데이터를 샘플링하며, 수집된 정보를 테이블의 크기에 따라 추정할 수 있다(extrapolate). 그런 다음 이 데이터를 통해 최적화기는 쿼리 결과의 행 수를 추정하거나 예측할 수 있다. 결국, 이것은 최적화기가 효율적인 쿼리 계획을 생성할 수 있게 한다. 예를 들어, 최적화기는 쿼리 계획에 대해 보다 효과적인 인덱스 스캔 연산자(index scan operator)를 선택할 수 있다.
[0005] 본 발명의 원리들은 오프로딩 통계 수집(offloading statistics collection을 위한 기술을 제공한다. 일 실시 예에서, 예시적인 방법은 소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계를 관찰하는 단계(observing); 타겟 데이터베이스 시스템을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating); 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing); 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 트리거링 하는 단계(triggering); 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 상기 타겟 데이터베이스 시스템에 의해, 수행하는 단계; 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계를 전송하는 단계(sending); 상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계를 업데이트하는 단계(updating); 및 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계을 사용하는 단계(using)의 오퍼레이션들을 포함한다.
[0006] 일 실시 예에서, 비-일시적 컴퓨터 판독가능 매체는 컴퓨터 실행가능 명령들을 포함하고, 컴퓨터에 의해 실행될 때 상기 컴퓨터가 오퍼레이션들의 방법을 수행하도록 하며, 상기 오퍼레이션들은 소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계를 관찰하는 단계(observing); 타겟 데이터베이스 시스템을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating); 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing); 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 트리거링 하는 단계(triggering); 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 상기 타겟 데이터베이스 시스템에 의해, 수행하는 단계; 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계를 전송하는 단계(sending); 상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계를 업데이트하는 단계(updating); 및 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계을 사용하는 단계(using)를 포함한다.
[0007] 일 실시 예에서, 시스템에 있어서, 상기 시스템은: 소스 데이터베이스 시스템-상기 소스 데이터베이스 시스템은, 제1 메모리에 결합된, 적어도 하나의 제1 프로세서를 포함함 -; 타겟 데이터베이스 시스템-상기 타겟 데이터베이스 시스템은, 제2 메모리에 결합된, 적어도 하나의 제2 프로세서를 포함함-; 을 포함하고, 상기 시스템은 오페레이션들을 수행하도록 작동하며, 상기 오퍼레이션들은 소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계를 관찰하는 단계(observing); 타겟 데이터베이스 시스템을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating); 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing); 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 트리거링 하는 단계(triggering); 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 상기 타겟 데이터베이스 시스템에 의해, 수행하는 단계; 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계를 전송하는 단계(sending); 상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계를 업데이트하는 단계(updating); 및 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계을 사용하는 단계(using)를 포함한다.
[0008] 본 명세서에 사용된 바와 같이, 동작을 "용이하게 하는" 단계는 동작을 수행하는 단계, 동작을 더 쉽게 만드는 단계, 동작을 수행하는 것을 돕는 단계, 또는 동작이 수행되도록 하는 단계를 포함한다. 따라서, 제한이 아닌 예로서, 하나의 프로세서에서 실행되는 명령들은 동작이 수행되도록 하거나 지원하기 위해 적절한 데이터 또는 커맨드들을 전송함으로써 원격 프로세서에서 실행되는 명령들에 의해 수행되는 동작을 용이하게 할 수 있다. 의심의 여지를 없애기 위해, 행위자가 동작을 수행하는 것 이외의 다른 방법으로 동작을 용이하게 하는 경우에도 그 동작은 일부 개체 또는 개체의 조합에 의해 수행된다.
[0009] 본 발명의 하나 또는 그 이상의 실시예들 또는 그 엘리멘트들은 표시된 방법 단계들을 수행하기 위한 컴퓨터 사용가능 프로그램 코드를 갖는 컴퓨터 판독가능 스토리지 매체를 포함하는 컴퓨터 프로그램 제품의 형태로 구현될 수 있다. 또한, 본 발명의 하나 또는 그 이상의 실시예들 또는 그 엘리멘트들은 메모리, 및 메모리에 결합되고 예시적인 방법 단계들을 수행하도록 동작하는 적어도 하나의 프로세서를 포함하는 시스템(또는 장치)의 형태로 구현될 수 있다. 또한, 또 다른 양태에서, 본 발명의 하나 또는 그 이상의 실시예들 또는 그의 엘리멘트들은 여기에 설명된 방법 단계들 중 하나 또는 그 이상을 수행하기 위한 수단의 형태로 구현될 수 있으며; 수단은 (i) 하드웨어 모듈(들), (ii) 컴퓨터 판독 가능 스토리지 매체(또는 이러한 여러 매체)에 저장되고 하드웨어 프로세서에서 구현되는 소프트웨어 모듈(들), 또는 (iii) (i)) 및 (ii); (i)-(iii) 중 하나는 여기에 명시된 특정 기술을 구현한다.
[0010] 본 발명의 기술은 실질적으로 유익한 기술적 효과를 제공할 수 있다. 예를 들어, 하나 또는 그 이상의 실시예들은 다음 중 하나 또는 그 이상을 제공한다.
[0011] 대규모 데이터 세트들에 대한 통계 쿼리들을 처리하도록 최적화된 가속기 데이터베이스 시스템;
[0012] 가속기(타겟) 데이터베이스 시스템에 의해 소스 데이터베이스 시스템에 대한 효율적인 가속기 기반 데이터베이스 통계 생성;
[0013] 소스 데이터베이스 시스템에 대한 중앙 처리 장치(CPU) 소비 감소;
[0014] 실제 쿼리가 실행되기 전에 쿼리 특정 런타임 통계를 생성하는 기능(특정 쿼리에 의해 사용되는 테이블이 알려져 있기 때문에 통계 연결들이 개별적으로 조정될 수 있음); 그리고
[0015] 통계를 수집하는 데 추가 또는 전용 시스템이 필요하지 않음.
[0016] 본 발명의 이들 및 다른 특징들 및 이점들은 첨부 도면들과 관련하여 이해되는 본 발명의 예시적인 실시예들의 다음의 상세한 설명으로부터 명백해질 것이다.
[0017] 도1은 본 발명의 실시예에 따른 클라우드 컴퓨팅 환경(cloud computing environment)을 도시한다;
[0018] 도2는 본 발병의 실시예에 따른 추상화 모델 층들(abstraction model layers)을 도시한다;
[0019] 도3은 예시적인 실시예에 따른 예시적 데이터베이스 시스템(example database system)의 블록 다이어그램(block diagram)이다;
[0020] 도4는 예시적인 실시예에 따른 데이터베이스 통계의 생성 및 활용을 위한 예시적인 방법의 플로차트(flowchart)이다;
[0021] 도5는 본 발명의 하나 또는 그 이상의 특징들 및/또는 엘리멘트들을 구현하는데 유용할 수 있는 컴퓨터 시스템을 도시하고, 또한 본 발명의 실시예에 따른 클라우드 컴퓨팅 노드(cloud computing node)를 나타낸다.
[0022] 본 발명의 개시가 클라우드 컴퓨팅에 대한 상세한 설명을 포함하지만, 여기에 인용된 기술적 사상들의 구현이 클라우드 컴퓨팅 환경으로 제한되지 않는다는 것을 이해해야 한다. 오히려, 본 발명의 실시예들은 현재 알려져 있거나 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0023] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0024] 클라우드 컴퓨팅 특성들은 다음과 같다:
[0025] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
[0026] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0027] 자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0028] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
[0029] 측정 가능한 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0030] 서비스 모델들(Service Models)은 다음과 같다:
[0031] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0032] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0033] 하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0034] 배치 모델들(Deployment Models)은 다음과 같다:
[0035] 사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0036] 커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0037] 공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0038] 하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0039] 클라우드 컴퓨팅 환경은 상태 비보존(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0040] 이제 도 1을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(52)을 포함한다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 1에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(52)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0041] 이제 도 2를 참조하면, 클라우드 컴퓨팅 환경(50) (도 1)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 2에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0042] 하드웨어 및 소프트웨어 층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 스토리지 디바이스들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
[0043] 가상화 층(70)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 스토리지(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영 체제들(74); 및 가상 클라이언트들(75).
[0044] 한 예에서, 관리 층(80)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0045] 워크로드 층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 데이터베이스 관리자(96). 본 발명의 실시예들은 클라우드 환경(층 (60)의 데이터베이스 소프트웨어(68) 엘리멘트 및/또는 층(90)의 데이터베이스 관리자(96) 등), 클라우드가 아닌 환경, 또는 클라우드 내의 부분들과 클라우드가 아닌 환경(예를 들어, 로컬)의 부분들과 하이브리드 방식으로 구현될 수 있음이 강조된다.
[0046] 일반적으로, 통계 생성 및 수집을 오프로딩(offloading statistics generation and collection) 하기 위한 장치(apparatus), 시스템 및 방법은, 예를 들어, 데이터베이스 통계를 생성하고 이용하는데 유용한 것으로 알려져 있다. 생성되는 통계 데이터는, 예를 들어, 데이터베이스 테이블의 컬럼 레이아웃(columnar layout), 캐싱 데이터 인메모리(caching data in-memory), 데이터 압축 기술 활용(utilizing data compression techniques), 병렬 처리(parallel processing), 특수 인덱싱 기술(special indexing techniques) 등을 사용하여 통계와 같은 쿼리(statistics-like queries)에 최적화된 가속기 데이터베이스 시스템(accelerator database system)으로 오프로드 된다. 하나의 예시적인 실시예에서, 가속기 데이터베이스 시스템(여기서 타겟 데이터베이스 시스템(target database system)이라고도 함)은 하나 또는 그 이상의 데이터베이스 시스템들(예를 들어 Db2® 데이터베이스 시스템)(미국, 뉴욕, 아몽크, IBM사의 등록 상표)의 진행 중인 트랜잭션들(transactions)의 스냅샷(snapshots)을 캡처함으로써, 프로덕션 데이터베이스 시스템(production database system)(또한 여기서 소스 데이터베이스 시스템(source database system)이라고도 함)을 위한 통계 스토어(statistics store)를 점차적으로 유지하고 업데이트한다.
[0047] 특정한 테이블의 통계자료가 오래전 것인지에 대한 신뢰할 수 있는 지표(dependable indication)는 테이블에서 실행된 삽입, 업데이트 및 삭제 스테이트먼트들(statements)의 개수이다. 이것은 테이블당 대응하는 쿼리들을 계산하여 결정할 수 있다. 하나의 예시적인 실시예에서, 샘플링(sampling)은 카디널리티 계산(cardinality calculation)을 촉진하기 위해 사용된다. (데이터베이스의 맥락에서, 카디널리티는 열(column)에 포함된 데이터 값들의 고유성을 나타낸다. 높은 카디널리티는 열에 완전히 고유한 값들의 큰 비율이 포함되어 있다는 것을 의미한다. 낮은 카디널리티는 열이 그 데이터 범위안에 많은 "반복"을 포함한다는 것을 의미한다.) 하나의 예시적인 실시예에서, 더 큰 서브-플랜(sub-plan)이 타겟 데이터베이스 시스템에서 실행되고, 타겟 데이터베이스 시스템에서 실행 중에 수집된 런타임 카디널리티들(run-time cardinalities)이 사용된다 (예를 들어, 학습 최적화 도구(LEO)와 같은 도구는 이러한 통계를 수집한다; 스틸거, 마이클외. “LEO - DB2's LEarning Optimizer.” VLDB (2001) 참조). 서브-플랜의 실행이 너무 오래 걸릴 경우, 정확한 카디널리티를 기다리는 대신에 로컬 추정치를 선택하기 위해 임계값(thresholding)이 적용될 수 있다.
[0048] 통계는 최신 데이터를 반영하도록 점진적으로 생성되거나, 통계 업데이트가 필요할 때 생성될 수 있다. 하나의 예시적인 실시예에서, 테이블에 적용된 변화량을 추적하고, 테이블의 더 큰 부분(예를 들어 15%, 이것은 비제한적인 예이지만 백분율로 구성될 수 있다)이 변경되면, 통계 수집 작업이 트리거(triggered)된다. 하나의 예시적인 실시예에서, 테이블이 변경되었는지, 백그라운드 작업(background task)는 테이블이 변경되었는지 확인하고, 테이블에 대한 변화량을 일정한 간격들로 확인하는 등의 일정을 계획한다(schedule).
[0049] 하나 또는 그 이상의 실시예에서, 통계 데이터에 대한 변경 정보는 트랜잭션(transactions)으로부터 추출되어 로컬 통계 스토어를 업데이트하는데 사용된다. 통계 스토어는 프로덕션 데이터베이스 시스템에서 액세스할 수 있으므로 쿼리 계획 선택을 지원한다.
[0050] 하나의 예시적인 실시예에서, 가속기 데이터베이스 시스템은 프로덕션 데이터베이스 시스템에 대한 통계 생성을 수행한다. 예를 들어, 소스 데이터베이스 시스템에 의한 통계 생성 수행 비용이 가속기 데이터베이스 시스템보다 더 비싼 경우, 통계 생성은 가속기 데이터베이스 시스템에 오프로드될 수 있다. 가속기 데이터베이스 시스템에서 생성된 통계는 소스 데이터베이스 시스템, 가속기 데이터베이스 시스템 또는 둘 다에서 사용된다.
[0051] 도3은 예시적인 실시예에 따른 예시적 데이터베이스 시스템(300)의 블록 다이어그램이다. 소스 데이터베이스 시스템(304)는 애플리케이션 및 다른 주체들(entities)로부터 수신된 데이터베이스 쿼리(352)(이 문서에서 쿼리(352)라고 함)를 처리한다. 쿼리 스케줄러(query scheduler)(312)는 로컬(소스 데이터베이스 시스템(304) 내에서) 또는 원격(타겟 데이터베이스 시스템(308) 내에서, 아래에 더 자세히 설명된 바와 같이)으로 수행될 쿼리 계획을 생성한다. 하나의 예시적인 실시예에서, 쿼리 스케줄러(312) 내의 최적화는, 예를 들어, 수신된 쿼리를 수행하기 위한 가장 비용이 적게 드는 쿼리 계획을 결정하는 것을 목표로 쿼리 계획을 최적화한다. 예를 들어, 비용 기반 최적화기(cost-based optimizer)는 쿼리 계획의 최적화를 용이하게 하기 위해 데이터베이스 통계를 활용할 수 있다. 통계는 소스 데이터베이스 시스템(304)의 테이블(316) 내의 데이터의 분포, 데이터의 공통성 등과 관련이 있을 수 있다.
[0052] 일단 생성되면, 쿼리 계획은 소스 데이터베이스 시스템(304) 또는 타켓 데이터베이스 시스템(308)에 의해 수행된다. 로컬 쿼리 실행은 소스 데이터베이스(320)내의 하나 또는 그 이상의 테이블(316)에서 수행된다. 가속기-기반의 쿼리(accelerator-based query) 실행은 타겟 데이터베이스(340) 내의 테이블(336) 중 하나 또는 그 이상에 대해 수행된다. 데이터 동기화 시스템(data synchronization system)(348)은 타겟 데이터베이스(340)내의 테이블(336)과 소스 데이터베이스(320)내의 테이블(316)을 동기화하는데, 이는 쿼리 계획 선택을 개선하기 위한 통계 데이터를 수집하기 위한 전제 조건이다. 예를 들어, 데이터 동기화 시스템(348)은 소스 데이터베이스(320)내의 테이블(316)의 데이터가 타겟 데이터베이스(340)을 업데이트하기 위해 완전히 또는 부분적으로 전송되어야 함을 표시하는 트리거들을 소스 데이터베이스(320)로부터 수신한다. 하나의 예시적인 실시예에서, 쿼리 스케줄러(312), 테이블 통계 생성기(table statistics generator)(332), 데이터 동기화 시스템(348) 및 통계 오프로딩 유닛(statistics offloading unit)(356)은 서버와 같은 컴퓨터 시스템에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 시스템 실행 가능 명령으로 구현된다. 예를 들어, 쿼리 스케줄러(312)는 목표와 함께 쿼리 계획을 최적화하는 최적화(예: 비용 기반)를 구현하는 코드를 포함한다. 예를 들면, 수신된 쿼리를 수행하기 위한 가장 비용이 적게 드는 쿼리 계획을 결정하는 것이다. 생성기(generator)(332)는 다음 단락에서 논의될 기능을 구현하는 코드를 포함한다. 시스템(348)은, 예를 들어, 방금 언급된 트리거들에 응답하는 코드를 포함한다. 통계 오프로딩 유닛(356)은 통계를 새로 고쳐야 하는지 여부를 감지하는 역할을 한다. 하나의 예시적인 실시예에서, 통계 오프로딩 유닛(356)은, 예를 들어, 타겟(가속기) 데이터베이스 시스템(308)에 오프로드하거나 소스 데이터베이스 시스템(304)에서 로컬로 수집함으로써, 실제 수집 구현을 추상화한다. 즉, 소스 데이터베이스 시스템(304)에서 통계를 새로 고치기 위한 다양한 통신 프로토콜을 구현한다.
[0053] 쿼리가 실행되면, 메타데이터 카탈로그(metadata catalog)(324)의 소스 통계 테이블(source statistics table)(328)내의 통계가 생성되거나 업데이트된다. 그런 다음, 통계는 쿼리 계획을 최적화하는데 사용할 수 있도록 쿼리 스케줄러(312)에 제공된다. 하나의 예시적인 실시예에서, 통계 오프로딩 유닛(356)은 타겟 데이터베이스 시스템(308) 내의 테이블 통계 생성기(332)에 통계 생성과 관련된 작업을 오프로드한다. 테이블 통계 생성기(332)는, 예를 들어, 고려해야 할 테이블 리스트와 생성해야 하는 통계의 유형으로 전송된다. 하나의 예시적인 실시예에서, 이것은 테이블 통계 생성기(332)에 의해 통계 쿼리로 변환된다. 그렇지 않으면, 통계 오프로딩 유닛(356)은 소스 테이블 통계(328)를 업데이트하기 위해 테이블 통계 생성기(332) 자체의 쿼리 생성 컴포넌트를 구현하고 통계 쿼리를 간단히 전송할 수 있다.
[0054] 하나의 예시적인 실시예에서, 통계 생성은 소스 데이터베이스 시스템(304)에서 통계를 생성하는 것보다 타겟 데이터베이스 시스템(308)에서 통계를 생성하는 비용이 덜 드는 경우에만 테이블 통계 생성기(332)로 오프로드된다. 하나의 예시적인 실시예에서, 통계 생성은 항상 테이블 통계 생성기(332)로 오프로드된다; 다른 실시예들은 다른 접근법을 취할 수 있다. 하나의 예시적인 실시예에서, 통계 생성을 오프로드할 시기를 결정하는 것과 동일한 메커니즘(mechanism)이 애플리케이션 쿼리 실행에 사용된다. 통계 오프로딩 유닛(356)이 통계 쿼리 자체를 생성하는 경우, 쿼리 스케줄러(312)를 통해 쿼리들을 단순히 예정할 수 있다(사용자 쿼리 케이스에서와 같다). 쿼리 스케줄러(312)는 쿼리 스테이트먼트들(query statements)을 분석하고 어떤 시스템(소스 데이터베이스 시스템(304) 또는 타겟 데이터베이스 시스템(308))이 그것들을 실행하기에 가장 적합한지를 결정한다. 하나의 예시적인 실시예에서, 통계 오프로딩 유닛(356)은 통계 쿼리 결과를 수신하고 수집된 위치에 관계없이 통계를 업데이트하는 일반 데이터베이스 클라이언트와 같은 역할을 한다. 하나의 예시적인 실시예에서, 이 특정 내부 쿼리 실행 사용 케이스에 대한 추가적인 세부 사항들이 고려되는데, 예를 들면, 통계 쿼리를 위한 특별한 비용 기능(a special cost function)을 제공한다(예를 들어, 이 것은 소스 데이터베이스 시스템(304)에서 런타임 최소화/자원 활용 최소화 등 다양한 최적화 목표들을 가질 수 있다). 어떠한 경우에도, 오프로딩 전략(offloading strategies)은 작업에 필요한 자원들의 비용 측면에서 대응하는 작업을 오프로드하는 "비용"을 표시하는 비용 기능의 도움을 받아 모델링 될 수 있다.
[0055] 타겟 데이터베이스 시스템(308)내에서, 쿼리가 실행됨에 따라 타겟 테이블 통계(344) 내의 통계가 생성 또는 업데이트된다. 하나의 예시적인 실시예에서, 타겟 데이터베이스 시스템(308)은 소스 데이터베이스 시스템(304)에 대해 메타데이터 카탈로그(324)가 수행하는 것과 유사한 기능을 수행하는 메타데이터 카탈로그(표시되지 않음)를 포함한다. 또한, 통계 오프로딩 유닛(356)에 의해 생성된 트리거에 응답하여 통계가 타겟 테이블 통계(344)에서 생성되고 및/또는 업데이트된다. 소스 데이터베이스 시스템(304) 등에서 테이블에 대한 특정한 변화량이 감지되면 트리거가 주기적으로 생성될 수 있다. 하나의 예시적인 실시예에서, 타겟 데이터베이스 시스템(308)은 타겟 데이터베이스 시스템(308)이 내부 요청에 따라 통계를 생성하거나 업데이트할 때 정기적으로 소스 데이터베이스 시스템(304)에 통계를 푸시한다. 어떠한 경우에도, 타겟 데이터베이스 시스템(308)에서 생성된 통계는 쿼리 스케줄러(312)가 쿼리 계획을 최적화하는 데 사용하기 위해 소스 통계 테이블(328)로 전송된다.
[0056] 도4는 예시적인 실시예에 따른 데이터베이스 통계 생성 및 활용을 위한 예시적인 방법(400)에 대한 플로차트이다. 하나의 예시적인 실시예에서, 소스 데이터베이스 시스템(304)의 메타데이터 카탈로그(324)에서 테이블 통계가 관찰된다(observed)(오퍼레이션 404). 통계가 누락되었는지 또는 중요한 데이터 변경이 있는지 확인하기 위해 검사가 수행된다(결정 블록 408). 예를 들어, 만일 상기 테이블과 관련하여 메타데이터 카탈로그(324)에, 카디널리티 정보와 같은, 정보가 없다면, 통계가 생성된다. "중요한" 임계값(테이블의 15%까지 변경과 같은)은 통계 생성으로 인한 추가 비용을 최소화하는 방법이다. 물론 이 작업은 각 테이블을 변경한 후(최상의 경우 점진적으로) 수행할 수 있지만, 더 나은 쿼리 계획을 통해 절약되는 것보다 더 많은 자원을 소비할 수 있다(더 정확한 비용 추정으로 인해). 만일 통계가 누락되지 않고 중요한 데이터 변경이 없다면(결정 블록 408 NO 브랜치(branch)에서 결정된 바와 같이), 기존 통계가 소스 데이터베이스 시스템(304)에 의해 사용되며(오퍼레이션 412) 방법(400)은 종료된다.
[0057] 만일 통계가 누락되거나 및/또는 중요한 데이터 변경이 있다면(결정 블록 408 YES 브랜치에서 결정된 바와 같이), 소스 데이터베이스 시스템(304)와 타겟 데이터베이스 시스템(308)에 의한 통계 생성 비용을 개별적으로 추정한다 (오퍼레이션 416).
[0058] 타겟 데이터베이스 시스템(308)에서 통계 생성 비용이 소스 데이터베이스 시스템(304)에서 통계 생성 비용보다 적은지를 결정하기 위해 확인이 수행된다(결정 블록 420). 만일 타겟 데이터베이스 시스템(308)에 대한 비용이 소스 데이터베이스 시스템(304)에 대한 비용보다 크거나 같으면(결정 블록 420 NO 브랜치에서 결정된 바와 같이), 통계는 소스 데이터베이스 시스템(304)에 관해서 생성되고(오퍼레이션 424), 방법(400)은 오퍼레이션(440)으로 진행한다.
[0059] 만일 타겟 데이터베이스 시스템(308)에 대한 비용이 소스 데이터베이스 시스템(304)에 대한 비용보다 적다면(결정 블록 420 YES 브랜치에서 결정된 바와 같이), 타겟 데이터베이스 시스템(308)을 통한 통계 생성이 트리거되고(오퍼레이션 428), 통계 생성 쿼리는 타겟 데이터베이스 시스템(308)에 관해 수행되며(오퍼레이션 432), 생성된 통계는 타겟 데이터베이스 시스템(308)에서 소스 데이터베이스 시스템(304)의 메타데이터 카탈로그(324)로 전송된다(오퍼레이션 436). 그 다음, 통계는 타겟 데이터베이스 시스템(308)에서 생성되는데, 이는 1) 소스 데이터베이스 시스템(304)에서 실행할 쿼리들에 중요한 특수 통계 및 히스토그램을 수집하기 위해서이고 및/또는 2) 자주 실행되는 쿼리들을 최적화하거나 및/또는 특정 복잡한 쿼리를 준비하도록, 특정 유형의 쿼리를 대상으로 하는 열 그룹 통계와 같은, 특정 통계를 수집하기 위해서이다. 통계는 또한 타겟 데이터베이스 시스템(308)에 의해 사용하기 위해 생성될 수 있다.
[0060] 오퍼레이션(440)으로 돌아가, 통계가 생성된 후, 소스 통계 테이블(328)은 메타데이터 카탈로그(324)에서 업데이트되고(오퍼레이션 440), 업데이트된 통계는, 예를 들면, 쿼리 계획을 최적화하는 데 사용된다(오퍼레이션 444). 예를 들어, 필터 속성들(the filter attributes)과 가장 잘 일치하는 계획은, Db2® 소프트웨어에서 쿼리 실행을 시작하기 전에 타겟 데이터베이스 시스템(308)에서, 카디널리티에 초점을 맞춘, 오리지날 쿼리(original query)의 서브세트(subset)를 실행함으로써, 선택될 수 있다. 하나의 예시적인 실시예에서, 동적 구조화된 질의 언어(structured query language, SQL)는 쿼리 단위로(on a per query basis) 채용된다. 하나 또는 그 이상의 실시예들은 SQL이 표준인 관계형 데이터베이스 도메인에서 채용될 수 있다. 그러나, XML 데이터에 대한 XQuery 또는 그래프 데이터베이스에 대한 그래프 쿼리와 같은, 다른 쿼리 언어들을 사용하는 데이터베이스 시스템들도 있다; 여기에 개시된 기술들은 또한 이들 데이터베이스들에도 적용할 수 있다.
[0061] 지금까지의 논의를 종합해보면, 일반적으로, 본 발명의 한 측면에 따른, 예시적인 방법은 오퍼레이션들(the operations)을 포함하고, 상기 오퍼레이션들은: 소스 데이터베이스 시스템(304)의 메타데이터 카탈로그(324)에서 테이블 통계(328)를 관찰하는 단계(observing)(오퍼레이션 404); 타겟 데이터베이스 시스템(308)을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템(304)를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating)(오퍼레이션 416); 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용과 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing)(결정 블록 420); 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용이 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 타겟 데이터베이스 시스템(308)에 의한 통계 생성 쿼리들을, 소스 데이터베이스 시스템(304)에 의해, 트리거링 하는 단계(triggering) (오퍼레이션 428); 소스 데이터베이스 시스템(304)에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 타겟 데이터베이스 시스템(308)에 의해, 수행하는 단계(오퍼레이션 432); 소스 데이터베이스 시스템(304)에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 타겟 데이터베이스 시스템(308)으로부터 소스 데이터베이스 시스템(304)로 상기 생성된 통계를 전송하는 단계(sending)(오퍼레이션 436); 상기 생성된 통계에 기초하여 메타데이터 카탈로그(324)에서 테이블 통계(328)을 업데이트하는 단계(updating) (오퍼레이션 440); 및 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계(328)을 사용하는 단계(오퍼레이션 444)를 포함하는 것이 이해될 것이다.
[0062] 하나의 예시적인 실시예에서, 상기 관찰하는 단계, 추정하는 단계 및 비교하는 단계의 오퍼레이션들은 반복되고; 그리고 통계 생성 쿼리들은, 상기 반복된 단계들에서 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용이 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용(오퍼레이션 424)보다 크거나 동일하다는 것에 응답하여 소스 데이터베이스 시스템(304)에 의해 수행된다. 하나의 예시적인 실시예에서, 테이블 통계(328)을 관찰하는 단계의 오퍼레이션은 하나 또는 그 이상의 쿼리 실행을 수행하는 단계, 소스 데이터베이스 시스템(304)의 테이블에서 처리되는 수신 변경들(incoming changes)을 모니터링 하는 단계, 및 자동화된 백그라운드 작업을 더 포함한다. 하나의 예시적인 실시예에서, 통계가 누락되지 않았고 중요한 데이터 변경들이 없다고 결정하는 것에 응답하여 기존의 통계들이 소스 데이터베이스 시스템(304)에서 사용된다 (오퍼레이션 412). 하나의 예시적인 실시예에서, 메타데이터 카탈로그(324)로부터 통계가 누락되었는지를 결정하기 위한 확인이 수행되고(결정 블록 408), 통계가 누락되었다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행된다.
[0063] 하나의 예시적인 실시예에서, 소스 데이터베이스 시스템(304)의 테이블에 중요한 데이터 변경들이 있는지를 결정하기 위한 확인이 수행되고 (결정 블록 408), 중요한 데이터 변경들이 있다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행된다. 하나의 예시적인 실시예에서, 상기 사전 정의된 관계는 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용보다 적은 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용이다. 하나의 예시적인 실시예에서, 타겟 데이터베이스 시스템(308)은 통계와 같은 쿼리들에 대해 최적화된다.
[0064] 한 측면에서, 비-일시적인 컴퓨터 판독가능 매체(non-transitory computer readable medium)는 컴퓨터 실행가능 명령들을 포함하고, 상기 컴퓨터 실행가능 명령들은 컴퓨터에 의해 실행될 때 방법을 수행하도록 하며, 상기 방법은 소스 데이터베이스 시스템(304)의 메타데이터 카탈로그(324)에서 테이블 통계(328)를 관찰하는 단계(observing)(오퍼레이션 404); 타겟 데이터베이스 시스템(308)을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템(304)를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating)(오퍼레이션 416); 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용과 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing)(결정 블록 420); 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용이 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 타겟 데이터베이스 시스템(308)에 의한 통계 생성 쿼리들을, 소스 데이터베이스 시스템(304)에 의해, 트리거링 하는 단계(triggering) (오퍼레이션 428); 소스 데이터베이스 시스템(304)에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 타겟 데이터베이스 시스템(308)에 의해, 수행하는 단계(오퍼레이션 432); 소스 데이터베이스 시스템(304)에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 타겟 데이터베이스 시스템(308)으로부터 소스 데이터베이스 시스템(304)로 상기 생성된 통계를 전송하는 단계(sending)(오퍼레이션 436); 상기 생성된 통계에 기초하여 메타데이터 카탈로그(324)에서 테이블 통계(328)을 업데이트하는 단계(updating) (오퍼레이션 440); 및 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계(328)를 사용하는 단계(오퍼레이션 444)를 포함한다.
[0065] 한 측면에서, 시스템은 소스 데이터베이스 시스템(304)- 소스 데이터베이스 시스템(304)은, 제1 메모리에 결합된, 적어도 하나의 제1 프로세서를 포함함 -; 타겟 데이터베이스 시스템(308) - 타겟 데이터베이스 시스템(308)은, 제2 메모리에 결합된, 적어도 하나의 제2 프로세서를 포함함-; 을 포함하고, 상기 시스템은 오페레이션들을 수행하도록 작동하며, 상기 오퍼레이션들은: 소스 데이터베이스 시스템(304)의 메타데이터 카탈로그(324)에서 테이블 통계(328)를 관찰하는 단계(observing)(오퍼레이션 404); 타겟 데이터베이스 시스템(308)을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템(304)를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating)(오퍼레이션 416); 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용과 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing)(결정 블록 420); 타겟 데이터베이스 시스템(308)을 이용하는 통계 생성 비용이 소스 데이터베이스 시스템(304)를 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 타겟 데이터베이스 시스템(308)에 의한 통계 생성 쿼리들을, 소스 데이터베이스 시스템(304)에 의해, 트리거링 하는 단계(triggering) (오퍼레이션 428); 소스 데이터베이스 시스템(304)에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 타겟 데이터베이스 시스템(308)에 의해, 수행하는 단계(오퍼레이션 432); 소스 데이터베이스 시스템(304)에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 타겟 데이터베이스 시스템(308)으로부터 소스 데이터베이스 시스템(304)로 상기 생성된 통계를 전송하는 단계(sending)(오퍼레이션 436); 상기 생성된 통계에 기초하여 메타데이터 카탈로그(324)에서 테이블 통계(328)을 업데이트하는 단계(updating) (오퍼레이션 440); 및 쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계(328)를 사용하는 단계(오퍼레이션 444)를 포함한다.
[0066] 본 발명의 하나 또는 그 이상의 실시 예들 또는 관련 엘리멘트들은 메모리 및 상기 메모리에 결합된 적어도 하나의 프로세서를 포함하는 장치의 형태로 구현될 수 있고, 상기 적어도 하나의 프로세서는 예시적인 방법 단계들을 수행하도록 동작한다. 도 5는, 본 발명의 일 실시예에 따른 클라우드 컴퓨팅 노드를 나타내는, 본 발명의 하나 또는 그 이상의 실시 예들 및/또는 엘리멘트들을 구현하는 데 유용할 수 있는 컴퓨터 시스템을 도시한다. 이제 도 5를 참조하면, 클라우드 컴퓨팅 노드(10)는 적합한 클라우드 컴퓨팅 노드의 한 예일뿐이며 여기에 설명된 본 발명의 실시예의 기능 또는 사용 범위에 대한 제한을 제시하려는 것은 아니다. 그럼에도 불구하고, 클라우드 컴퓨팅 노드(10)는 구현될 수 있고/있거나 위에서 설명된 기능 모두를 수행할 수 있다.
[0067] 클라우드 컴퓨팅 노드(10)에는, 수많은 다른 범용 또는 특수 목적 컴퓨팅 환경들 또는 구성들과 함께 운영되는, 컴퓨터 시스템/서버(12)가 있다. 컴퓨터 시스템 /서버(12)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 씬 클라이언트들, 씩 클라이언트들, 핸드헬드 또는 랩탑 디바이스들, 멀티-프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그래밍 가능한 소비자 전자 제품들, 네트웍 PC들, 미니 컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 및 상기 시스템들 또는 디바이스들 중 하나를 포함하는 분산 클라우드 컴퓨팅 환경들, 등을 포함하나, 이에 국한하는 것은 아니다.
[0068] 컴퓨터 시스템/서버(12)는, 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능한 명령들의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로 프로그램 모듈들은 특정 작업들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 로직, 데이터 구조들 등을 포함할 수 있다. 컴퓨터 시스템/서버(12)는 통신 네트웍을 통해 링크되는 원격 처리 디바이스들에 의해 작업들이 수행되는 분산 클라우드 컴퓨팅 환경에서 실시될 수 있다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하는 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[0069] 도 5에서 도시된 바와 같이, 클라우드 컴퓨팅 노드(10)에서 컴퓨터 시스템/서버(12)는 범용 컴퓨터 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 유닛들(16), 시스템 메모리(28), 및 시스템 메모리(28)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(16)에 연결하는 버스(18)를 포함할 수 있지만, 이에 국한되지 않는다.
[0070] 버스(18)는, 다양한 버스 아키텍처들 중 하나를 사용하는, 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트, 및 프로세서 또는 로컬 버스를 포함하는, 버스 구조들의 여러 유형들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 그러한 아키텍처들은 ISA(include Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스를 포함하나, 이에 국한되지는 않는다.
[0071] 컴퓨터 시스템/서버(12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능한 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 이용 가능한 매체일 수 있으며 , 휘발성 및 비휘발성 매체, 착탈식 및 비-착탈식 매체를 모두 포함한다.
[0072] 시스템 메모리(28)은, 예컨대 랜덤 액세스 메모리(RAM)(30) 및/또는 캐시 메모리(32)와 같은, 휘발성 메모리의 형태의 컴퓨터 시스템 판독 가능한 매체를 포함할 수 있다. 컴퓨터 시스템/서버(12)는 또한, 다른 착탈식/비-착탈식, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 포함할 수 있다. 단지 예로서, 스토리지 시스템(34)이 비착탈식, 비휘발성 자기 매체(도시되지 않고 일반적으로 "하드 드라이브"라고 함)로부터 읽고 쓰기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈가능 비휘발성 자기 디스크(예: "플로피 디스크") 에서 읽고 쓰기 위한 자기 디스크 드라이브 및, CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은, 착탈가능 비휘발성 광학 디스크에서 읽거나 쓰기 위한 광학 디스크 드라이브가 제공될 수 있다. 그러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 연결될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(28)는 본 발명의 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0073] 프로그램 모듈들의 (적어도 하나)세트(42)를 갖는, 프로그램/유틸리티(40)는, 예를 들어, 메모리(28)에 저장될 수 있지만, 이에 국한되는 것은 아니다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(42)은 일반적으로 본 명세서에 기술된 바와 같은 본 발명의 실시예의 기능들 및/또는 방법들을 수행한다.
[0074] 컴퓨터 시스템/서버(12)는 키보드, 포인팅 디바이스, 디스플레이(24) 등과 같은, 하나 또는 그 이상의 외부 디바이스들(14); 사용자가 컴퓨터 시스템/서버(12)와 상호작용할 수 있게 하는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(12)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 하는 모든 디바이스들(예를 들어, 네트웍 카드, 모뎀 등)과 통신 할 수 있다. 그러한 통신은 입/출력(I/O) 인터페이스(22)를 통해 발생할 수 있다. 또한, 컴퓨터 시스템/서버(12)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 네트웍 어댑터(20)를 통한 공중 네트웍(예를 들어, 인터넷)와 같은, 하나 또는 그 이상의 네트웍들과 통신할 수 있다. 도시된 바와 같이, 네트웍 어댑터(20)는 버스(18)를 통해 클라우드 컴퓨팅 노드(10)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해해야 한다. 이들의 예들에는: 마이크로코드, 디바이스 드라이버들, 리던던트 처리 유닛들, 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이벌 스토리지 시스템들이 포함되지만 이에 국한되지는 않는다.
[0075] 따라서, 하나 또는 그 이상의 실시 예들은 범용 컴퓨터 또는 워크스테이션에서 실행되는 소프트웨어를 사용할 수 있다. 도 5를 참조하면, 그러한 구현은, 예를 들어, 프로세서(16), 메모리(28), 및 키보드, 포인팅 디바이스 등과 같은 디스플레이(24) 및 외부 디바이스(들)(14)에 대한 입력/출력 인터페이스(22)를 사용할 수 있다. 여기에서 사용된 "프로세서"라는 용어는, 예를 들어, CPU(중앙 처리 유닛) 및/또는 다른 형태의 처리 회로를 포함하는 것과 같은 모든 처리 디바이스를 포함하도록 의도된다. 또한, "프로세서"라는 용어는 둘 이상의 개별 프로세서를 나타낼 수 있다. "메모리"라는 용어는, 예를 들어, RAM(랜덤 액세스 메모리)(30), ROM(읽기 전용 메모리), 고정 메모리 디바이스(예: 하드 드라이브(34))와 같은, 프로세서 또는 CPU와 관련된 메모리를 포함하도록 의도되었다. 착탈식 메모리 장치(예: 디스켓), 플래시 메모리 등. 또한, 본 명세서에 사용된 "입력/출력 인터페이스"라는 문구는, 예를 들어, 데이터를 처리 유닛(예를 들어, 마우스)에 입력하기 위한 하나 또는 그 이상의 메커니즘, 및 처리 유닛과 관련된 결과를 제공한다(예: 프린터). 프로세서(16), 메모리(28), 및 입력/출력 인터페이스(22)는, 예를 들어, 데이터 처리 유닛(12)의 일부로서 버스(18)를 통해 상호연결 될 수 있다. 예를 들어, 버스(18)를 통한 적절한 상호연결들이 또한, 예를 들어, 컴퓨터 네트워크와 인터페이스하기 위해 제공될 수 있는 네트워크 카드와 같은, 네트워크 인터페이스(20)에 제공될 수 있고, 적절한 미디어와 인터페이스하기 위해 제공될 수 있는, 디스켓 또는 CD-ROM 드라이브와 같은, 미디어 인터페이스에 제공될 수 있다.
[0076] 따라서, 본 명세서에 기술된 바와 같이, 본 발명의 방법을 수행하기 위한 명령들 또는 코드를 포함하는 컴퓨터 소프트웨어는 연관된 메모리 디바이스들(예를 들어, ROM, 고정 또는 제거 가능한 메모리) 중 하나 또는 그 이상에 저장될 수 있고, 준비되면 CPU에 의해 이용되고, 부분적으로 또는 전체적으로(예: RAM에) 로드되고 구현될 수 있다. 그러한 소프트웨어는 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함할 수 있지만 이에 국한되지 않는다.
[0077] 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템은 시스템 버스(18)를 통해 메모리 엘리멘트들(28)에 직접 또는 간접적으로 결합된 적어도 하나의 프로세서(16)를 포함할 것이다. 상기 메모리 엘리멘트들은 상기 프로그램 코드가 실제 구현되는 동안 채용되는 로컬 메모리, 벌크 스토리지, 및 캐시 메모리(32)를 포함할 수 있고, 상기 캐시 메모리는 구현 동안 코드가 벌크 스토리지로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 스토리지를 제공한다.
[0078] 입력/출력 또는 I/O 디바이스들(키보드들, 디스플레이들, 포인팅 디바이스들 등을 포함하지만 이에 제한되지 않음)은 직접 또는 개재하는 I/O 컨트롤러들을 통해 시스템에 연결될 수 있다.
[0079] 네트워크 어댑터들(20)은 또한 데이터 처리 시스템이 개재하는 사설 또는 공공 네트워크들을 통해 다른 데이터 처리 시스템들 또는 원격 프린터들 또는 스토리지 디바이스들에 결합될 수 있도록 시스템에 연결될 수 있다. 모뎀들, 케이블 모뎀 및 이더넷 카드들은 현재 사용 가능한 네트워크 어댑터들 유형들 중 일부에 불과한다.
[0080] 청구범위를 포함하여, 여기에서 사용되는 "서버"는 서버 프로그램을 실행하는 물리적 데이터 처리 시스템(예를 들어, 도 5에 도시된 시스템 12)을 포함한다. 그러한 물리적 서버는 디스플레이 및 키보드를 포함하거나 포함하지 않을 수 있음을 이해할 것이다.
[0081] 하나 또는 그 이상의 실시 예들은 클라우드 또는 가상 머신 환경의 맥락에서 적어도 부분적으로 구현될 수 있지만, 이는 예시적이고 비제한적이다. 도 1 내지 도 2와 첨부된 명세서를 다시 참조한다.
[0082] 여기에 설명된 방법 중 어느 것이든 컴퓨터 판독 가능 저장 매체에 구현된 별개의 소프트웨어 모듈들을 포함하는 시스템을 제공하는 추가 단계를 포함할 수 있고; 상기 모듈들은, 예를 들어, 블록도들에 도시되고 및/또는 여기에 설명된 적절한 엘리멘트들 중 일부 또는 전부를 포함할 수 있으며, 설명된 모듈/블록 및/또는 하위 모듈/서브 블록 중 어느 하나, 일부 또는 전부를 제한하지 않고 예시로 포함할 수 있다. 그 다음 상기 방법 단계들은 프로세서(16)과 같은 하나 또는 그 이상의 하드웨어 프로세서들 상에서 실행되는, 전술한, 시스템의 별개의 소프트웨어 모듈들 및/또는 하위 모듈들을 사용하여 수행될 수 있다. 또한, 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 시스템에 별개의 소프트웨어 모듈들을 제공하는 것을 포함하여 여기에 설명된 하나 또는 그 이상의 방법 단계들을 수행하도록 구현된 코드를 갖는 포함하는 컴퓨터 판독가능 스토리지 매체를 포함할 수 있다.
[0083] 일부 경우들에서 채용될 수 있었던 사용자 인터페이스의 한 예가 서버 등에 의해 사용자의 컴퓨팅 디바이스의 브라우저에 제공되는 HTML(Hypertext Markup Language) 코드이다. HTML은 사용자 컴퓨팅 디바이스 상의 브라우저에 의해서 파싱되어 GUI(그래픽 사용자 인터페이스)를 생성한다.
[0084] 예시적인 시스템 및 제조 물품 세부사항들
[0085] 본 발명의 실시 예들은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0086] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0087] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0088] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0089] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0090] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0091] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 유닛, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0092] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 로직 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 실시 예들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 플로 차트 예시도의 각 블록, 및 블록도들 및/또는 플로 차트 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0093] 본 발명의 다양한 실시 예들의 설명들은 예시의 목적으로 제공되는 것이며, 개시된 실시 예들이 전부라거나 이들에 한정하려는 의도가 있는 것은 아니다. 많은 수정들 및 변형들이 설명된 실시 예들의 범위와 정신을 벗어남이 없이 이 기술 분야에서 통상의 지식을 가진 자에게는 명백할 것이다. 여기서 사용된 용어들은 실시 예들의 원리들, 실제 애플리케이션 또는 시장에서 발견된 기술들에 대한 기술적 개선을 가장 잘 설명하기 위해 또는 이 기술 분야에서 통상의 지식을 가진 자들이 여기서 개시된 실시 예들을 이해할 수 있도록 하기 위해 선택되었다.

Claims (20)

  1. 방법에 있어서, 상기 방법은:
    소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계를 관찰하는 단계(observing);
    타겟 데이터베이스 시스템을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating);
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing);
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 트리거링 하는 단계(triggering);
    상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 상기 타겟 데이터베이스 시스템에 의해, 수행하는 단계; 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계를 전송하는 단계(sending);
    상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계를 업데이트하는 단계(updating); 및
    쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계을 사용하는 단계(using)를 포함하는
    방법.
  2. 제1항에 있어서, 상기 방법은:
    상기 관찰하는 단계, 추정하는 단계 및 비교하는 단계의 오퍼레이션들을 반복하는 단계; 및
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용보다 크거나 동일하다는 것에 응답하여, 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 수행하는 단계를 포함하는
    방법.
  3. 제1항에 있어서, 상기 테이블 통계를 관찰하는 단계는 하나 또는 그 이상의 쿼리 실행을 수행하는 단계, 상기 소스 데이터베이스 시스템의 테이블에서 처리되는 수신 변경들(incoming changes)을 모니터링 하는 단계, 및 자동화된 백그라운드 작업을 더 포함하는
    방법.
  4. 제1항에 있어서, 상기 방법은: 상기 통계가 누락되지 않았고(not missing) 중요한 데이터 변경들이 없다고 결정하는 것에 응답하여 기존의 통계들을 상기 소스 데이터베이스 시스템에서 사용하는 단계를 더 포함하는
    방법.
  5. 제1항에 있어서, 상기 방법은: 상기 메타데이터 카탈로그로부터 통계가 누락되었는지를 결정하기 위한 확인(check)을 수행하는 단계를 더 포함하고, 통계가 누락되었다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 상기 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행되는
    방법.
  6. 제1항에 있어서, 상기 방법은: 상기 소스 데이터베이스 시스템의 테이블에 중요한 데이터 변경들이 있는지를 결정하기 위한 확인(check)을 수행하는 단계를 더 포함하고, 중요한 데이터 변경들이 있다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 상기 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행되는
    방법.
  7. 제1항에 있어서, 상기 사전 정의된 관계는 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용보다 적은 상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용인
    방법.
  8. 비-일시적 컴퓨터 판독가능 매체에 있어서, 상기 비-일시적 컴퓨터 판독가능 매체는 컴퓨터 실행가능 명령들을 포함하고, 컴퓨터에 의해 실행될 때 상기 컴퓨터가 오퍼레이션들의 방법을 수행하도록 하며, 상기 오퍼레이션들은:
    소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계를 관찰하는 단계(observing);
    타겟 데이터베이스 시스템을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating);
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing);
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 트리거링 하는 단계(triggering);
    상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 상기 타겟 데이터베이스 시스템에 의해, 수행하는 단계; 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계를 전송하는 단계(sending);
    상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계를 업데이트하는 단계(updating); 및
    쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계을 사용하는 단계(using)를 포함하는
    비-일시적 컴퓨터 판독가능 매체.
  9. 제8항에 있어서, 상기 오퍼레이션들은:
    상기 관찰하는 단계, 추정하는 단계 및 비교하는 단계의 오퍼레이션들을 반복하는 단계; 및
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용보다 크거나 동일하다는 것에 응답하여, 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 수행하는 단계를 포함하는
    비-일시적 컴퓨터 판독가능 매체.
  10. 제8항에 있어서, 상기 테이블 통계를 관찰하는 단계는 하나 또는 그 이상의 쿼리 실행을 수행하는 단계, 상기 소스 데이터베이스 시스템의 테이블에서 처리되는 수신 변경들(incoming changes)을 모니터링 하는 단계, 및 자동화된 백그라운드 작업을 더 포함하는
    비-일시적 컴퓨터 판독가능 매체.
  11. 제8항에 있어서, 상기 오퍼레이션들은: 상기 통계가 누락되지 않았고(not missing) 중요한 데이터 변경들이 없다고 결정하는 것에 응답하여 기존의 통계들을 상기 소스 데이터베이스 시스템에서 사용하는 단계를 더 포함하는
    비-일시적 컴퓨터 판독가능 매체.
  12. 제8항에 있어서, 상기 오퍼레이션들은: 상기 메타데이터 카탈로그로부터 통계가 누락되었는지를 결정하기 위한 확인(check)을 수행하는 단계를 더 포함하고, 통계가 누락되었다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 상기 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행되는
    비-일시적 컴퓨터 판독가능 매체.
  13. 제8항에 있어서, 상기 오퍼레이션들은: 상기 소스 데이터베이스 시스템의 테이블에 중요한 데이터 변경들이 있는지를 결정하기 위한 확인(check)을 수행하는 단계를 더 포함하고, 중요한 데이터 변경들이 있다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 상기 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행되는
    비-일시적 컴퓨터 판독가능 매체.
  14. 시스템에 있어서, 상기 시스템은:
    소스 데이터베이스 시스템-상기 소스 데이터베이스 시스템은, 제1 메모리에 결합된, 적어도 하나의 제1 프로세서를 포함함 -;
    타겟 데이터베이스 시스템-상기 타겟 데이터베이스 시스템은, 제2 메모리에 결합된, 적어도 하나의 제2 프로세서를 포함함-; 을 포함하고, 상기 시스템은 오페레이션들을 수행하도록 작동하며, 상기 오퍼레이션들은:
    소스 데이터베이스 시스템의 메타데이터 카탈로그에서 테이블 통계를 관찰하는 단계(observing);
    타겟 데이터베이스 시스템을 이용하여 통계 생성 비용을 추정하는 단계(estimating) 및 소스 데이터베이스 시스템를 이용하여 소스 통계 생성 비용을 추정하는 단계(estimating);
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용과 상기 소스 데이터베이스 시스템를 이용하는 소스 통계 생성 비용을 비교하는 단계(comparing);
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용과 사전 정의된 관계를 갖는 것에 응답하여 상기 타겟 데이터베이스 시스템에 의한 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 트리거링 하는 단계(triggering);
    상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것에 응답하여 상기 통계 생성 쿼리들을, 상기 타겟 데이터베이스 시스템에 의해, 수행하는 단계; 상기 소스 데이터베이스 시스템에 의해 트리거링 하는 것과 상기 통계 생성 쿼리들을 수행하는 것에 응답하여 상기 타겟 데이터베이스 시스템으로부터 상기 소스 데이터베이스 시스템으로 상기 생성된 통계를 전송하는 단계(sending);
    상기 생성된 통계에 기초하여 상기 메타데이터 카탈로그에서 상기 테이블 통계를 업데이트하는 단계(updating); 및
    쿼리 계획을 최적화하기 위해 상기 업데이트된 테이블 통계을 사용하는 단계(using)를 포함하는
    시스템.
  15. 제14항에 있어서, 상기 오퍼레이션들은:
    상기 관찰하는 단계, 추정하는 단계 및 비교하는 단계의 오퍼레이션들을 반복하는 단계; 및
    상기 타겟 데이터베이스 시스템을 이용하는 통계 생성 비용이 상기 소스 데이터베이스 시스템을 이용하는 소스 통계 생성 비용보다 크거나 동일하다는 것에 응답하여, 통계 생성 쿼리들을, 상기 소스 데이터베이스 시스템에 의해, 수행하는 단계를 더 포함하는
    시스템.
  16. 제14항에 있어서, 상기 테이블 통계를 관찰하는 단계는 하나 또는 그 이상의 쿼리 실행을 수행하는 단계, 처리를 업데이트 하는 단계, 및 자동화된 백그라운드 작업을 더 포함하는
    시스템.
  17. 제14항에 있어서, 상기 오퍼레이션들은: 상기 통계가 누락되지 않았고(not missing) 중요한 데이터 변경들이 없다고 결정하는 것에 응답하여 기존의 통계들을 상기 소스 데이터베이스 시스템에서 사용하는 단계를 더 포함하는
    시스템.
  18. 제14항에 있어서, 상기 오퍼레이션들은: 상기 메타데이터 카탈로그로부터 통계가 누락되었는지를 결정하기 위한 확인(check)을 수행하는 단계를 더 포함하고, 통계가 누락되었다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 상기 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행되는
    시스템.
  19. 제14항에 있어서, 상기 오퍼레이션들은: 상기 소스 데이터베이스 시스템의 테이블에 중요한 데이터 변경들이 있는지를 결정하기 위한 확인(check)을 수행하는 단계를 더 포함하고, 중요한 데이터 변경들이 있다고 결정하는 것에 응답하여, 상기 추정하는 단계, 비교하는 단계, 트리거링하는 단계, 상기 통계 생성 쿼리들을 수행하는 단계, 전송하는 단계, 및 업데이트 하는 단계의 오퍼레이션들이 수행되는
    시스템.
  20. 제14항에 있어서, 상기 타겟 데이터베이스 시스템은 통계와 같은 쿼리들(statistics-like queries)에 최적화되는
    시스템.
KR1020227030112A 2020-03-24 2021-02-24 통계 수집 오프로딩 KR20220129085A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/827,891 US11182386B2 (en) 2020-03-24 2020-03-24 Offloading statistics collection
US16/827,891 2020-03-24
PCT/IB2021/051531 WO2021191702A1 (en) 2020-03-24 2021-02-24 Offloading statistics collection

Publications (1)

Publication Number Publication Date
KR20220129085A true KR20220129085A (ko) 2022-09-22

Family

ID=77856500

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227030112A KR20220129085A (ko) 2020-03-24 2021-02-24 통계 수집 오프로딩

Country Status (10)

Country Link
US (1) US11182386B2 (ko)
JP (1) JP2023518345A (ko)
KR (1) KR20220129085A (ko)
CN (1) CN115335821B (ko)
AU (1) AU2021244852B2 (ko)
CA (1) CA3167981C (ko)
DE (1) DE112021000338B4 (ko)
GB (1) GB2609576A (ko)
IL (1) IL295463A (ko)
WO (1) WO2021191702A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4350386A1 (en) 2022-10-07 2024-04-10 Samsung Medison Co., Ltd. Ultrasonic diagnostic apparatus and control method thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520788B2 (en) * 2021-03-05 2022-12-06 Insight Direct Usa, Inc. Methods and systems for transforming distributed database structure for reduced compute load
US11775516B2 (en) * 2022-02-09 2023-10-03 International Business Machines Corporation Machine-learning-based, adaptive updating of quantitative data in database system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4723301B2 (ja) * 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
US7991763B2 (en) * 2007-04-13 2011-08-02 International Business Machines Corporation Database query optimization utilizing remote statistics collection
US8095507B2 (en) 2008-08-08 2012-01-10 Oracle International Corporation Automated topology-based statistics monitoring and performance analysis
US9110948B2 (en) * 2012-11-09 2015-08-18 International Business Machines Corporation Relative performance prediction of a replacement database management system (DBMS)
US8996499B2 (en) * 2012-12-19 2015-03-31 International Business Machines Corporation Using temporary performance objects for enhanced query performance
US9495418B2 (en) * 2013-08-07 2016-11-15 International Business Machines Corporation Scalable acceleration of database query operations
US10019478B2 (en) 2013-09-05 2018-07-10 Futurewei Technologies, Inc. Mechanism for optimizing parallel execution of queries on symmetric resources
US9361338B2 (en) * 2013-11-26 2016-06-07 International Business Machines Corporation Offloaded, incremental database statistics collection and optimization
US9928281B2 (en) 2015-03-20 2018-03-27 International Business Machines Corporation Lightweight table comparison
KR101706252B1 (ko) 2016-02-29 2017-02-13 주식회사 티맥스데이터 이기종 데이터베이스들 간의 쿼리 결과를 동기화하기 위한 방법, 서버 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램
CN108153776A (zh) 2016-12-05 2018-06-12 北京国双科技有限公司 数据查询方法及装置
US20190034496A1 (en) 2017-07-27 2019-01-31 Citrix Systems, Inc. Abstract Query Processing Using Metadata on Multiple Complex Data Sources
US11468060B2 (en) * 2018-06-25 2022-10-11 Oracle International Corporation Automatic query offloading to a standby database

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4350386A1 (en) 2022-10-07 2024-04-10 Samsung Medison Co., Ltd. Ultrasonic diagnostic apparatus and control method thereof

Also Published As

Publication number Publication date
DE112021000338B4 (de) 2024-05-29
GB2609576A (en) 2023-02-08
AU2021244852B2 (en) 2023-04-27
US11182386B2 (en) 2021-11-23
US20210303575A1 (en) 2021-09-30
CN115335821B (zh) 2023-08-15
JP2023518345A (ja) 2023-05-01
GB202215278D0 (en) 2022-11-30
AU2021244852A1 (en) 2022-09-01
CN115335821A (zh) 2022-11-11
CA3167981A1 (en) 2021-09-30
DE112021000338T5 (de) 2022-09-22
WO2021191702A1 (en) 2021-09-30
IL295463A (en) 2022-10-01
CA3167981C (en) 2023-12-19

Similar Documents

Publication Publication Date Title
US11030521B2 (en) Estimating cardinality selectivity utilizing artificial neural networks
US11176128B2 (en) Multiple access path selection by machine learning
AU2021244852B2 (en) Offloading statistics collection
US11321318B2 (en) Dynamic access paths
US11526501B2 (en) Materialized views assistant
US10067849B2 (en) Determining dynamic statistics based on key value patterns
US11693858B2 (en) Access path optimization
US20210209110A1 (en) Automated optimization of number-of-frequent-value database statistics
US11055285B2 (en) Access path optimization
US11645283B2 (en) Predictive query processing
US10459916B2 (en) Updating database statistics during query execution
US20210311942A1 (en) Dynamically altering a query access plan
US11204923B2 (en) Performance for query execution
US11841857B2 (en) Query efficiency using merged columns
US20240045878A1 (en) Building and using a sparse time series database (tsdb)
US11023485B2 (en) Cube construction for an OLAP system
US11893015B2 (en) Optimizing query performance in virtual database
US11947561B2 (en) Heterogeneous schema discovery for unstructured data
US11244007B2 (en) Automatic adaption of a search configuration
US10642741B2 (en) Accessing tables with heterogeneous partitions