KR20070026421A - 초 무공유 병렬 데이터베이스 - Google Patents

초 무공유 병렬 데이터베이스 Download PDF

Info

Publication number
KR20070026421A
KR20070026421A KR1020067019203A KR20067019203A KR20070026421A KR 20070026421 A KR20070026421 A KR 20070026421A KR 1020067019203 A KR1020067019203 A KR 1020067019203A KR 20067019203 A KR20067019203 A KR 20067019203A KR 20070026421 A KR20070026421 A KR 20070026421A
Authority
KR
South Korea
Prior art keywords
slave
query
node
database
tables
Prior art date
Application number
KR1020067019203A
Other languages
English (en)
Other versions
KR101114149B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=35125731&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20070026421(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 데이탈레그로, 인코포레이티드 filed Critical 데이탈레그로, 인코포레이티드
Publication of KR20070026421A publication Critical patent/KR20070026421A/ko
Application granted granted Critical
Publication of KR101114149B1 publication Critical patent/KR101114149B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

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

Abstract

본 발명의 초 무공유 병렬 데이터베이스 시스템은 하나 이상의 마스터 노드와 다수의 슬레이브 노드를 포함한다. 상기 데이터베이스는 상기 슬레이브 노드 간에 데이터 전송을 요하지 않고 질의어가 병렬적으로 처리되기 위해 상기 데이터베이스 시스템의 슬레이브 노드를 가로질러 구분되고 분배되는 하나 이상의 팩트 테이블과 다수의 차원 테이블을 포함한다. 상기 데이터베이스의 상기 팩트 테이블과 제1 차원 테이블은 상기 슬레이브 노드를 가로질러 구분된다. 상기 데이터베이스의 상기 다른 차원 테이블은 상기 슬레이브 노드 각각과 짝을 이루고 하나 이상의 상기 다른 차원 테이블은 상기 슬레이브 노드를 가로질러 구분된다.
데이터베이스, 병렬 처리, 무공유

Description

초 무공유 병렬 데이터베이스{Ultra-shared-nothing parallel database}
본 발명은 병렬 데이터베이스 시스템에 관한 것이고, 보다 상세하게는 무공유 병렬 데이터베이스 시스템에 관계된 것이다.
병렬 데이터베이스 시스템은, 고유의 처리과정과 메모리 그리고 디스크 자원을 갖는 다수의 노드(Node)들로 구성된, 무공유 구조를 이용하여 설계되었다. 이들 시스템에서, 데이터베이스의 테이블들은 시스템 노드들을 가로질러 분배된다. 데이터베이스의 질의어(Query)들은 동시에 다수의 노드에서 병렬적으로 수행된다. 무공유 병렬 데이터베이스 시스템은, 시스템 내의 노드들의 개수가 증가할수록 그 성능(Performance)이 개선되고 더 큰 데이터셋(Dataset)들이 처리될 수 있는 곳에서, 순차적인 스케일링(Scaling)을 제공할 수 있도록 의도되었다. 그러나 종래의 디자인들은, 질의어 스큐(Query Skew)와 같은 문제점들 때문에 순차적인 스케일링을 제공하는 데 실패하였다.
질의어 스큐는, 동일한 데이터베이스에 대하여 비슷한 레벨의 복잡도를 갖는 두 개의 다른 질의어들이, 근본적으로 서로 다른 실행 시간을 가질 때에 발생하게 된다. 종래의 무공유 병렬 데이터베이스 시스템에서, 질의어 스큐는, 다른 질의어들이 아주 적거나 아예 데이터가 전송되지 않은 상태에서 처리되고 있는 도중에 다 른 어떤 질의어가 처리되어야 하는, 노드 간에 대량의 데이터를 전송해야함으로써 발생한다. 이런 데이터의 전송은 질의어의 처리과정을 느리게 하고 종래 시스템에서 병목 현상(bottleneck)을 발생시켰다.
예를 들어, 네 개의 노드와 데이터베이스 테이블들을 갖는 종래의 시스템에서는, 데이터베이스 테이블들은 종종 각각의 노드상에 저장된 각각의 테이블의 쿼터(quarter)에 맞게 균등하게 배분된다. 전형적인 데이터베이스 질의어들은, 하나의 테이블의 기본(primary) 키(key)와 다른 테이블의 외부(foreign) 키 사이에 대응이 있는지 찾으며 데이터베이스 테이블들을 스캔하는, 하나 또는 그 이상의 결합명령어("joins")를 포함하고 있다. 두 개의 데이터베이스 테이블의 결합명령어를 처리하기 위해서는, 각각의 노드는 데이터베이스 테이블의 일 부분을 다른 노드로 전송해야 한다. 어떤 데이터베이스 테이블이 결합하고 얼마나 많은 결합명령어들이 질의어에 포함되는가에 따라, 이 데이터 전송은 질의어 처리시간을 늘어나게 할 수 있을 정도의 긴 시간을 필요로 할 수도 있다. 데이터셋들이 방대해 지고 질의어 세션(session)의 수가 증가하면서, 질의어 스큐는 점진적으로 시스템의 성능을 저하하게 된다. 주어진 이 문제의 속성상, 종래의 시스템에 추가의 노드를 편입시키는 것은 질의어 처리의 병목 현상을 해소할 수 없다.
따라서, 질의어 스큐를 경감할 수 있도록 개선된 무공유 병렬 데이터베이스 시스템이 요구된다. 게다가, 상기 개선된 시스템은 상기 시스템을 운영하기 위한 관리비용을 최소화하고, 안전한 시스템 대체 작동의 보호법을 제공하여야 한다.
본 발명은 초 무공유 병렬 데이터베이스 시스템을 제공함으로써 상기 제시된 종래 무공유 데이터베이스 시스템의 결점들에 대해 말하고자 한다. 상기 발명의 초 무공유 병렬 데이터베이스 시스템은, 상기 선행기술의 상기 노드 간에 전송되는 데이터량 만큼을 요구하지 않으면서 데이터베이스 질의어들이 병렬적으로 처리되게 하는 방식으로 여러 개의 슬레이브 노드들을 가로질러 상기 데이터베이스 테이블들을 구분짓고 분배한다. 상기 데이터베이스는, 데이터베이스 스키마(schema)의 구조와 상기 테이블들의 관련 크기에 관계된 규칙들의 세트(set)에 따라 분배된다. 노드들간의 데이터 전송의 필요성을 크게 감소시킴으로서, 즉 네트워크 소통(traffic)과 그 결과로서의 질의어 스큐를 줄임으로써, 본 발명은 시스템의 성능을 크게 향상시킬 수 있다.
상기 제시한 데이터베이스 상에서, 팩트 테이블과 하나의 차원 테이블은 공유키(common key)를 사용하여 구분되고 여러 개의 슬레이브 노드들을 가로질러 분배된다. 상기 데이터베이스 상의 차원 테이블은 상기 시스템의 상기 슬레이브 노드들 모두와 짝을 이룬다. 상기 남은 차원 테이블은 상기 슬레이브 노드들을 가로질러 구분되고 상기 모든 슬레이브 노드들과 짝을 이룬다. 이로 인해, 상기 데이터베이스 시스템은, 상기 슬레이브 노드들 간에 혹은 마스터 노드와 상기 슬레이브 노드들 간에 큰 네트워크 소통을 유발함이 없이 대부분의 질의어들을 처리할 수 있게 된다.
본 발명의 일면에 의하면, 병렬 데이터베이스 시스템은 마스터 노드와 여러 개의 슬레이브 노드들을 포함하여 제공된다. 팩트 테이블과 여러 개의 차원 테이블을 포함하고 있는 데이터베이스는 상기 데이터베이스 시스템의 상기 슬레이브 노드들을 가로질러 분배된다. 상기 데이터베이스의 상기 테이블들을 분배하기 위해, 상기 팩트 테이블 및 제1 차원 테이블은 상기 슬레이브 노드들을 가로질러 구분된다. 상기 남은 차원 테이블들은 상기 슬레이브 노드들 각각과 짝을 이루고, 만일 상기 테이블들이 최소의 크기를 갖는다면, 상기 슬레이브 노드들을 가로질러 구분된다.
바람직하게는, 상기 팩트 테이블과 제1 차원 테이블은 공유키를 사용하여 구분된다. 상기 나머지 차원 테이블들은, 상기 시스템의 상기 슬레이브 노드들을 가로질러 열과 행에 따라 임의로 구분된다. 상기 데이터베이스에 대한 질의어들은, 상기 슬레이브 노드들 간에 데이터를 전송함이 없이 상기 병렬 데이터베이스 시스템의 상기 슬레이브 노드들에 의해 실행가능 한 하나 이상의 하위-질의어(sub-query)로 변환된다.
본 발명의 또 다른 일면에 의하면, 상기 병렬 데이터베이스 시스템은, 상기 데이터베이스 시스템으로부터 출력된 질의어 결과들(query results)을 저장한다. 바람직하게는, 상기 슬레이브 노드들 각각에 의해 출력된 하위-질의어 결과들을 저장하기 위한 질의어 저장소(query cashe)를 각각 포함하고 있는, 상기 마스터 노드 및 상기 슬레이브 노드들에 의해 출력된 질의어 결과들을 저장하기 위한 질의어 저장소를, 상기 마스터 노드는 갖고 있어야 한다.
본 발명의 또 하나의 일면에 의하면, 상기 데이터베이스 시스템의 상기 슬레이브 노드들 각각은 하나 이상의 시스템 대체 동작 파트너(failover partner)를 배정받는다. 각각의 시스템 대체 동작 파트너들은 고유의 테이블들과 함께 시스템 대체 동작 파트너의 데이터셋(dataset)의 전부 또는 일부를 저장한다. 슬레이브 노드 실패의 이벤트 발생시, 상기 실패한 노드에서 수행될 예정이었던 하위-질의어가 시스템 대체 동작 파트너에 의해 상기 실패한 노드에서 실행된다.
요약 제시된 본 발명은 효율적이고도 신뢰할 수 있는 병렬 데이터베이스 시스템을 제공한다. 질의어 스큐는 데이터베이스 질의어들의 처리 과정을 통해 제거될 수 있으며, 이에 의해 상기 데이터베이스 시스템상에서 연속에 근접한 스케일링(scaling)을 가능하게 한다. 두 개의 레벨(level)을 갖는 질의어 저장소는 상기 질의어들의 근본 테이블들을 교차시키지 않음으로써, 반복적인 질의어들의 처리과정을 단축할 수 있다. 최종적으로 상기 슬레이브 노드들 간의 시스템 대체 동작 파트너들의 이용은, 노드 실패의 이벤트 발생시 연속적인 동작을 제공하기 위한 보다 저비용의 해결책을 제시한다.
본 발명의 상기 제시된 요약은, 본 발명의 본질이 빨리 이해될 수 있도록 제시되었다. 본 발명의 상기 언급된 실시예들에 대한 보다 상세하고 완벽한 이해는 이어지는 본 발명의 상세한 설명과 첨부 도면을 참조하여 얻어질 수 있을 것이다.
도 1은 무공유 병렬 데이터베이스 시스템의 하드웨어 구조를 묘사하는 개략도이다.
도 2는 본 발명의 일 실시예에 따른 초 무공유 병렬 데이터베이스 시스템의 소프트웨어 구조를 묘사하는 개략도이다.
도 3은 슬레이브 스키마를 산출하기 위해 사용되는 처리과정을 묘사한 플로 차트(flowchart)이다.
도 4는 호스트 스키마의 일 예를 묘사하는 도표이다.
도 5는 호스트 스키마의 테이블들을 정렬하는 처리과정을 묘사하는 플로차트이다.
도 6은 본 발명의 일 실시예에 따라 데이터베이스 시스템에 데이터베이스의 테이블들을 벌크 로딩하는(bulk loading) 하는 과정을 묘사하는 플로차트이다.
도 7은 데이터베이스 테이블들을 데이터베이스 시스템의 슬레이브 노드들에 로딩하는 처리과정을 묘사한 플로차트이다.
도 8은 이미 소트된(sorted) 데이터를 슬레이브 노드들로 벌크 로딩하기 위한 처리과정을 묘사한 플로차트이다.
도 9는 외부 호스트 시스템으로부터 새로운 구문(statement)을 전달받아 수행하는 처리과정을 묘사한 플로차트이다.
도 10은 SQL(structured query language) 구문을 분석하고 처리하는 과정을 묘사한 플로차트이다.
도 11은 데이터베이스 테이블을 개조하는 과정을 묘사한 플로차트이다.
도 12는 데이터베이스 테이블에 데이터를 업데이트(update)하고 인써트(insert)하는 과정을 묘사한 플로차트이다. 도 13은 질의어의 병렬처리과정을 묘사한 플로차트이다.
도 14는 단일 단계 질의어를 실행시키기 위한 처리 과정을 묘사하는 플로차트이다.
도 15는 슬레이브 스키마에서 사용되는 테이블 이름들을 질의어로서 교체하는 처리과정을 묘사한 플로차트이다.
도 16은 질의어를 수행하기 위해 슬레이브 노드에서 수행되는 처리 과정을 묘사한 플로차트이다.
도 17은 질의어 처리과정을 여러 단계를 묘사한 플로차트이다.
도 18은 마스터 노드 실패의 이벤트 발생시 수행되는 시스템 대체 동작 과정을 묘사한 플로차트이다.
도 19는 슬레이브 노드 실패의 이벤트 발생시 수행되는 시스템 대체 동작 과정을 묘사한 플로차트이다.
본 발명은 개선된 무공유 병렬 데이터베이스 시스템, 보다 상세하게는 초 무공유 병렬 데이터베이스 시스템에 관한 것이다. 상기 초 무공유 병렬 데이터베이스 시스템은 적어도 하나의 마스터 노드와 여러 개의 슬레이브 노드를 사용하는 종래의 무공유 병렬 데이터베이스 시스템과 유사한 방식으로 구성된다. 도 1은 상기 초 무공유 병렬 데이터베이스 시스템의 일 실시예에 따른 하드웨어 구조를 개략적으로 묘사하는 도표이다.
도 1은 데이터베이스 시스템(10)의 배치를 묘사하고 있으며, 상기 시스템은 마스터 노드(11)와 슬레이브 노드(12a ~ 12n)를 포함하고 있다. 도표를 단순화하기 위하여, 도 1은 오직 하나의 마스터 노드(11)를 포함하고 있다. 그러나 아래 좀 더 상세하게 묘사된 바와 같이, 본 발명의 다른 실시예는 데이터베이스 시스템(10)에 여러 개의 마스터 노드(11)를 포함하고 있다. 마스터 노드(11)와 슬레이브 노드(12a ~ 12n)는 네트워크(13)를 통해 상호 연결되어 있다. 보다 바람직하게는, 네트워크(13)는 데이터베이스 시스템(10)의 신뢰도를 향상시킬 수 있게 사용되는 여유가 있는 네트워크이다. 대신에 여유가 없는 네트워크는 크리티컬(critical)하지 않은 응용예들에 사용될 수 있다. 네트워크(13)는 당업자에게 잘 알려진 네트워킹 기술들과 프로토콜(protocol)들을 사용하여 구현된다. 예컨대, 네트워크는 이에 한정되는 것은 아니지만, 이더넷(Ethernet)상의 TCP/IP 또는 인피니밴드(Infiniband)상의 MPI(Message Passing Interface)를 포함할 수 있다.
데이터베이스 시스템(10) 각각은 고유의 처리과정, 메모리, 그리고 디스크 자원을 포함하고 있다. 특별히, 마스터 노드(11)는 CPU(14)(central processing unit), RAM(15)(random access memory) 그리고 디스크(16)(disk)를 포함하고 있다. 슬레이브 노드(12a ~ 12n)는 CPU(17a ~ 17n), RAM(18a ~ 18n) 그리고 디스크(19a ~ 19n)를 각각 포함하고 있다. 상기 CPU들은, 상기 각각의 디스크 상에 저장된 소프트웨어 모듈의 프로그램 명령어들을 실행한다. 각각의 노드는 하나의 CPU 및 하나의 디스크를 갖는 것으로 묘사되었지만, 당업자라면 상기 시스템의 성능을 개선하기 위하여 각각의 노드들이 여러 개의 CPU 또는 여러 개의 디스크를 가질 수 있다는 점을 알 수 있을 것이다. 예를 들어, 본 발명의 한 구현 형태는 두 개의 프로세서와 열두 개의 하드디스크의 정렬을 사용할 수 있다.
데이터베이스 시스템(10)의 각각의 노드는 운영체제와 장치 드라이버와 같은 기본 소프트웨어 구성요소들에 더하여, 본 발명을 구현하는데 사용되는 소프트웨어 모듈을 저장하고 실행한다. 도 2는 데이터베이스 시스템(10)의 소프트웨어 구조를 개략적으로 도시하는 도표이다. 마스터 노드(11a)는 스트림(stream)의 관리 소프트웨어(20), 질의어 저장소 소프트웨어(21), SQL 분석 소프트웨어(22), 슬레이브 스키마 생성 소프트웨어(23), 업데이트/인서트 소프트웨어(24), 질의어 병렬화/최적화 소프트웨어(25), 다단계 질의어 실행 소프트웨어(26), 결과셋의 분석 소프트웨어(28), 날짜(date) 구분 보존 소프트웨어(29), 벌크 로딩 소프트웨어(30), DBMS(DateBase Management System)(31) 그리고 시스템 관리 소프트웨어(32)를 포함한다. 여러 개의 마스터 노드를 사용하는 실시예에서, 각각의 마스터 노드는 상기 설명된 소프트웨어 모듈과 함께 구성된다. 각각의 슬레이브 노드는 DBMS(33a ~ 33n)와 슬레이브 관리 소프트웨어 (34a ~ 34n) 각각을 포함한다. 최종적으로, 관리 콘솔(console) 소프트웨어(35)는 하나 이상의 마스터 노드에 인스톨(install)되고, 상기 마스터 노드에 연결된 터미널(terminal) 또는 데이터베이스 시스템(10)으로부터 분리된 컴퓨터 시스템상에서 동작하는 클라이언트(client)프로그램을 통해서 접근 가능하다.
상기 언급된 소프트웨어 모듈은 상기 데이터베이스 시스템 노드의 디스크 각각에 저장되고, 상기 노드 각각의 CPU에 의해 실행된다. 언급된 실시예에서 상기 모든 노드는, 동일한 하드웨어 구조로 되어 있고, 특정한 노드에 적절한 소프트웨어 모듈을 로딩하거나 실행함으로써 마스터 노드나 슬레이브 노드 중 하나로 기능할 수 있게 된다. 본 발명의 일 실시예에 의할 때, 상기 소프트웨어 모듈은 자바 프로그래밍 언어(Java Programming language)를 사용하여 구현된다. 하지만, 본 발 명이 속한 분야에서 기술을 갖고있는 사람이라면 다른 프로그래밍 언어들이 하나 이상의 소프트웨어 모듈을 구현하는데 사용될 수 있음을 인지할 수 있을 것이다. 이 소프트웨어 모듈들의 동작에 대한 상세한 설명은 아래 첨부된 발명의 동작 설명에 있다.
종래의 무공유 병렬 데이터베이스 디자인을 뛰어넘는 본 발명의 중요한 진전은 조인(joins) 명령어와 같은 데이터베이스 명령어들을 실행하기 위한 노드들 간의 데이터 전송의 필요성이 많이 감소하였다는 점이다. 이러한 진전은 데이터 베이스 테이블을 자동적으로 구분하고 데이터베이스 시스템(10)의 상기 슬레이브 노드들을 가로질러 상기 테이블을 분배하는 방법의 세트(set) 들을 사용함으로써 달성될 수 있다. 상기 데이터베이스 테이블의 상기 구분과 분배는 생성된 슬레이브 스키마에 맞추어 수행된다.
외부 호스트(host) 시스템은 데이터베이스 시스템(10)에 대한 호스트 스키마를 정의하는 메타데이터(metadata)를 포워딩(forward)한다. 스트림(stream)의 관리 소프트웨어(20)는 상기 메타데이터를 담고 있는 상기 스트림을 받아서, DBMS(31)로 상기 메타데이터를 포워딩한다. 상기 포워딩 된 호스트 스키마에 따른 슬레이브 스키마를 생성하기 위해서, DBMS(31)는 상기 호스트 스키마의 상기 메타데이터를 슬레이브 스키마 생성 소프트웨어(23)로 포워딩한다. 상기 호스트 스키마를 받으면서, 슬레이브 스키마 생성 소프트웨어(23)는 슬레이브 스키마를 생성하는 규칙들의 세트를 적용한다. 상기 슬레이브 스키마는 상기 데이터베이스 테이블들이 어떻게 구분되고 슬레이브 노드들(12a ~ 12n)을 가로질러 어떻게 분배되는지를 정의한다. 도 3은 본 발명의 일 실시예에 따른 상기 슬레이브 스키마를 생성하기 위해 슬레이브 스키마 생성 소프트웨(23)어를 통해 수행되는 처리과정을 묘사한 플로차트이다. 도 3에서 보이는 단계들은 상기 슬레이브 스키마를 생성하기 위해 사용되는 규칙들의 세트를 구체화하고 있다.
S300의 단계에서, 슬레이브 스키마 생성 소프트웨어(23)는 데이터베이스 시스템(10)에 연결된 외부 호스트 시스템에 의해 제공되는 호스트 스키마를 받는다. 이에 제한되는 것은 아니지만, 호스트 스키마는 가능하면 별(star) 스키마, 눈송이(snowflake) 스키마 그리고 정규 스키마를 포함한다. 도 4는 TPC(Transaction Processing Council)에 의해 만들어진 데이터베이스 시스템의 표준 척도로서 사용되는 눈송이 스키마의 한 예이다. 상기 스키마는 하나의 팩트 테이블(LINEITEM)과 여러 개의 차원 테이블(ORDERS, CUSTOMER, PART, PARTSUPP, SUPPLIER, NATION and REGION)을 포함한다. 팩트테이블은 다른 테이블과 자신이 부모에 해당하는 어떠한 부모-자식(parent-child) 관계를 갖지 않는다. 차원 테이블은 다른 테이블과 자신이 부모에 해당하는 부모-자식 관계를 갖고있는 테이블로 정의된다. 도 4에 묘사된 상기 스키마가 오직 하나의 팩트 테이블을 포함하고 있는 반면에, 데이터베이스 스키마가 여러 개의 팩트 테이블들을 가질 수 있다는 점은 쉽게 이해될 수 있을 것이다.
S301 단계에서는, 슬레이브 스키마 생성의 준비 단계로서 호스트 스키마의 테이블들이 주문된다. 도 5는 상기 호스트 스키마 테이블들을 주문하는 과정을 묘사하는 플로차트이다. S500 단계에서는 상기 호스트 스키마 내의 모든 팩트 테이블 들이 확인된다. 확인된 각각의 팩트 테이블을 위해, 상기 호스트 스키마 내에서 정의된 모든 팩트 테이블 관계들이 상기 팩트 테이블로부터 외부로 이어지며, 이는 S501 단계에서 제1 차원 테이블을 확인하고 S502 단계에서 다른 관계된 테이블들을 주문하기 위함이다. 상기 차원 테이블들은 그것들의 위치와 상기 팩트 테이블에 대한 관계에 기초하여 주문된다. 도 4에 묘사된 호스트 스키마에 의하면, 상기 "LINEITEM" 테이블은 상기 호스트 스키마의 유일한 팩트 테이블로서 확인된다. 상기 "LINEITEM" 테이블 외부로의 운용상, 상기 "ORDERS", "PART", "PARTSUPP" and "SUPPLIER" 테이블들은 상기 "LINEITEM" 테이블과 직접적인 관계를 갖는 테이블로서 확인된다. 테이블의 제1 층은, 예컨대, 크기와 같은 특정한 기준에 기초하여 주문된다. 상기 제1 층의 첫 번째로 주문된 테이블, 예컨대 "ORDER" 테이블은 제1 차원 테이블로서 인식된다. 상기 테이블 관계와 상기 특정한 주문 기준을 사용함으로써, 상기 남은 차원 테이블들이 주문된다.
병렬 데이터베이스 시스템을 사용하는 질의어들의 효율적인 처리를 위해, 더 크고 좀 더 자주 액세스(access)되는 테이블들은 가능하면 슬레이브 노드를 가로질러 균등하고 효율적으로 분배되어야 한다. 이런 관점에서 본 발명은 종래의 무공유 데이터베이스 시스템에서 사용된 것과 유사한 방식의 접근법을 채택하였다. 구체적으로 말하자면, 본 발명은 공유키를 사용하여 상기 팩트 테이블과 차원 테이블을 해쉬(hash) 구분한다. 공유키를 사용하여 상기 테이블들을 해쉬 구분함으로써, 주어진 키 값은 특정한 노드에 맵핑(mapped)될 수 있으며, 두 개의 테이블을 조인(join)하는 질의어는 슬레이브 노드간에 데이터를 전송함이 없이 처리될 수 있 다. 도 3의 S302 단계에서, 각각 쌍을 이루는 팩트 테이블과 제1 차원 테이블을 위한 해쉬키가 표시(mark)된다. 다시 도 4에 묘사된 상기 호스트 스키마에 의하면, "ORDERKEY"는, "ORDERS" 테이블(제1 차원 테이블)의 기본키(primary key) 및 "LINEITEM" 테이블(팩트 테이블)의 외부키(foreign key)인 상기 해쉬키로서 표시된다.
상기 데이터베이스 테이블들이 주문되고 상기 해쉬키들이 표시되면, 상기 슬레이브 스키마 생성 과정은 슬레이브 스키마를 생성할 준비가 된다. 상기 호스트 스키마의 테이블은 각각 검사되고, 하나 이상의 대응되는 테이블들이 상기 슬레이브 스키마 내에서 생성된다. S303 단계에서는 우선 현재의 테이블이 팩트 테이블인지 아니면 제1 차원 테이블인지 검사한다. 각각의 팩트 테이블과 제1 차원 테이블은 수평으로 구분되고 상기 슬레이브 노드들을 가로질러 분배된다. 이런 방식으로 각각의 슬레이브 노드는, 각 팩트 테이블의 수평으로 구분된 부분과 상기 호스트 스키마의 각 제1 차원 테이블에 대해 책임을 지게 된다.
전형적인 데이터베이스에서 테이블들은 종종 방대한 양의 텍스트(text)를 포함하게 된다. 이 텍스트는 보통 상기 테이블의 설명 영역(comment field)에서 발견된다. 본 발명의 임의적인 특징은 상기 테이블들을 수직 구분(vertical partitioning)하여 상기 커다란 설명 영역을 제거하는 것과, 제거된 영역을 상기 슬레이브 스키마 내에 독립된 테이블 안에 다시 위치시키는 것이다. 상기 두 테이블 내의 열(row)들이 상기 정확히 같은 방법으로 유지됨을 확보함으로써, 특정한 열을 위한 상기 설명 영역은 열 확인기(row identifier)를 사용하여 발견될 수 있 다. 상기 수직 구분 옵션(option)은 기본 방법(default rule)의 세트이거나 또는 시스템 관리자로부터의 입력을 사용한 세트 중 하나이다. S304 단계에서 상기 테이블들이 수직 구분되었는지에 대해 검사한다. 만일 수직 구분된 세트가 아니면 S305 단계에서 상기 슬레이브 스키마 내에 수평 구분된 테이블이 생성된다. 만일 수직 구분된 세트이면 S306 단계에서 상기 슬레이브 스키마 내에 수직 구분된 테이블이 생성된다. 상기 수직 구분된 테이블은 수평구분된 테이블의 수직 구분이며, 하나의 세트로서는 S305 단계에서 생성된 수평 구분된 테이블에 대응된다.
본 발명의 언급된 실시예에 의하면, 상기 팩트 테이블과 제1 차원 테이블뿐만 아니라 각 테이블의 완전한 복사본(copy)은 각각의 슬레이브 노드에 저장된다. S307의 단계에서, 만일 검사되고 있는 테이블이 팩트 테이블이나 제1 차원 테이블이 아니라면, 상기 슬레이브 스키마에 전체 테이블이 생성된다. 각각의 슬레이브 노드상에 상기 외부 차원 테이블 각각의 완전한 복사본을 위치시킴으로써, 상기 외부 차원 테이블과 상기 팩트테이블 사이 또는 상기 외부 차원 테이블과 상기 제1 차원 테이블 사이의 조인과 같은 질의어는 상기 슬레이브 노드간에 테이블 데이터의 전송을 필요로 함이 없이 병렬적으로 실행된다.
상기 외부 차원 테이블 각각의 완전한 복사본에 더하여, 본 발명의 상기 언급된 실시예는 상기 슬레이브 노드들을 가로질러 상기 외부 차원 테이블을 임의적으로 구분하고 분배한다. 상기 슬레이브 노드 상에 상기 외부 차원 테이블의 완전한 복사본과 파티션(partition)들을 포함함으로써, 최상의 시스템 성능을 발휘하도록 질의어들은 상기 슬레이브 노드상의 관계된 테이블들에 맞게 최적화될 수 있다. 하지만, 어떤 데이터베이스 테이블은 추가적인 처리과정과 저장 공간을 뒷받침할 충분한 성능 이득을 생성하지 못한다. 예를 들어, 상기 슬레이브 노드에 상대적으로 작은 데이터베이스 테이블을 구분하고 분배하기에 충분히 큰 성능 이득을 제공하지 못할 수 있다는 의미이다. 따라서, 기본값의 방법으로서 또는 시스템 관리자의 입력에 의해, 특정한 크기보다 작은 어떤 외부 차원 테이블들을 구분 짓지 않는 것은 본 발명에 있어서 임의적인 사항이다.
S308 단계에서는, 현재의 테이블을 구분할 것인지 아닌지에 대해 판단한다. 만일 상기 구분짓는 옵션이 설정되지 않았거나, 상기 테이블이 상기 구분 기준을 만나는 경우에는, S309 단계에서 테이블들에 대한 수직 구분 여부에 대해 검사한다. 만일 수직 구분되지 않았다면, S310단계에서 상기 슬레이브 스키마 내에 수평 구분된 테이블이 생성된다. 만일 수직 구분되었다면, S311 단계에서 상기 슬레이브 스키마 내에 수직 구분된 테이블 세트가 생성된다. 상기 수직 구분된 테이블은 수평 구분된 테이블의 수직 구분이고, S310 단계에서 생성된 수평 구분된 테이블에 대응되는 한 세트가 된다.
상기 호스트 스키마의 모든 테이블이 검사되고 상기 슬레이브 스키마 내에 상기 적절한 테이블들이 형성되고 나면, 상기 생성된 슬레이브 스키마는 DBMS(31)에 저장되고, S312 단계에서 상기 슬레이브 노드들 각각으로 전송된다. 상기 슬레이브 스키마는 상기 데이터베이스 시스템 내부로 데이터베이스 테이블을 로드하고 구분하기 위해, 상기 마스터 노드와 상기 슬레이브 노드에서 사용된다.
개개의 데이터베이스를 위한 데이터는, 상기 마스터 노드 중 하나 또는 벌크 로딩(bulk loading)하는 노드를 통해서, 본 발명의 상기 데이터베이스 시스템으로 벌크 로드된다. 도 6은 데이터베이스 시스템으로 데이터를 벌크 로딩하는 과정을 묘사하는 플로차트이다. 각각의 테이블이 로드되기 위해서 상기 과정은, S601 단계에서 관련 테이블에 적절한 락(lock)을 설정함으로써 상기 슬레이브로 하여금 데이터를 수신할 준비를 하고, S602 단계에서 상기 슬레이브 노드들 모두에 각각의 테이블에 대한 정보를 전송하는 것과 연관된다. 바람직하게는, 상기 데이터는 내부 노드(inter-node) 네트워크상에서 제공되는 동시에 여러 장소로 정보를 보낼 수 있는 시설을 경유하여 상기 슬레이브 노드들로 보내진다.
S603 단계에서, 상기 슬레이브 노드들에 수신된 테이블은 상기 슬레이브 스키마에 의해 구분된다. 도 7은 슬레이브 노드 상에서 테이블을 로딩하고 구분하는 과정을 묘사한 플로차트이다. 개개의 슬레이브 노드상의 상기 테이블을 로드하고 구분하기 위해서, 슬레이브 관리 소프트웨어(34)가 상기 테이블의 각각의 열(row)을 검사한다. S700 단계에서는 각각의 테이블이 가득 차도록 로드되었는지 검사하고, 만일 가득 차 있다면 각각의 열(row)은 S701의 단계에서 적절한 테이블로 로드된다. S702 단계에서는 상기 테이블이 구분된 형태를 갖고 있는지 검사한다. 만일 갖고 있다면, S703 단계에서, 상기 각각의 슬레이브 노드의 상기 구분된 테이블에 각각의 열이 포함되어 있는지 검사한다. 각각의 슬레이브 노드가 구분된 테이블 열들의 특정 부분에 대해 책임을 지고 있는지 주의하라. 테이블 구분은, 상기 테이블 열들을 분할하고 분배하기 위한 다수의 알려진 알고리즘(algorithm)을 사용하여 이루어질 수 있다. 보다 바람직하게, 상기 테이블들은 상기 슬레이브 노드들을 가로 질러 동등하게 구분된다. 상기 테이블 열들의 구분에 사용되는 상기 알고리즘에 기초하여, 상기 개개의 노드가 상기 검사되는 열에 책임을 지고 있는 노드인지 판단된다.
본 발명의 임의적인 특징은 상기 데이터를 구분하고 분배하기 위한 날짜 구분(date partitioning)의 사용이다. 날짜 구분으로 인해 데이터베이스의 테이블들은 상기 데이터 내의 관련된 날짜에 맞게 구분되고 분배된다. 상기 날짜들은 정해진 규칙을 사용하여 또는 시스템 관리자의 입력에 의해 제어되어 정해질 수 있다. 예를 들어, 특정한 연도, 분기 및 월을 위한 날짜가 서로 다른 슬레이브 노드상에 저장될 수 있다. 상기 날짜 구분된 테이블들은 날짜가 중요한 데이터베이스 질의어를 처리하는 데에 사용된다. 상기 날짜 구분된 테이블들은 관련된 날짜 범위에서 벗어난 데이터를 삭제하도록 정기적으로 관리된다. 보다 바람직하게, 상기 날짜 구분된 테이블들은 날짜 구분에 따라서 슬레이브 노드에 저장된다. 그러나, 상기 날짜 구분된 테이블은 다른 구분된 또는 구분되지 않은 테이블에 따라 보통의 슬레이브 노드에 저장될 수도 있음은 물론이다.
S704 단계에서는 상기 특정한 슬레이브 노드가 날짜 구분된 슬레이브 노드인지 검사하고, 만일 그렇다면, S705 단계에서는 상기 열이 상기 슬레이브 노드에 저장된 날짜 범위 내의 것인지 검사한다. 만일 상기 슬레이브 노드가 날짜 구분된 슬레이브 노드이고 상기 열은 관련된 날짜 범위 내의 것이라면, S706 단계에서 상기 열이 상기 슬레이브 스키마에 따라 수직 구분된 것인지 여부에 대해 검사한다. 수직 구분된 열들을 위해, S707 단계에서는 수직 구분된 테이블들의 바람직한 세트에 상기 열을 기록한다. 만일 상기 열이 수직 구분되지 않았다면, S708 단계에서 상기 열은 적절한 수평 구분된 테이블에 기록된다.
본 발명의 임의적인 특징은, 알려진 수많은 구분 알고리즘 중 어떤 것을 사용하여, 상기 슬레이브 노드 내에서 더 높은 레벨의 테이블 구분을 사용할 수 있게 하는 것이다. 예를 들어, 상기 테이블들은 해쉬 값이나 날짜 범위에 의해 구분될 수 있다.
본 발명의 데이터베이스 시스템은 또한 시스템 대체 동작(failover)을 통한 보호를 제공할 수 있도록 설계되었다. 이 보호를 구현하기 위해서, 상기 슬레이브 노드들은 시스템 대체 동작 파트너(failover partner)들을 제공받는다. 고유의 구분된 테이블들에 더하여, 각각의 슬레이브 노드들은 이곳에 설명된 대로 관련된 테이블을 업데이트 하기 위해, 상기 같은 알고리즘을 사용하는 시스템 대체 동작 파트너들의 구분된 테이블들을 저장한다. 상기 시스템 대체 동작 시스템은 각각의 노드상에 미러(mirror) 또는 패리티(parity) 기반 디스크 어레이(array)를 사용함이 없이 높은 레벨의 신뢰도를 제공할 수 있다. 이로서 보다 높은 레벨 레이드(RAID) 시스템에 따른 높은 비용이 필요 없이, 레이드 레벨 0 디스크 시스템이 고성능을 제공하도록 사용될 수 있으므로, 제조 비용이 절감된다.
만일 검사되는 상기 열이, 상기 슬레이브 노드 상의 날짜 구분된 테이블의 상기 날짜 범위를 벗어난 것이라면, 또는 상기 슬레이브 노드가 날짜 구분된 테이블을 저장하고 있지 않다면, S709 단계에서 상기 슬레이브 노드상의 상기 열이 수직구분되었는지 검사한다. 상기 열이 수직 구분되었다면, S710 단계에서 수직 구분 된 테이블들의 적절한 세트에 기록된다.
S711 단계에서는, 상기 열이 상기 슬레이브 노드의 수평 구분된 테이블의 일부분인지 검사한다. 만일 상기 열이 수평 구분된 테이블의 일부분이면, S712 단계에서 상기 열을 테이블에 기록한다.
특정한 테이블의 모든 열이 상기 데이터베이스에 기록되면, S713 단계에서는 영향을 받은 다양한 물리적 테이블들의 목록을 업데이트 한다.
본 발명의 성능에 영향을 미치는 또 하나의 특징은 질의어 저장소 및 임시 테이블 저장소의 사용에 있다. 질의어 저장소는 각각의 마스터 노드의 DBMS(31) 및 각각의 슬레이브 노드상의 DBMS(33)에 저장되고 관리된다. 상기 질의어 저장소는 상기 특정한 노드에서 수행되는 질의어 결과를 저장한다. 임시 테이블 저장소는, 다단계의 질의어를 수행하는 동안 상기 마스터 노드에서 생성된 임시 테이블들을 저장하기 위해, 각각의 마스터 노드상의 DBMS(31)상에서 저장되고 관리된다. 테이블들이 상기 데이터베이스 시스템에 로드될 때에, 테이블들의 이전 버전(version)에 기초하여 생성된 결과들을 담고 있는 상기 질의어 저장소 및 임시 테이블 저장소는 처리되어야 한다. 이에 따라서, S604 단계에서 상기 관계된 질의어 저장소 및 임시 테이블 저장소는 청소된다. 상기 저장소들의 동작에 대한 보다 자세한 설명은 아래에 있다.
상기 언급된 다양한 처리 과정들은 테이블들을 소팅(sorting)하고 구분하여 데이터베이스 시스템으로 테이블들을 벌크 로드하는데 사용된다. 상기 데이터베이스 시스템으로 데이터를 로딩하기 위한 임의적인 과정은, 상기 생성된 슬레이브 스 키마 및 데이터 분배에 영향을 미치는 어떠한 시스템 세팅(setting)에도 접근할 수 있는 외부 호스트 시스템을 사용하여 상기 데이터를 미리 소팅하는 것이다. 상기 미리 소팅된 데이터는 상기 마스터 노드를 지나쳐서 상기 슬레이브 노드로 직접 로드될 수 있다. 도 8은 미리 소팅된 데이터를 벌크 로딩하는 과정을 묘사한 플로차트이다.
도 8을 참조하면, 미리 소팅된 데이터의 테이블 및 파티션(partition) 각각은 검사되고 적절한 슬레이브 노드에 로드된다. 상기 슬레이브 노드상에 가득 차게 저장된 각각의 테이블을 위해, S800 단계에서 모든 슬레이브 노드들은 상기 테이블을 벌크 로드할 수 있도록 준비되고, S801 단계에서 상기 가득찬 테이블 콘텐츠들은 모든 슬레이브 노드로 전송된다. 상기 소팅된 데이터의 파티션 각각을 위해, S802 단계에서 상기 슬레이브 노드에 배정된 시스템 대체 동작 세트는 상기 파티션을 로드할 준비가 되고, S803 단계에서는 상기 파티션이 상기 시스템 대체 동작 세트로 전송된다. 최종적으로, S804 단계에서는 상기 적절한 질의어 저장소 및 임시테이블 저장소는 청소된다.
본 발명의 일 실시예에 의하면, 외부 호스트 시스템은 SQL(Structured Query Language) 구문(statement)을 이용하여 상기 데이터베이스 시스템과 통신한다. SQL 구문은 상기 호스트 시스템에 의해 일반적으로 스트림(stream) 형태로 분리되며, 각각의 스트림은 특정한 사용자 또는 애플리케이션(application)에 대응된다. SQL 구문을 스트림을 이용하여 체계화하는 것은 상기 데이터베이스 시스템에 의해 실행되는 구문들이 올바른 순서로 동작하는 것을 보장한다. 상기 데이터베이스에 수신 된 SQL 구문들의 스트림은 각각의 마스터 노드 상에서 스트림 관리 소프트웨어(20)에 의해 관리된다. 도 9는 외부 호스트 시스템으로부터 새로운 구문을 받아 스트림 관리 소프트웨어(20)에 의해 수행되는 처리과정을 묘사한 플로차트이다.
상기 기술된 바에 따라, 본 발명의 상기 데이터베이스 시스템은 하나 이상의 마스터 노드를 포함하고 있다. 외부 호스트 시스템으로부터 전송된 SQL 구문은 각각의 마스터 노드에 수신되고, 도 9에 묘사된 방식으로 처리된다. 특히, 각각의 마스터 노드 스트림을 위해, S901 단계에서 관리 소프트웨어(20)는 수신된 구문이 새로운 스트림의 시작부인지 아니면 상기 데이터베이스 시스템이 이미 존재하는 스트림의 일부분인지를 검사한다. 만일 상기 구문이 새로운 스트림의 시작부라면, S902 단계에서 스트림 관리 소프트웨어(20)는 상기 스트림이 그 특정한 마스터 노드에서 제어되어야 하는지 여부를 검사한다. 상기 데이터베이스 시스템에서 각각의 스트림은 하나의 마스터 노드에 의해 제어된다. 각각의 마스터 노드 상의 스트림 관리 소프트웨어(20)는 전송된 스트림을 어떤 마스터 노드가 제어할 것인지 검사하기 위해 다른 마스터 노드와 통신한다. 스트림 제어는 수많은 알려진 로드 밸런싱 알고리즘(load-balancing algorithm)을 사용하여 검사된다. 만일 S902 단계에서 상기 대응되는 마스터 노드가 상기 스트림을 제어할 것으로 판단되면, S903 단계에서 스트림 관리 소프트웨어(20)는 상기 스트림을 제어한다는 것을 다른 마스터 노드에 통지한다.
상기 마스터 노드에 의해 각각의 구문이 수신되면 S904 단계에서 질의어 저장소 소프트웨어(21)가 상기 마스터 노드의 상기 질의어 저장소와 상기 구문을 비 교한다. 이미 언급된 대로, 각각의 마스터 노드는 질의어 저장소에 앞선 질의어들의 결과를 저장한다. S904 단계에서, 상기 테이블에 간섭하여 상기 마스터 노드들에 동일 구분이 이미 존재하는지 검사하기 위해 상기 구문을 상기 질의어 저장소와 비교한다. 만일 동일 구문이 이미 존재한다면, S905 단계에서, 상기 구문에 대응되는 결과 세트는 질의어 저장소에서 회수되어, 상기 외부 호스트 시스템이나 상기 질의어를 제어하는 마스터 노드로 전송되고, 상기 마스터 노드에서의 상기 구문에 대한 처리 과정은 종료된다. 만일 상기 구문이 상기 질의어 저장소에서 발견되지 않는다면, S906 단계에서, 상기 전송된 구문이 관련된 마스터 노드에서 제어되는 스트림의 일부인지를 검사한다. 만일 상기 마스터 노드가 상기 특정한 스트림을 제어한다면, S907 단계에서 상기 구문은 SQL 분석 소프트웨어(22)에 의해 처리된다. 만일 상기 구문이 상기 관련된 마스터 노드에 의해 제어되는 스트림의 일부분이 아니라면, 상기 마스터 노드에 의한 상기 구문의 처리 과정은 종료되고, 스트림 관리 소프트웨어(20)는 다음 구문이 전송되기를 기다린다.
도 10은 이후의 처리 과정에 맞게 구문들을 준비하기 위해 SQL 분석 소프트웨어(22)에서 수행되는 처리과정을 묘사한 플로차트이다. 이후의 처리 과정에 맞게 각각의 구문을 준비하기 위해, S1001 단계에서 상기 구문은 표시되고, S1002 단계에서 상기 표시들은 분석된다. 최종적으로 S1003 단계에서 상기 분석된 구문을 처리하기 위한 적절한 서브-루틴(sub-routine)을 불러들인다. 이에 제한되는 것은 아니지만, 가능하면 서브-루틴은 테이블 변조, 데이터의 업데이트/인서트 그리고 질의어 병렬화를 포함한다.
도 11은 데이터베이스 테이블을 변조하기 위해 SQL 분석 소프트웨어(22)에 의해 불러들여진 테이블 변조 서브-루틴에 의해 수행되는 처리과정을 묘사한 플로차트이다. 데이터베이스 테이블의 변조는 주로 슬레이브 스키마 생성 소프트웨어(23)에 의해 요구된다. 상기 처리 과정은, S1100 단계에서, 변조될 테이블이 팩트 테이블 또는 제1 차원 테이블인지 검사하는 것으로 시작된다. 만일 상기 테이블이 팩트 테이블 또는 제1 차원 테이블이면, S1101 단계에서 상기 변조될 테이블이 수직으로 구분되었는지 검사한다. 만일 상기 테이블이 수직으로 구분되지 않았다면, S1102 단계에서, 상기 테이블에 대한 변조는 상기 마스터 노드의 DBMS(31)에 저장된 메타데이터 내의 관련된 수평 구분 테이블 및 상기 각각의 슬레이브 노드 상에서 이루어진다. 만일 상기 변조되는 테이블이 수직으로 구분되었다면, S1103 단계에서, 수직 구분된 테이블들의 대응되는 세트는 상기 마스터 노드의 DBMS(31)내에 저장된 상기 메타데이터 및 각각의 상기 슬레이브 노드에서 변조된다.
만일 변조될 상기 테이블이 팩트 테이블 또는 제1 차원 테이블이 아니라면, S1104 단계에서, 상기 대응되는 테이블이 마스터 노드의 DBMS(31)에 저장된 상기 메타데이터 및 각각의 상기 슬레이브 노드에서 변조된다. S1105 단계에서는, 상기 변조될 테이블이 상기 슬레이브 노드 상에서 구분되었는지 검사한다. 만일 상기 테이블이 구분되었다면, S1106 단계에서, 상기 테이블이 수직 구분되었는지 검사한다. 만일 상기 테이블이 수직 구분되지 않았다면, S1107 단계에서, 상기 대응되는 수평구분된 테이블을 위한 상기 메테데이터 및 상기 실제 테이블 콘텐트(content)가 변조된다. 만일 상기 테이블이 수직 구분되었다면, S1108 단계에서, 상기 대응 되는 수직구분된 테이블의 세트를 위한 상기 메타데이터와 상기 실제 테이블 콘텐트(content)가 변조된다. 최종적으로, S1109 단계에서는, 상기 변조된 테이블에 따른 상기 질의어 저장소 통로 및 임시 테이블 저장소 통로는 청소된다.
도 12는 상기 데이터베이스로 데이터를 업데이트(update) 또는 인서트(insert) 하기위하여 SQL 분석 소프트웨어(22)에 의해 요청된 업데이트/인서트 서브-루틴(sub-routine)에 의해 수행되는 처리과정을 묘사한 플로차트이다. 업데이트 또는 인서트 되는 각각의 열을 위해, S1200 단계에서는, 상기 열이 팩트 테이블이나 제1 차원 테이블과 같이 슬레이브 노드상에서 구분된 형태로서만 존재하는 테이블의 일부분인지 검사한다. 만일 상기 열이 오직 구분된 형태로서만 존재하는 것은 아닌 테이블의 일부분이라면, S1201 단계에서, 상기 열은 상기 시스템내의 상기 슬레이브 노드 각각에 기록된다. 만일 상기 열이 오직 구분된 형태로서만 존재하는 테이블의 일부분이라면, S1202 단계에서, 상기 열은 상기 적절한 해쉬키(hash key) 및 임의적으로 상기 관련된 날짜에 따라 구분되고, S1203 단계에서, 상기 관련된 슬레이브 노드상의 상기 구분된 테이블에 기록된다. S1204 단계에서 상기 데이터베이스 내의 모든 바뀐 테이블들의 목록은 업데이트 된다. 최종적으로, S1205 단계에서, 어떤 데이터가 업데이트/인서트되는 테이블에 관계된 모든 질의어 저장소 및 임시 테이블 저장 통로는 청소된다.
질의어 구문은 질의어 병렬화 소프트웨어(25)에 의해 처리되고 최적화된다. 도 13은 질의어 병렬화 처리 과정을 묘사한 플로차트이다. S1301 단계에서는, 상기 질의어가 상기 데이터베이스 시스템 내의 어떤 날짜 파티션(partition) 세트에 의 해 커버(cover)될 수 있는 특정한 날짜 범위를 요구하고 있는지 검사한다. 만일 상기 질의어가 날짜 파티션에 의해 커버될 수 있는 날짜 범위를 요구하고 있다면, S1302 단계에서 상기 특정한 날짜 범위에 사용되는 슬레이브 노드 그룹이 지정된다. 만일 상기 질의어가 특정한 날짜 범위를 구하고 있지 않거나 상기 날짜 범위가 어떤 날짜 파티션 세트와도 대응되지 않는다면, S1303 단계에서, 모든 슬레이브 노드가 상기 질의어를 처리하는데 사용되기 위해 지정된다. S1304, S1305 그리고 S1306 단계에서는, 상기 질의어 구조에 기반하고 본 분야에서 숙련된 기술을 보유한 사람에게 잘 알려진 기술을 사용하는 상기 슬레이브 노드의 질의어를 어떻게 실행할 것인지 판단한다. S1304 단계에서는, 독립적으로 동작될 것을 요하는 하위-질의어(sub-query)들이 두 개의 별개 질의어들로 분할된다. 상기 하위-질의어는, 먼저 상기 마스터 노드상에 모인 중간 결과에 따라 실행되고, 그후 상기 질의어의 나머지 부분과 함께 이후의 처리를 위해 상기 슬레이브 노드로 되돌려진다. S1305 단계에서, 외부 조인(joins)은 상기 질의어를 충족시키기 위해 상기 슬레이브 노드 및 상기 마스터 노드 상에서 일제히 실행되는 여러 개의 질의어들로 분할된다. 최종적으로, S1306 단계에서, 상기 질의어의 최적화 수단은 여러 단계 및 단일 단계의 실행 전략 비용을 평가하고, 본 기술 분야에서 숙련된 사람에게 잘 알려진 방법을 사용하는 저 비용의 옵션(option)을 선택한다. 이후, 상기 질의어는 단일단계(single-step) 질의어들을 위한 S1307 단계 또는 다단계(multi-step) 질의어들을 위한 S1308 단계를 거치게 되고, S1309 단계에서 그 결과 세트를 상기 호스트로 반환한다.
도 14는 단일단계 질의어를 수행하기 위한 처리 과정을 묘사한 플로차트이다. 질의어들은 상기 호스트 스키마로부터의 테이블 이름을 사용하는 테이블에 따라 외부 호스트 시스템으로부터 수신된다. 상기 슬레이브 노드들을 사용하면서 상기 질의어들을 병렬적으로 실행하기 위해서, 상기 테이블 이름은 상기 슬레이브 스키마로부터의 대응되는 테이블 이름으로 대체되어야 한다. 대체 실시예에서 상기 호스트 스키마에서 사용되는 상기 테이블 이름은, 단일단계 질의어들이 상기 슬레이브 노드를 곧바로 통과할 수 있도록, 상기 생성되는 슬레이브 스키마에서 사용될 수 있다. S1401 단계에서, 상기 질의어 내에 관계된 상기 테이블 이름들은, 대응되는 상기 슬레이브 스키마로부터의 테이블 이름들로 대체될 수 있다. 도 15는 질의어 내에서 사용되는 상기 테이블 이름들을 대체하기 위해 사용되는 처리과정을 묘사한 플로차트이다.
S1500 단계에서, 상기 조인들(joins) 및/또는 상기 질의어로부터의 테이블은 상기 팩트 테이블로부터 외부로 동작할 수 있도록 재정렬된다. 상기 정렬된 질의어는 S1501 단계에서, 상기 질의어 내에 동작할 어떤 조인들이 있는지 판단하기 위해 검사된다. 만일 상기 질의어가 조인을 갖고있지 않다면, S1502 단계에서 상기 질의어에서 사용되는 테이블이 상기 슬레이브 노드 상에서 오직 구분된 형태로만 존재하는지 검사한다. 만일 상기 테이블이 상기 슬레이브 노드상에서 완벽한 형태로 존재한다면, S1503 단계에서, 상기 테이블이 상기 슬레이브 스키마 안에서 수직 구분되었는지 검사한다. 만일 상기 테이블이 수직 구분되지 않았다면, S1504 단계에서 상기 테이블 이름은 대응되는 수평 구분된 테이블 이름으로 대체된다. 반면에, 만 일 상기 테이블이 상기 슬레이브 스키마 내에서 수직 구분되었다면, S1505 단계에서, 상기 질의어가 수직 구분에 의해 삭제될 큰 주석영역(comment field)와 같은 일종의 행(column)을 사용하는지 검사한다. 만일 상기 질의어에서 삭제될 어떠한 행도 사용하고 있지 않다면, S1506 단계에서, 상기 테이블 이름은 대응되는 상기 수직 구분된 테이블 이름으로 대체된다. 만일 상기 질의어에서 삭제될 어떤 행을 사용하고 있다면, S1507 단계에서, 상기 테이블 이름은 대응되는 상기 수직 구분된 테이블로 대체되고, 상기 질의어는 상기 삭제된 행을 포함하는 테이블로부터 대응되는 열(row)을 받도록 변경된다. 이는 본 기술 분야에서 숙련된 사람에게 알려진 기술을 사용하는 열 식별기(row identifier)를 이용하여 달성될 수 있다.
만일 S1501 단계에서, 상기 질의어가 조인(join)을 포함하고 있다고 판단되면, 각각의 조인들은 순차적으로 검사된다. 상기 조인의 테이블 각각을 위해, S1508 단계에서는, 상기 테이블이 팩트 테이블 또는 제1 차원 테이블인지 검사한다. 만일 상기 테이블이 팩트 테이블 또는 제1 차원 테이블이라면, S1509 단계에서, 상기 슬레이브 스키마내에 수직으로 구분되었는지 검사한다. 만일 상기 테이블이 수직으로 구분되지 않았다면, S1510 단계에서, 상기 테이블의 이름은 대응되는 상기 수평 구분된 테이블의 이름으로 대체된다. 만일 상기 테이블이 수직으로 구분되었다면, S1511 단계에서, 상기 질의어가 수직 구분 내에서 삭제된 어떤 행을 사용하는지 검사한다. 만일 상기 질의어에서 삭제된 행을 사용하고 있지 않다면, S1512 단계에서, 상기 테이블의 이름은 대응되는 상기 수직 구분된 테이블의 이름으로 대체된다. 반대로, 만일 상기 질의어에서 삭제된 행을 사용하고 있다면, S1513 단계에서, 상기 테이블의 이름은 대응되는 상기 수직 구분된 테이블로 대체되고, 상기 질의어는 삭제된 행을 포함하는 테이블의 대응되는 열을 받도록 변경된다. 이는 본 기술 분야에서 숙련된 사람에게 알려진 기술을 사용하는 열 식별기를 이용하여 달성될 수 있다.
만일, S1508 단계에서, 상기 테이블이 팩트 테이블 또는 제1 차원 테이블이 아닌 것으로 판단된다면, S1514 단계에서, 검사된 상기 질의어 내에서 사용되는 어떠한 테이블 이름이 대응되는 상기 수평 구분된 테이블 이름으로 대체되었는지 검사한다. 만일 어떠한 수평 구분된 테이블 이름도 상기 질의어에 포함되지 않았다면, S1509 단계로 진행한다. S1509 단계 내지 S1513 단계는 이후 상기 설명된 방식으로 반복된다. 만일 테이블 이름이 수평 구분된 테이블의 이름으로 대체되었다면, S1515 단계에서, 상기 테이블이 이미 사용되고 있는 수평 구분된 테이블과 같은 구분키(partiton key)를 갖고 있는지 검사한다. 만일 상기 테이블이 상기 같은 구분키를 갖고 있다면, 상기 조인(join)은 상기 테이블의 인접한 파티션들 간에 이루어지고, 상기 처리과정은 상기 묘사된 방식으로 수행되는 S1509 내지 S1513 단계로 진행한다. 만일 상기 테이블이 상기 같은 구분키를 갖고 있지 않다면, 상기 테이블 이름은 대체되지 않고 처리과정은 종료된다.
도 14로 돌아가면, S1401 단계에서 상기 테이블 이름이 대체되고 나면, 상기 질의어는 S1402 단계에서, 본 기술분야에서 숙련된 기술을 보유한 자에게 잘 알려진 방법을 사용하는, 상기 슬레이브 노드들 상에서 이용되는, 특정한 데이터베이스를 위해 최적화된다. 예를 들면, I/O(input/output) 주기에 관계된 CPU 주기의 비 용의 세팅(setting)은, 상기 질의어가 좀더 효율적으로 실행될 수 있도록 변화될 수 있다. 상기 최적화된 질의어는 이후 S1403 단계에서 상기 슬레이브 노드로 전송된다. 슬레이브 노드 실패의 이벤트(event) 발생시에는 상기 질의어는, 아래에 좀 더 상세히 묘사된 것처럼, 상기 시스템 내의 다른 슬레이브 노드들뿐만 아니라 상기 실패한 슬레이브 노드의 시스템 대체 동작 파트너(failover partner)에게도 전송된다. 각각의 슬레이브 노드 상의 슬레이브 관리 소프트웨어(34)는 해당 마스터 노드로 부터의 상기 질의어를 전송받고 처리한다. 도 16은 새로운 질의어를 전송받은 경우 슬레이브 관리 소프트웨어에 의해 수행되는 처리 과정들을 묘사한 플로차트이다. 어떤 경우에는 상기 질의어가 상기 슬레이브 관리 프로그램의 간섭을 받지 않고, 직접 상기 슬레이브 노드 상의 상기 DBMS에 의해 실행될 수 있다는 점에 유의하라.
마스터 노드로부터 새로운 질의어를 전송받으면, S1600 단계에서 슬레이브 관리 소프트웨어(34)는, 상기 질의어가 상기 슬레이브 노드에서 사용되는 DBMS를 위해 번역되어야 하는지 검사한다. 본 발명의 시스템 디자인은 상기 시스템의 슬레이브 레벨에서 사용되는 독자적인 DBMS을 요하지 않는다. 오프-더 쉐프(off-the-shelf) DBMS 시스템이 상기 슬레이브 노드에 사용될 수 있기 때문에, 이러한 특질은 시스템 단가와 구현시간을 절감시킨다. 만일 번역이 필요하면, S1601 단계에서 상기 질의어는 상기 특정한 DBMS를 위해 번역된다. S1602 단계에서는 상기 특정한 DBMS에서 상기 질의어를 실행하기 위해 어떠한 최적화 과정이 필요한지 검사한다. 만일 최적화를 요하면 상기 질의어는 S1603 단계에서 최적화된다.
상기 마스터 레벨에서 수행되는 처리과정과 유사하게, 새로운 질의어들은 질의어 저장소에 대해서 검사되는데, 이는 상기 질의어와 관계된 테이블에 어떤 변화를 일으킴이 없이, 상기 질의어가 이전에 실행된 적이 있는지 알아보기 위함이다. 슬레이브 관리 소프트웨어(34)는 특정한 슬레이브 노드에 지정된 상기 시스템 대체 동작 테이블과 로컬(local) 테이블 모두를 위한 질의어 저장소를 보존한다. 어떤 DBMS 제품들은 고유의 질의어 저장소를 포함하고 있다. 만일 상기 슬레이브 노드상에서 동작하는 DBMS가 질의어 저장소를 보존한다면, 슬레이브 관리 소프트웨어(34)는 고유의 질의어 저장소를 검사하고 보존할 필요가 없다. 상기 마스터 레벨에서 보존되는 질의어 저장소와 함께, 본 발명은 질의어 처리과정의 불가피한 반복을 방지함으로써 시스템 성능을 개선하는 두 개 레벨(bi-level)의 질의어 저장소를 제공한다.
S1604 단계에서, 상기 전송받은 질의어는 상기 질의어 저장소와 비교된다. 만일 상기 질의어가 상기 질의어 저장소에서 발견된다면, S1505 단계에서 상기 결과 세트가 상기 질의어 저장소로부터 검색된다. 만일 상기 질의어가 상기 질의어 저장소에서 발견되지 않는다면, S1606 단계에서, 상기 질의어가 실행될 수 있게 상기 DBMS로 전송된다.
상기 결과 세트가 획득되면, S1607 단계에서, 슬레이브 관리 소프트웨어(34)는, 상기 결과 세트가 상기 마스터 노드로 반환되기 전에 추가의 처리 과정을 요하는지 검사한다. 만일 추가의 처리과정을 요한다면, S1608 단계에서 수행된다. 최종적으로, S1609 단계에서, 상기 결과 세트는 상기 질의어를 발원한 상기 마스터 노 드로 반환된다.
도 14로 돌아가면, 상기 마스터 노드상의 결과 세트 분석 소프트웨어(28)는, 상기 질의어를 처리하는데 사용되는 상기 각각의 슬레이브 노드로부터의 결과 세트를 받는다. S1404 단계에서 결과분석 소프트웨어(28)는 상기 전송된 결과 세트에 추가의 처리과정을 수행한다. 이에 한정되는 것은 아니지만, 추가의 처리과정은 두 개의 결과 세트를 하나의 결과 세트로 결합, 결과 세트 내의 결과들의 체계화, 그리고 질의어를 입력하는 상기 외부 호스트 시스템과 호환될 수 있는 형식으로 상기 결과 세트를 포맷(format)하는 과정을 포함한다.
도 17은 본 발명의 일 실시예에 따른 다단계 질의어 처리 과정을 묘사한 플로차트이다. S1701의 단계에서 상기 질의어는 두 개 이상의 슬레이브 질의어들로 분할된다. 상기 질의어들을 상기 슬레이브 노드에서 연속적으로 실행될 수 있는 여러 개의 슬레이브 질의어들로 분할하는 과정은, 상기 원래의 질의어를 처리하도록 슬레이브 노드들 간에 데이터를 전송할 필요를 없애주며 상기 시스템상에서 상기 질의어들의 실행 효율을 증대한다.
다단계 질의어들은 상기 질의어를 실행하는 상기 마스터 노드상의 임시 테이블들의 사용에 종속된다. 상기 임시 테이블들은 각각의 슬레이브 질의어들을 실행하면서 생성되는 중간 결과 세트를 저장한다. 대신에, 임시 테이블들은, 상기 슬레이브 노드상의 로컬 테이블과 함께 임시 테이블에 조인(join)하는 바로 다음의 슬레이브 질의어들을 실행하기 위해 상기 슬레이브 노드들로 전송된다.
상기 데이터베이스 시스템의 마스터 노드와 슬레이브 노드에 사용되는 임시 저장소와 유사하게, 각각의 마스터 노드는 임시 테이블들의 복사본을 저장하고, 슬레이브 질의어들을 생성하고, 상기 마스터 노드의 DBMS(31)상에서 실행되는 임시 테이블 저장소를 보존한다. 슬레이브 질의어를 실행할 때에는, S1702 단계에서, 상기 슬레이브 질의어가 상기 임시 테이블 저장소에 대해 검사되는데, 이는 만일 상기 특정한 슬레이브 질의어가 상기 임시 테이블이 종속된 기본 테이블들에 어떤 변화를 가함이 없이 실행되는지 검사하는 것이다. 만일 상기 임시 테이블 저장소에 일치되는 것이 없으면, S1703 단계에서 상기 슬레이브 질의어를 위한 임시 테이블이 생성된다. 상기 슬레이브 질의어는 S1704 내지 S1707의 처리 단계를 거쳐 실행되고 결과를 산출한다. 상기 단계들에서 수행되는 행동들은 도 14의 S1401 내지 S1404 단계에서 수행되는 행동들과 대응되므로 다시 설명하는 것은 생략하기로 한다.
상기 슬레이브 질의어가 처리되면, 또는 상기 임시 테이블 저장소에서 상기 슬레이브 질의어의 일치가 발견되면, S1708 단계에서 상기 마스터 노드는 남겨진 슬레이브 질의어는 없는지 검사한다. 만일 실행되어야 할 슬레이브 질의어가 더 있다면, S1709 단계에서는 상기 이어지는 슬레이브 질의어의 처리과정을 위해 임시 테이블이 요구되는지 검사한다. 만일 상기 슬레이브에 임시 테이블이 필요하다면, S1710 단계에서 임시 테이블이 슬레이브 노드로 전송되고, 처리 과정은 S1702 단계로 돌아간다. 만일 상기 임시 테이블이 필요하지 않다면 처리과정은 단순히 다음 슬레이브 질의어를 위해 S1702 단계로 돌아간다.
도 13을 참조하면, 일단 상기 외부 호스트 시스템으로부터 질의어가 전송되 어 실행되고 처리되는 과정을 거치고 나면, 단일단계 질의어 또는 다단계 질의어 중 하나로서, S1309 단계에서 최종 결과 세트가 상기 외부 호스트 시스템에 반환된다.
본 발명의 상기 데이터베이스 시스템의 마스터 노드 각각은, 상기 데이터베이스 시스템의 다른 노드들의 상태를 감시(moniter)하기 위해, 시스템 관리 소프트웨어(32)를 통해 연결된다. 적절한 시스템 관리 소프트웨어의 예들은 IPMI(Intelligent Platform Management Interface)와 인텔 시스템 매니저(Intel's system manager)를 포함한다.
마스터 노드의 실패 통지를 받아서, 스트림 관리 소프트웨어(20) 마스터 노드의 실패를 가리키는 시스템상태 메시지를 관리 콘솔(console)(35)로 전송한다. 관리 콘솔(35)은 상기 데이터베이스 시스템의 상태를 추적하고, 시스템 성능 유지를 위해 수리되거나 교체되어야 하는 실패가 발생한 노드들을 확인하기 위해, 시스템 관리자에 의해 사용된다. 관리 콘솔(35)에 상기 마스터 노드에서의 실패가 통지되면, 스트림 관리 소프트웨어(20)는 마스터 노드 시스템 대체 동작 처리과정(failover process)를 실행한다.
도 18은 상기 데이터베이스 시스템의 마스터 노드에서의 실패 이벤트 발생시 스트림 관리 소프트웨어(20)에 의해 수행되는 시스템 대체 동작 과정을 묘사한 플로차트이다. 도 18에서 묘사된 과정은 각각의 스트림을 위해 실패가 발생한 마스터 노드에서 관리된다. S1800 단계에서, 상기 마스터 노드는 상기 실패가 발생한 마스터 노드의 특정한 스트림에 책임이 있는지 결정한다. 본 발명의 일 실시예에 따르 면, 이 결정은 상기 데이터베이스 시스템으로부터 전송받은 새로운 스트림들을 다루는데 이용되는, 동일한 로드 밸런싱(load balancing) 방법을 사용하는, 상기 데이터베이스 시스템의 운영(operational) 마스터 노드들 간에 이루어진다. 그러나 이 결정에는 본 분야에서 숙련된 기술을 보유한 사람에게 알려진 다른 방법들이 사용될 수 있다. 만일 상기 마스터 노드가 상기 특정한 스트림에 대해 책임이 있다고 결정하면, S1801 단계에서 상기 마스터 노드는 상기 스트림을 제어하는 다른 마스터 노드들에 통지한다.
일단 어떤 마스터 노드가 스트림에 대한 제어를 갖게 되면, 상기 스트림의 불완전한 구문들 각각은 상기 마스터 노드로부터 넘겨진다. S1802 단계에서, 상기 불완전한 구문은 널리 알려진 트랜잭션(transaction) 관리 기술을 사용하여 되돌려 보내진다(roll back). 이후 상기 구문은 S1803 단계에서 다시 실행된다. 이런 방식으로, 상기 실패한 마스터 노드에 의해 제어되는 각각의 스트림이 상기 데이터베이스 시스템의 기능을 유지하기 위해 운영 마스터 노드에 의해 넘겨진다. 일단, 상기 실패한 마스터 노드가 복구되거나 교체되면, 상기 데이터베이스 시스템으로부터 전송받은 새로운 스트림을 위해 사용될 준비가 된다.
상기 데이터베이스 시스템의 다른 마스터 노드를 감시(monitering)하는 것과 함께, 시스템 관리 소프트웨어(32)는 상기 시스템의 상기 슬레이브 노드 각각에 대해서도 감시한다. 도 19는 상기 데이터베이스 시스템의 슬레이브 노드 실패 발생시 실행되는 처리과정을 묘사한 플로차트이다. 슬레이브 노드 실패의 이벤트 발생시, S1900 단계에서, 스트림 관리 소프트웨어(20)는 상기 실패를 통지받는다. 이후 스 트림 관리 소프트웨어(20)는 관리 콘솔(35)을 통해 상기 노드 실패를 상기 시스템 관리자에게 통지한다. 상기 실패가 발생한 노드와 관련된 각각의 불완전한 트랜잭션(transaction)에 대해, S1901 단계에서 시스템 관리 소프트웨어(20)는 상기 불완전한 트랜잭션을 되돌려 보내고(roll back), S1902 단계에서 상기 실패가 발생한 노드의 대응되는 시스템 대체 동작 파트너를 사용하여 상기 트랜잭션을 다시 실행한다.
상기 실패가 발생한 노드가 복구되거나 대체되는 기간 동안, 상기 마스터 노드는 상기 정규의 운영 슬레이브 노드와 상기 관련된 시스템 대체 동작 파트너 슬레이브 노드 모두에 질의어들을 실행한다. 따라서, 상기 데이터베이스 시스템 기능은 슬레이브 노드에서 발생한 실패에도 불구하고 유지된다. 일단 상기 슬레이브 노드가 복구되거나 대체되면, 상기 마스터 노드는 정상적인 질의어 실행과정으로 돌아간다.
본 발명의 다른 대체 가능한 실시예는, 수많은 슬레이브 노드를 관리하기 위해, 계층적인 마스터 노드 구조를 사용하는 것을 포함하여 구성될 수 있다. 상기 구조에서, 마스터 노드에 의해 실행되는 처리과정은 성능 향상을 위해 여러 개의 층으로 분할될 수 있다. 게다가, 상기 슬레이브 노드 레벨에서 수행되는 처리과정 중 일부는 마스터 노드 레벨로 옮겨질 수 있다. 또 다른 실시예에서는, 위에 기술된 것과 같은 직접부착된 저장장치 대신에, 상기 데이터베이스 시스템의 슬레이브 노드를 위한 공유 저장장치 시스템을 사용하는 것을 포함하여 구성될 수 있다. 시스템 대체 동작 데이터는 공유 저장장치에 저장될 수 있고, 그로 인해 어떠한 사용 가능한 슬레이브 노드들도 실패가 발생한 노드를 위해 시스템 대체 동작의 의무를 수행할 수 있게 된다.
상기 설명은 본 발명의 언급된 실시예를 설명하고자 한 것이다. 그러나 상기 실시예들은 본 발명이 범위를 제한하고자 한 것이 아니며, 발명의 범위는 아래 기재된 청구 범위에 의해 판단되어야 한다. 본 발명의 정신과 범위를 훼손하지 않으면서 상기 설명된 예들에 수많은 변형이 이루어질 수 있다는 점은 이해될 수 있을 것이다.
상기 기술된 초 무공유 병렬 데이터베이스 시스템은 종래의 무공유 병렬 데이터베이스 시스템을 넘어 큰 이점을 제공한다. 첫 번째로 그리고 무엇보다 먼저, 본 발명의 상기 데이터베이스 시스템은 질의어 스큐(skew) 및 데이터베이스 시스템상의 해로운 영향에서 벗어날 수 있다. 두 번째로, 상기 데이터베이스 시스템의 슬레이브 노드를 가로질러 데이터베이스를 구분(partitioning) 및 분배(distribution)하는 것은 자동적으로 수행된다. 이를 통해 시스템 관리상의 복잡도를 증가시키지 않으면서 시스템 성능을 증가시킬 수 있다. 세 번째로, 저장소 질의어 결과물에 사용되는 상기 두 개 레벨의(bi-level) 저장소는 동일한 질의어를 여러 번 실행하는 불필요한 반복을 방지할 수 있다.

Claims (29)

  1. 마스터 노드;
    다수의 슬레이브 노드; 및
    팩트(fact) 테이블과 다수의 차원(dimension) 테이블로 구성된 데이터베이스를 상기 다수의 슬레이브 노드를 가로질러 분배하는 수단을 포함하는 병렬 데이터베이스 시스템에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 상기 다수의 슬레이브 노드를 가로질러 구분되고,
    상기 데이터베이스의 모든 다른 차원 테이블은 상기 다수의 슬레이브 노드 각각과 쌍을 이루며, 그리고
    최소의 크기를 갖는 다수의 상기 다른 차원 테이블 또한 상기 다수의 슬레이브 노드를 가로질러 구분되는 것을 특징으로 하는 병렬 데이터 베이스 시스템.
  2. 제1항에 있어서,
    다수의 상기 다른 차원 테이블은 열(row)로 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  3. 제1항에 있어서,
    다수의 상기 다른 차원 테이블은 행(column)으로 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  4. 제1항에 있어서,
    다수의 상기 다른 차원 테이블은 열과 행으로 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  5. 제1항에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 열로 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  6. 제5항에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 공유키를 사용하여 해쉬(hash) 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  7. 제5항에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 행으로 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  8. 제1항에 있어서,
    상기 데이터베이스 테이블은 상기 다수의 슬레이브 노드를 가로질러 날짜별 로 구분된 것을 특징으로 하는 병렬 데이터베이스 시스템.
  9. 제1항에 있어서,
    상기 구분 수단은 상기 다수의 슬레이브 노드를 가로질러 데이터베이스 테이블을 자동으로 구분하고 분배하는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  10. 제1항에 있어서,
    상기 데이터베이스에 대한 질의어를, 상기 슬레이브 노드 간의 데이터 전송을 요하지 않고 상기 병렬 데이터베이스 시스템에 의해 실행 가능한 하나 이상의 하위-질의어로 번역하는 수단을 더 포함하는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  11. 제10항에 있어서,
    상기 병렬 데이터베이스 시스템에 의해 산출된 질의어 결과를 저장하는 수단을 더 포함하는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  12. 제11항에 있어서,
    상기 마스터 노드는, 상기 마스터 노드에 의해 산출된 질의어 결과를 저장하기 위한 수단을 포함하는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  13. 제12항에 있어서,
    상기 다수의 슬레이브 노드 각각은, 상기 각각의 슬레이브 노드에 의해 산출된 하위-질의어 결과를 저장하기 위한 수단을 포함하는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  14. 제1항에 있어서,
    상기 다수의 슬레이브 노드를 위해, 상기 각각의 슬레이브 노드상에 저장된 데이터세트의 복사본이, 상기 각각의 슬레이브 노드에 시스템 대체 동작 파트너로서 할당된 상기 다수의 슬레이브 중 다른 하나의 노드에 저장되는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  15. 제14항에 있어서,
    실패가 발생한 노드에서 실행될 예정이었던 하위-질의어가 상기 실패가 발생한 노드의 시스템 대체 동작 파트너에 의해 실행되는 것을 특징으로 하는 병렬 데이터베이스 시스템.
  16. 데이터베이스 내의 팩트 테이블과 제1 차원 테이블을 확인하는 단계;
    다수의 슬레이브 노드를 가로질러 상기 팩트 테이블과 제1 차원 테이블을 분배하는 단계;
    데이터베이스의 모든 다른 차원 테이블은 상기 다수의 슬레이브 노드 각각과 쌍을 이루는 단계; 그리고
    최소의 크기를 갖는 다수의 상기 다른 차원 테이블을 상기 다수의 슬레이브 노드를 가로질러 구분하는 단계로 이루어지는, 팩트 테이블과 다수의 차원 테이블을 포함하는 병렬 데이터베이스 시스템의 데이터베이스 관리방법.
  17. 제16항에 있어서,
    다수의 상기 다른 차원 테이블은 열로 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  18. 제16항에 있어서,
    다수의 상기 다른 차원 테이블은 행으로 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  19. 제16항에 있어서,
    다수의 상기 다른 차원 테이블은 열과 행으로 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  20. 제16항에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 열로 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  21. 제20항에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 공유키를 사용하여 해쉬 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  22. 제20항에 있어서,
    상기 팩트 테이블과 제1 차원 테이블은 행으로도 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  23. 제16항에 있어서,
    상기 데이터베이스 테이블은 상기 다수의 슬레이브 노드를 가로질러 날짜별로 구분된 것을 특징으로 하는 데이터베이스 관리방법.
  24. 제16항에 있어서,
    상기 데이터베이스에 대한 질의어를, 상기 슬레이브 노드 간의 데이터 전송을 요하지 않고 상기 병렬 데이터베이스 시스템에 의해 실행 가능한 하나 이상의 하위-질의어로 번역하는 것을 더 포함하는 데이터베이스 관리방법.
  25. 제24항에 있어서,
    마스터 노드의 상기 질의어 결과를 저장하는 것을 더 포함하는 데이터베이스 관리방법.
  26. 제25항에 있어서,
    상기 각각의 슬레이브 노드의 상기 하나 이상의 하위-질의어 결과를 저장하는 것을 더 포함하는 데이터베이스 관리방법.
  27. 제16항에 있어서,
    상기 슬레이브 노드에 할당된 시스템 대체 동작 파트너에 슬레이브 노드의 데이터 세트의 복사본을 저장하는 것을 더 포함하는 데이터베이스 관리방법.
  28. 제27항에 있어서,
    실패가 발생한 슬레이브 노드에서 실행될 예정이었던 하위-질의어를 상기 슬레이브 노드의 시스템 대체 동작 파트너에서 실행하는 것을 더 포함하는 데이터베이스 관리방법.
  29. 제16항 내지 제28항에 있어서,
    상기 묘사된 방법을 수행하기 위한, 컴퓨터로 판독가능한 메모리 매개체에 저장된, 처리과정을 수행할 수 있는 컴퓨터.
KR1020067019203A 2004-02-21 2006-09-18 초 무공유 병렬 데이터베이스 KR101114149B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US54642804P 2004-02-21 2004-02-21
US60/546,428 2004-02-21
PCT/US2005/005199 WO2005098655A2 (en) 2004-02-21 2005-02-17 Ultra-shared-nothing parallel database

Publications (2)

Publication Number Publication Date
KR20070026421A true KR20070026421A (ko) 2007-03-08
KR101114149B1 KR101114149B1 (ko) 2012-03-08

Family

ID=35125731

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067019203A KR101114149B1 (ko) 2004-02-21 2006-09-18 초 무공유 병렬 데이터베이스

Country Status (9)

Country Link
US (1) US7818349B2 (ko)
EP (1) EP1716505B1 (ko)
JP (1) JP4777972B2 (ko)
KR (1) KR101114149B1 (ko)
CN (1) CN101120340B (ko)
AU (1) AU2005231230B2 (ko)
CA (1) CA2556979A1 (ko)
MX (1) MXPA06009355A (ko)
WO (1) WO2005098655A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101472257B1 (ko) * 2014-07-22 2014-12-11 (주)카디날정보기술 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치
KR20180021994A (ko) * 2016-08-23 2018-03-06 주식회사 한컴시큐어 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법

Families Citing this family (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7778997B1 (en) 2004-06-11 2010-08-17 Seisint, Inc. System and method for managing throughput in the processing of query requests in a database system
US7797333B1 (en) 2004-06-11 2010-09-14 Seisint, Inc. System and method for returning results of a query from one or more slave nodes to one or more master nodes of a database system
US7693826B1 (en) * 2004-06-11 2010-04-06 Seisint, Inc. System and method for pre-compiling a query and pre-keying a database system
US8266234B1 (en) * 2004-06-11 2012-09-11 Seisint, Inc. System and method for enhancing system reliability using multiple channels and multicast
US7801911B1 (en) * 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
US7917495B1 (en) 2004-06-11 2011-03-29 Seisint, Inc. System and method for processing query requests in a database system
US7739287B1 (en) 2004-06-11 2010-06-15 Seisint, Inc. System and method for dynamically creating keys in a database system
US7873650B1 (en) * 2004-06-11 2011-01-18 Seisint, Inc. System and method for distributing data in a parallel processing system
US7406461B1 (en) 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7457796B2 (en) * 2004-07-08 2008-11-25 International Business Machines Corporation Method using virtual replicated tables in a cluster database management system
US7712100B2 (en) 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7502850B2 (en) 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7707288B2 (en) 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7793308B2 (en) 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7533170B2 (en) 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7467196B2 (en) 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
US7472079B2 (en) 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
JP4675174B2 (ja) * 2005-07-12 2011-04-20 株式会社日立製作所 データベース処理方法、システム及びプログラム
US20070078809A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Robust data availability system having decentralized storage and multiple access paths
US8688780B2 (en) * 2005-09-30 2014-04-01 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US7860865B2 (en) * 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US8214388B2 (en) * 2005-12-19 2012-07-03 Yahoo! Inc System and method for adding a storage server in a distributed column chunk data store
US20070143248A1 (en) * 2005-12-19 2007-06-21 Yahoo! Inc. Method using query processing servers for query processing of column chunks in a distributed column chunk data store
US7921132B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. System for query processing of column chunks in a distributed column chunk data store
US7921087B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method for query processing of column chunks in a distributed column chunk data store
US7921131B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method using a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US20100257135A1 (en) * 2006-07-25 2010-10-07 Mypoints.Com Inc. Method of Providing Multi-Source Data Pull and User Notification
US10007686B2 (en) * 2006-08-02 2018-06-26 Entit Software Llc Automatic vertical-database design
US8086598B1 (en) 2006-08-02 2011-12-27 Hewlett-Packard Development Company, L.P. Query optimizer with schema conversion
US8671091B2 (en) * 2006-08-02 2014-03-11 Hewlett-Packard Development Company, L.P. Optimizing snowflake schema queries
US8504598B2 (en) 2007-01-26 2013-08-06 Information Resources, Inc. Data perturbation of non-unique values
US9390158B2 (en) * 2007-01-26 2016-07-12 Information Resources, Inc. Dimensional compression using an analytic platform
US9262503B2 (en) * 2007-01-26 2016-02-16 Information Resources, Inc. Similarity matching of products based on multiple classification schemes
US8160984B2 (en) 2007-01-26 2012-04-17 Symphonyiri Group, Inc. Similarity matching of a competitor's products
US20080270363A1 (en) * 2007-01-26 2008-10-30 Herbert Dennis Hunt Cluster processing of a core information matrix
US10621203B2 (en) * 2007-01-26 2020-04-14 Information Resources, Inc. Cross-category view of a dataset using an analytic platform
US20080288522A1 (en) * 2007-01-26 2008-11-20 Herbert Dennis Hunt Creating and storing a data field alteration datum using an analytic platform
US20090006309A1 (en) * 2007-01-26 2009-01-01 Herbert Dennis Hunt Cluster processing of an aggregated dataset
US20080294996A1 (en) * 2007-01-31 2008-11-27 Herbert Dennis Hunt Customized retailer portal within an analytic platform
US8782075B2 (en) 2007-05-08 2014-07-15 Paraccel Llc Query handling in databases with replicated data
US9002827B2 (en) * 2007-07-11 2015-04-07 Teradata Us, Inc. Database query table substitution
US20090024570A1 (en) * 2007-07-20 2009-01-22 Oracle Internatonal Corporation User defined query rewrite mechanism
US7885969B2 (en) * 2007-09-17 2011-02-08 International Business Machines Corporation System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer
US9626421B2 (en) 2007-09-21 2017-04-18 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh ETL-less zero-redundancy system and method for reporting OLTP data
US7917574B2 (en) * 2007-10-01 2011-03-29 Accenture Global Services Limited Infrastructure for parallel programming of clusters of machines
US8412548B2 (en) * 2007-11-27 2013-04-02 International Business Machines Corporation Linked decision nodes in a business process model
US20090198703A1 (en) * 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
US9177079B1 (en) * 2009-01-22 2015-11-03 Joviandata, Inc. Apparatus and method for processing multi-dimensional queries in a shared nothing system through tree reduction
US8893131B2 (en) * 2008-04-11 2014-11-18 Yahoo! Inc. System and/or method for bulk loading of records into an ordered distributed database
US8195712B1 (en) 2008-04-17 2012-06-05 Lattice Engines, Inc. Lattice data set-based methods and apparatus for information storage and retrieval
US8682853B2 (en) 2008-05-16 2014-03-25 Paraccel Llc System and method for enhancing storage performance in analytical database applications
JP5392254B2 (ja) * 2008-05-30 2014-01-22 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
US8099440B2 (en) * 2008-08-15 2012-01-17 International Business Machines Corporation Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
US9251212B2 (en) * 2009-03-27 2016-02-02 Business Objects Software Ltd. Profiling in a massive parallel processing environment
US8700674B2 (en) * 2009-07-14 2014-04-15 Hewlett-Packard Development Company, L.P. Database storage architecture
US8972346B2 (en) * 2009-12-11 2015-03-03 International Business Machines Corporation Method and system for minimizing synchronization efforts of parallel database systems
US8346714B1 (en) * 2009-12-17 2013-01-01 Teradota Us, Inc. Transactiontime and validtime timestamping in an enterprise active data warehouse
JP5353682B2 (ja) * 2009-12-22 2013-11-27 富士通株式会社 構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラム
US8990185B2 (en) 2010-02-19 2015-03-24 International Business Machines Corporation Evaluating reference based operations in shared nothing parallelism systems
US8290931B2 (en) * 2010-02-22 2012-10-16 Hewlett-Packard Development Company, L.P. Database designer
US8375047B2 (en) * 2010-03-31 2013-02-12 Emc Corporation Apparatus and method for query prioritization in a shared nothing distributed database
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
US8768973B2 (en) 2010-05-26 2014-07-01 Pivotal Software, Inc. Apparatus and method for expanding a shared-nothing system
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
CN101916280A (zh) * 2010-08-17 2010-12-15 上海云数信息科技有限公司 并行计算系统及按查询内容进行负载均衡的方法
WO2012035665A1 (ja) 2010-09-17 2012-03-22 富士通株式会社 データ共有プログラム、データ配信プログラム、端末、サーバ、データ共有方法、およびデータ配信方法
JP5276639B2 (ja) * 2010-10-01 2013-08-28 日本電信電話株式会社 分散データベース管理装置および分散データベース管理プログラム
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
US9292523B1 (en) * 2011-03-23 2016-03-22 Emc Corporation Managing data storage
CN102737033B (zh) * 2011-03-31 2015-02-04 国际商业机器公司 数据处理设备及其数据处理方法
US9798831B2 (en) 2011-04-01 2017-10-24 Google Inc. Processing data in a MapReduce framework
US8924426B2 (en) * 2011-04-29 2014-12-30 Google Inc. Joining tables in a mapreduce procedure
US8793287B2 (en) 2011-05-27 2014-07-29 Sap Ag Equi-joins between split tables
US8965879B2 (en) 2011-06-03 2015-02-24 Microsoft Technology Licensing, Llc Unique join data caching method
CN102323946B (zh) * 2011-09-05 2013-03-27 天津神舟通用数据技术有限公司 并行数据库中算子复用的实现方法
US8862606B1 (en) * 2011-09-22 2014-10-14 Emc Corporation Executing correlated and multi-row subqueries in a MPP database
CN103092886B (zh) * 2011-11-07 2016-03-02 中国移动通信集团公司 一种数据查询操作的实现方法、装置及系统
US8892502B2 (en) * 2011-12-07 2014-11-18 Sap Se Parallel processing of semantically grouped data in data warehouse environments
US8914353B2 (en) * 2011-12-20 2014-12-16 Sap Se Many-core algorithms for in-memory column store databases
US8676787B2 (en) 2011-12-22 2014-03-18 International Business Machines Corporation Distributed multi-step abstract queries
US8762378B2 (en) * 2011-12-23 2014-06-24 Sap Ag Independent table nodes in parallelized database environments
US8868594B2 (en) * 2011-12-23 2014-10-21 Sap Ag Split processing paths for a database calculation engine
US8880565B2 (en) * 2011-12-23 2014-11-04 Sap Se Table creation for partitioned tables
US9164864B1 (en) * 2011-12-28 2015-10-20 Emc Corporation Minimizing false negative and duplicate health monitoring alerts in a dual master shared nothing database appliance
US8938444B2 (en) * 2011-12-29 2015-01-20 Teradata Us, Inc. Techniques for external application-directed data partitioning in data exporting from a database management system
US9239851B1 (en) 2012-07-12 2016-01-19 Cross Commerce Media, Inc. Advanced database systems and methods
WO2014015492A1 (zh) * 2012-07-26 2014-01-30 华为技术有限公司 数据分布的方法、装置及系统
US9015721B2 (en) * 2012-07-30 2015-04-21 Hewlett-Packard Development Company, L. P. Managing array computations during programmatic run-time in a distributed computing environment
CN103678368B (zh) * 2012-09-14 2017-02-08 华为技术有限公司 查询处理方法和装置
CN103714073B (zh) * 2012-09-29 2017-04-12 国际商业机器公司 数据查询的方法和装置
CN104871153B8 (zh) * 2012-10-29 2019-02-01 华为技术有限公司 用于分布式大规模并行处理数据库的方法和系统
US9195701B2 (en) * 2012-10-29 2015-11-24 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP) database
US8799284B2 (en) 2012-11-30 2014-08-05 Futurewei Technologies, Inc. Method for automated scaling of a massive parallel processing (MPP) database
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US10585896B2 (en) * 2013-03-12 2020-03-10 Red Hat, Inc. Managing data in relational database management system
US10049159B2 (en) * 2013-03-15 2018-08-14 Sas Institute Inc. Techniques for data retrieval in a distributed computing environment
CN104252452B (zh) * 2013-06-25 2019-03-15 腾讯科技(深圳)有限公司 数据管理的方法及装置
CN105308579B (zh) * 2013-07-01 2018-06-08 株式会社日立制作所 系列数据并行分析基础设施及其并行分散处理方法
US20150113314A1 (en) * 2013-07-11 2015-04-23 Brian J. Bulkowski Method and system of implementing a distributed database with peripheral component interconnect express switch
CN103412897B (zh) * 2013-07-25 2017-03-01 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
US9600514B2 (en) 2013-09-09 2017-03-21 VoltDB, Inc. Methods and systems for detecting data divergence and inconsistency across replicas of data within a shared-nothing distributed database
US10176240B2 (en) 2013-09-12 2019-01-08 VoltDB, Inc. Methods and systems for real-time transactional database transformation
US9836519B2 (en) * 2013-09-20 2017-12-05 Oracle International Corporation Densely grouping dimensional data
US9684682B2 (en) 2013-09-21 2017-06-20 Oracle International Corporation Sharding of in-memory objects across NUMA nodes
US9606921B2 (en) 2013-09-21 2017-03-28 Oracle International Corporation Granular creation and refresh of columnar data
US10061789B2 (en) * 2013-10-28 2018-08-28 Excalibur Ip, Llc Dynamic database indexes for entity attribute value stores
CN103559255B (zh) * 2013-11-01 2017-01-04 北京理工大学 一种分布式液压系统的可视化数据处理方法
US9898398B2 (en) 2013-12-30 2018-02-20 Microsoft Technology Licensing, Llc Re-use of invalidated data in buffers
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
US9723054B2 (en) 2013-12-30 2017-08-01 Microsoft Technology Licensing, Llc Hierarchical organization for scale-out cluster
US9639571B2 (en) 2013-12-30 2017-05-02 VoltDB, Inc. Methods and systems for increasing capacity and performing data rebalancing without downtime to a distributed shared-nothing database with serializable isolation
US9569493B2 (en) 2013-12-31 2017-02-14 International Business Machines Corporatin Avoidance of intermediate data skew in a massive parallel processing environment
US9555378B2 (en) * 2014-01-09 2017-01-31 Dow Global Technologies Llc Composite polyamide membrane having preferred azo content
US11386085B2 (en) 2014-01-27 2022-07-12 Microstrategy Incorporated Deriving metrics from queries
US9952894B1 (en) * 2014-01-27 2018-04-24 Microstrategy Incorporated Parallel query processing
US10635669B1 (en) 2014-01-27 2020-04-28 Microstrategy Incorporated Data engine integration and data refinement
US10255320B1 (en) 2014-01-27 2019-04-09 Microstrategy Incorporated Search integration
US11921715B2 (en) 2014-01-27 2024-03-05 Microstrategy Incorporated Search integration
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US9824106B1 (en) 2014-02-20 2017-11-21 Amazon Technologies, Inc. Hash based data processing
US9679012B1 (en) * 2014-02-28 2017-06-13 Pivotal Software, Inc. Parallel streaming of external data
US9684666B1 (en) * 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
US9684671B1 (en) * 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
CN103927337B (zh) * 2014-03-26 2017-12-19 北京国双科技有限公司 用于联机分析处理中关联关系的数据处理方法和装置
US9552390B2 (en) 2014-04-29 2017-01-24 Futurewei Technologies, Inc. System and method for out of order multiple query execution within stored procedure
US10002148B2 (en) 2014-07-22 2018-06-19 Oracle International Corporation Memory-aware joins based in a database cluster
US9875259B2 (en) 2014-07-22 2018-01-23 Oracle International Corporation Distribution of an object in volatile memory across a multi-node cluster
CN105468651B (zh) * 2014-09-12 2020-03-27 阿里巴巴集团控股有限公司 一种关系数据库数据查询方法及系统
US10089377B2 (en) * 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10089357B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US9767149B2 (en) 2014-10-10 2017-09-19 International Business Machines Corporation Joining data across a parallel database and a distributed processing system
WO2016191995A1 (zh) 2015-05-31 2016-12-08 华为技术有限公司 一种分布式数据库中关联表分区的方法和设备
WO2016206100A1 (zh) 2015-06-26 2016-12-29 华为技术有限公司 一种数据表的分区管理方法及装置
US10482076B2 (en) 2015-08-14 2019-11-19 Sap Se Single level, multi-dimension, hash-based table partitioning
US10198228B2 (en) 2016-03-03 2019-02-05 Ricoh Company, Ltd. Distributed data tables for print jobs in a print workflow system
WO2018028797A1 (en) * 2016-08-12 2018-02-15 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for bulk loading of data into a distributed database
CN106339432A (zh) * 2016-08-19 2017-01-18 上海巨数信息科技有限公司 一种按查询内容进行负载均衡的系统及其方法
US10846318B1 (en) 2017-04-18 2020-11-24 Microstrategy Incorporated Natural language visualizations
US11003662B2 (en) * 2017-10-30 2021-05-11 Salesforce.Com, Inc. Trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures
US10776229B2 (en) * 2017-12-22 2020-09-15 Teradata Us, Inc. Dedicated fallback processing for a distributed data warehouse
CN110019274B (zh) 2017-12-29 2023-09-26 阿里巴巴集团控股有限公司 一种数据库系统以及查询数据库的方法和装置
US11138230B2 (en) * 2018-03-26 2021-10-05 Mcafee, Llc Methods, apparatus, and systems to aggregate partitioned computer database data
CN108664560A (zh) * 2018-04-09 2018-10-16 宁波诺信睿聚投资有限责任公司 数据查询方法、装置、计算机设备及计算机可读存储介质
US11195050B2 (en) 2019-02-05 2021-12-07 Microstrategy Incorporated Machine learning to generate and evaluate visualizations
US11614970B2 (en) 2019-12-06 2023-03-28 Microstrategy Incorporated High-throughput parallel data transmission
US11567965B2 (en) 2020-01-23 2023-01-31 Microstrategy Incorporated Enhanced preparation and integration of data sets
WO2021162911A1 (en) * 2020-02-10 2021-08-19 Choral Systems, Llc Data analysis and visualization using structured data tables and nodal networks
US20220021953A1 (en) * 2020-07-16 2022-01-20 R9 Labs, Llc Systems and methods for processing data proximate to the point of collection

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0562251A2 (en) * 1992-03-24 1993-09-29 Universities Research Association, Inc. Parallel data transfer network controlled by a dynamically reconfigurable serial network
US5737549A (en) * 1994-01-31 1998-04-07 Ecole Polytechnique Federale De Lausanne Method and apparatus for a parallel data storage and processing server
US5909681A (en) * 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
JP3952518B2 (ja) 1996-03-29 2007-08-01 株式会社日立製作所 多次元データ処理方法
US5848408A (en) * 1997-02-28 1998-12-08 Oracle Corporation Method for executing star queries
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
JPH1153232A (ja) * 1997-08-05 1999-02-26 Hitachi Software Eng Co Ltd データベース管理方法
JPH11110262A (ja) * 1997-10-01 1999-04-23 Toshiba Corp 情報管理システム
CA2345309A1 (en) * 2000-09-18 2002-03-18 Linmor Technologies Inc. High performance relational database management system
US7668740B1 (en) * 2000-09-22 2010-02-23 Ita Software, Inc. Method, system, and computer program product for interfacing with information sources
US7085769B1 (en) 2001-04-26 2006-08-01 Ncr Corporation Method and apparatus for performing hash join
US6968335B2 (en) * 2002-11-14 2005-11-22 Sesint, Inc. Method and system for parallel processing of database queries

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101472257B1 (ko) * 2014-07-22 2014-12-11 (주)카디날정보기술 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치
KR20180021994A (ko) * 2016-08-23 2018-03-06 주식회사 한컴시큐어 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법

Also Published As

Publication number Publication date
EP1716505B1 (en) 2018-01-10
CN101120340A (zh) 2008-02-06
JP4777972B2 (ja) 2011-09-21
EP1716505A2 (en) 2006-11-02
JP2007531087A (ja) 2007-11-01
US20050187977A1 (en) 2005-08-25
WO2005098655A2 (en) 2005-10-20
KR101114149B1 (ko) 2012-03-08
AU2005231230A1 (en) 2005-10-20
EP1716505A4 (en) 2009-10-21
AU2005231230B2 (en) 2010-05-27
CA2556979A1 (en) 2005-10-20
CN101120340B (zh) 2010-12-08
WO2005098655A3 (en) 2007-09-27
MXPA06009355A (es) 2007-03-01
US7818349B2 (en) 2010-10-19

Similar Documents

Publication Publication Date Title
KR101114149B1 (ko) 초 무공유 병렬 데이터베이스
US11580070B2 (en) Utilizing metadata to prune a data set
US11157478B2 (en) Technique of comprehensively support autonomous JSON document object (AJD) cloud service
US11461356B2 (en) Large scale unstructured database systems
AU2015219103B2 (en) Transparent discovery of semi-structured data schema
US8935232B2 (en) Query execution systems and methods
US20120109926A1 (en) Scoped database connections
US6618729B1 (en) Optimization of a star join operation using a bitmap index structure
US20130110873A1 (en) Method and system for data storage and management
JP2001084257A (ja) 問合せ処理方法及びシステム
US20210004712A1 (en) Machine Learning Performance and Workload Management
Borkar et al. Have your data and query it too: From key-value caching to big data management
US20180018343A1 (en) Data pruning based on metadata
Romero et al. Tuning small analytics on Big Data: Data partitioning and secondary indexes in the Hadoop ecosystem
US6470331B1 (en) Very large table reduction in parallel processing database systems
US20100082600A1 (en) System, method, and computer-readable medium for optimizing the performance of outer joins
Kurunji et al. Optimizing aggregate query processing in cloud data warehouses

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9