JP6553649B2 - クラスタリング記憶方法および装置 - Google Patents

クラスタリング記憶方法および装置 Download PDF

Info

Publication number
JP6553649B2
JP6553649B2 JP2016569821A JP2016569821A JP6553649B2 JP 6553649 B2 JP6553649 B2 JP 6553649B2 JP 2016569821 A JP2016569821 A JP 2016569821A JP 2016569821 A JP2016569821 A JP 2016569821A JP 6553649 B2 JP6553649 B2 JP 6553649B2
Authority
JP
Japan
Prior art keywords
data
sort
column
storage medium
sequence
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2016569821A
Other languages
English (en)
Other versions
JP2017526027A (ja
Inventor
金玉 ▲張▼
金玉 ▲張▼
▲慶▼▲慶▼ 周
▲慶▼▲慶▼ 周
仲良 ▲張▼
仲良 ▲張▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017526027A publication Critical patent/JP2017526027A/ja
Application granted granted Critical
Publication of JP6553649B2 publication Critical patent/JP6553649B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • 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/22Indexing; Data structures therefor; Storage structures
    • 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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system

Description

本願は、2014年5月27日に中国特許庁に出願された、“CLUSTERING STORAGE METHOD AND APPARATUS”と題する、中国特許出願番号201410228979.8に対して優先権を主張し、その全体が参照によって本明細書に組み込まれる。
本発明はコンピュータ技術の分野に関し、詳細には、クラスタリング記憶方法および装置に関する。
データベースでは、データは一般に、表を使用することによって記憶され、且つ、ヒープ表(Heap Table)、索引構成表(Index Organization Table, IOT)およびクラスタ表(Cluster Table)である、3つのタイプの共通の表記憶構造がある。
従来技術では、記憶媒体にデータを記憶するためにヒープ表が使用されるとき、データの各行はデータが挿入される自然順序に従って、非シーケンシャルに記憶されるため、データローディング性能およびデータ更新性能はわずかに影響を受ける。さらに、記憶媒体にデータを記憶するためにヒープ表が使用された後、1個のデータについてヒープ表のデータを問い合わせることが要求された場合、その1個のデータが見つかるまで、ヒープ表の第1の行から1行ずつ比較が行われる必要がある。
しかしながら、記憶媒体にデータを記憶するためにヒープ表が使用されるとき、データは非シーケンシャルに記憶され、且つ、データがヒープ表内で問い合わせられるとき、ヒープ表の第1の行から1行ずつ比較が行われる必要があり、従って、データローディング性能およびデータ更新性能はわずかに影響を受けるが、データ圧縮比およびデータクエリ性能は比較的低い。
本発明の実施形態はクラスタリング記憶方法および装置を提供し、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率は改善されることができる。
以下の技術的解決手段は、本発明の実施形態で使用される。
第1の態様によると、本発明の実施形態はクラスタリング記憶方法を提供し、ここで、方法はデータベースシステムにおいて適用され、且つ、
記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするステップと、
第1のソート列を決定するステップであって、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される、ステップと、
ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートするステップであって、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである、ステップと、
ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するステップと
を含む。
第1の態様の第1の可能な実施方式では、事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
第1の態様または第1の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートするステップは、具体的には、
第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするステップを含む。
第1の態様または第1の態様の第1の可能な実施方式を参照すると、第3の可能な実施方式では、事前に設定された条件は、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートするステップは、具体的には、
ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするステップを含む。
第1の態様または第1の態様の第1の可能な実施方式乃至第3の可能な実施方式のいずれか1つの実施方式を参照すると、第4の可能な実施方式では、第1のソート列に従って、第2のデータをソートするステップは、具体的には、
第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするステップを含む。
第1の態様または第1の態様の第1の可能な実施方式乃至第4の可能な実施方式のいずれか1つの実施方式を参照すると、第5の可能な実施方式では、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するステップは、具体的には、
ソートされた第2のデータを記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するステップであって、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである、ステップを含む。
第1の態様または第1の態様の第1の可能な実施方式乃至第5の可能な実施方式のいずれか1つの実施方式を参照すると、第6の可能な実施方式では、第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
第1の態様または第1の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第7の可能な実施方式では、第1のデータが記憶媒体に全て記憶された後、方法は、
クエリ列を決定するステップと、
クエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するステップと
をさらに含む。
第1の態様の第7の可能な実施方式を参照すると、第8の可能な実施方式では、クエリ列を決定するステップの後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するステップの前に、方法は、
記憶媒体に記憶された第1のデータをローカルメモリに読み出すステップをさらに含み、ここで、
第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するステップは、具体的には、
ローカルメモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するステップを含む。
第1の態様または第1の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第9の可能な実施方式では、第1のデータが記憶媒体に全て記憶された後、方法は、
第2のソート列を決定するステップと、
第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するステップと
をさらに含む。
第1の態様の第9の可能な実施方式を参照すると、第10の可能な実施方式では、第2のソート列を決定するステップの後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するステップの前に、方法は、
記憶媒体に記憶された第1のデータをローカルメモリに読み出すステップをさらに含み、ここで、
第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するステップは、具体的には、
ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してマージソートを実行するステップを含む。
第1の態様または第1の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第11の可能な実施方式では、第1のデータが記憶媒体に全て記憶された後、方法は、
集約列を決定するステップと、
集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するステップであって、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である、ステップと
をさらに含む。
第1の態様の第11の可能な実施方式を参照すると、第12の可能な実施方式では、集約列を決定するステップの後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するステップの前に、方法は、
記憶媒体に記憶された第1のデータをローカルメモリに読み出すステップをさらに含み、ここで、
第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するステップは、具体的には、
ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定するステップと、
第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するステップとを含む。
第1の態様の第13の可能な実施方式では、記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするステップの前に、方法は、
記憶媒体内に表を作成するステップであって、ここで、表は、第1のデータをロードするために使用される、ステップをさらに含み、ここで、
ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するステップは、具体的には、
ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入するステップを含む。
第2の態様によると、本発明の実施形態はクラスタリング記憶装置を提供し、ここで、装置はデータベースシステムにおいて適用され、且つ、
記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするように構成されるキャッシングユニットと、
第1のソート列を決定するように構成される決定ユニットであって、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される、決定ユニットと、
キャッシングユニットによってローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを決定ユニットによって決定された第1のソート列に従ってソートするように構成される操作ユニットであって、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである、操作ユニットと、
操作ユニットによってソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するように構成される記憶ユニットと
を含む。
第2の態様の第1の可能な実施方式では、事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
第2の態様または第2の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
操作ユニットは、具体的には、第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
第2の態様または第2の態様の第1の可能な実施方式を参照すると、第3の可能な実施方式では、事前に設定された条件は、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
操作ユニットは、具体的には、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
第2の態様または第2の態様の第1の可能な実施方式乃至第3の可能な実施方式のいずれか1つの実施方式を参照すると、第4の可能な実施方式では、操作ユニットは、具体的には、決定ユニットによって決定された、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
第2の態様または第2の態様の第1の可能な実施方式乃至第4の可能な実施方式のいずれか1つの実施方式を参照すると、第5の可能な実施方式では、記憶ユニットは、具体的には、操作ユニットによってソートされた第2のデータを記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである。
第2の態様または第2の態様の第1の可能な実施方式乃至第5の可能な実施方式のいずれか1つの実施方式を参照すると、第6の可能な実施方式では、決定ユニットによって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
第2の態様または第2の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第7の可能な実施方式では、決定ユニットは、記憶ユニットが第1のデータ全てを記憶媒体に記憶した後、クエリ列を決定するようにさらに構成され、且つ、
操作ユニットは、決定ユニットによって決定されたクエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するようにさらに構成される。
第2の態様の第7の可能な実施方式を参照すると、第8の可能な実施方式では、キャッシングユニットは、決定ユニットがクエリ列を決定した後で、且つ、操作ユニットが第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニットは、具体的には、ローカルメモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、キャッシングユニットによってキャッシュされた第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するように構成される。
第2の態様または第2の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第9の可能な実施方式では、決定ユニットは、記憶ユニットが第1のデータ全てを記憶媒体に記憶した後、第2のソート列を決定するようにさらに構成され、且つ、
操作ユニットは、決定ユニットによって決定された第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するようにさらに構成される。
第2の態様の第9の可能な実施方式を参照すると、第10の可能な実施方式では、キャッシングユニットは、決定ユニットが第2のソート列を決定した後で、且つ、操作ユニットが第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニットは、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニットによってキャッシュされた第1のデータに対してマージソートを実行するように構成される。
第2の態様または第2の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第11の可能な実施方式では、決定ユニットは、記憶ユニットが第1のデータ全てを記憶媒体に記憶した後、集約列を決定するようにさらに構成され、且つ、
操作ユニットは、決定ユニットによって決定された集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
第2の態様の第11の可能な実施方式を参照すると、第12の可能な実施方式では、キャッシングユニットは、決定ユニットが集約列を決定した後で、且つ、操作ユニットが第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニットは、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニットによってキャッシュされた第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するように構成される。
第2の態様の第13の可能な実施方式では、クラスタリング記憶装置は、作成ユニットをさらに含み、ここで、
作成ユニットは、キャッシングユニットが記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする前に、記憶媒体内に表を作成するように構成され、ここで、表は、第1のデータをロードするために使用され、且つ、
操作ユニットは、具体的には、ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを作成ユニットによって作成された表に1行ずつ挿入するように構成される。
第3の態様によると、本発明の実施形態はデータベースシステムを提供し、データベースシステムは、
底層記憶媒体と、
底層記憶媒体に結合され、且つ、底層記憶媒体のキャッシュとして役割を果たすように構成されるメモリと、
メモリに結合されたプロセッサとを含み、ここで、底層記憶媒体における1つ以上のデータブロックはキャッシュ内のターゲットデータブロックにマッピングされ、プロセッサはメモリ内の命令を実行し、
記憶されるべき第1のデータをメモリに1行ずつキャッシュし、第1のソート列を決定し、メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートし、ソートされた第2のデータを底層記憶媒体にクラスタリング方式で記憶するように構成され、ここで、第1のソート列は、メモリ内にキャッシュされているデータをソートするために使用され、第2のデータは、第1のデータ内の、メモリ内にキャッシュされているデータである。
第3の態様の第1の可能な実施方式では、事前に設定された条件は、メモリ内にキャッシュされている第2のデータのデータ量とメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
第3の態様または第3の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
プロセッサは、具体的には、第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
第3の態様または第3の態様の第1の可能な実施方式を参照すると、第3の可能な実施方式では、事前に設定された条件は、メモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
プロセッサは、具体的には、メモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
第3の態様または第3の態様の第1の可能な実施方式乃至第3の可能な実施方式のいずれか1つの実施方式を参照すると、第4の可能な実施方式では、プロセッサは、具体的には、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
第3の態様または第3の態様の第1の可能な実施方式乃至第4の可能な実施方式のいずれか1つの実施方式を参照すると、第5の可能な実施方式では、プロセッサは、具体的には、第2のデータを底層記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に底層記憶媒体にクラスタリング方式で記憶されているデータである。
第3の態様または第3の態様の第1の可能な実施方式乃至第5の可能な実施方式のいずれか1つの実施方式を参照すると、第6の可能な実施方式では、プロセッサによって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
第3の態様または第3の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第7の可能な実施方式では、プロセッサは、第1のデータが底層記憶媒体に全て記憶された後、クエリ列を決定し、クエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するようにさらに構成される。
第3の態様の第7の可能な実施方式を参照すると、第8の可能な実施方式では、プロセッサは、クエリ列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、底層記憶媒体に記憶された第1のデータをメモリに読み出し、メモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するようにさらに構成される。
第3の態様または第3の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第9の可能な実施方式では、プロセッサは、第1のデータが底層記憶媒体に全て記憶された後、第2のソート列を決定し、第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するようにさらに構成される。
第3の態様の第9の可能な実施方式を参照すると、第10の可能な実施方式では、プロセッサは、第2のソート列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、底層記憶媒体に記憶された第1のデータをメモリに読み出し、メモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してマージソートを実行するようにさらに構成される。
第3の態様または第3の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第11の可能な実施方式では、プロセッサは、第1のデータが底層記憶媒体に全て記憶された後、集約列を決定し、集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
第3の態様の第11の可能な実施方式を参照すると、第12の可能な実施方式では、プロセッサは、集約列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、底層記憶媒体に記憶された第1のデータをメモリに読み出し、メモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するようにさらに構成される。
第3の態様の第13の可能な実施方式では、プロセッサは、記憶されるべき第1のデータがメモリに1行ずつキャッシュされる前に、底層記憶媒体内に表を作成し、ソートされた第2のデータを底層記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入するようにさらに構成され、ここで、表は、第1のデータをロードするために使用される。
本発明の実施形態で提供されるクラスタリング記憶方法および装置によると、記憶されるべき第1のデータはデータベースシステム内のローカルメモリに1行ずつキャッシュされ、第1のソート列が決定され、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータが第1のソート列に従ってソートされ、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、ソートされた第2のデータがデータベースシステム内の記憶媒体にクラスタリング方式で記憶される。この解決手段を使用することによって、記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、第2のデータは、決定された第1のソート列に従ってソートされ始め、且つ、ソートされた第2のデータはデータベースシステム内の記憶媒体に記憶される。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
本発明の実施形態における、または従来技術における技術的解決手段をより明確に説明するために、以下では、実施形態または従来技術を説明するために必要とされる表および添付図面を簡潔に導入する。明らかに、以下の説明における表および添付図面は単に本発明のいくつかの実施形態を示し、すなわち、本発明で提供される表および添付図面は、以下の説明における表および添付図面を含むがそれらに限定はされない。
図1は、本発明の実施形態に係るクラスタリング記憶方法の第1のフローチャートである。 図2は、本発明の実施形態に係るクラスタリング記憶方法の第2のフローチャートである。 図3は、本発明の実施形態に係るクラスタリング記憶方法の第3のフローチャートである。 図4は、本発明の実施形態に係る索引構成表の概略構成図である。 図5は、本発明の実施形態に係るクラスタリング記憶装置の第1の概略構成図である。 図6は、本発明の実施形態に係るクラスタリング記憶装置の第2の概略構成図である。 図7は、本発明の実施形態に係るデータベースシステムの概略構成図である。 図8は、本発明の実施形態に係る、クラスタリング方式でデータを記憶するための第1の概略図である。 図9は、本発明の実施形態に係る、クラスタリング方式でデータを記憶するための第2の概略図である。
本発明で提供されるクラスタリング記憶方法では、クラスタリング記憶の観念によると、データがデータベースシステム内の記憶媒体に記憶されるとき、記憶媒体に記憶される全てのデータがシーケンシャルである(データが全体的にシーケンシャルである)ことを考慮することなく、記憶媒体に各回記憶されるデータのみがシーケンシャルである(データは部分的にシーケンシャルである)ことが保証される。従って、従来技術における非シーケンシャルな記憶方式で記憶媒体にデータを記憶するためにヒープ表が使用される場合と比較して、本発明で提供されるクラスタリング記憶方法を使用することによって、記憶媒体における同じタイプのデータは部分的にソートされた後に記憶されるため、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。具体的には、本発明の実施形態で提供されるクラスタリング記憶方法を使用することによって、1つの態様においては、データベースシステム内の記憶媒体における同じタイプのデータは部分的にソートされた後に記憶されるため、データが記憶された後、データクエリ性能およびデータ圧縮効率は比較的高く、1つの態様においては、データを記憶するプロセスでは、データがロードされるとき、データは一部ずつロードされるため、データローディング性能はわずかに影響を受けることが保証されることができ、別の態様においては、記憶媒体内のデータが更新される必要があるとき、更新されるべきデータが記憶媒体内で位置するデータの部分が直接更新されることができ(更新が追加している場合、追加されたデータは直接且つシーケンシャルに記憶媒体に記憶されてよい)、且つ、更新は記憶媒体内の全てのデータに対して要求されないため、データ更新性能はわずかに影響を受けることが保証されることができる。すなわち、本発明で提供されるクラスタリング記憶方法を使用することによって、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率は改善されることが保証されることができる。
さらに、本発明で提供されるクラスタリング記憶方法によると、データを記憶するプロセスでは、データはローカルメモリ内でのみソートされる必要があり、記憶媒体内でソートされる必要がなく、且つ、ローカルメモリ内でデータを処理する速度は、記憶媒体内でデータを処理する速度よりもはるかに速く、従って、本発明で提供されるクラスタリング記憶方法がデータを更新するために使用されるとき、時間およびシステムの資源が節約されることができる。
以下では、本発明の実施形態で提供されるクラスタリング記憶方法および装置を、本発明の実施形態における表および添付図面を参照して明確且つ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の全てではなく単に一部である。本発明の実施形態で提供されるクラスタリング記憶方法および装置は、データベースシステムにおいて適用されてよく、ここで、データベースシステムは、クラスタリング記憶装置のハードウェアエンティティおよびデータベース環境を含んでよく、クラスタリング記憶装置のハードウェアエンティティは、コンピュータノード(またはコンピューティングノードと呼ばれる)であってよく、または、本発明の実施形態で提供されるクラスタリング記憶解決手段を実施することができる別のデバイスであってよく、すなわち、本発明の実施形態で提供されるクラスタリング記憶方法は、コンピュータノードまたは別のデバイスによって実行されてよい。以下では、本発明の実施形態で提供されるクラスタリング記憶方法および装置を説明するための例として、コンピュータノードを使用する。
実施形態1
本発明の実施形態は、クラスタリング記憶方法を提供し、ここで、方法はデータベースシステムにおいて適用される。図1に示されるように、方法は以下のステップを含んでよい:
S101. コンピュータノードは、記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする。
ハードディスクにテキストで記憶されるデータ、すなわち記憶されるべき第1のデータが、データベースシステム内の記憶媒体に記憶されて、第1のデータに対する次のアクセスを容易にする必要がある場合、第1のデータを記憶するプロセスでは、コンピュータノードは、最初に第1のデータをソートして、次いで、ソートされた第1のデータを記憶媒体に記憶する必要がある。コンピュータノードが第1のデータを記憶媒体に記憶するプロセスでは、コンピュータノードは、最初に第1のデータをハードディスクからデータベースシステム内のローカルメモリに読み出す必要がある。具体的には、コンピュータノードは第1のデータをハードディスクからローカルメモリに1行ずつキャッシュしてよい。
S102. コンピュータノードは第1のソート列を決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される。
コンピュータノードが第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、コンピュータノードは第1のソート列を決定してよく、ここで、第1のソート列は、事前に設定されてよく、且つ、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用されてよい。
任意で、本発明の本実施形態で提供されるクラスタリング記憶方法では、第1のデータをソートするとき、コンピュータノードは、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第1のデータをソートしてよい。
当業者は、本発明の本実施形態で提供されるデータベースシステム内の記憶媒体は、ディスクであってよく、ここで、ディスクはハードディスクおよびフロッピーディスクを含んでよいことを理解することができる。よく使用されるディスクは一般にリムーバブルディスクであり、ここで、リムーバブルディスクは2つのタイプに分類されてよく、1つのタイプはチップ記憶に基づくUSBフラッシュドライブ(Universal Serial Bus flash disk, ユニバーサル・シリアル・バス・フラッシュ・ドライブ)またはフラッシュディスクであり、もう一方のタイプは、ハードディスクに基づくリムーバブルハードディスクであり、ここで、リムーバブルディスクは、たいていの場合リムーバブルハードディスクであり、且つ、リムーバブルハードディスクは、異なるハードディスクに従って、ノートブックコンピュータのリムーバブルハードディスクとデスクトップコンピュータのリムーバブルハードディスクとに分類される。リムーバブルハードディスクは一般に、USBインタフェースを介してコンピュータに接続され、すなわち、記憶媒体として、リムーバブルハードディスクは、USBインタフェースを介して、リムーバブルハードディスクとコンピュータとの間で送信されるデータを記憶してよい。
特に、第1のソート列は、主キーと呼ばれてよく、または部分クラスタキー(partial cluster key)と呼ばれてよい。
第1のソート列は、ユーザがコンピュータノードに表を作成するように命令するとき、第1のデータの属性によって指定されるソート列に従って、第1のデータをソートするための基準であり、すなわち、コンピュータノードは、第1のソート列に従って、記憶されるべき第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を別々にソートしてよく、その結果、第1のデータにおけるデータの各部分は別々に且つシーケンシャルに配列され、第1のデータが部分的にシーケンシャルであることを保証することは留意されるべきである。
さらに、表を作成するように命令するとき、ユーザは、文を使用することによって表記憶構造を指定してよく、ここで、第1のソート列が表記憶構造で指定される。例えば、ユーザは、表t記憶構造を指定するために、Create table t(c1 int,c2 int, partial cluster key(c1,c2+1)という文を使用してよく、ここで、表t記憶構造は、第1のソート列、すなわち、部分クラスタキーを含む。
表は、データレコードのグループによって形成される。表は行に従って配列される関連データのグループであり、且つ、各表は同じタイプの情報を含む。表は実際、2次元表である。例えば、クラス内の全ての学生のテストの点数が表内に記憶されてよく、ここで、表内の各行は1人の学生に対応し、且つ、各行は対応する学生に関する全ての情報を含み、例えば、学生の、学生番号、氏名および各コースの点数を含んでよい。
表記憶構造は、定義された表のフィールド、タイプ、主キー、外部キー、索引等であり、すなわち、これらの基本属性は表記憶構造を構成する。表記憶構造が決定された後、異なるタイプのデータは、表記憶構造に従って直接挿入されてよい。
データベースはデータを記憶するためのウェアハウスであり、データベースは1つの表または表のグループによって形成され、且つ、データベース内のデータは表単位で編成される。各データベースは、ファイルの形式でディスクに記憶され、すなわち、各データベースは1つの物理ファイルに対応する。異なるデータベースは、異なる方式における物理ファイルに対応する。例えば、データベースは、1つの表を含んでよく、または、複数の表を含んでよい。
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法によると、コンピュータノードは、データベースシステム内のローカルメモリにおける第1のデータに対するソートを完了し、且つ、ローカルメモリのサイズおよびデータ処理能力の制限に依存するため、コンピュータノードは第1のデータを一部ずつのみソートすることができる。コンピュータノードは次いで、データベースシステム内の記憶媒体に、一部ずつソートされたデータを連続的に記憶し、このようにして、記憶媒体に記憶された第1のデータが部分的にシーケンシャルであることが保証されることができる。
S103. コンピュータノードによってローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、コンピュータノードは第2のデータを第1のソート列に従ってソートし、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである。
コンピュータノードが第1のデータをキャッシュするプロセスでは、データベースシステム内のローカルメモリが制限されたサイズおよび制限されたデータ処理能力を有するため、第1のデータは一度にローカルメモリに全てキャッシュされることはできず、すなわち、コンピュータノードは、第1のデータをローカルメモリに一部ずつ別々にキャッシュしてよく、その結果、コンピュータノードは、ローカルメモリに別々にキャッシュされるデータを一部ずつ連続的に処理してよい。具体的には、コンピュータノードは、リアルタイムで、ローカルメモリにキャッシュされている第2のデータの状態に対する統計値を収集してよい。コンピュータノードが、ローカルメモリにキャッシュされている第2のデータが事前に設定された条件を満たすと検出したとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよく、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである。
さらに、前述の事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用されてよい。
S104. コンピュータノードは、ソートされた第2のデータをデータベースシステム内の記憶媒体に記憶する。
データベースでは、属性または属性グループのクエリ速度を改善するために、属性または属性グループ内の同じ値を有するタプル(クラスタコードと呼ばれる)が、連続する物理ブロックに中心に記憶されてよい。この記憶方法はクラスタリングと呼ばれる。クラスタリング方式でデータを記憶することは、クラスタコードに従ってクエリを実行することにおける効率を大きく改善することができる。
コンピュータノードが第2のデータをソートした後、コンピュータノードは、第2のデータをロードするプロセスを完了するために、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶してよい。
コンピュータノードは、記憶されるべき第1のデータがデータベースシステム内の記憶媒体に全て記憶されるまで、前述のS101からS104を繰り返し実行してよいことは留意されるべきである。
コンピュータノードは、事前に設定された第1のソート列に従って、第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を連続的に且つ別々にソートし、各回ソートされた後に得られたデータの各部分を記憶媒体に記憶してよく、その結果、記憶媒体に記憶された第1のデータは部分的にシーケンシャルであり、すなわち、記憶媒体に記憶された第1のデータにおけるデータの各部分がシーケンシャルに配列されることが保証されることができることは理解されることができる。
例示的に、ユーザが第1のデータ、すなわち、大学におけるダンス部内の500人の学生に関する情報をデータベースシステム内の記憶媒体に記憶して、次のアクセスを容易にする必要がある場合、ユーザは最初に、500人の学生に関する情報をコンピュータノードに入力し、テキストの形式で、コンピュータノードのハードディスク内に情報を記憶する必要がある。コンピュータノードが、500人の学生に関する情報を、ユーザの命令に従って、データベースシステム内の記憶媒体に記憶するプロセスでは、コンピュータノードは、ハードディスク内のテキストから500人の学生に関する情報をデータベースシステム内のローカルメモリに読み出してよい。具体的には、コンピュータノードは、各学生に従って、各学生に関する情報を1行ずつ読み出す方式で、500人の学生に関する情報をローカルメモリに連続的に読み出してよい。
各学生に関する情報が、クラス、氏名、学生番号、年齢、専攻および家族情報等の属性を含むと仮定される。本発明の本実施形態で提供されるクラスタリング記憶方法によると、500人の学生に関する情報は1つの表を構成してよい。表1に示されるように、表1内の各行(すなわち、各学生に関する情報)はタプルであり、且つ、各列(全ての学生に関する項目の情報)は属性である。
Figure 0006553649
500人の学生に関する情報を入力するとき、ユーザは特定の順序に従って情報を入力しなくてよく、従って、ハードディスク内にテキストで記憶される500人の学生に関する情報は、シーケンシャルに配列されないことは留意されるべきである。500人の学生に関する情報の次の再利用を容易にするために、例えば、500人の学生に関する情報に対するクエリおよびソート等の操作を実行するために、500人の学生に関する情報は、長期間使用を容易にし、且つ、繰り返される操作を回避するために、データベースシステム内の記憶媒体に記憶される必要がある。特に、データがデータベースシステム内の記憶媒体に記憶されるとき、対応する表記憶構造は一般に記憶用に使用されてよい。従来技術で提供される表記憶構造と比較すると、本発明の本実施形態で提供される表記憶構造(本発明の本実施形態におけるコンピュータノードによって作成される表の記憶構造)、すなわち、表1に示される表記憶構造は、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることを保証することができる。
前述の表1から、この例では、ユーザによって指定された第1のソート列、すなわち、部分クラスタキー(主キー)はクラスおよび学生番号であってよいことがわかる。これは、各学生が2つの属性、すなわち、クラスと学生番号の両方が決定されるときにのみ決定されることができ、すなわち、各学生は、クラスと学生番号の両方が決定されたときにのみ別の学生と区別されることができるためである。
本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶されるべき第1のデータは、一部ずつソートされた後、データベースシステム内の記憶媒体に記憶されてよく、且つ、記憶媒体に記憶されたデータの各部分がシーケンシャルに配列されることが保証されることができる。このようにして、記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、記憶媒体に記憶されたデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
本発明の本実施形態で提供されるクラスタリング記憶方法によると、記憶されるべき第1のデータはデータベースシステム内のローカルメモリに1行ずつキャッシュされ、第1のソート列が決定され、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータが第1のソート列に従ってソートされ、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、ソートされた第2のデータがデータベースシステム内の記憶媒体にクラスタリング方式で記憶される。この解決手段を使用することによって、記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、第2のデータは、決定された第1のソート列に従ってソートされ始め、且つ、ソートされた第2のデータはデータベースシステム内の記憶媒体に記憶される。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
実施形態2
本発明の実施形態はクラスタリング記憶方法を提供し、ここで、方法はデータベースシステムにおいて適用される。図2に示されるように、方法は以下のステップを含んでよい:
S201. コンピュータノードは、データベースシステム内の記憶媒体に表を作成し、ここで、表は、記憶されるべき第1のデータをロードするために使用される。
ハードディスクにテキストで記憶されるデータ、すなわち記憶されるべき第1のデータが、データベースシステム内の記憶媒体に記憶される必要がある場合、コンピュータノードは最初に記憶媒体内に表を作成してよく、ここで、表は第1のデータをロードするために使用されてよい。
当業者は、本発明の本実施形態で提供されるデータベースシステム内の記憶媒体は、ディスクであってよく、ここで、ディスクはハードディスクおよびフロッピーディスクを含んでよいことを理解することができる。よく使用されるディスクは一般にリムーバブルディスクであり、ここで、リムーバブルディスクは2つのタイプに分類されてよく、1つのタイプはチップ記憶に基づくUSBフラッシュドライブまたはフラッシュディスクであり、もう一方のタイプは、ハードディスクに基づくリムーバブルハードディスクであり、ここで、リムーバブルディスクは、たいていの場合リムーバブルハードディスクであり、且つ、リムーバブルハードディスクは、異なるハードディスクに従って、ノートブックコンピュータのリムーバブルハードディスクとデスクトップコンピュータのリムーバブルハードディスクとに分類される。リムーバブルハードディスクは一般に、USBインタフェースを介してコンピュータに接続され、すなわち、記憶媒体として、リムーバブルハードディスクは、USBインタフェースを介して、リムーバブルハードディスクとコンピュータとの間で送信されるデータを記憶してよい。
S202. コンピュータノードは、第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする。
本発明の本実施形態で提供されるクラスタリング記憶方法では、第1のデータに対する次のアクセスを容易にするために、第1のデータを記憶するプロセスでは、コンピュータノードは、最初に第1のデータをソートして、次いで、ソートされた第1のデータをデータベースシステム内の記憶媒体に記憶する必要がある。コンピュータノードが第1のデータを記憶媒体に記憶するプロセスでは、コンピュータノードは、最初に第1のデータをハードディスクからデータベースシステム内のローカルメモリに読み出す必要がある。具体的には、コンピュータノードは第1のデータをハードディスクからローカルメモリに1行ずつキャッシュしてよい。
S203. コンピュータノードは第1のソート列を決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される。
コンピュータノードが第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、コンピュータノードは第1のソート列を決定してよく、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用されてよい。
特に、第1のソート列は、主キーと呼ばれてよく、または部分クラスタキーと呼ばれてよい。
第1のソート列は、ユーザがコンピュータノードに表を作成するように命令するとき、第1のデータの属性によって指定されるソート列に従って、第1のデータをソートするための基準であり、すなわち、コンピュータノードは、第1のソート列に従って、記憶されるべき第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を別々にソートしてよく、その結果、第1のデータにおけるデータの各部分は別々に且つシーケンシャルに配列され、第1のデータが部分的にシーケンシャルであることを保証することは留意されるべきである。
さらに、表を作成するように命令するとき、ユーザは、文を使用することによって表記憶構造を指定してよく、ここで、第1のソート列が表記憶構造で指定される。例えば、ユーザは、表t記憶構造を指定するために、
Create table t(c1 int,c2 int, partial cluster key(c1,c2+1)
という文を使用してよく、ここで、表t記憶構造は、第1のソート列、すなわち、部分クラスタキーを含む。
表は、データレコードのグループによって形成される。表は行に従って配列される関連データのグループであり、且つ、各表は同じタイプの情報を含む。表は実際、2次元表である。例えば、クラス内の全ての学生のテストの点数が表内に記憶されてよく、ここで、表内の各行は1人の学生に対応し、且つ、各行は対応する学生に関する全ての情報を含み、例えば、学生の、学生番号、氏名および各コースの点数を含んでよい。
表記憶構造は、定義された表のフィールド、タイプ、主キー、外部キー、索引等であり、すなわち、これらの基本属性は表記憶構造を構成する。表記憶構造が決定された後、異なるタイプのデータは、表記憶構造に従って直接挿入されてよい。
データベースはデータを記憶するためのウェアハウスであり、データベースは1つの表または表のグループによって形成され、且つ、データベース内のデータは表単位で編成される。各データベースは、ファイルの形式でディスクに記憶され、すなわち、各データベースは1つの物理ファイルに対応する。異なるデータベースは、異なる方式における物理ファイルに対応する。例えば、dBASE、FoxProおよびParadoxフォーマットにおけるデータベースについては、表は別々のデータベースファイルであり、且つ、Microsoft AccessおよびBtrieveフォーマットにおけるデータベースについては、データベースファイルは複数の表を含んでよい。
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法によると、コンピュータノードは、データベースシステム内のローカルメモリにおける第1のデータに対するソートを完了し、且つ、ローカルメモリのサイズおよびデータ処理能力の制限に依存するため、コンピュータノードは第1のデータを一部ずつのみソートすることができる。コンピュータノードは次いで、データベースシステム内の記憶媒体に、一部ずつソートされたデータを連続的に記憶し、このようにして、記憶媒体に記憶された第1のデータが部分的にシーケンシャルであることが保証されることができる。
任意で、前述の第1のソート列は、物理的な列および表現のうちの少なくとも1つを含んでよい。具体的には、第1のソート列は物理的な列であってよく、表現であってよく、物理的な列および表現であってよく、または、ソート要件を満たす任意の他のフォーマットであってよく、このことは本発明では限定されない。
例示的に、第1のソート列を指定するための前述の文が例として使用される。文では、第1のソート列は“c1,c2+1”であり、ここで、“c1”は物理的な列であり、“c2+1”は表現である。
さらに、表2に示されるように、表内のデータが記憶されるべき第1のデータである場合、第1のソート列は、要素列およびシリアル番号列、または数値列であってよく、ここで、要素列およびシリアル番号列、または数値列は、物理列と呼ばれてよく、または、第1のソート列は数値列の絶対値であってよく、ここで、数値列の絶対値は表現と呼ばれてよい。コンピュータノードが、ユーザの要件に従って、ユーザによって指定される前述の第1のソート列に従って、表2に示される第1のデータをソートしてよいことは理解されることができる。
具体的には、第1のソート列が要素列およびシリアル番号列である場合、コンピュータノードが、昇順で、第1のソート列の値に従って、表2内のデータをソートした後に得られる結果(ソートはアルファベット順で、要素列に対して実行され、且つ、ソートは番号順で、シリアル番号列に対して実行される)は、表3に示される。第1のソート列が数値列である場合、コンピュータノードが、昇順で、第1のソート列の値に従って、表2内のデータをソートした後に得られる結果は、表4に示される。第1のソート列が数値列の絶対値である場合、コンピュータノードが、昇順で、第1のソート列の値に従って、表2内のデータをソートした後に得られる結果は、表5に示される。
Figure 0006553649
Figure 0006553649
Figure 0006553649
Figure 0006553649
前述の表3、表4および表5から、異なる第1のソート列に対して、ソート結果は異なり、且つ、同じ第1のソート列に対して、第1のソート列の表現に従って実行されるソートの結果もまた、第1のソート列に従って直接実行されたソートの結果とは異なることが見てとれる。具体的には、ソートは、実際の使用要件に従って実行されてよく、このことは本発明では限定されない。
任意で、第1のソート列の数は少なくとも1つであってよく、すなわち、第1のデータをソートするための少なくとも1つの基準があってよい。第1のソート列の数が少なくとも2つであるとき、少なくとも2つの第1のソート列は、主要な第1のソート列と少なくとも1つの二次的な第1のソート列とを含んでよく、その結果、コンピュータノードは、主要な第1のソート列に従って、第1のデータにおけるデータの各部分を最初にソートし、次いで、少なくとも1つの二次的な第1のソート列に従って、第1のデータにおけるデータの各部分を別々にソートしてよい。
例示的に、前述の第1のソート列が“c1,c2+1”であることは例として使用され、ここで、“c1”は主要な第1のソート列であり、且つ、“c2+1”は二次的な第1のソート列である。
さらに、表2に示されるように、第1のソート列が要素列およびシリアル番号列である場合、要素列は、主要な第1のソート列として設定されてよく、且つ、シリアル番号列は、二次的な第1のソート列として設定されてよく、または、シリアル番号列は、主要な第1のソート列として設定されてよく、且つ、要素列は、二次的な第1のソート列として設定されてよい。具体的な設定方式は、実際の要件に従って適応して調整されてよく、このことは本発明では限定されない。
S204. コンピュータノードは、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たすかどうかを検出し、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである。
コンピュータノードが第1のデータをローカルメモリ内にキャッシュするプロセスでは、コンピュータノードは、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たすかどうかを検出してよく、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであってよい。
事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用されてよい。事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであってよく、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであってよく、または、設計要件を満たす任意の他の事前に設定された条件であってよく、このことは本発明では限定されない。
具体的には、コンピュータノードは、ローカルメモリ内にキャッシュされている第2のデータの行数が第1の事前に設定された閾値以上であるかどうかを検出してよく、または、コンピュータノードは、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズが第2の事前に設定された閾値以上であるかどうかを検出してよい。
第1の事前に設定された閾値および第2の事前に設定された閾値の値が、コンピュータノードによって実際に使用されるメモリサイズおよびメモリのデータ処理能力に従って設定されてよく、このことは本発明では限定されないことは留意されるべきである。
S205. コンピュータノードによってローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、コンピュータノードは第2のデータを第1のソート列に従ってソートする。
コンピュータノードが第1のデータをキャッシュするプロセスでは、データベースシステム内のローカルメモリが制限されたサイズおよび制限されたデータ処理能力を有するため、第1のデータは一度にローカルメモリに全てキャッシュされることはできず、すなわち、コンピュータノードは、第1のデータをローカルメモリに一部ずつ別々にキャッシュしてよく、その結果、コンピュータノードは、ローカルメモリに別々にキャッシュされるデータを一部ずつ連続的に処理してよい。具体的には、コンピュータノードは、リアルタイムで、ローカルメモリにキャッシュされている第2のデータの状態に対する統計値を収集してよい。コンピュータノードが、ローカルメモリにキャッシュされている第2のデータが事前に設定された条件を満たすと検出したとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよい。
例えば、第1の事前に設定された閾値が10000行である場合、ローカルメモリ内にキャッシュされている第2のデータの行数が10000行以上であるとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよく、且つ、それに応じて、第2の事前に設定された閾値が6ギガバイトである場合、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズが6ギガバイト以上であるとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよい。
さらに、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズはまた、パーセンテージによって表されてもよい。例えば、ローカルメモリの容量が8ギガバイトである場合、第2の事前に設定された閾値は8ギガバイトの90%(パーセンテージ)であってよく、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズが8ギガバイトの90%よりも大きいとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよい。
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、第1のデータをソートするとき、コンピュータノードは、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートしてよい。
任意の長さを有する二進値は、ハッシュアルゴリズムに従って、固定の長さを有するより小さい二進値にマッピングされてよく、且つ、固定の長さを有するより小さい二進値は、二進値のハッシュ値と呼ばれる。ハッシュ値は、一意のデータを有する、非常にコンパクトな数値の表現形式のセグメントである。例えば、データのセグメントのハッシュ値が計算される場合、データのセグメント内の任意の文字が計算前に変更される限り、変更前後の計算によって得られる2つのハッシュ値もまた異なる。
それに応じて、第1のソート列の数値のハッシュ値は、ハッシュアルゴリズムに従って、第1のソート列の数値の二進値を固定の長さを有するより小さい二進値にマッピングすることによって得られてよい。
S206. コンピュータノードは、ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入する。
データベースでは、属性または属性グループのクエリ速度を改善するために、属性または属性グループ内の同じ値を有するタプル(クラスタコードと呼ばれる)が、連続する物理ブロックに中心に記憶されてよい。この記憶方法はクラスタリングと呼ばれる。クラスタリング方式でデータを記憶することは、クラスタコードに従ってクエリを実行することにおける効率を大きく改善することができる。
コンピュータノードが第2のデータをソートした後、コンピュータノードは、第2のデータをロードするプロセスを完了するために、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータをコンピュータノードによって作成された表に1行ずつ挿入してよい。
具体的には、コンピュータノードは、ソートされた第2のデータをデータベースシステムにおける記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶してよく、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである。
特に、コンピュータノードは、ソートされた第2のデータを記憶媒体内の連続するアイドル状態の物理ブロックにクラスタリング方式で記憶してよく、または、ソートされた第2のデータを記憶媒体内の不連続のアイドル状態の物理ブロックにクラスタリング方式で記憶してよく(例えば、第2のデータにおけるデータのある部分は、いくつかの連続するアイドル状態の物理ブロックにクラスタリング方式で記憶され、且つ、第2のデータにおけるデータの別の部分は、いくつかの他の連続するアイドル状態の物理ブロックにクラスタリング方式で記憶され、ここで、いくつかの連続するアイドル状態の物理ブロックといくつかの他の連続するアイドル状態の物理ブロックは、連続する物理ブロックではない)、具体的な記憶形式は本発明では限定されない。すなわち、前述の記憶形式のいずれが本発明で使用されても、記憶媒体に記憶されたデータが部分的にシーケンシャルであることは保証されることができる。
コンピュータノードは、記憶されるべき第1のデータがデータベースシステム内の記憶媒体に全て記憶されるまで、前述のS202からS206を繰り返し実行してよいことは留意されるべきである。
コンピュータノードは、第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を連続的にソートし、各回ソートされた後に得られたデータの各部分を記憶媒体に記憶してよく、その結果、記憶媒体に記憶された第1のデータは部分的にシーケンシャルであり、すなわち、記憶媒体に記憶された第1のデータにおけるデータの各部分がシーケンシャルに配列されることが保証されることができることは理解されることができる。
例示的に、ユーザが第1のデータ、すなわち、大学におけるダンス部内の500人の学生に関する情報をデータベースシステム内の記憶媒体に記憶して、次のアクセスを容易にする必要がある場合、ユーザは最初に、500人の学生に関する情報をコンピュータノードに入力し、テキストの形式で、コンピュータノードのハードディスク内に情報を記憶する必要がある。コンピュータノードが、500人の学生に関する情報を、ユーザの命令に従って、データベースシステム内の記憶媒体に記憶するプロセスでは、コンピュータノードは、ハードディスク内のテキストから500人の学生に関する情報をデータベースシステム内のローカルメモリに読み出してよい。具体的には、コンピュータノードは、各学生に従って、各学生に関する情報を1行ずつ読み出す方式で、500人の学生に関する情報をローカルメモリに連続的に読み出してよい。
各学生に関する情報が、クラス、氏名、学生番号、年齢、専攻および家族情報等の属性を含むと仮定される。本発明の本実施形態で提供されるクラスタリング記憶方法によると、500人の学生に関する情報は1つの表を構成してよい。表1に示されるように、表1内の各行(すなわち、各学生に関する情報)はタプルであり、且つ、各列(全ての学生に関する項目の情報)は属性である。
500人の学生に関する情報を入力するとき、ユーザは特定の順序に従って情報を入力しなくてよく、従って、ハードディスク内にテキストで記憶される500人の学生に関する情報は、シーケンシャルに配列されないことは留意されるべきである。500人の学生に関する情報の次の再利用を容易にするために、例えば、500人の学生に関する情報に対するクエリおよびソート等の操作を実行するために、500人の学生に関する情報は、長期間使用を容易にし、且つ、繰り返される操作を回避するために、データベースシステム内の記憶媒体に記憶される必要がある。特に、データがデータベースシステム内の記憶媒体に記憶されるとき、対応する表記憶構造は一般に記憶用に使用されてよい。従来技術で提供される表記憶構造と比較すると、本発明の本実施形態で提供される表記憶構造(本発明の本実施形態におけるコンピュータノードによって作成される表の記憶構造)、すなわち、表1に示される表記憶構造は、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることを保証することができる。
前述の表1から、この例では、ユーザによって指定された第1のソート列、すなわち、部分クラスタキー(主キー)はクラスおよび学生番号であってよいことがわかる。これは、各学生が2つの属性、すなわち、クラスと学生番号の両方が決定されるときにのみ決定されることができ、すなわち、各学生は、クラスと学生番号の両方が決定されたときにのみ別の学生と区別されることができるためである。
さらに、図3に示されるように、コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザは、ユーザの要件に従って、クエリ、ソートまたは集約等の対応する操作を記憶媒体に記憶された第1のデータに対して実行してよい。具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法は、以下のステップをさらに含んでよい:
S207. コンピュータノードはクエリ列を決定する。
コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザが第1のデータに対してクエリ操作を実行する必要がある場合、ユーザは対応するクエリ列を指定する必要があり、すなわち、コンピュータノードは、ユーザによって指定されたクエリ列を決定してよく、ここで、クエリ列は、第1のデータに対するクエリ操作を実行するための基準として使用されてよい。
S208. コンピュータノードは、クエリ列を第1のソート列内の1番目のソート列と比較する。
コンピュータノードがクエリ列を決定した後、コンピュータノードは、クエリ列が第1のソート列内の1番目のソート列であるかどうかを決定するために、クエリ列を第1のソート列内の1番目のソート列と比較してよい。
S209. コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出す。
コンピュータノードがクエリ列を決定した後で、且つ、クエリ操作がクエリ列に従って、第1のデータに対して実行される前に、コンピュータノードは、ローカルメモリ内で、データに対するクエリ操作を完了するために、記憶媒体に記憶された第1のデータをローカルメモリに読み出す必要がある。
S207が実行された後、S208およびS209の間の実行順序は、本発明では限定されず、すなわち、本発明では、S208が最初に実行されてよいとともに、次いで、S209が実行され、S209が最初に実行されてよいとともに、次いで、S208が実行され、または、S208およびS209が同時に実行されてよい。
S210. クエリ列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行してよい。
クエリ列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行してよい。
第1のソート列の数が1つである場合、第1のソート列内の1番目のソート列は第1のソート列であり、且つ、第1のソート列の数が2つ以上である場合、第1のソート列内の1番目のソート列は第1のソート列内の主要な第1のソート列であることは理解されることができる。
具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは第1のデータが一部ずつソートされた後に得られるデータを、クラスタリング方式で記憶媒体に記憶してよいため、第1のデータは記憶媒体内で部分的且つシーケンシャルに配列されることが保証されることができる。従って、クエリ操作が、第1のソート列内の1番目のソート列に従って、第1のデータに対して実行される必要があるとき、コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出し、且つ、ローカルメモリ内で、二分探索方式で、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を直接実行してよい。
二分探索は、二面性探索とも呼ばれ、且つ、二分探索の利点は、比較回数が小さく、探索速度が速く、平均性能が高いことであり、且つ、二分探索の欠点は、探索されるべき表が順序付けられた表である必要があり、データを挿入することおよびデータを削除することが比較的難しいことである。従って、二分探索方式は、あまり変更しないが頻繁に探索される順序付けられた表に適用可能である。例示的に、表内の要素が昇順で第1のソート列に従って配列されると仮定され、表の中央位置に記録されるキーワードは探索のキーワードと比較され、且つ、表の中央位置に記録されるキーワードが探索のキーワードと等しい場合、探索は成功であり、そうでなければ、中央位置に記録されるキーワードは表を2つの副表、すなわち、前の副表および次の副表に分割するために使用され、且つ、表の中央位置に記録されるキーワードが探索のキーワードよりも大きい場合、前の副表がさらに探索され、そうでなければ、次の副表がさらに探索される。前述のプロセスは、クエリ条件を満たすデータが見つかるまで繰り返され、且つ、この場合、探索は成功であり、または、前述のプロセスは副表が存在しなくなるまで繰り返され、且つ、この場合、探索は成功ではない。
第1のデータは、記憶媒体内で部分的且つシーケンシャルに配列されるため、コンピュータノードによって、記憶媒体からローカルメモリに読み出される第1のデータもまた、部分的且つシーケンシャルに配列されることは留意されるべきである。第1のデータが、第1のソート列内の1番目のソート列に従って問い合わせられる必要がある場合、コンピュータノードは、前述のS207からS210を実行することによって、ローカルメモリにおける第1のデータ内で、クエリ条件を満たすデータを迅速に見つけることができ、それによって、データをブラウズする回数およびデータを比較する回数を低減し、且つ、データクエリ性能を改善する。
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、図4に示されるように、第1のデータに対応する索引がまた、データを問い合わせるために使用されてもよい。第1のデータに対応する索引は、第1のデータを記憶媒体に記憶するプロセスで作成されてよく、または、第1のデータに対応する索引は、第1のデータが記憶媒体に記憶された後に作成されてよく、このことは本発明では限定されない。
第1のデータに対応する索引は、記憶媒体内の第1のデータの具体的な記憶位置を示すために使用されてよいことは理解されることができる。例えば、第1のデータに対応する索引は、記憶媒体内の、第1のデータが具体的に記憶される物理ブロック、データページおよびデータ行を示すために使用されてよい。
具体的には、第1のデータが、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶媒体に記憶された後、第1のデータは部分的且つシーケンシャルに記憶されるため、探索される必要があるデータ行は、クエリ列および第1のデータに対応する作成された索引に従って、記憶媒体内で直接見つけられることができる。従って、従来技術における、データが非シーケンシャルに記憶される場合と比較して、データを問い合わせる回数は大きく低減されるとともにデータクエリ性能は改善される。
特に、第1のデータに対応する索引に従ってデータを探索するための方法は、従来技術における索引に従ってデータを探索するための方法と同様であるため、詳細はここでは再び説明されない。
S211. コンピュータノードは第2のソート列を決定する。
コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザが第1のデータをソートする必要がある場合、ユーザは対応するソート列を指定する必要があり、すなわち、コンピュータノードは、ユーザによって指定された第2のソート列を決定してよく、ここで、第2のソート列は、第1のデータに対するソート操作を実行するための基準として使用されてよい。
S212. コンピュータノードは、第2のソート列を第1のソート列内の1番目のソート列と比較する。
コンピュータノードが第2のソート列を決定した後、コンピュータノードは、第2のソート列が第1のソート列内の1番目のソート列であるかどうかを決定するために、第2のソート列を第1のソート列内の1番目のソート列と比較してよい。
S213. コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出す。
コンピュータノードが第2のソート列を決定した後で、且つ、ソート操作が第2のソート列に従って、第1のデータに対して実行される前に、コンピュータノードは、ローカルメモリ内で、データに対するソート操作を完了するために、記憶媒体に記憶された第1のデータをローカルメモリに読み出す必要がある。
S211が実行された後、S212およびS213の間の実行順序は、本発明では限定されず、すなわち、本発明では、S212が最初に実行されてよいとともに、次いで、S213が実行され、S213が最初に実行されてよいとともに、次いで、S212が実行され、または、S212およびS213が同時に実行されてよい。
S214. 第2のソート列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する。
第2のソート列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行してよい。
具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは第1のデータが一部ずつソートされた後に得られるデータを、クラスタリング方式で記憶媒体に記憶してよいため、第1のデータは記憶媒体内で部分的且つシーケンシャルに配列されることが保証されることができる。従って、ソート操作が、第1のソート列内の1番目のソート列に従って、第1のデータに対して実行される必要があるとき、コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出し、且つ、ローカルメモリ内で、第1のデータにおけるデータの各部分を直接ソートしてよく、すなわち、コンピュータノードは第1のデータに対してマージソートを実行してよい。
マージ(Merge)ソートは、2つ(または2つより多い)の順序付けられたシーケンスを結合して新しい順序付けられたシーケンスにするためのソート方法である。マージソートは、マージ操作に基づく有効なソートアルゴリズムである。本発明の本実施形態で提供されるマージソートは、コンピュータノードが、記憶媒体にクラスタリング方式で記憶されたいくつかの順序付けられたシーケンスを結合して統合された順序付けられたシーケンスにすることであってよい。
第1のデータは、記憶媒体内で部分的且つシーケンシャルに配列されるため、コンピュータノードによって、記憶媒体からローカルメモリに読み出される第1のデータもまた、部分的且つシーケンシャルに配列されることは留意されるべきである。第1のデータが第1のソート列内の1番目のソート列に従ってソートされる必要がある場合、コンピュータノードは、前述のS211からS214を実行することによって、ローカルメモリ内で、第1のデータを迅速にソートすることができ、その結果、データをソートすることにおける効率が改善されることができる。
S215. コンピュータノードは集約列を決定する。
コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザが第1のデータに対して集約操作を実行する必要がある場合、ユーザは対応する集約列を指定する必要があり、すなわち、コンピュータノードは、ユーザによって指定された集約列を決定してよく、ここで、集約列は、第1のデータに対する集約操作を実行するための基準として使用されてよい。
本発明の本実施形態で提供されるクラスタリング記憶方法では、集約操作は、最大値または最小値について第1のデータを探索する操作であることは留意されるべきである。
S216. コンピュータノードは、集約列を第1のソート列内の1番目のソート列と比較する。
コンピュータノードが集約列を決定した後、コンピュータノードは、集約列が第1のソート列内の1番目のソート列であるかどうかを決定するために、集約列を第1のソート列内の1番目のソート列と比較してよい。
S217. コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出す。
コンピュータノードが集約列を決定した後で、且つ、集約操作が集約列に従って、第1のデータに対して実行される前に、コンピュータノードは、ローカルメモリ内で、データに対する集約操作を完了するために、記憶媒体に記憶された第1のデータをローカルメモリに読み出す必要がある。
S215が実行された後、S216およびS217の間の実行順序は、本発明では限定されず、すなわち、本発明では、S216が最初に実行されてよいとともに、次いで、S217が実行され、S217が最初に実行されてよいとともに、次いで、S216が実行され、または、S216およびS217が同時に実行されてよい。
S218. 集約列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行してよい。
集約列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行してよい。
さらに、コンピュータノードが第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する方法は、具体的には以下を含んでよい:
(1) コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定してよい。
(2) コンピュータノードは、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較する。
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは第1のデータが一部ずつソートされた後に得られるデータを、クラスタリング方式で記憶媒体に記憶してよいため、第1のデータは記憶媒体内で部分的且つシーケンシャルに配列される。従って、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作が実行される必要があるとき、コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出してよく、前述の方法を使用することによって、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を最初に決定し、次いで、コンピュータノードは、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較する。
第1のデータは、記憶媒体内で部分的且つシーケンシャルに配列されるため、コンピュータノードによって、記憶媒体からローカルメモリに読み出される第1のデータもまた、部分的且つシーケンシャルに配列されることは留意されるべきである。第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作が実行される必要がある場合、コンピュータノードは、前述のS215からS218を実行することによって、ローカルメモリ内で、第1のデータに対する集約操作を迅速に完了することができ、すなわち、コンピュータノードは、第1のデータにおける最大値または最小値を迅速に決定することができ、それによって、データを集約することにおける効率を改善する。
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、図4に示されるように、集約操作もまた、第1のデータに対応する索引を使用することによって、データに対して実行されてもよい。第1のデータに対応する索引は、第1のデータを記憶媒体に記憶するプロセスで作成されてよく、または、第1のデータに対応する索引は、第1のデータが記憶媒体に記憶された後に作成されてよく、このことは本発明では限定されない。
第1のデータに対応する索引は、記憶媒体内の第1のデータの具体的な記憶位置を示すために使用されてよいことは理解されることができる。例えば、第1のデータに対応する索引は、記憶媒体内の、第1のデータが具体的に記憶される物理ブロック、データページおよびデータ行を示すために使用されてよい。
具体的には、第1のデータが、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶媒体に記憶された後、第1のデータは部分的且つシーケンシャルに記憶されるため、1つ以上のデータページの各データページにおける最大値または最小値が、集約列および第1のデータに対応する作成された索引に従って、記憶媒体内で直接見つけられることができる。従って、従来技術における、データが非シーケンシャルに記憶される場合と比較して、データに対して集約操作を実行する回数は大きく低減されるとともにデータ集約性能は改善される。
特に、第1のデータに対応する索引に従ってデータに対して集約操作を実行するための方法は、従来技術における方法と同様であるため、詳細はここでは再び説明されない。
S207からS210、S211からS214およびS215からS218の実行順序は本発明では限定されず、すなわち、第1のデータが記憶媒体に全て記憶された後、実行される必要があるステップは実際の操作要件に従って選択されてよいことは理解されることができる。例えば、第1のデータに対するクエリ、ソートおよび集約等の前述の操作に対応する例では、クエリ操作が第1のデータに対して実行される必要がある場合、コンピュータノードはS207からS210を実行してよく、ソート操作が第1のデータに対して実行される必要がある場合、コンピュータノードはS211からS214を実行してよく、集約操作が第1のデータに対して実行される必要がある場合、コンピュータノードはS215からS218を実行してよい。
さらに、前述で挙げられた第1のデータに対して実行される様々な操作は単に例示であり、第1のデータが、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって記憶された後、対応する操作は、別の対応する要件に従って、第1のデータに対してさらに実行されてよく、このことは、本発明では限定されない。
例示的に、表6に示されるように、表6は、TPCH(ビジネス・インテリジェンス・コンピューティング・テスト標準)がデータをテストするために適用されるときの、従来技術で提供されるシーケンシャルな記憶と本発明の本実施形態で提供される部分的にシーケンシャルなクラスタリング記憶との間の実際のテストデータを示す。TPCHは、トランザクション処理性能評議会(Transaction Processing Performance Council, TPC)によって公表され、TPCHは、データベースシステムにおける複雑なクエリの応答時間をテストするために、決定支援システムにおけるデータベース操作をシミュレートすることができる。
Figure 0006553649
表6から、従来技術で提供されるシーケンシャルな記憶方法がデータを記憶するために使用されるときにTPCHを適用することによってデータをテストするための時間は、本発明の本実施形態で提供されるクラスタリング記憶方法がデータを記憶するために使用されるときにTPCHを適用することによってデータをテストするための時間よりもはるかに長いことが見てとれる。すなわち、データを記憶するために、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、TPCHを適用することによってデータをテストするための時間は低減されることができ、それによって、TPCHを適用することによってデータをテストするテスト性能を改善する。
さらに、表6に示されるように、TPCHを適用することによってデータを問い合わせる操作においては、従来技術で提供されるシーケンシャルな記憶と比較すると、本発明の本実施形態で提供される部分的にシーケンシャルなクラスタリング記憶では、TPCHを適用することによってデータを問い合わせるクエリ性能は明らかに改善される。とりわけ、3つのクエリQ6、Q12およびQ15のクエリ性能の改善比は300%を超える。
本発明の本実施形態で提供されるクラスタリング記憶方法は、データベースシステム内の単一の表のシナリオにおいて適用されてよく、または、データベースシステム内の複数の表がジョイン(join)として供するシナリオにおいて適用されてよいことは留意されるべきである。具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法は、実際のユーザ要件に従って適用されてよく、このことは、本発明では限定されない。
本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶されるべき第1のデータは、一部ずつソートされた後、データベースシステム内の記憶媒体に記憶されてよく、且つ、記憶媒体に記憶されたデータの各部分がシーケンシャルに配列されることが保証されることができる。このようにして、記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、記憶媒体に記憶されたデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
本発明の本実施形態で提供されるクラスタリング記憶方法によると、記憶されるべき第1のデータはデータベースシステム内のローカルメモリに1行ずつキャッシュされ、第1のソート列が決定され、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータが第1のソート列に従ってソートされ、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、ソートされた第2のデータがデータベースシステム内の記憶媒体にクラスタリング方式で記憶される。この解決手段を使用することによって、記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、第2のデータは、決定された第1のソート列に従ってソートされ始め、且つ、ソートされた第2のデータはデータベースシステム内の記憶媒体に記憶される。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
実施形態3
図5に示されるように、本発明の実施形態はクラスタリング記憶装置1を提供し、ここで、装置はデータベースシステムにおいて適用される。クラスタリング記憶装置1は、
記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするように構成されるキャッシングユニット10と、
第1のソート列を決定するように構成される決定ユニット11であって、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される、決定ユニット11と、
ローカルメモリ内にキャッシングユニット10によってキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを決定ユニット11によって決定された第1のソート列に従ってソートするように構成される操作ユニット12であって、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである、操作ユニット12と、
操作ユニット12によってソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するように構成される記憶ユニット13と
を含んでよい。
任意で、事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
任意で、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
操作ユニット12は、具体的には、ローカルメモリ内にキャッシングユニット10によってキャッシュされている第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
任意で、事前に設定された条件は、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
操作ユニット12は、具体的には、ローカルメモリの、ローカルメモリ内にキャッシングユニット10によってキャッシュされている第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
任意で、操作ユニット12は、具体的には、決定ユニット11によって決定された、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
任意で、記憶ユニット13は、具体的には、操作ユニット12によってソートされた第2のデータを記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである。
任意で、決定ユニット11によって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
任意で、決定ユニット11は、記憶ユニット13が第1のデータ全てを記憶媒体に記憶した後、クエリ列を決定するようにさらに構成され、且つ、操作ユニット12は、決定ユニット11によって決定されたクエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するようにさらに構成される。
さらに、キャッシングユニット10は、決定ユニット11がクエリ列を決定した後で、且つ、操作ユニット12が第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニット12は、具体的には、ローカルメモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、キャッシングユニット10によってキャッシュされた第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するように構成される。
任意で、決定ユニット11は、記憶ユニット13が第1のデータ全てを記憶媒体に記憶した後、第2のソート列を決定するようにさらに構成され、且つ、操作ユニット12は、決定ユニット11によって決定された第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するようにさらに構成される。
さらに、キャッシングユニット10は、決定ユニット11が第2のソート列を決定した後で、且つ、操作ユニット12が第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニット12は、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニット10によってキャッシュされた第1のデータに対してマージソートを実行するように構成される。
任意で、決定ユニット11は、記憶ユニット13が第1のデータ全てを記憶媒体に記憶した後、集約列を決定するようにさらに構成され、且つ、操作ユニット12は、決定ユニット11によって決定された集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
さらに、キャッシングユニット10は、決定ユニット11が集約列を決定した後で、且つ、操作ユニット12が第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニット12は、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニット10によってキャッシュされた第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するように構成される。
さらに、図6に示されるように、本発明の本実施形態で提供されるクラスタリング記憶装置1は、作成ユニット14をさらに含み、ここで、
作成ユニット14は、キャッシングユニット10が記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする前に、記憶媒体内に表を作成するように構成され、ここで、表は、第1のデータをロードするために使用され、且つ、
操作ユニット12は、具体的には、ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを作成ユニット14によって作成された表に1行ずつ挿入するように構成される。
任意で、決定ユニット11によって決定された第1のソート列の数は少なくとも1つであり、ここで、第1のソート列の数が少なくとも2つであるとき、少なくとも2つの第1のソート列は、主要な第1のソート列と少なくとも1つの二次的な第1のソート列とを含む。
本発明の本実施形態で提供されるクラスタリング記憶装置によると、クラスタリング記憶装置は、記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュし、第1のソート列を決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、クラスタリング記憶装置は、第2のデータを第1のソート列に従ってソートし、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、クラスタリング記憶装置は、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶する。この解決手段を使用することによって、クラスタリング記憶装置が記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、クラスタリング記憶装置は、第2のデータを、決定された第1のソート列に従ってソートし始め、且つ、ソートされた第2のデータをデータベースシステム内の記憶媒体に記憶する。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
実施形態4
図7に示されるように、本発明の実施形態はデータベースシステムを提供し、ここで、データベースシステムはハードウェアエンティティおよびソフトウェア環境を含んでよい。ハードウェアエンティティはコンピュータノードであってよく、且つ、ソフトウェア環境はデータベース環境であってよく、ここで、コンピュータノードはプロセッサ20を含んでよく、且つ、データベース環境は底層記憶媒体21とメモリ22とを含んでよく、ここで、
底層記憶媒体21は、記憶されるべき第1のデータを記憶するように構成され、
メモリ22は底層記憶媒体21に結合されるとともに底層記憶媒体21のキャッシュとして役割を果たすために使用され、且つ、底層記憶媒体21における1つ以上のデータブロックはキャッシュ内のターゲットデータブロックにマッピングされることは理解されるべきであり、
プロセッサ20はメモリ22に結合され、且つ、プロセッサ20は、
記憶されるべき第1のデータをメモリ22に1行ずつキャッシュし、第1のソート列を決定し、メモリ22内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートし、ソートされた第2のデータを底層記憶媒体21にクラスタリング方式で記憶するためにメモリ22内の命令を実行し、ここで、第1のソート列は、メモリ22内にキャッシュされているデータをソートするために使用され、第2のデータは、第1のデータ内の、メモリ22内にキャッシュされているデータである。
任意で、事前に設定された条件は、メモリ22内にキャッシュされている第2のデータのデータ量とメモリ22内の記憶用に許可されているデータ量との間の関係を表すために使用される。
任意で、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
プロセッサ20は、具体的には、メモリ22内にキャッシュされている第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
任意で、事前に設定された条件は、メモリ22の、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
プロセッサ20は、具体的には、メモリ22の、メモリ22内にキャッシュされている第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
任意で、プロセッサ20は、具体的には、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
任意で、プロセッサ20は、具体的には、ソートされた第2のデータを底層記憶媒体21内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に底層記憶媒体21にクラスタリング方式で記憶されているデータである。
任意で、プロセッサ20によって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
任意で、プロセッサ20は、第1のデータが底層記憶媒体21に全て記憶された後、クエリ列を決定し、クエリ列が第1のソート列内の1番目のソート列であるかどうかを決定し、クエリ列が第1のソート列内の1番目のソート列であると決定された場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行し、クエリ結果を出力するようにさらに構成される。
さらに、プロセッサ20は、クエリ列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、底層記憶媒体21に記憶された第1のデータをメモリ22に読み出すようにさらに構成され、且つ、
プロセッサ20は、具体的には、メモリ22内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行し、クエリ結果を出力するように構成される。
任意で、プロセッサ20は、第1のデータが底層記憶媒体21に全て記憶された後、第2のソート列を決定し、第2のソート列が第1のソート列内の1番目のソート列であるかどうかを決定し、第2のソート列が第1のソート列内の1番目のソート列であると決定された場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行し、ソートされた第1のデータを出力するようにさらに構成される。
さらに、プロセッサ20は、第2のソート列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、底層記憶媒体21に記憶された第1のデータをメモリ22に読み出すようにさらに構成され、且つ、
プロセッサ20は、具体的には、メモリ22内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してマージソートを実行し、ソートされた第1のデータを出力するように構成される。
任意で、プロセッサ20は、第1のデータが底層記憶媒体21に全て記憶された後、集約列を決定し、集約列が第1のソート列内の1番目のソート列であるかどうかを決定し、集約列が第1のソート列内の1番目のソート列であると決定された場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行し、集約操作を実行した結果を出力するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
さらに、プロセッサ20は、集約列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、底層記憶媒体21に記憶された第1のデータをメモリ22に読み出すようにさらに構成され、且つ、
プロセッサ20は、具体的には、メモリ22内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較し、最大値または最小値を出力するように構成される。
さらに、プロセッサ20は、記憶されるべき第1のデータがメモリ22に1行ずつキャッシュされる前に、底層記憶媒体21内に表を作成するようにさらに構成され、ここで、表は第1のデータをロードするために使用され、且つ、
プロセッサ20は、具体的には、ソートされた第2のデータを底層記憶媒体21にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入するように構成される。
任意で、プロセッサ20によって決定された第1のソート列の数は少なくとも1つであり、ここで、第1のソート列の数が少なくとも2つであるとき、少なくとも2つの第1のソート列は、主要な第1のソート列と少なくとも1つの二次的な第1のソート列とを含む。
本発明の本実施形態では、コンピュータノードは、クラスタリング方式でデータを記憶することができるコンピュータまたは任意の他のデバイスであってよく、このことは、本発明では限定されない。すなわち、本発明の実施形態で提供されるクラスタリング記憶方法を実施することができる装置およびデバイスの両方が、本発明の保護範囲に包含されるべきである。
本発明の本実施形態で提供されるデータベースシステムによると、データベースシステム内のコンピュータノードは、記憶されるべき第1のデータをデータベースシステム内のメモリに1行ずつキャッシュし、第1のソート列を決定し、ここで、第1のソート列は、メモリ内にキャッシュされているデータをソートするために使用され、メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、コンピュータノードは、第2のデータを第1のソート列に従ってソートし、ここで、第2のデータは、第1のデータ内の、メモリ内にキャッシュされているデータであり、コンピュータノードは、ソートされた第2のデータをデータベースシステム内の底層記憶媒体にクラスタリング方式で記憶する。この解決手段を使用することによって、コンピュータノードが記憶されるべき第1のデータをメモリに1行ずつキャッシュするプロセスでは、メモリ内にキャッシュされている第2のデータのデータ量がメモリ内の記憶用に許可されているデータ量を超過しているとき、コンピュータノードは、第2のデータを、決定された第1のソート列に従ってソートし始め、且つ、ソートされた第2のデータを底層記憶媒体に記憶する。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の底層記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
実施形態5
本発明の実施形態で提供されるクラスタリング記憶方法をより明確に理解するために、以下では、本発明の実施形態で提供されるクラスタリング記憶方法をさらに説明するために具体例を使用する。図8に示されるように、記憶されるべき第1のデータは、9000000行の学生データであり、具体的には、データの各行は、図9に示されるクラス、学生番号および氏名等の各学生に関する情報を示すと仮定される。
図9に示されるように、Aはソートされていないデータを示し、且つ、Bは、ソートされるとともに、本発明の実施形態で提供されるクラスタリング記憶方法を使用することによって記憶された後に得られるデータを示すことは留意されるべきである。
データベースシステムでは、本発明の実施形態で提供されるクラスタリング記憶方法を使用することによって、クラスタリング方式で第1のデータを記憶するプロセスは、具体的には、以下のようになる:
(1) コンピュータノードは、記憶されるべき学生データをデータベースシステム内のローカルメモリ内に1行ずつキャッシュする。
(2) コンピュータノードは、第1のソート列がクラスおよび学生番号であることを決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされている学生データをソートするために使用され、且つ、ソート列は、実際の要件に従ってユーザによって指定される。
(3) ローカルメモリ内にキャッシュされている学生データが、本発明の本実施形態で提供される事前に設定された条件を満たす場合、コンピュータノードは、学生のクラスおよび学生番号に従って、ローカルメモリ内にキャッシュされている学生データをソートする。
(4) コンピュータノードは、データベースシステム内の記憶媒体に、クラスタリング方式で、ローカルメモリ内のソートされた学生データを記憶する。
(5) コンピュータノードは、記憶されるべき学生データが記憶媒体に一部ずつ全てソートおよび記憶されるまで、(1)から(4)を周期的に実行する。
例示的に、図9に示されるAでは、記憶されるべき学生データの12個の行があり、且つ、学生データの12個の行は非シーケンシャルに記憶される。本発明の実施形態で提供されるクラスタリング記憶方法が学生データを記憶するために使用されるとき、コンピュータノードは、学生データの第1の行から開始して、学生データをデータベースシステム内のローカルメモリ内に1行ずつキャッシュしてよい。図9におけるB1に示されるように、学生データの6個の行のみが各回ローカルメモリ内にキャッシュされることができると仮定され、且つ、コンピュータノードが学生データの6個の行をローカルメモリ内にキャッシュしたとき、コンピュータノードは、学生データの6個の行をソートし、ソートされた学生データの6個の行をデータベースシステム内の記憶媒体にクラスタリング方式で記憶してよい。図9におけるB2に示されるように、コンピュータノードが学生データの6個の行の記憶を完了した後、コンピュータノードは、学生データの他の6個の行をローカルメモリ内に1行ずつキャッシュし、キャッシングが完了した後の学生データの他の6個の行をソートし、ソートされた学生データの他の6個の行を記憶媒体内にクラスタリング方式で記憶し続けてよい。この場合、図9におけるBに示されるように、コンピュータノードは、学生データの全ての記憶されるべき12個の行を記憶媒体にクラスタリング方式で記憶し、且つ、学生データの12個の行は、記憶媒体に部分的且つシーケンシャルに記憶される。
さらに、学生データをキャッシュするとき、コンピュータノードは、ローカルメモリのサイズに従って学生データをキャッシュしてよい。具体的には、コンピュータノードによって一度にキャッシュされる学生データのいくつかの行のサイズが比較的大きい場合、コンピュータノードによってこの回にキャッシュされる学生データの行数は比較的小さく、それとは逆に、コンピュータノードによって一度にキャッシュされる学生データのいくつかの行のサイズが比較的小さい場合、コンピュータノードによってこの回にキャッシュされる学生データの行数は比較的大きい。具体的には、コンピュータノードによってキャッシュされる学生データのサイズは、実際の状態に従って決定されてよく、このことは、本発明では限定されない。
本発明の実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは、データベースシステム内のローカルメモリの処理能力に従って、記憶されるべきデータを1行ずつキャッシュしてよく、且つ、ローカルメモリ内にキャッシュされたデータの一部がローカルメモリの処理能力を超えるとき、コンピュータノードは、ユーザによって指定された決定されたソート列に従って、データのその部分をソートし始めて、ソートされたデータの部分をデータベースシステム内の記憶媒体に記憶してよい。コンピュータノードは、記憶されるべきデータを、データローディングを完了するために、一部ずつソートして、ソートされたデータを記憶してよいため、記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
便利且つ簡潔な説明のために、前述の機能モジュールの分割は説明のための例として使用されることは当業者によって明確に理解されることができる。実際の適用では、前述の機能は、異なる機能モジュールに割り当てられ、且つ、要件に従って実施されてよく、すなわち、装置の内部構造は異なる機能モジュールに分割されて、上記で説明された機能の全てまたはいくつかを実施する。前述のシステム、装置およびユニットの詳細な動作プロセスのために、前述の方法の実施形態における対応するプロセスに対して参照が行われてよく、且つ、詳細はここでは再び説明されない。
本願で提供されるいくつかの実施形態では、開示されたシステム、装置および方法が他の方式で実施されてよいことは理解されるべきである、例えば、説明された装置の実施形態は、単に例示である。例えば、モジュールまたはユニット分割は単に、論理的な機能の分割であり、且つ、実際の実施では他の分割であってよい。例えば、複数のユニットまたはコンポーネントは、別のシステムに結合または統合されてよく、または、いくつかの特徴は無視されるかまたは実行されなくてよい。加えて、表示または議論された相互結合または直接結合または通信接続は、いくつかのインタフェースを介して実施されてよい。装置またはユニット間の間接結合または通信接続は、電子的、機械的または別の形態で実施されてよい。
分離した部分として説明されたユニットは物理的に分離していてもいなくてもよく、且つ、ユニットとして表示された部分は、物理ユニットであってもなくてもよく、1つの位置に配置されてよく、または、複数のネットワークユニット上に分配されてよい。ユニットのいくつかまたはすべては、実施形態の解決手段の目的を達成するために、実際のニーズに従って選択されてよい。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてよく、または、ユニットの各々は、物理的に孤立して存在してよく、または、2つ以上のユニットは1つのユニットに統合される。統合されたユニットは、ハードウェアの形態で実施されてよく、または、ソフトウェア機能ユニットの形態で実施されてよい。
統合されたユニットが、ソフトウェア機能ユニットの形態で実施されて、独立した製品として販売または使用されるとき、統合されたユニットは、コンピュータ可読記憶媒体に記憶されてよい。このような理解に基づくと、本発明の技術的解決手段は本質的に、または従来技術に貢献する部分は、または技術的解決手段の全てまたはいくつかは、ソフトウェア製品の形態で実施されてよい。ソフトウェア製品は記憶媒体に記憶されるとともに、本発明の実施形態で説明される方法のステップの全てまたはいくつかを実行するように、コンピュータデバイス(パーソナルコンピュータ、サーバまたはネットワークデバイスであってよい)またはプロセッサ(processor)に命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読出し専用メモリ(ROM, Read-Only Memory)、ランダムアクセスメモリ(RAM, Random Access Memory)、磁気ディスクまたは光ディスク等のプログラムコードを記憶することができる任意の媒体を含む。
前述の説明は、単に、本発明の具体的な実施方式であるが、本発明の保護範囲を限定するように意図されない。本発明で開示される技術的範囲内で当業者によって容易に理解される任意の変更または置換は、本発明の保護範囲に包含されるべきである。従って、本発明の保護範囲は、請求項の保護範囲に従うべきである。
1 クラスタリング記憶装置
10 キャッシングユニット
11 決定ユニット
12 操作ユニット
13 記憶ユニット
14 作成ユニット
20 プロセッサ
21 底層記憶媒体
22 メモリ

Claims (42)

  1. コンピュータノードによって実行されるクラスタリング記憶方法であって、前記方法はデータベースシステムにおいて適用され、且つ、
    記憶されるべき第1のデータを前記データベースシステム内のローカルメモリに一部ずつキャッシュするステップと、
    第1のソート列を決定するステップであって、前記第1のソート列は、前記ローカルメモリ内にキャッシュされているデータをソートするために使用される、ステップと、
    前記ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、前記ローカルメモリ内にキャッシュされている前記第2のデータを前記第1のソート列に従ってソートするステップであって、前記第2のデータは、前記第1のデータの一部である、ステップと、
    ソートされた前記第2のデータを前記データベースシステム内の記憶媒体にクラスタリング方式で記憶するステップと、
    前記記憶されるべき第1のデータが前記データベースシステム内の前記記憶媒体に全て記憶されるまで、前述のステップを繰り返し実行するステップであって、前記第1のデータは一部ずつソートされ、一部ずつソートされた前記第1のデータは前記データベースシステム内の前記記憶媒体に連続的に記憶され、それによって前記記憶媒体に記憶された前記第1のデータは部分的にシーケンシャルである、ステップと
    を含む、クラスタリング記憶方法。
  2. 前記事前に設定された条件は、前記ローカルメモリ内にキャッシュされている前記第2のデータのデータ量と前記ローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される、請求項1に記載のクラスタリング記憶方法。
  3. 前記事前に設定された条件は、前記第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
    前記ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、前記第2のデータを前記第1のソート列に従ってソートする前記ステップは、具体的には、
    前記第2のデータの前記行数が前記第1の事前に設定された閾値以上である場合、前記第1のソート列に従って、前記第2のデータをソートするステップを含む、請求項1または2に記載のクラスタリング記憶方法。
  4. 前記事前に設定された条件は、前記ローカルメモリの、前記第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
    前記ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、前記第2のデータを前記第1のソート列に従ってソートする前記ステップは、具体的には、
    前記ローカルメモリの、前記第2のデータによって占有される前記サイズが、前記第2の事前に設定された閾値以上である場合、前記第1のソート列に従って、前記第2のデータをソートするステップを含む、請求項1または2に記載のクラスタリング記憶方法。
  5. 前記第1のソート列に従って、前記第2のデータをソートする前記ステップは、具体的には、
    前記第1のソート列の数値または前記第1のソート列の数値のハッシュ値に従って、前記第2のデータをソートするステップを含む、請求項1乃至4のいずれか1項に記載のクラスタリング記憶方法。
  6. ソートされた前記第2のデータを前記データベースシステム内の記憶媒体にクラスタリング方式で記憶する前記ステップは、具体的には、
    ソートされた前記第2のデータを前記記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するステップであって、前記アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、前記第3のデータは、前記第1のデータ内の、前記第2のデータよりも先に前記記憶媒体にクラスタリング方式で記憶されているデータである、ステップを含む、請求項1乃至5のいずれか1項に記載のクラスタリング記憶方法。
  7. 前記第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む、請求項1乃至6のいずれか1項に記載のクラスタリング記憶方法。
  8. 前記第1のデータが前記記憶媒体に全て記憶された後、前記方法は、
    クエリ列を決定するステップと、
    前記クエリ列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行するステップと
    をさらに含む、請求項1乃至7のいずれか1項に記載のクラスタリング記憶方法。
  9. クエリ列を決定する前記ステップの後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行する前記ステップの前に、前記方法は、
    前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すステップをさらに含み、
    前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行する前記ステップは、具体的には、
    前記ローカルメモリ内で、二分探索方式で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するステップを含む、請求項8に記載のクラスタリング記憶方法。
  10. 前記第1のデータが前記記憶媒体に全て記憶された後、前記方法は、
    第2のソート列を決定するステップと、
    前記第2のソート列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行するステップと
    をさらに含む、請求項1乃至7のいずれか1項に記載のクラスタリング記憶方法。
  11. 第2のソート列を決定する前記ステップの後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行する前記ステップの前に、前記方法は、
    前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すステップをさらに含み、
    前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行する前記ステップは、具体的には、
    前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してマージソートを実行するステップを含む、請求項10に記載のクラスタリング記憶方法。
  12. 前記第1のデータが前記記憶媒体に全て記憶された後、前記方法は、
    集約列を決定するステップと、
    前記集約列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行するステップであって、前記集約操作は、最大値または最小値について前記第1のデータを探索する操作である、ステップと
    をさらに含む、請求項1乃至7のいずれか1項に記載のクラスタリング記憶方法。
  13. 集約列を決定する前記ステップの後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行する前記ステップの前に、前記方法は、
    前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すステップをさらに含み、
    前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行する前記ステップは、具体的には、
    前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定するステップと、
    前記第1のデータにおける最大値または最小値を決定するために、各データページにおける前記最大値または前記最小値を連続的に比較するステップとを含む、請求項12に記載のクラスタリング記憶方法。
  14. 記憶されるべき第1のデータを前記データベースシステム内のローカルメモリに1行ずつキャッシュする前記ステップの前に、前記方法は、
    前記記憶媒体内に表を作成するステップであって、前記表は、前記第1のデータをロードするために使用される、ステップをさらに含み、
    ソートされた前記第2のデータを前記データベースシステム内の記憶媒体にクラスタリング方式で記憶する前記ステップは、具体的には、
    ソートされた前記第2のデータを前記記憶媒体にクラスタリング方式で記憶するために、ソートされた前記第2のデータを前記表に1行ずつ挿入するステップを含む、請求項1に記載のクラスタリング記憶方法。
  15. クラスタリング記憶装置であって、前記装置はデータベースシステムにおいて適用され、且つ、
    記憶されるべき第1のデータを前記データベースシステム内のローカルメモリに一部ずつキャッシュするように構成されるキャッシングユニットと、
    第1のソート列を決定するように構成される決定ユニットであって、前記第1のソート列は、前記ローカルメモリ内にキャッシュされているデータをソートするために使用される、決定ユニットと、
    前記キャッシングユニットによって前記ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、前記第2のデータを前記決定ユニットによって決定された前記第1のソート列に従ってソートするように構成される操作ユニットであって、前記第2のデータは、前記第1のデータの一部である、操作ユニットと、
    前記操作ユニットによってソートされた前記第2のデータを前記データベースシステム内の記憶媒体にクラスタリング方式で記憶するように構成される記憶ユニットであって、前記第1のデータは一部ずつソートされ、一部ずつソートされた前記第1のデータは前記データベースシステム内の前記記憶媒体に連続的に記憶され、それによって前記記憶媒体に記憶された前記第1のデータは部分的にシーケンシャルである、記憶ユニット
    を含む、クラスタリング記憶装置。
  16. 前記事前に設定された条件は、前記ローカルメモリ内にキャッシュされている前記第2のデータのデータ量と前記ローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される、請求項15に記載のクラスタリング記憶装置。
  17. 前記事前に設定された条件は、前記第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
    前記操作ユニットは、具体的には、前記第2のデータの前記行数が前記第1の事前に設定された閾値以上である場合、前記第1のソート列に従って、前記第2のデータをソートするように構成される、請求項15または16に記載のクラスタリング記憶装置。
  18. 前記事前に設定された条件は、前記ローカルメモリの、前記第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
    前記操作ユニットは、具体的には、前記ローカルメモリの、前記第2のデータによって占有される前記サイズが、前記第2の事前に設定された閾値以上である場合、前記第1のソート列に従って、前記第2のデータをソートするように構成される、請求項15または16に記載のクラスタリング記憶装置。
  19. 前記操作ユニットは、具体的には、前記決定ユニットによって決定された、前記第1のソート列の数値または前記第1のソート列の数値のハッシュ値に従って、前記第2のデータをソートするように構成される、請求項15乃至18のいずれか1項に記載のクラスタリング記憶装置。
  20. 前記記憶ユニットは、具体的には、前記操作ユニットによってソートされた前記第2のデータを前記記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、前記アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、前記第3のデータは、前記第1のデータ内の、前記第2のデータよりも先に前記記憶媒体にクラスタリング方式で記憶されているデータである、請求項15乃至19のいずれか1項に記載のクラスタリング記憶装置。
  21. 前記決定ユニットによって決定された前記第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む、請求項15乃至20のいずれか1項に記載のクラスタリング記憶装置。
  22. 前記決定ユニットは、前記記憶ユニットが前記第1のデータ全てを前記記憶媒体に記憶した後、クエリ列を決定するようにさらに構成され、且つ、
    前記操作ユニットは、前記決定ユニットによって決定された前記クエリ列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行するようにさらに構成される、請求項15乃至21のいずれか1項に記載のクラスタリング記憶装置。
  23. 前記キャッシングユニットは、前記決定ユニットが前記クエリ列を決定した後で、且つ、前記操作ユニットが前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記クエリ操作を実行する前に、前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すようにさらに構成され、且つ、
    前記操作ユニットは、具体的には、前記ローカルメモリ内で、二分探索方式で、前記第1のソート列内の前記1番目のソート列に従って、前記キャッシングユニットによってキャッシュされた前記第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するように構成される、請求項22に記載のクラスタリング記憶装置。
  24. 前記決定ユニットは、前記記憶ユニットが前記第1のデータ全てを前記記憶媒体に記憶した後、第2のソート列を決定するようにさらに構成され、且つ、
    前記操作ユニットは、前記決定ユニットによって決定された前記第2のソート列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行するようにさらに構成される、請求項15乃至21のいずれか1項に記載のクラスタリング記憶装置。
  25. 前記キャッシングユニットは、前記決定ユニットが前記第2のソート列を決定した後で、且つ、前記操作ユニットが前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記ソート操作を実行する前に、前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すようにさらに構成され、且つ、
    前記操作ユニットは、具体的には、前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記キャッシングユニットによってキャッシュされた前記第1のデータに対してマージソートを実行するように構成される、請求項24に記載のクラスタリング記憶装置。
  26. 前記決定ユニットは、前記記憶ユニットが前記第1のデータ全てを前記記憶媒体に記憶した後、集約列を決定するようにさらに構成され、且つ、
    前記操作ユニットは、前記決定ユニットによって決定された前記集約列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行するようにさらに構成され、前記集約操作は、最大値または最小値について前記第1のデータを探索する操作である、請求項15乃至21のいずれか1項に記載のクラスタリング記憶装置。
  27. 前記キャッシングユニットは、前記決定ユニットが前記集約列を決定した後で、且つ、前記操作ユニットが前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記集約操作を実行する前に、前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すようにさらに構成され、且つ、
    前記操作ユニットは、具体的には、前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記キャッシングユニットによってキャッシュされた前記第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、前記第1のデータにおける最大値または最小値を決定するために、各データページにおける前記最大値または前記最小値を連続的に比較するように構成される、請求項26に記載のクラスタリング記憶装置。
  28. 前記クラスタリング記憶装置は、作成ユニットをさらに含み、
    前記作成ユニットは、前記キャッシングユニットが前記記憶されるべき第1のデータを前記データベースシステム内の前記ローカルメモリに1行ずつキャッシュする前に、前記記憶媒体内に表を作成するように構成され、前記表は、前記第1のデータをロードするために使用され、且つ、
    前記操作ユニットは、具体的には、ソートされた前記第2のデータを前記記憶媒体にクラスタリング方式で記憶するために、ソートされた前記第2のデータを前記作成ユニットによって作成された前記表に1行ずつ挿入するように構成される、請求項15に記載のクラスタリング記憶装置。
  29. 底層記憶媒体と、
    前記底層記憶媒体に結合され、且つ、前記底層記憶媒体のキャッシュとして役割を果たすように構成されるメモリと、
    前記メモリに結合されたプロセッサとを含むデータベースシステムであって、
    記憶されるべき第1のデータを前記メモリに一部ずつキャッシュし、第1のソート列を決定し、前記メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、ローカルメモリ内にキャッシュされている前記第2のデータを前記第1のソート列に従ってソートし、ソートされた前記第2のデータを前記底層記憶媒体にクラスタリング方式で記憶し、前記記憶されるべき第1のデータが前記データベースシステム内の前記記憶媒体に全て記憶されるまで、前述のステップを繰り返し実行するために、前記プロセッサは前記メモリ内の命令を実行し、前記第1のソート列は、前記メモリ内にキャッシュされているデータをソートするために使用され、前記第2のデータは、前記第1のデータの一部であり、前記第1のデータは一部ずつソートされ、一部ずつソートされた前記第1のデータは前記データベースシステム内の前記記憶媒体に連続的に記憶され、それによって前記記憶媒体に記憶された前記第1のデータは部分的にシーケンシャルである、データベースシステム。
  30. 前記事前に設定された条件は、前記メモリ内にキャッシュされている前記第2のデータのデータ量と前記メモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される、請求項29に記載のデータベースシステム。
  31. 前記事前に設定された条件は、前記第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
    前記メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、前記第2のデータを前記第1のソート列に従ってソートする態様では、前記プロセッサは、具体的には、前記第2のデータの前記行数が前記第1の事前に設定された閾値以上である場合、前記第1のソート列に従って、前記第2のデータをソートするように構成される、請求項29または30に記載のデータベースシステム。
  32. 前記事前に設定された条件は、前記メモリの、前記第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
    前記メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、前記第2のデータを前記第1のソート列に従ってソートする態様では、前記プロセッサは、具体的には、前記メモリの、前記第2のデータによって占有される前記サイズが、前記第2の事前に設定された閾値以上である場合、前記第1のソート列に従って、前記第2のデータをソートするように構成される、請求項29または30に記載のデータベースシステム。
  33. 前記第1のソート列に従って、前記第2のデータをソートする態様では、前記プロセッサは、具体的には、前記第1のソート列の数値または前記第1のソート列の数値のハッシュ値に従って、前記第2のデータをソートするように構成される、請求項29乃至32のいずれか1項に記載のデータベースシステム。
  34. ソートされた前記第2のデータを前記底層記憶媒体にクラスタリング方式で記憶する態様では、前記プロセッサは、具体的には、前記第2のデータを前記底層記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、前記アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、前記第3のデータは、前記第1のデータ内の、前記第2のデータよりも先に前記底層記憶媒体にクラスタリング方式で記憶されているデータである、請求項29乃至33のいずれか1項に記載のデータベースシステム。
  35. 前記プロセッサによって決定された前記第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む、請求項29乃至34のいずれか1項に記載のデータベースシステム。
  36. 前記プロセッサは、前記第1のデータが前記底層記憶媒体に全て記憶された後、クエリ列を決定し、前記クエリ列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行するようにさらに構成される、請求項29乃至35のいずれか1項に記載のデータベースシステム。
  37. 前記プロセッサは、前記クエリ列を決定した後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記クエリ操作を実行する前に、前記底層記憶媒体に記憶された前記第1のデータを前記メモリに読み出し、前記メモリ内で、二分探索方式で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するようにさらに構成される、請求項36に記載のデータベースシステム。
  38. 前記プロセッサは、前記第1のデータが前記底層記憶媒体に全て記憶された後、第2のソート列を決定し、前記第2のソート列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行するようにさらに構成される、請求項29乃至35のいずれか1項に記載のデータベースシステム。
  39. 前記プロセッサは、前記第2のソート列を決定した後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記ソート操作を実行する前に、前記底層記憶媒体に記憶された前記第1のデータを前記メモリに読み出し、前記メモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してマージソートを実行するようにさらに構成される、請求項38に記載のデータベースシステム。
  40. 前記プロセッサは、前記第1のデータが前記底層記憶媒体に全て記憶された後、集約列を決定し、前記集約列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行するようにさらに構成され、前記集約操作は、最大値または最小値について前記第1のデータを探索する操作である、請求項29乃至35のいずれか1項に記載のデータベースシステム。
  41. 前記プロセッサは、前記集約列を決定した後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記集約操作を実行する前に、前記底層記憶媒体に記憶された前記第1のデータを前記メモリに読み出し、前記メモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、前記第1のデータにおける最大値または最小値を決定するために、各データページにおける前記最大値または前記最小値を連続的に比較するようにさらに構成される、請求項40に記載のデータベースシステム。
  42. 前記プロセッサは、前記記憶されるべき第1のデータが前記メモリに1行ずつキャッシュされる前に、前記底層記憶媒体内に表を作成し、ソートされた前記第2のデータを前記底層記憶媒体にクラスタリング方式で記憶するために、ソートされた前記第2のデータを前記表に1行ずつ挿入するようにさらに構成され、前記表は、前記第1のデータをロードするために使用される、請求項29に記載のデータベースシステム。
JP2016569821A 2014-05-27 2014-11-24 クラスタリング記憶方法および装置 Active JP6553649B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201410228979.8 2014-05-27
CN201410228979.8A CN104021161B (zh) 2014-05-27 2014-05-27 一种聚簇存储方法及装置
PCT/CN2014/092058 WO2015180432A1 (zh) 2014-05-27 2014-11-24 一种聚簇存储方法及装置

Publications (2)

Publication Number Publication Date
JP2017526027A JP2017526027A (ja) 2017-09-07
JP6553649B2 true JP6553649B2 (ja) 2019-07-31

Family

ID=51437915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016569821A Active JP6553649B2 (ja) 2014-05-27 2014-11-24 クラスタリング記憶方法および装置

Country Status (7)

Country Link
US (1) US10817258B2 (ja)
EP (1) EP3133505A4 (ja)
JP (1) JP6553649B2 (ja)
KR (1) KR101972645B1 (ja)
CN (2) CN104021161B (ja)
RU (1) RU2663358C2 (ja)
WO (1) WO2015180432A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021161B (zh) * 2014-05-27 2018-06-15 华为技术有限公司 一种聚簇存储方法及装置
US20160306810A1 (en) * 2015-04-15 2016-10-20 Futurewei Technologies, Inc. Big data statistics at data-block level
CN108304408B (zh) * 2017-01-12 2021-04-02 中国移动通信集团公司 一种缓存数据刷新方法及装置
CN107239381B (zh) * 2017-06-07 2021-09-07 北京奇虎科技有限公司 崩溃信息的处理方法、装置及系统
CN108009195B (zh) * 2017-10-23 2022-06-28 环亚数据技术有限公司 一种基于大数据的降维转换方法、电子设备、存储介质
KR101969652B1 (ko) * 2017-11-17 2019-04-16 경북대학교 산학협력단 데이터 전달 장치, 방법과 그를 이용한 사물 인터넷 시스템, 데이터 전달 방법을 실행하기 위한 프로그램이 기록된 기록매체 및 하드웨어와 결합하여 데이터 전달 방법을 실행하기 위하여 매체에 저장된 프로그램
CN109918369B (zh) * 2017-12-13 2024-01-23 金篆信科有限责任公司 数据存储方法及装置
CN110858122B (zh) * 2018-08-23 2023-10-20 杭州海康威视系统技术有限公司 存储数据的方法和装置
CN109189763A (zh) * 2018-09-17 2019-01-11 北京锐安科技有限公司 一种数据存储方法、装置、服务器及存储介质
CN109634955B (zh) * 2018-11-15 2021-07-27 金蝶软件(中国)有限公司 数据存储方法、数据检索方法和装置
CN111339210B (zh) * 2018-12-18 2023-04-28 杭州海康威视数字技术股份有限公司 数据聚类方法及装置
CN109783052B (zh) * 2018-12-27 2021-11-12 深圳市轱辘车联数据技术有限公司 数据排序方法、装置、服务器及计算机可读存储介质
CN109949378B (zh) * 2019-03-26 2021-06-08 中国科学院软件研究所 图像灰度值排序方法、装置、电子设备及计算机可读介质
CN112148691B (zh) * 2019-06-27 2024-03-26 金世超 数据存储方法和数据存储引擎
CN111221917B (zh) * 2019-10-12 2023-05-26 中国平安财产保险股份有限公司 智能分区存储方法、装置及计算机可读存储介质
CN111581929B (zh) * 2020-04-22 2022-09-27 腾讯科技(深圳)有限公司 基于表格的文本生成方法及相关装置
CN111708954B (zh) * 2020-05-22 2023-10-27 微梦创科网络科技(中国)有限公司 一种排行榜的排名方法及系统
CN113900622B (zh) * 2021-09-22 2022-04-08 中国科学院国家空间科学中心 一种基于fpga的数据信息快速排序方法、系统、设备及存储介质
CN115576947A (zh) * 2022-10-19 2023-01-06 北京力控元通科技有限公司 一种数据管理方法、装置、组合库、电子设备及存储介质
CN116150212B (zh) * 2023-04-24 2023-07-07 苏州映赛智能科技有限公司 数据处理方法及设备

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0581343A (ja) * 1991-09-21 1993-04-02 Toshiba Corp データ処理装置
JPH0581342A (ja) * 1991-09-21 1993-04-02 Toshiba Corp データ処理装置
US5742806A (en) * 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
US6026406A (en) * 1997-06-04 2000-02-15 Oracle Corporation Batch processing of updates to indexes
JP3864703B2 (ja) * 2001-01-11 2007-01-10 豊田合成株式会社 エアバッグとそのラッピング方法
US6907422B1 (en) * 2001-12-18 2005-06-14 Siebel Systems, Inc. Method and system for access and display of data from large data sets
US20030158842A1 (en) * 2002-02-21 2003-08-21 Eliezer Levy Adaptive acceleration of retrieval queries
US7370068B1 (en) * 2002-09-04 2008-05-06 Teradata Us, Inc. Sorting of records with duplicate removal in a database system
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
JP2005135221A (ja) * 2003-10-31 2005-05-26 Turbo Data Laboratory:Kk 表形式データの結合方法、結合装置およびプログラム
US8478755B2 (en) 2006-04-20 2013-07-02 Microsoft Corporation Sorting large data sets
US20080059492A1 (en) 2006-08-31 2008-03-06 Tarin Stephen A Systems, methods, and storage structures for cached databases
US8108355B2 (en) * 2006-10-27 2012-01-31 Hewlett-Packard Development Company, L.P. Providing a partially sorted index
US20080133493A1 (en) * 2006-12-04 2008-06-05 Michael Bender Method for maintaining database clustering when replacing tables with inserts
US7779058B2 (en) * 2007-02-22 2010-08-17 Ronald Raymond Shea Method and apparatus for managing a digital inventory of multimedia files stored across a dynamic distributed network
US8478775B2 (en) * 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
US10152504B2 (en) * 2009-03-11 2018-12-11 Actian Netherlands B.V. Column-store database architecture utilizing positional delta tree update system and methods
EP2443574A4 (en) * 2009-06-19 2014-05-07 Blekko Inc EVOLVING CLUSTER DATABASE
KR101102080B1 (ko) * 2010-03-11 2012-01-04 이너비트 주식회사 컬럼 내의 부분 인덱싱을 이용한 임베디드 디비엠에스의 인덱스 생성 방법과 이를 이용한 데이터 검색 방법 및 데이터 소팅방법
WO2012034128A1 (en) * 2010-09-10 2012-03-15 Ab Initio Technology Llc Managing data selection based on attributes
CN102591864B (zh) * 2011-01-06 2015-03-25 上海银晨智能识别科技有限公司 比对系统中的数据更新方法及装置
US8229917B1 (en) * 2011-02-24 2012-07-24 International Business Machines Corporation Database query optimization using clustering data mining
US20120310917A1 (en) * 2011-05-31 2012-12-06 International Business Machines Corporation Accelerated Join Process in Relational Database Management System
US8543538B2 (en) * 2011-06-01 2013-09-24 Clustrix, Inc. Systems and methods for redistributing data in a relational database
US20120323923A1 (en) * 2011-06-14 2012-12-20 Bank Of America Corporation Sorting Data in Limited Memory
CN102314505B (zh) 2011-09-07 2016-04-13 北京人大金仓信息技术股份有限公司 基于偏序关系的缓冲区版本产生方法
CN102521304A (zh) * 2011-11-30 2012-06-27 北京人大金仓信息技术股份有限公司 基于哈希的聚簇表存储方法
KR101867286B1 (ko) 2012-02-27 2018-06-15 삼성전자주식회사 작업 부하를 고려한 하드웨어 가속화 기반의 대규모 데이터의 분산 처리 장치 및 방법
KR101482014B1 (ko) * 2012-05-11 2015-01-14 네이버 주식회사 할당 테이블을 이용한 파일 캐시 시스템 및 방법 그리고 파일 캐시 어플리케이션을 배포하는 배포 시스템 및 배포 방법
US9430550B2 (en) * 2012-09-28 2016-08-30 Oracle International Corporation Clustering a table in a relational database management system
CN103810209B (zh) * 2012-11-14 2019-05-10 腾讯科技(深圳)有限公司 一种保存数据的方法及系统
US9213716B2 (en) * 2013-03-12 2015-12-15 Sap Se Hierarchical indicies
KR101720602B1 (ko) * 2013-08-29 2017-03-29 후아웨이 테크놀러지 컴퍼니 리미티드 데이터를 저장하기 위한 방법 및 장치
US10133800B2 (en) * 2013-09-11 2018-11-20 Microsoft Technology Licensing, Llc Processing datasets with a DBMS engine
CN103577559A (zh) * 2013-10-23 2014-02-12 华为技术有限公司 数据排序方法和装置
CN103631940B (zh) * 2013-12-09 2017-02-08 中国联合网络通信集团有限公司 一种应用于hbase数据库的数据写入方法及系统
CN104021161B (zh) * 2014-05-27 2018-06-15 华为技术有限公司 一种聚簇存储方法及装置

Also Published As

Publication number Publication date
CN104021161A (zh) 2014-09-03
JP2017526027A (ja) 2017-09-07
CN104021161B (zh) 2018-06-15
CN108897761B (zh) 2023-01-13
RU2016150418A3 (ja) 2018-07-02
KR20160148703A (ko) 2016-12-26
US10817258B2 (en) 2020-10-27
CN108897761A (zh) 2018-11-27
EP3133505A4 (en) 2017-03-22
KR101972645B1 (ko) 2019-08-23
US20170075657A1 (en) 2017-03-16
WO2015180432A1 (zh) 2015-12-03
EP3133505A1 (en) 2017-02-22
RU2663358C2 (ru) 2018-08-03
RU2016150418A (ru) 2018-07-02

Similar Documents

Publication Publication Date Title
JP6553649B2 (ja) クラスタリング記憶方法および装置
US10761758B2 (en) Data aware deduplication object storage (DADOS)
KR101938953B1 (ko) 빅 데이터 질의 엔진을 위한 플래시 최적화된 열 데이터 배치 및 데이터 액세스 처리 알고리즘
US10552378B2 (en) Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset
US20220156292A1 (en) Systems and methods for generating and using aggregated search indices and non-aggregated value storage
US7689574B2 (en) Index and method for extending and querying index
WO2020057272A1 (zh) 一种索引数据存储及检索方法、装置及存储介质
CN108089816B (zh) 一种基于负载均衡的查询式重复数据删除方法及装置
De Vries et al. Robust record linkage blocking using suffix arrays and bloom filters
US20120254173A1 (en) Grouping data
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
JP6807395B2 (ja) プロセッサ・グリッド内の分散データ重複排除
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
CN111159130A (zh) 一种小文件合并方法及电子设备
CN112148217A (zh) 全闪存储系统的重删元数据的缓存方法、装置及介质
US11880368B2 (en) Compressing data sets for storage in a database system
CN107273443B (zh) 一种基于大数据模型元数据的混合索引方法
WO2024022180A1 (zh) 网盘文档索引方法、装置、网盘及存储介质
JP2015162042A (ja) インデックス管理装置
CN114281989A (zh) 基于文本相似度的数据去重方法、装置及存储介质和服务器
CN108920687B (zh) 一种基于Lucene索引段的合并优化方法
US20130290378A1 (en) Adaptive probabilistic indexing with skip lists
WO2023141987A1 (zh) 文件读取方法和装置
US20230229657A1 (en) Zero Copy Optimization for SELECT * Queries
CN117807174A (zh) 索引处理方法、装置、计算机设备、介质和程序产品

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190704

R150 Certificate of patent or registration of utility model

Ref document number: 6553649

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250