【文献】
David DeWitt、外1名,並列データベースシステム:高性能データベースシステムの将来(後編),bit,日本,共立出版株式会社,1994年 1月 1日,第26巻,第1号,p.32−43
【文献】
鈴木 大地、外2名,高速ストレージ環境におけるDBMSクエリのI/O並列化に関する検討,第5回データ工学と情報マネジメントに関するフォーラム (第11回日本データベース学会年次大会),日本,電子情報通信学会データ工学研究専門委員会 日本データベース学会 情報処理学会データベースシステム研究会 ARG「Webインテリジェンスとインタラクショ,2013年 6月 5日,p.1−7
(58)【調査した分野】(Int.Cl.,DB名)
前記事前に設定された条件は、前記ローカルメモリ内にキャッシュされている前記第2のデータのデータ量と前記ローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される、請求項1に記載のクラスタリング記憶方法。
クエリ列を決定する前記ステップの後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行する前記ステップの前に、前記方法は、
前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すステップをさらに含み、
前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行する前記ステップは、具体的には、
前記ローカルメモリ内で、二分探索方式で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するステップを含む、請求項8に記載のクラスタリング記憶方法。
第2のソート列を決定する前記ステップの後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行する前記ステップの前に、前記方法は、
前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すステップをさらに含み、
前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行する前記ステップは、具体的には、
前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してマージソートを実行するステップを含む、請求項10に記載のクラスタリング記憶方法。
集約列を決定する前記ステップの後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行する前記ステップの前に、前記方法は、
前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すステップをさらに含み、
前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行する前記ステップは、具体的には、
前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定するステップと、
前記第1のデータにおける最大値または最小値を決定するために、各データページにおける前記最大値または前記最小値を連続的に比較するステップとを含む、請求項12に記載のクラスタリング記憶方法。
前記事前に設定された条件は、前記ローカルメモリ内にキャッシュされている前記第2のデータのデータ量と前記ローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される、請求項15に記載のクラスタリング記憶装置。
前記操作ユニットは、具体的には、前記決定ユニットによって決定された、前記第1のソート列の数値または前記第1のソート列の数値のハッシュ値に従って、前記第2のデータをソートするように構成される、請求項15乃至18のいずれか1項に記載のクラスタリング記憶装置。
前記記憶ユニットは、具体的には、前記操作ユニットによってソートされた前記第2のデータを前記記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、前記アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、前記第3のデータは、前記第1のデータ内の、前記第2のデータよりも先に前記記憶媒体にクラスタリング方式で記憶されているデータである、請求項15乃至19のいずれか1項に記載のクラスタリング記憶装置。
前記決定ユニットによって決定された前記第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む、請求項15乃至20のいずれか1項に記載のクラスタリング記憶装置。
前記キャッシングユニットは、前記決定ユニットが前記クエリ列を決定した後で、且つ、前記操作ユニットが前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記クエリ操作を実行する前に、前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すようにさらに構成され、且つ、
前記操作ユニットは、具体的には、前記ローカルメモリ内で、二分探索方式で、前記第1のソート列内の前記1番目のソート列に従って、前記キャッシングユニットによってキャッシュされた前記第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するように構成される、請求項22に記載のクラスタリング記憶装置。
前記キャッシングユニットは、前記決定ユニットが前記第2のソート列を決定した後で、且つ、前記操作ユニットが前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記ソート操作を実行する前に、前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すようにさらに構成され、且つ、
前記操作ユニットは、具体的には、前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記キャッシングユニットによってキャッシュされた前記第1のデータに対してマージソートを実行するように構成される、請求項24に記載のクラスタリング記憶装置。
前記キャッシングユニットは、前記決定ユニットが前記集約列を決定した後で、且つ、前記操作ユニットが前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記集約操作を実行する前に、前記記憶媒体に記憶された前記第1のデータを前記ローカルメモリに読み出すようにさらに構成され、且つ、
前記操作ユニットは、具体的には、前記ローカルメモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記キャッシングユニットによってキャッシュされた前記第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、前記第1のデータにおける最大値または最小値を決定するために、各データページにおける前記最大値または前記最小値を連続的に比較するように構成される、請求項26に記載のクラスタリング記憶装置。
前記事前に設定された条件は、前記メモリ内にキャッシュされている前記第2のデータのデータ量と前記メモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される、請求項29に記載のデータベースシステム。
前記第1のソート列に従って、前記第2のデータをソートする態様では、前記プロセッサは、具体的には、前記第1のソート列の数値または前記第1のソート列の数値のハッシュ値に従って、前記第2のデータをソートするように構成される、請求項29乃至32のいずれか1項に記載のデータベースシステム。
ソートされた前記第2のデータを前記底層記憶媒体にクラスタリング方式で記憶する態様では、前記プロセッサは、具体的には、前記第2のデータを前記底層記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、前記アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、前記第3のデータは、前記第1のデータ内の、前記第2のデータよりも先に前記底層記憶媒体にクラスタリング方式で記憶されているデータである、請求項29乃至33のいずれか1項に記載のデータベースシステム。
前記プロセッサによって決定された前記第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む、請求項29乃至34のいずれか1項に記載のデータベースシステム。
前記プロセッサは、前記第1のデータが前記底層記憶媒体に全て記憶された後、クエリ列を決定し、前記クエリ列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してクエリ操作を実行するようにさらに構成される、請求項29乃至35のいずれか1項に記載のデータベースシステム。
前記プロセッサは、前記クエリ列を決定した後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記クエリ操作を実行する前に、前記底層記憶媒体に記憶された前記第1のデータを前記メモリに読み出し、前記メモリ内で、二分探索方式で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するようにさらに構成される、請求項36に記載のデータベースシステム。
前記プロセッサは、前記第1のデータが前記底層記憶媒体に全て記憶された後、第2のソート列を決定し、前記第2のソート列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してソート操作を実行するようにさらに構成される、請求項29乃至35のいずれか1項に記載のデータベースシステム。
前記プロセッサは、前記第2のソート列を決定した後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記ソート操作を実行する前に、前記底層記憶媒体に記憶された前記第1のデータを前記メモリに読み出し、前記メモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対してマージソートを実行するようにさらに構成される、請求項38に記載のデータベースシステム。
前記プロセッサは、前記第1のデータが前記底層記憶媒体に全て記憶された後、集約列を決定し、前記集約列が前記第1のソート列内の1番目のソート列である場合、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して集約操作を実行するようにさらに構成され、前記集約操作は、最大値または最小値について前記第1のデータを探索する操作である、請求項29乃至35のいずれか1項に記載のデータベースシステム。
前記プロセッサは、前記集約列を決定した後で、且つ、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータに対して前記集約操作を実行する前に、前記底層記憶媒体に記憶された前記第1のデータを前記メモリに読み出し、前記メモリ内で、前記第1のソート列内の前記1番目のソート列に従って、前記第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、前記第1のデータにおける最大値または最小値を決定するために、各データページにおける前記最大値または前記最小値を連続的に比較するようにさらに構成される、請求項40に記載のデータベースシステム。
前記プロセッサは、前記記憶されるべき第1のデータが前記メモリに1行ずつキャッシュされる前に、前記底層記憶媒体内に表を作成し、ソートされた前記第2のデータを前記底層記憶媒体にクラスタリング方式で記憶するために、ソートされた前記第2のデータを前記表に1行ずつ挿入するようにさらに構成され、前記表は、前記第1のデータをロードするために使用される、請求項29に記載のデータベースシステム。
【発明の概要】
【課題を解決するための手段】
【0006】
本発明の実施形態はクラスタリング記憶方法および装置を提供し、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率は改善されることができる。
【0007】
以下の技術的解決手段は、本発明の実施形態で使用される。
【0008】
第1の態様によると、本発明の実施形態はクラスタリング記憶方法を提供し、ここで、方法はデータベースシステムにおいて適用され、且つ、
記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするステップと、
第1のソート列を決定するステップであって、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される、ステップと、
ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートするステップであって、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである、ステップと、
ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するステップと
を含む。
【0009】
第1の態様の第1の可能な実施方式では、事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
【0010】
第1の態様または第1の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートするステップは、具体的には、
第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするステップを含む。
【0011】
第1の態様または第1の態様の第1の可能な実施方式を参照すると、第3の可能な実施方式では、事前に設定された条件は、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートするステップは、具体的には、
ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするステップを含む。
【0012】
第1の態様または第1の態様の第1の可能な実施方式乃至第3の可能な実施方式のいずれか1つの実施方式を参照すると、第4の可能な実施方式では、第1のソート列に従って、第2のデータをソートするステップは、具体的には、
第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするステップを含む。
【0013】
第1の態様または第1の態様の第1の可能な実施方式乃至第4の可能な実施方式のいずれか1つの実施方式を参照すると、第5の可能な実施方式では、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するステップは、具体的には、
ソートされた第2のデータを記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するステップであって、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである、ステップを含む。
【0014】
第1の態様または第1の態様の第1の可能な実施方式乃至第5の可能な実施方式のいずれか1つの実施方式を参照すると、第6の可能な実施方式では、第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
【0015】
第1の態様または第1の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第7の可能な実施方式では、第1のデータが記憶媒体に全て記憶された後、方法は、
クエリ列を決定するステップと、
クエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するステップと
をさらに含む。
【0016】
第1の態様の第7の可能な実施方式を参照すると、第8の可能な実施方式では、クエリ列を決定するステップの後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するステップの前に、方法は、
記憶媒体に記憶された第1のデータをローカルメモリに読み出すステップをさらに含み、ここで、
第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するステップは、具体的には、
ローカルメモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するステップを含む。
【0017】
第1の態様または第1の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第9の可能な実施方式では、第1のデータが記憶媒体に全て記憶された後、方法は、
第2のソート列を決定するステップと、
第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するステップと
をさらに含む。
【0018】
第1の態様の第9の可能な実施方式を参照すると、第10の可能な実施方式では、第2のソート列を決定するステップの後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するステップの前に、方法は、
記憶媒体に記憶された第1のデータをローカルメモリに読み出すステップをさらに含み、ここで、
第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するステップは、具体的には、
ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してマージソートを実行するステップを含む。
【0019】
第1の態様または第1の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第11の可能な実施方式では、第1のデータが記憶媒体に全て記憶された後、方法は、
集約列を決定するステップと、
集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するステップであって、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である、ステップと
をさらに含む。
【0020】
第1の態様の第11の可能な実施方式を参照すると、第12の可能な実施方式では、集約列を決定するステップの後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するステップの前に、方法は、
記憶媒体に記憶された第1のデータをローカルメモリに読み出すステップをさらに含み、ここで、
第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するステップは、具体的には、
ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定するステップと、
第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するステップとを含む。
【0021】
第1の態様の第13の可能な実施方式では、記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするステップの前に、方法は、
記憶媒体内に表を作成するステップであって、ここで、表は、第1のデータをロードするために使用される、ステップをさらに含み、ここで、
ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するステップは、具体的には、
ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入するステップを含む。
【0022】
第2の態様によると、本発明の実施形態はクラスタリング記憶装置を提供し、ここで、装置はデータベースシステムにおいて適用され、且つ、
記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするように構成されるキャッシングユニットと、
第1のソート列を決定するように構成される決定ユニットであって、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される、決定ユニットと、
キャッシングユニットによってローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを決定ユニットによって決定された第1のソート列に従ってソートするように構成される操作ユニットであって、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである、操作ユニットと、
操作ユニットによってソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するように構成される記憶ユニットと
を含む。
【0023】
第2の態様の第1の可能な実施方式では、事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
【0024】
第2の態様または第2の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
操作ユニットは、具体的には、第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0025】
第2の態様または第2の態様の第1の可能な実施方式を参照すると、第3の可能な実施方式では、事前に設定された条件は、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
操作ユニットは、具体的には、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0026】
第2の態様または第2の態様の第1の可能な実施方式乃至第3の可能な実施方式のいずれか1つの実施方式を参照すると、第4の可能な実施方式では、操作ユニットは、具体的には、決定ユニットによって決定された、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
【0027】
第2の態様または第2の態様の第1の可能な実施方式乃至第4の可能な実施方式のいずれか1つの実施方式を参照すると、第5の可能な実施方式では、記憶ユニットは、具体的には、操作ユニットによってソートされた第2のデータを記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである。
【0028】
第2の態様または第2の態様の第1の可能な実施方式乃至第5の可能な実施方式のいずれか1つの実施方式を参照すると、第6の可能な実施方式では、決定ユニットによって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
【0029】
第2の態様または第2の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第7の可能な実施方式では、決定ユニットは、記憶ユニットが第1のデータ全てを記憶媒体に記憶した後、クエリ列を決定するようにさらに構成され、且つ、
操作ユニットは、決定ユニットによって決定されたクエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するようにさらに構成される。
【0030】
第2の態様の第7の可能な実施方式を参照すると、第8の可能な実施方式では、キャッシングユニットは、決定ユニットがクエリ列を決定した後で、且つ、操作ユニットが第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニットは、具体的には、ローカルメモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、キャッシングユニットによってキャッシュされた第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するように構成される。
【0031】
第2の態様または第2の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第9の可能な実施方式では、決定ユニットは、記憶ユニットが第1のデータ全てを記憶媒体に記憶した後、第2のソート列を決定するようにさらに構成され、且つ、
操作ユニットは、決定ユニットによって決定された第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するようにさらに構成される。
【0032】
第2の態様の第9の可能な実施方式を参照すると、第10の可能な実施方式では、キャッシングユニットは、決定ユニットが第2のソート列を決定した後で、且つ、操作ユニットが第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニットは、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニットによってキャッシュされた第1のデータに対してマージソートを実行するように構成される。
【0033】
第2の態様または第2の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第11の可能な実施方式では、決定ユニットは、記憶ユニットが第1のデータ全てを記憶媒体に記憶した後、集約列を決定するようにさらに構成され、且つ、
操作ユニットは、決定ユニットによって決定された集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
【0034】
第2の態様の第11の可能な実施方式を参照すると、第12の可能な実施方式では、キャッシングユニットは、決定ユニットが集約列を決定した後で、且つ、操作ユニットが第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニットは、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニットによってキャッシュされた第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するように構成される。
【0035】
第2の態様の第13の可能な実施方式では、クラスタリング記憶装置は、作成ユニットをさらに含み、ここで、
作成ユニットは、キャッシングユニットが記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする前に、記憶媒体内に表を作成するように構成され、ここで、表は、第1のデータをロードするために使用され、且つ、
操作ユニットは、具体的には、ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを作成ユニットによって作成された表に1行ずつ挿入するように構成される。
【0036】
第3の態様によると、本発明の実施形態はデータベースシステムを提供し、データベースシステムは、
底層記憶媒体と、
底層記憶媒体に結合され、且つ、底層記憶媒体のキャッシュとして役割を果たすように構成されるメモリと、
メモリに結合されたプロセッサとを含み、ここで、底層記憶媒体における1つ以上のデータブロックはキャッシュ内のターゲットデータブロックにマッピングされ、プロセッサはメモリ内の命令を実行し、
記憶されるべき第1のデータをメモリに1行ずつキャッシュし、第1のソート列を決定し、メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを第1のソート列に従ってソートし、ソートされた第2のデータを底層記憶媒体にクラスタリング方式で記憶するように構成され、ここで、第1のソート列は、メモリ内にキャッシュされているデータをソートするために使用され、第2のデータは、第1のデータ内の、メモリ内にキャッシュされているデータである。
【0037】
第3の態様の第1の可能な実施方式では、事前に設定された条件は、メモリ内にキャッシュされている第2のデータのデータ量とメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
【0038】
第3の態様または第3の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
プロセッサは、具体的には、第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0039】
第3の態様または第3の態様の第1の可能な実施方式を参照すると、第3の可能な実施方式では、事前に設定された条件は、メモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
プロセッサは、具体的には、メモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0040】
第3の態様または第3の態様の第1の可能な実施方式乃至第3の可能な実施方式のいずれか1つの実施方式を参照すると、第4の可能な実施方式では、プロセッサは、具体的には、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
【0041】
第3の態様または第3の態様の第1の可能な実施方式乃至第4の可能な実施方式のいずれか1つの実施方式を参照すると、第5の可能な実施方式では、プロセッサは、具体的には、第2のデータを底層記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に底層記憶媒体にクラスタリング方式で記憶されているデータである。
【0042】
第3の態様または第3の態様の第1の可能な実施方式乃至第5の可能な実施方式のいずれか1つの実施方式を参照すると、第6の可能な実施方式では、プロセッサによって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
【0043】
第3の態様または第3の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第7の可能な実施方式では、プロセッサは、第1のデータが底層記憶媒体に全て記憶された後、クエリ列を決定し、クエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するようにさらに構成される。
【0044】
第3の態様の第7の可能な実施方式を参照すると、第8の可能な実施方式では、プロセッサは、クエリ列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、底層記憶媒体に記憶された第1のデータをメモリに読み出し、メモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するようにさらに構成される。
【0045】
第3の態様または第3の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第9の可能な実施方式では、プロセッサは、第1のデータが底層記憶媒体に全て記憶された後、第2のソート列を決定し、第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するようにさらに構成される。
【0046】
第3の態様の第9の可能な実施方式を参照すると、第10の可能な実施方式では、プロセッサは、第2のソート列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、底層記憶媒体に記憶された第1のデータをメモリに読み出し、メモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してマージソートを実行するようにさらに構成される。
【0047】
第3の態様または第3の態様の第1の可能な実施方式乃至第6の可能な実施方式のいずれか1つの実施方式を参照すると、第11の可能な実施方式では、プロセッサは、第1のデータが底層記憶媒体に全て記憶された後、集約列を決定し、集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
【0048】
第3の態様の第11の可能な実施方式を参照すると、第12の可能な実施方式では、プロセッサは、集約列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、底層記憶媒体に記憶された第1のデータをメモリに読み出し、メモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するようにさらに構成される。
【0049】
第3の態様の第13の可能な実施方式では、プロセッサは、記憶されるべき第1のデータがメモリに1行ずつキャッシュされる前に、底層記憶媒体内に表を作成し、ソートされた第2のデータを底層記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入するようにさらに構成され、ここで、表は、第1のデータをロードするために使用される。
【0050】
本発明の実施形態で提供されるクラスタリング記憶方法および装置によると、記憶されるべき第1のデータはデータベースシステム内のローカルメモリに1行ずつキャッシュされ、第1のソート列が決定され、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータが第1のソート列に従ってソートされ、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、ソートされた第2のデータがデータベースシステム内の記憶媒体にクラスタリング方式で記憶される。この解決手段を使用することによって、記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、第2のデータは、決定された第1のソート列に従ってソートされ始め、且つ、ソートされた第2のデータはデータベースシステム内の記憶媒体に記憶される。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【発明を実施するための形態】
【0053】
本発明で提供されるクラスタリング記憶方法では、クラスタリング記憶の観念によると、データがデータベースシステム内の記憶媒体に記憶されるとき、記憶媒体に記憶される全てのデータがシーケンシャルである(データが全体的にシーケンシャルである)ことを考慮することなく、記憶媒体に各回記憶されるデータのみがシーケンシャルである(データは部分的にシーケンシャルである)ことが保証される。従って、従来技術における非シーケンシャルな記憶方式で記憶媒体にデータを記憶するためにヒープ表が使用される場合と比較して、本発明で提供されるクラスタリング記憶方法を使用することによって、記憶媒体における同じタイプのデータは部分的にソートされた後に記憶されるため、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。具体的には、本発明の実施形態で提供されるクラスタリング記憶方法を使用することによって、1つの態様においては、データベースシステム内の記憶媒体における同じタイプのデータは部分的にソートされた後に記憶されるため、データが記憶された後、データクエリ性能およびデータ圧縮効率は比較的高く、1つの態様においては、データを記憶するプロセスでは、データがロードされるとき、データは一部ずつロードされるため、データローディング性能はわずかに影響を受けることが保証されることができ、別の態様においては、記憶媒体内のデータが更新される必要があるとき、更新されるべきデータが記憶媒体内で位置するデータの部分が直接更新されることができ(更新が追加している場合、追加されたデータは直接且つシーケンシャルに記憶媒体に記憶されてよい)、且つ、更新は記憶媒体内の全てのデータに対して要求されないため、データ更新性能はわずかに影響を受けることが保証されることができる。すなわち、本発明で提供されるクラスタリング記憶方法を使用することによって、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率は改善されることが保証されることができる。
【0054】
さらに、本発明で提供されるクラスタリング記憶方法によると、データを記憶するプロセスでは、データはローカルメモリ内でのみソートされる必要があり、記憶媒体内でソートされる必要がなく、且つ、ローカルメモリ内でデータを処理する速度は、記憶媒体内でデータを処理する速度よりもはるかに速く、従って、本発明で提供されるクラスタリング記憶方法がデータを更新するために使用されるとき、時間およびシステムの資源が節約されることができる。
【0055】
以下では、本発明の実施形態で提供されるクラスタリング記憶方法および装置を、本発明の実施形態における表および添付図面を参照して明確且つ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の全てではなく単に一部である。本発明の実施形態で提供されるクラスタリング記憶方法および装置は、データベースシステムにおいて適用されてよく、ここで、データベースシステムは、クラスタリング記憶装置のハードウェアエンティティおよびデータベース環境を含んでよく、クラスタリング記憶装置のハードウェアエンティティは、コンピュータノード(またはコンピューティングノードと呼ばれる)であってよく、または、本発明の実施形態で提供されるクラスタリング記憶解決手段を実施することができる別のデバイスであってよく、すなわち、本発明の実施形態で提供されるクラスタリング記憶方法は、コンピュータノードまたは別のデバイスによって実行されてよい。以下では、本発明の実施形態で提供されるクラスタリング記憶方法および装置を説明するための例として、コンピュータノードを使用する。
【0057】
本発明の実施形態は、クラスタリング記憶方法を提供し、ここで、方法はデータベースシステムにおいて適用される。
図1に示されるように、方法は以下のステップを含んでよい:
【0058】
S101. コンピュータノードは、記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする。
【0059】
ハードディスクにテキストで記憶されるデータ、すなわち記憶されるべき第1のデータが、データベースシステム内の記憶媒体に記憶されて、第1のデータに対する次のアクセスを容易にする必要がある場合、第1のデータを記憶するプロセスでは、コンピュータノードは、最初に第1のデータをソートして、次いで、ソートされた第1のデータを記憶媒体に記憶する必要がある。コンピュータノードが第1のデータを記憶媒体に記憶するプロセスでは、コンピュータノードは、最初に第1のデータをハードディスクからデータベースシステム内のローカルメモリに読み出す必要がある。具体的には、コンピュータノードは第1のデータをハードディスクからローカルメモリに1行ずつキャッシュしてよい。
【0060】
S102. コンピュータノードは第1のソート列を決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される。
【0061】
コンピュータノードが第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、コンピュータノードは第1のソート列を決定してよく、ここで、第1のソート列は、事前に設定されてよく、且つ、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用されてよい。
【0062】
任意で、本発明の本実施形態で提供されるクラスタリング記憶方法では、第1のデータをソートするとき、コンピュータノードは、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第1のデータをソートしてよい。
【0063】
当業者は、本発明の本実施形態で提供されるデータベースシステム内の記憶媒体は、ディスクであってよく、ここで、ディスクはハードディスクおよびフロッピーディスクを含んでよいことを理解することができる。よく使用されるディスクは一般にリムーバブルディスクであり、ここで、リムーバブルディスクは2つのタイプに分類されてよく、1つのタイプはチップ記憶に基づくUSBフラッシュドライブ(Universal Serial Bus flash disk, ユニバーサル・シリアル・バス・フラッシュ・ドライブ)またはフラッシュディスクであり、もう一方のタイプは、ハードディスクに基づくリムーバブルハードディスクであり、ここで、リムーバブルディスクは、たいていの場合リムーバブルハードディスクであり、且つ、リムーバブルハードディスクは、異なるハードディスクに従って、ノートブックコンピュータのリムーバブルハードディスクとデスクトップコンピュータのリムーバブルハードディスクとに分類される。リムーバブルハードディスクは一般に、USBインタフェースを介してコンピュータに接続され、すなわち、記憶媒体として、リムーバブルハードディスクは、USBインタフェースを介して、リムーバブルハードディスクとコンピュータとの間で送信されるデータを記憶してよい。
【0064】
特に、第1のソート列は、主キーと呼ばれてよく、または部分クラスタキー(partial cluster key)と呼ばれてよい。
【0065】
第1のソート列は、ユーザがコンピュータノードに表を作成するように命令するとき、第1のデータの属性によって指定されるソート列に従って、第1のデータをソートするための基準であり、すなわち、コンピュータノードは、第1のソート列に従って、記憶されるべき第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を別々にソートしてよく、その結果、第1のデータにおけるデータの各部分は別々に且つシーケンシャルに配列され、第1のデータが部分的にシーケンシャルであることを保証することは留意されるべきである。
【0066】
さらに、表を作成するように命令するとき、ユーザは、文を使用することによって表記憶構造を指定してよく、ここで、第1のソート列が表記憶構造で指定される。例えば、ユーザは、表t記憶構造を指定するために、Create table t(c1 int,c2 int, partial cluster key(c1,c2+1)という文を使用してよく、ここで、表t記憶構造は、第1のソート列、すなわち、部分クラスタキーを含む。
【0067】
表は、データレコードのグループによって形成される。表は行に従って配列される関連データのグループであり、且つ、各表は同じタイプの情報を含む。表は実際、2次元表である。例えば、クラス内の全ての学生のテストの点数が表内に記憶されてよく、ここで、表内の各行は1人の学生に対応し、且つ、各行は対応する学生に関する全ての情報を含み、例えば、学生の、学生番号、氏名および各コースの点数を含んでよい。
【0068】
表記憶構造は、定義された表のフィールド、タイプ、主キー、外部キー、索引等であり、すなわち、これらの基本属性は表記憶構造を構成する。表記憶構造が決定された後、異なるタイプのデータは、表記憶構造に従って直接挿入されてよい。
【0069】
データベースはデータを記憶するためのウェアハウスであり、データベースは1つの表または表のグループによって形成され、且つ、データベース内のデータは表単位で編成される。各データベースは、ファイルの形式でディスクに記憶され、すなわち、各データベースは1つの物理ファイルに対応する。異なるデータベースは、異なる方式における物理ファイルに対応する。例えば、データベースは、1つの表を含んでよく、または、複数の表を含んでよい。
【0070】
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法によると、コンピュータノードは、データベースシステム内のローカルメモリにおける第1のデータに対するソートを完了し、且つ、ローカルメモリのサイズおよびデータ処理能力の制限に依存するため、コンピュータノードは第1のデータを一部ずつのみソートすることができる。コンピュータノードは次いで、データベースシステム内の記憶媒体に、一部ずつソートされたデータを連続的に記憶し、このようにして、記憶媒体に記憶された第1のデータが部分的にシーケンシャルであることが保証されることができる。
【0071】
S103. コンピュータノードによってローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、コンピュータノードは第2のデータを第1のソート列に従ってソートし、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである。
【0072】
コンピュータノードが第1のデータをキャッシュするプロセスでは、データベースシステム内のローカルメモリが制限されたサイズおよび制限されたデータ処理能力を有するため、第1のデータは一度にローカルメモリに全てキャッシュされることはできず、すなわち、コンピュータノードは、第1のデータをローカルメモリに一部ずつ別々にキャッシュしてよく、その結果、コンピュータノードは、ローカルメモリに別々にキャッシュされるデータを一部ずつ連続的に処理してよい。具体的には、コンピュータノードは、リアルタイムで、ローカルメモリにキャッシュされている第2のデータの状態に対する統計値を収集してよい。コンピュータノードが、ローカルメモリにキャッシュされている第2のデータが事前に設定された条件を満たすと検出したとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよく、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである。
【0073】
さらに、前述の事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用されてよい。
【0074】
S104. コンピュータノードは、ソートされた第2のデータをデータベースシステム内の記憶媒体に記憶する。
【0075】
データベースでは、属性または属性グループのクエリ速度を改善するために、属性または属性グループ内の同じ値を有するタプル(クラスタコードと呼ばれる)が、連続する物理ブロックに中心に記憶されてよい。この記憶方法はクラスタリングと呼ばれる。クラスタリング方式でデータを記憶することは、クラスタコードに従ってクエリを実行することにおける効率を大きく改善することができる。
【0076】
コンピュータノードが第2のデータをソートした後、コンピュータノードは、第2のデータをロードするプロセスを完了するために、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶してよい。
【0077】
コンピュータノードは、記憶されるべき第1のデータがデータベースシステム内の記憶媒体に全て記憶されるまで、前述のS101からS104を繰り返し実行してよいことは留意されるべきである。
【0078】
コンピュータノードは、事前に設定された第1のソート列に従って、第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を連続的に且つ別々にソートし、各回ソートされた後に得られたデータの各部分を記憶媒体に記憶してよく、その結果、記憶媒体に記憶された第1のデータは部分的にシーケンシャルであり、すなわち、記憶媒体に記憶された第1のデータにおけるデータの各部分がシーケンシャルに配列されることが保証されることができることは理解されることができる。
【0079】
例示的に、ユーザが第1のデータ、すなわち、大学におけるダンス部内の500人の学生に関する情報をデータベースシステム内の記憶媒体に記憶して、次のアクセスを容易にする必要がある場合、ユーザは最初に、500人の学生に関する情報をコンピュータノードに入力し、テキストの形式で、コンピュータノードのハードディスク内に情報を記憶する必要がある。コンピュータノードが、500人の学生に関する情報を、ユーザの命令に従って、データベースシステム内の記憶媒体に記憶するプロセスでは、コンピュータノードは、ハードディスク内のテキストから500人の学生に関する情報をデータベースシステム内のローカルメモリに読み出してよい。具体的には、コンピュータノードは、各学生に従って、各学生に関する情報を1行ずつ読み出す方式で、500人の学生に関する情報をローカルメモリに連続的に読み出してよい。
【0080】
各学生に関する情報が、クラス、氏名、学生番号、年齢、専攻および家族情報等の属性を含むと仮定される。本発明の本実施形態で提供されるクラスタリング記憶方法によると、500人の学生に関する情報は1つの表を構成してよい。表1に示されるように、表1内の各行(すなわち、各学生に関する情報)はタプルであり、且つ、各列(全ての学生に関する項目の情報)は属性である。
【0082】
500人の学生に関する情報を入力するとき、ユーザは特定の順序に従って情報を入力しなくてよく、従って、ハードディスク内にテキストで記憶される500人の学生に関する情報は、シーケンシャルに配列されないことは留意されるべきである。500人の学生に関する情報の次の再利用を容易にするために、例えば、500人の学生に関する情報に対するクエリおよびソート等の操作を実行するために、500人の学生に関する情報は、長期間使用を容易にし、且つ、繰り返される操作を回避するために、データベースシステム内の記憶媒体に記憶される必要がある。特に、データがデータベースシステム内の記憶媒体に記憶されるとき、対応する表記憶構造は一般に記憶用に使用されてよい。従来技術で提供される表記憶構造と比較すると、本発明の本実施形態で提供される表記憶構造(本発明の本実施形態におけるコンピュータノードによって作成される表の記憶構造)、すなわち、表1に示される表記憶構造は、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることを保証することができる。
【0083】
前述の表1から、この例では、ユーザによって指定された第1のソート列、すなわち、部分クラスタキー(主キー)はクラスおよび学生番号であってよいことがわかる。これは、各学生が2つの属性、すなわち、クラスと学生番号の両方が決定されるときにのみ決定されることができ、すなわち、各学生は、クラスと学生番号の両方が決定されたときにのみ別の学生と区別されることができるためである。
【0084】
本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶されるべき第1のデータは、一部ずつソートされた後、データベースシステム内の記憶媒体に記憶されてよく、且つ、記憶媒体に記憶されたデータの各部分がシーケンシャルに配列されることが保証されることができる。このようにして、記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、記憶媒体に記憶されたデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0085】
本発明の本実施形態で提供されるクラスタリング記憶方法によると、記憶されるべき第1のデータはデータベースシステム内のローカルメモリに1行ずつキャッシュされ、第1のソート列が決定され、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータが第1のソート列に従ってソートされ、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、ソートされた第2のデータがデータベースシステム内の記憶媒体にクラスタリング方式で記憶される。この解決手段を使用することによって、記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、第2のデータは、決定された第1のソート列に従ってソートされ始め、且つ、ソートされた第2のデータはデータベースシステム内の記憶媒体に記憶される。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0087】
本発明の実施形態はクラスタリング記憶方法を提供し、ここで、方法はデータベースシステムにおいて適用される。
図2に示されるように、方法は以下のステップを含んでよい:
【0088】
S201. コンピュータノードは、データベースシステム内の記憶媒体に表を作成し、ここで、表は、記憶されるべき第1のデータをロードするために使用される。
【0089】
ハードディスクにテキストで記憶されるデータ、すなわち記憶されるべき第1のデータが、データベースシステム内の記憶媒体に記憶される必要がある場合、コンピュータノードは最初に記憶媒体内に表を作成してよく、ここで、表は第1のデータをロードするために使用されてよい。
【0090】
当業者は、本発明の本実施形態で提供されるデータベースシステム内の記憶媒体は、ディスクであってよく、ここで、ディスクはハードディスクおよびフロッピーディスクを含んでよいことを理解することができる。よく使用されるディスクは一般にリムーバブルディスクであり、ここで、リムーバブルディスクは2つのタイプに分類されてよく、1つのタイプはチップ記憶に基づくUSBフラッシュドライブまたはフラッシュディスクであり、もう一方のタイプは、ハードディスクに基づくリムーバブルハードディスクであり、ここで、リムーバブルディスクは、たいていの場合リムーバブルハードディスクであり、且つ、リムーバブルハードディスクは、異なるハードディスクに従って、ノートブックコンピュータのリムーバブルハードディスクとデスクトップコンピュータのリムーバブルハードディスクとに分類される。リムーバブルハードディスクは一般に、USBインタフェースを介してコンピュータに接続され、すなわち、記憶媒体として、リムーバブルハードディスクは、USBインタフェースを介して、リムーバブルハードディスクとコンピュータとの間で送信されるデータを記憶してよい。
【0091】
S202. コンピュータノードは、第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする。
【0092】
本発明の本実施形態で提供されるクラスタリング記憶方法では、第1のデータに対する次のアクセスを容易にするために、第1のデータを記憶するプロセスでは、コンピュータノードは、最初に第1のデータをソートして、次いで、ソートされた第1のデータをデータベースシステム内の記憶媒体に記憶する必要がある。コンピュータノードが第1のデータを記憶媒体に記憶するプロセスでは、コンピュータノードは、最初に第1のデータをハードディスクからデータベースシステム内のローカルメモリに読み出す必要がある。具体的には、コンピュータノードは第1のデータをハードディスクからローカルメモリに1行ずつキャッシュしてよい。
【0093】
S203. コンピュータノードは第1のソート列を決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される。
【0094】
コンピュータノードが第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、コンピュータノードは第1のソート列を決定してよく、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用されてよい。
【0095】
特に、第1のソート列は、主キーと呼ばれてよく、または部分クラスタキーと呼ばれてよい。
【0096】
第1のソート列は、ユーザがコンピュータノードに表を作成するように命令するとき、第1のデータの属性によって指定されるソート列に従って、第1のデータをソートするための基準であり、すなわち、コンピュータノードは、第1のソート列に従って、記憶されるべき第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を別々にソートしてよく、その結果、第1のデータにおけるデータの各部分は別々に且つシーケンシャルに配列され、第1のデータが部分的にシーケンシャルであることを保証することは留意されるべきである。
【0097】
さらに、表を作成するように命令するとき、ユーザは、文を使用することによって表記憶構造を指定してよく、ここで、第1のソート列が表記憶構造で指定される。例えば、ユーザは、表t記憶構造を指定するために、
Create table t(c1 int,c2 int, partial cluster key(c1,c2+1)
という文を使用してよく、ここで、表t記憶構造は、第1のソート列、すなわち、部分クラスタキーを含む。
【0098】
表は、データレコードのグループによって形成される。表は行に従って配列される関連データのグループであり、且つ、各表は同じタイプの情報を含む。表は実際、2次元表である。例えば、クラス内の全ての学生のテストの点数が表内に記憶されてよく、ここで、表内の各行は1人の学生に対応し、且つ、各行は対応する学生に関する全ての情報を含み、例えば、学生の、学生番号、氏名および各コースの点数を含んでよい。
【0099】
表記憶構造は、定義された表のフィールド、タイプ、主キー、外部キー、索引等であり、すなわち、これらの基本属性は表記憶構造を構成する。表記憶構造が決定された後、異なるタイプのデータは、表記憶構造に従って直接挿入されてよい。
【0100】
データベースはデータを記憶するためのウェアハウスであり、データベースは1つの表または表のグループによって形成され、且つ、データベース内のデータは表単位で編成される。各データベースは、ファイルの形式でディスクに記憶され、すなわち、各データベースは1つの物理ファイルに対応する。異なるデータベースは、異なる方式における物理ファイルに対応する。例えば、dBASE、FoxProおよびParadoxフォーマットにおけるデータベースについては、表は別々のデータベースファイルであり、且つ、Microsoft AccessおよびBtrieveフォーマットにおけるデータベースについては、データベースファイルは複数の表を含んでよい。
【0101】
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法によると、コンピュータノードは、データベースシステム内のローカルメモリにおける第1のデータに対するソートを完了し、且つ、ローカルメモリのサイズおよびデータ処理能力の制限に依存するため、コンピュータノードは第1のデータを一部ずつのみソートすることができる。コンピュータノードは次いで、データベースシステム内の記憶媒体に、一部ずつソートされたデータを連続的に記憶し、このようにして、記憶媒体に記憶された第1のデータが部分的にシーケンシャルであることが保証されることができる。
【0102】
任意で、前述の第1のソート列は、物理的な列および表現のうちの少なくとも1つを含んでよい。具体的には、第1のソート列は物理的な列であってよく、表現であってよく、物理的な列および表現であってよく、または、ソート要件を満たす任意の他のフォーマットであってよく、このことは本発明では限定されない。
【0103】
例示的に、第1のソート列を指定するための前述の文が例として使用される。文では、第1のソート列は“c1,c2+1”であり、ここで、“c1”は物理的な列であり、“c2+1”は表現である。
【0104】
さらに、表2に示されるように、表内のデータが記憶されるべき第1のデータである場合、第1のソート列は、要素列およびシリアル番号列、または数値列であってよく、ここで、要素列およびシリアル番号列、または数値列は、物理列と呼ばれてよく、または、第1のソート列は数値列の絶対値であってよく、ここで、数値列の絶対値は表現と呼ばれてよい。コンピュータノードが、ユーザの要件に従って、ユーザによって指定される前述の第1のソート列に従って、表2に示される第1のデータをソートしてよいことは理解されることができる。
【0105】
具体的には、第1のソート列が要素列およびシリアル番号列である場合、コンピュータノードが、昇順で、第1のソート列の値に従って、表2内のデータをソートした後に得られる結果(ソートはアルファベット順で、要素列に対して実行され、且つ、ソートは番号順で、シリアル番号列に対して実行される)は、表3に示される。第1のソート列が数値列である場合、コンピュータノードが、昇順で、第1のソート列の値に従って、表2内のデータをソートした後に得られる結果は、表4に示される。第1のソート列が数値列の絶対値である場合、コンピュータノードが、昇順で、第1のソート列の値に従って、表2内のデータをソートした後に得られる結果は、表5に示される。
【0110】
前述の表3、表4および表5から、異なる第1のソート列に対して、ソート結果は異なり、且つ、同じ第1のソート列に対して、第1のソート列の表現に従って実行されるソートの結果もまた、第1のソート列に従って直接実行されたソートの結果とは異なることが見てとれる。具体的には、ソートは、実際の使用要件に従って実行されてよく、このことは本発明では限定されない。
【0111】
任意で、第1のソート列の数は少なくとも1つであってよく、すなわち、第1のデータをソートするための少なくとも1つの基準があってよい。第1のソート列の数が少なくとも2つであるとき、少なくとも2つの第1のソート列は、主要な第1のソート列と少なくとも1つの二次的な第1のソート列とを含んでよく、その結果、コンピュータノードは、主要な第1のソート列に従って、第1のデータにおけるデータの各部分を最初にソートし、次いで、少なくとも1つの二次的な第1のソート列に従って、第1のデータにおけるデータの各部分を別々にソートしてよい。
【0112】
例示的に、前述の第1のソート列が“c1,c2+1”であることは例として使用され、ここで、“c1”は主要な第1のソート列であり、且つ、“c2+1”は二次的な第1のソート列である。
【0113】
さらに、表2に示されるように、第1のソート列が要素列およびシリアル番号列である場合、要素列は、主要な第1のソート列として設定されてよく、且つ、シリアル番号列は、二次的な第1のソート列として設定されてよく、または、シリアル番号列は、主要な第1のソート列として設定されてよく、且つ、要素列は、二次的な第1のソート列として設定されてよい。具体的な設定方式は、実際の要件に従って適応して調整されてよく、このことは本発明では限定されない。
【0114】
S204. コンピュータノードは、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たすかどうかを検出し、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである。
【0115】
コンピュータノードが第1のデータをローカルメモリ内にキャッシュするプロセスでは、コンピュータノードは、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たすかどうかを検出してよく、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであってよい。
【0116】
事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用されてよい。事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであってよく、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであってよく、または、設計要件を満たす任意の他の事前に設定された条件であってよく、このことは本発明では限定されない。
【0117】
具体的には、コンピュータノードは、ローカルメモリ内にキャッシュされている第2のデータの行数が第1の事前に設定された閾値以上であるかどうかを検出してよく、または、コンピュータノードは、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズが第2の事前に設定された閾値以上であるかどうかを検出してよい。
【0118】
第1の事前に設定された閾値および第2の事前に設定された閾値の値が、コンピュータノードによって実際に使用されるメモリサイズおよびメモリのデータ処理能力に従って設定されてよく、このことは本発明では限定されないことは留意されるべきである。
【0119】
S205. コンピュータノードによってローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、コンピュータノードは第2のデータを第1のソート列に従ってソートする。
【0120】
コンピュータノードが第1のデータをキャッシュするプロセスでは、データベースシステム内のローカルメモリが制限されたサイズおよび制限されたデータ処理能力を有するため、第1のデータは一度にローカルメモリに全てキャッシュされることはできず、すなわち、コンピュータノードは、第1のデータをローカルメモリに一部ずつ別々にキャッシュしてよく、その結果、コンピュータノードは、ローカルメモリに別々にキャッシュされるデータを一部ずつ連続的に処理してよい。具体的には、コンピュータノードは、リアルタイムで、ローカルメモリにキャッシュされている第2のデータの状態に対する統計値を収集してよい。コンピュータノードが、ローカルメモリにキャッシュされている第2のデータが事前に設定された条件を満たすと検出したとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよい。
【0121】
例えば、第1の事前に設定された閾値が10000行である場合、ローカルメモリ内にキャッシュされている第2のデータの行数が10000行以上であるとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよく、且つ、それに応じて、第2の事前に設定された閾値が6ギガバイトである場合、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズが6ギガバイト以上であるとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよい。
【0122】
さらに、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズはまた、パーセンテージによって表されてもよい。例えば、ローカルメモリの容量が8ギガバイトである場合、第2の事前に設定された閾値は8ギガバイトの90%(パーセンテージ)であってよく、ローカルメモリの、ローカルメモリ内にキャッシュされている第2のデータによって占有されるサイズが8ギガバイトの90%よりも大きいとき、コンピュータノードは、第1のソート列に従って、第2のデータをソートし始めてよい。
【0123】
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、第1のデータをソートするとき、コンピュータノードは、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートしてよい。
【0124】
任意の長さを有する二進値は、ハッシュアルゴリズムに従って、固定の長さを有するより小さい二進値にマッピングされてよく、且つ、固定の長さを有するより小さい二進値は、二進値のハッシュ値と呼ばれる。ハッシュ値は、一意のデータを有する、非常にコンパクトな数値の表現形式のセグメントである。例えば、データのセグメントのハッシュ値が計算される場合、データのセグメント内の任意の文字が計算前に変更される限り、変更前後の計算によって得られる2つのハッシュ値もまた異なる。
【0125】
それに応じて、第1のソート列の数値のハッシュ値は、ハッシュアルゴリズムに従って、第1のソート列の数値の二進値を固定の長さを有するより小さい二進値にマッピングすることによって得られてよい。
【0126】
S206. コンピュータノードは、ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入する。
【0127】
データベースでは、属性または属性グループのクエリ速度を改善するために、属性または属性グループ内の同じ値を有するタプル(クラスタコードと呼ばれる)が、連続する物理ブロックに中心に記憶されてよい。この記憶方法はクラスタリングと呼ばれる。クラスタリング方式でデータを記憶することは、クラスタコードに従ってクエリを実行することにおける効率を大きく改善することができる。
【0128】
コンピュータノードが第2のデータをソートした後、コンピュータノードは、第2のデータをロードするプロセスを完了するために、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータをコンピュータノードによって作成された表に1行ずつ挿入してよい。
【0129】
具体的には、コンピュータノードは、ソートされた第2のデータをデータベースシステムにおける記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶してよく、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである。
【0130】
特に、コンピュータノードは、ソートされた第2のデータを記憶媒体内の連続するアイドル状態の物理ブロックにクラスタリング方式で記憶してよく、または、ソートされた第2のデータを記憶媒体内の不連続のアイドル状態の物理ブロックにクラスタリング方式で記憶してよく(例えば、第2のデータにおけるデータのある部分は、いくつかの連続するアイドル状態の物理ブロックにクラスタリング方式で記憶され、且つ、第2のデータにおけるデータの別の部分は、いくつかの他の連続するアイドル状態の物理ブロックにクラスタリング方式で記憶され、ここで、いくつかの連続するアイドル状態の物理ブロックといくつかの他の連続するアイドル状態の物理ブロックは、連続する物理ブロックではない)、具体的な記憶形式は本発明では限定されない。すなわち、前述の記憶形式のいずれが本発明で使用されても、記憶媒体に記憶されたデータが部分的にシーケンシャルであることは保証されることができる。
【0131】
コンピュータノードは、記憶されるべき第1のデータがデータベースシステム内の記憶媒体に全て記憶されるまで、前述のS202からS206を繰り返し実行してよいことは留意されるべきである。
【0132】
コンピュータノードは、第1のデータにおける、ローカルメモリにキャッシュされているデータの各部分を連続的にソートし、各回ソートされた後に得られたデータの各部分を記憶媒体に記憶してよく、その結果、記憶媒体に記憶された第1のデータは部分的にシーケンシャルであり、すなわち、記憶媒体に記憶された第1のデータにおけるデータの各部分がシーケンシャルに配列されることが保証されることができることは理解されることができる。
【0133】
例示的に、ユーザが第1のデータ、すなわち、大学におけるダンス部内の500人の学生に関する情報をデータベースシステム内の記憶媒体に記憶して、次のアクセスを容易にする必要がある場合、ユーザは最初に、500人の学生に関する情報をコンピュータノードに入力し、テキストの形式で、コンピュータノードのハードディスク内に情報を記憶する必要がある。コンピュータノードが、500人の学生に関する情報を、ユーザの命令に従って、データベースシステム内の記憶媒体に記憶するプロセスでは、コンピュータノードは、ハードディスク内のテキストから500人の学生に関する情報をデータベースシステム内のローカルメモリに読み出してよい。具体的には、コンピュータノードは、各学生に従って、各学生に関する情報を1行ずつ読み出す方式で、500人の学生に関する情報をローカルメモリに連続的に読み出してよい。
【0134】
各学生に関する情報が、クラス、氏名、学生番号、年齢、専攻および家族情報等の属性を含むと仮定される。本発明の本実施形態で提供されるクラスタリング記憶方法によると、500人の学生に関する情報は1つの表を構成してよい。表1に示されるように、表1内の各行(すなわち、各学生に関する情報)はタプルであり、且つ、各列(全ての学生に関する項目の情報)は属性である。
【0135】
500人の学生に関する情報を入力するとき、ユーザは特定の順序に従って情報を入力しなくてよく、従って、ハードディスク内にテキストで記憶される500人の学生に関する情報は、シーケンシャルに配列されないことは留意されるべきである。500人の学生に関する情報の次の再利用を容易にするために、例えば、500人の学生に関する情報に対するクエリおよびソート等の操作を実行するために、500人の学生に関する情報は、長期間使用を容易にし、且つ、繰り返される操作を回避するために、データベースシステム内の記憶媒体に記憶される必要がある。特に、データがデータベースシステム内の記憶媒体に記憶されるとき、対応する表記憶構造は一般に記憶用に使用されてよい。従来技術で提供される表記憶構造と比較すると、本発明の本実施形態で提供される表記憶構造(本発明の本実施形態におけるコンピュータノードによって作成される表の記憶構造)、すなわち、表1に示される表記憶構造は、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることを保証することができる。
【0136】
前述の表1から、この例では、ユーザによって指定された第1のソート列、すなわち、部分クラスタキー(主キー)はクラスおよび学生番号であってよいことがわかる。これは、各学生が2つの属性、すなわち、クラスと学生番号の両方が決定されるときにのみ決定されることができ、すなわち、各学生は、クラスと学生番号の両方が決定されたときにのみ別の学生と区別されることができるためである。
【0137】
さらに、
図3に示されるように、コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザは、ユーザの要件に従って、クエリ、ソートまたは集約等の対応する操作を記憶媒体に記憶された第1のデータに対して実行してよい。具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法は、以下のステップをさらに含んでよい:
【0138】
S207. コンピュータノードはクエリ列を決定する。
【0139】
コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザが第1のデータに対してクエリ操作を実行する必要がある場合、ユーザは対応するクエリ列を指定する必要があり、すなわち、コンピュータノードは、ユーザによって指定されたクエリ列を決定してよく、ここで、クエリ列は、第1のデータに対するクエリ操作を実行するための基準として使用されてよい。
【0140】
S208. コンピュータノードは、クエリ列を第1のソート列内の1番目のソート列と比較する。
【0141】
コンピュータノードがクエリ列を決定した後、コンピュータノードは、クエリ列が第1のソート列内の1番目のソート列であるかどうかを決定するために、クエリ列を第1のソート列内の1番目のソート列と比較してよい。
【0142】
S209. コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出す。
【0143】
コンピュータノードがクエリ列を決定した後で、且つ、クエリ操作がクエリ列に従って、第1のデータに対して実行される前に、コンピュータノードは、ローカルメモリ内で、データに対するクエリ操作を完了するために、記憶媒体に記憶された第1のデータをローカルメモリに読み出す必要がある。
【0144】
S207が実行された後、S208およびS209の間の実行順序は、本発明では限定されず、すなわち、本発明では、S208が最初に実行されてよいとともに、次いで、S209が実行され、S209が最初に実行されてよいとともに、次いで、S208が実行され、または、S208およびS209が同時に実行されてよい。
【0145】
S210. クエリ列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行してよい。
【0146】
クエリ列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行してよい。
【0147】
第1のソート列の数が1つである場合、第1のソート列内の1番目のソート列は第1のソート列であり、且つ、第1のソート列の数が2つ以上である場合、第1のソート列内の1番目のソート列は第1のソート列内の主要な第1のソート列であることは理解されることができる。
【0148】
具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは第1のデータが一部ずつソートされた後に得られるデータを、クラスタリング方式で記憶媒体に記憶してよいため、第1のデータは記憶媒体内で部分的且つシーケンシャルに配列されることが保証されることができる。従って、クエリ操作が、第1のソート列内の1番目のソート列に従って、第1のデータに対して実行される必要があるとき、コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出し、且つ、ローカルメモリ内で、二分探索方式で、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を直接実行してよい。
【0149】
二分探索は、二面性探索とも呼ばれ、且つ、二分探索の利点は、比較回数が小さく、探索速度が速く、平均性能が高いことであり、且つ、二分探索の欠点は、探索されるべき表が順序付けられた表である必要があり、データを挿入することおよびデータを削除することが比較的難しいことである。従って、二分探索方式は、あまり変更しないが頻繁に探索される順序付けられた表に適用可能である。例示的に、表内の要素が昇順で第1のソート列に従って配列されると仮定され、表の中央位置に記録されるキーワードは探索のキーワードと比較され、且つ、表の中央位置に記録されるキーワードが探索のキーワードと等しい場合、探索は成功であり、そうでなければ、中央位置に記録されるキーワードは表を2つの副表、すなわち、前の副表および次の副表に分割するために使用され、且つ、表の中央位置に記録されるキーワードが探索のキーワードよりも大きい場合、前の副表がさらに探索され、そうでなければ、次の副表がさらに探索される。前述のプロセスは、クエリ条件を満たすデータが見つかるまで繰り返され、且つ、この場合、探索は成功であり、または、前述のプロセスは副表が存在しなくなるまで繰り返され、且つ、この場合、探索は成功ではない。
【0150】
第1のデータは、記憶媒体内で部分的且つシーケンシャルに配列されるため、コンピュータノードによって、記憶媒体からローカルメモリに読み出される第1のデータもまた、部分的且つシーケンシャルに配列されることは留意されるべきである。第1のデータが、第1のソート列内の1番目のソート列に従って問い合わせられる必要がある場合、コンピュータノードは、前述のS207からS210を実行することによって、ローカルメモリにおける第1のデータ内で、クエリ条件を満たすデータを迅速に見つけることができ、それによって、データをブラウズする回数およびデータを比較する回数を低減し、且つ、データクエリ性能を改善する。
【0151】
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、
図4に示されるように、第1のデータに対応する索引がまた、データを問い合わせるために使用されてもよい。第1のデータに対応する索引は、第1のデータを記憶媒体に記憶するプロセスで作成されてよく、または、第1のデータに対応する索引は、第1のデータが記憶媒体に記憶された後に作成されてよく、このことは本発明では限定されない。
【0152】
第1のデータに対応する索引は、記憶媒体内の第1のデータの具体的な記憶位置を示すために使用されてよいことは理解されることができる。例えば、第1のデータに対応する索引は、記憶媒体内の、第1のデータが具体的に記憶される物理ブロック、データページおよびデータ行を示すために使用されてよい。
【0153】
具体的には、第1のデータが、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶媒体に記憶された後、第1のデータは部分的且つシーケンシャルに記憶されるため、探索される必要があるデータ行は、クエリ列および第1のデータに対応する作成された索引に従って、記憶媒体内で直接見つけられることができる。従って、従来技術における、データが非シーケンシャルに記憶される場合と比較して、データを問い合わせる回数は大きく低減されるとともにデータクエリ性能は改善される。
【0154】
特に、第1のデータに対応する索引に従ってデータを探索するための方法は、従来技術における索引に従ってデータを探索するための方法と同様であるため、詳細はここでは再び説明されない。
【0155】
S211. コンピュータノードは第2のソート列を決定する。
【0156】
コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザが第1のデータをソートする必要がある場合、ユーザは対応するソート列を指定する必要があり、すなわち、コンピュータノードは、ユーザによって指定された第2のソート列を決定してよく、ここで、第2のソート列は、第1のデータに対するソート操作を実行するための基準として使用されてよい。
【0157】
S212. コンピュータノードは、第2のソート列を第1のソート列内の1番目のソート列と比較する。
【0158】
コンピュータノードが第2のソート列を決定した後、コンピュータノードは、第2のソート列が第1のソート列内の1番目のソート列であるかどうかを決定するために、第2のソート列を第1のソート列内の1番目のソート列と比較してよい。
【0159】
S213. コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出す。
【0160】
コンピュータノードが第2のソート列を決定した後で、且つ、ソート操作が第2のソート列に従って、第1のデータに対して実行される前に、コンピュータノードは、ローカルメモリ内で、データに対するソート操作を完了するために、記憶媒体に記憶された第1のデータをローカルメモリに読み出す必要がある。
【0161】
S211が実行された後、S212およびS213の間の実行順序は、本発明では限定されず、すなわち、本発明では、S212が最初に実行されてよいとともに、次いで、S213が実行され、S213が最初に実行されてよいとともに、次いで、S212が実行され、または、S212およびS213が同時に実行されてよい。
【0162】
S214. 第2のソート列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する。
【0163】
第2のソート列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行してよい。
【0164】
具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは第1のデータが一部ずつソートされた後に得られるデータを、クラスタリング方式で記憶媒体に記憶してよいため、第1のデータは記憶媒体内で部分的且つシーケンシャルに配列されることが保証されることができる。従って、ソート操作が、第1のソート列内の1番目のソート列に従って、第1のデータに対して実行される必要があるとき、コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出し、且つ、ローカルメモリ内で、第1のデータにおけるデータの各部分を直接ソートしてよく、すなわち、コンピュータノードは第1のデータに対してマージソートを実行してよい。
【0165】
マージ(Merge)ソートは、2つ(または2つより多い)の順序付けられたシーケンスを結合して新しい順序付けられたシーケンスにするためのソート方法である。マージソートは、マージ操作に基づく有効なソートアルゴリズムである。本発明の本実施形態で提供されるマージソートは、コンピュータノードが、記憶媒体にクラスタリング方式で記憶されたいくつかの順序付けられたシーケンスを結合して統合された順序付けられたシーケンスにすることであってよい。
【0166】
第1のデータは、記憶媒体内で部分的且つシーケンシャルに配列されるため、コンピュータノードによって、記憶媒体からローカルメモリに読み出される第1のデータもまた、部分的且つシーケンシャルに配列されることは留意されるべきである。第1のデータが第1のソート列内の1番目のソート列に従ってソートされる必要がある場合、コンピュータノードは、前述のS211からS214を実行することによって、ローカルメモリ内で、第1のデータを迅速にソートすることができ、その結果、データをソートすることにおける効率が改善されることができる。
【0167】
S215. コンピュータノードは集約列を決定する。
【0168】
コンピュータノードが第1のデータ全てを記憶媒体に記憶した後、ユーザが第1のデータに対して集約操作を実行する必要がある場合、ユーザは対応する集約列を指定する必要があり、すなわち、コンピュータノードは、ユーザによって指定された集約列を決定してよく、ここで、集約列は、第1のデータに対する集約操作を実行するための基準として使用されてよい。
【0169】
本発明の本実施形態で提供されるクラスタリング記憶方法では、集約操作は、最大値または最小値について第1のデータを探索する操作であることは留意されるべきである。
【0170】
S216. コンピュータノードは、集約列を第1のソート列内の1番目のソート列と比較する。
【0171】
コンピュータノードが集約列を決定した後、コンピュータノードは、集約列が第1のソート列内の1番目のソート列であるかどうかを決定するために、集約列を第1のソート列内の1番目のソート列と比較してよい。
【0172】
S217. コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出す。
【0173】
コンピュータノードが集約列を決定した後で、且つ、集約操作が集約列に従って、第1のデータに対して実行される前に、コンピュータノードは、ローカルメモリ内で、データに対する集約操作を完了するために、記憶媒体に記憶された第1のデータをローカルメモリに読み出す必要がある。
【0174】
S215が実行された後、S216およびS217の間の実行順序は、本発明では限定されず、すなわち、本発明では、S216が最初に実行されてよいとともに、次いで、S217が実行され、S217が最初に実行されてよいとともに、次いで、S216が実行され、または、S216およびS217が同時に実行されてよい。
【0175】
S218. 集約列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行してよい。
【0176】
集約列が第1のソート列内の1番目のソート列である場合、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行してよい。
【0177】
さらに、コンピュータノードが第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する方法は、具体的には以下を含んでよい:
【0178】
(1) コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定してよい。
【0179】
(2) コンピュータノードは、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較する。
【0180】
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは第1のデータが一部ずつソートされた後に得られるデータを、クラスタリング方式で記憶媒体に記憶してよいため、第1のデータは記憶媒体内で部分的且つシーケンシャルに配列される。従って、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作が実行される必要があるとき、コンピュータノードは、記憶媒体に記憶された第1のデータをローカルメモリに読み出してよく、前述の方法を使用することによって、コンピュータノードは、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を最初に決定し、次いで、コンピュータノードは、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較する。
【0181】
第1のデータは、記憶媒体内で部分的且つシーケンシャルに配列されるため、コンピュータノードによって、記憶媒体からローカルメモリに読み出される第1のデータもまた、部分的且つシーケンシャルに配列されることは留意されるべきである。第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作が実行される必要がある場合、コンピュータノードは、前述のS215からS218を実行することによって、ローカルメモリ内で、第1のデータに対する集約操作を迅速に完了することができ、すなわち、コンピュータノードは、第1のデータにおける最大値または最小値を迅速に決定することができ、それによって、データを集約することにおける効率を改善する。
【0182】
さらに、本発明の本実施形態で提供されるクラスタリング記憶方法では、
図4に示されるように、集約操作もまた、第1のデータに対応する索引を使用することによって、データに対して実行されてもよい。第1のデータに対応する索引は、第1のデータを記憶媒体に記憶するプロセスで作成されてよく、または、第1のデータに対応する索引は、第1のデータが記憶媒体に記憶された後に作成されてよく、このことは本発明では限定されない。
【0183】
第1のデータに対応する索引は、記憶媒体内の第1のデータの具体的な記憶位置を示すために使用されてよいことは理解されることができる。例えば、第1のデータに対応する索引は、記憶媒体内の、第1のデータが具体的に記憶される物理ブロック、データページおよびデータ行を示すために使用されてよい。
【0184】
具体的には、第1のデータが、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶媒体に記憶された後、第1のデータは部分的且つシーケンシャルに記憶されるため、1つ以上のデータページの各データページにおける最大値または最小値が、集約列および第1のデータに対応する作成された索引に従って、記憶媒体内で直接見つけられることができる。従って、従来技術における、データが非シーケンシャルに記憶される場合と比較して、データに対して集約操作を実行する回数は大きく低減されるとともにデータ集約性能は改善される。
【0185】
特に、第1のデータに対応する索引に従ってデータに対して集約操作を実行するための方法は、従来技術における方法と同様であるため、詳細はここでは再び説明されない。
【0186】
S207からS210、S211からS214およびS215からS218の実行順序は本発明では限定されず、すなわち、第1のデータが記憶媒体に全て記憶された後、実行される必要があるステップは実際の操作要件に従って選択されてよいことは理解されることができる。例えば、第1のデータに対するクエリ、ソートおよび集約等の前述の操作に対応する例では、クエリ操作が第1のデータに対して実行される必要がある場合、コンピュータノードはS207からS210を実行してよく、ソート操作が第1のデータに対して実行される必要がある場合、コンピュータノードはS211からS214を実行してよく、集約操作が第1のデータに対して実行される必要がある場合、コンピュータノードはS215からS218を実行してよい。
【0187】
さらに、前述で挙げられた第1のデータに対して実行される様々な操作は単に例示であり、第1のデータが、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって記憶された後、対応する操作は、別の対応する要件に従って、第1のデータに対してさらに実行されてよく、このことは、本発明では限定されない。
【0188】
例示的に、表6に示されるように、表6は、TPCH(ビジネス・インテリジェンス・コンピューティング・テスト標準)がデータをテストするために適用されるときの、従来技術で提供されるシーケンシャルな記憶と本発明の本実施形態で提供される部分的にシーケンシャルなクラスタリング記憶との間の実際のテストデータを示す。TPCHは、トランザクション処理性能評議会(Transaction Processing Performance Council, TPC)によって公表され、TPCHは、データベースシステムにおける複雑なクエリの応答時間をテストするために、決定支援システムにおけるデータベース操作をシミュレートすることができる。
【0190】
表6から、従来技術で提供されるシーケンシャルな記憶方法がデータを記憶するために使用されるときにTPCHを適用することによってデータをテストするための時間は、本発明の本実施形態で提供されるクラスタリング記憶方法がデータを記憶するために使用されるときにTPCHを適用することによってデータをテストするための時間よりもはるかに長いことが見てとれる。すなわち、データを記憶するために、本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、TPCHを適用することによってデータをテストするための時間は低減されることができ、それによって、TPCHを適用することによってデータをテストするテスト性能を改善する。
【0191】
さらに、表6に示されるように、TPCHを適用することによってデータを問い合わせる操作においては、従来技術で提供されるシーケンシャルな記憶と比較すると、本発明の本実施形態で提供される部分的にシーケンシャルなクラスタリング記憶では、TPCHを適用することによってデータを問い合わせるクエリ性能は明らかに改善される。とりわけ、3つのクエリQ6、Q12およびQ15のクエリ性能の改善比は300%を超える。
【0192】
本発明の本実施形態で提供されるクラスタリング記憶方法は、データベースシステム内の単一の表のシナリオにおいて適用されてよく、または、データベースシステム内の複数の表がジョイン(join)として供するシナリオにおいて適用されてよいことは留意されるべきである。具体的には、本発明の本実施形態で提供されるクラスタリング記憶方法は、実際のユーザ要件に従って適用されてよく、このことは、本発明では限定されない。
【0193】
本発明の本実施形態で提供されるクラスタリング記憶方法を使用することによって、記憶されるべき第1のデータは、一部ずつソートされた後、データベースシステム内の記憶媒体に記憶されてよく、且つ、記憶媒体に記憶されたデータの各部分がシーケンシャルに配列されることが保証されることができる。このようにして、記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、記憶媒体に記憶されたデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0194】
本発明の本実施形態で提供されるクラスタリング記憶方法によると、記憶されるべき第1のデータはデータベースシステム内のローカルメモリに1行ずつキャッシュされ、第1のソート列が決定され、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータが第1のソート列に従ってソートされ、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、ソートされた第2のデータがデータベースシステム内の記憶媒体にクラスタリング方式で記憶される。この解決手段を使用することによって、記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、第2のデータは、決定された第1のソート列に従ってソートされ始め、且つ、ソートされた第2のデータはデータベースシステム内の記憶媒体に記憶される。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0196】
図5に示されるように、本発明の実施形態はクラスタリング記憶装置1を提供し、ここで、装置はデータベースシステムにおいて適用される。クラスタリング記憶装置1は、
記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュするように構成されるキャッシングユニット10と、
第1のソート列を決定するように構成される決定ユニット11であって、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用される、決定ユニット11と、
ローカルメモリ内にキャッシングユニット10によってキャッシュされている第2のデータが事前に設定された条件を満たす場合、第2のデータを決定ユニット11によって決定された第1のソート列に従ってソートするように構成される操作ユニット12であって、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータである、操作ユニット12と、
操作ユニット12によってソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶するように構成される記憶ユニット13と
を含んでよい。
【0197】
任意で、事前に設定された条件は、ローカルメモリ内にキャッシュされている第2のデータのデータ量とローカルメモリ内の記憶用に許可されているデータ量との間の関係を表すために使用される。
【0198】
任意で、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
操作ユニット12は、具体的には、ローカルメモリ内にキャッシングユニット10によってキャッシュされている第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0199】
任意で、事前に設定された条件は、ローカルメモリの、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
操作ユニット12は、具体的には、ローカルメモリの、ローカルメモリ内にキャッシングユニット10によってキャッシュされている第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0200】
任意で、操作ユニット12は、具体的には、決定ユニット11によって決定された、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
【0201】
任意で、記憶ユニット13は、具体的には、操作ユニット12によってソートされた第2のデータを記憶媒体内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に記憶媒体にクラスタリング方式で記憶されているデータである。
【0202】
任意で、決定ユニット11によって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
【0203】
任意で、決定ユニット11は、記憶ユニット13が第1のデータ全てを記憶媒体に記憶した後、クエリ列を決定するようにさらに構成され、且つ、操作ユニット12は、決定ユニット11によって決定されたクエリ列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行するようにさらに構成される。
【0204】
さらに、キャッシングユニット10は、決定ユニット11がクエリ列を決定した後で、且つ、操作ユニット12が第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニット12は、具体的には、ローカルメモリ内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、キャッシングユニット10によってキャッシュされた第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行するように構成される。
【0205】
任意で、決定ユニット11は、記憶ユニット13が第1のデータ全てを記憶媒体に記憶した後、第2のソート列を決定するようにさらに構成され、且つ、操作ユニット12は、決定ユニット11によって決定された第2のソート列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行するようにさらに構成される。
【0206】
さらに、キャッシングユニット10は、決定ユニット11が第2のソート列を決定した後で、且つ、操作ユニット12が第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニット12は、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニット10によってキャッシュされた第1のデータに対してマージソートを実行するように構成される。
【0207】
任意で、決定ユニット11は、記憶ユニット13が第1のデータ全てを記憶媒体に記憶した後、集約列を決定するようにさらに構成され、且つ、操作ユニット12は、決定ユニット11によって決定された集約列が第1のソート列内の1番目のソート列である場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
【0208】
さらに、キャッシングユニット10は、決定ユニット11が集約列を決定した後で、且つ、操作ユニット12が第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、記憶媒体に記憶された第1のデータをローカルメモリに読み出すようにさらに構成され、且つ、
操作ユニット12は、具体的には、ローカルメモリ内で、第1のソート列内の1番目のソート列に従って、キャッシングユニット10によってキャッシュされた第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較するように構成される。
【0209】
さらに、
図6に示されるように、本発明の本実施形態で提供されるクラスタリング記憶装置1は、作成ユニット14をさらに含み、ここで、
作成ユニット14は、キャッシングユニット10が記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュする前に、記憶媒体内に表を作成するように構成され、ここで、表は、第1のデータをロードするために使用され、且つ、
操作ユニット12は、具体的には、ソートされた第2のデータを記憶媒体にクラスタリング方式で記憶するために、ソートされた第2のデータを作成ユニット14によって作成された表に1行ずつ挿入するように構成される。
【0210】
任意で、決定ユニット11によって決定された第1のソート列の数は少なくとも1つであり、ここで、第1のソート列の数が少なくとも2つであるとき、少なくとも2つの第1のソート列は、主要な第1のソート列と少なくとも1つの二次的な第1のソート列とを含む。
【0211】
本発明の本実施形態で提供されるクラスタリング記憶装置によると、クラスタリング記憶装置は、記憶されるべき第1のデータをデータベースシステム内のローカルメモリに1行ずつキャッシュし、第1のソート列を決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされているデータをソートするために使用され、ローカルメモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、クラスタリング記憶装置は、第2のデータを第1のソート列に従ってソートし、ここで、第2のデータは、第1のデータ内の、ローカルメモリ内にキャッシュされているデータであり、クラスタリング記憶装置は、ソートされた第2のデータをデータベースシステム内の記憶媒体にクラスタリング方式で記憶する。この解決手段を使用することによって、クラスタリング記憶装置が記憶されるべき第1のデータをローカルメモリに1行ずつキャッシュするプロセスでは、ローカルメモリ内にキャッシュされている第2のデータのデータ量がローカルメモリ内の記憶用に許可されているデータ量を超過しているとき、クラスタリング記憶装置は、第2のデータを、決定された第1のソート列に従ってソートし始め、且つ、ソートされた第2のデータをデータベースシステム内の記憶媒体に記憶する。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0213】
図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内にキャッシュされているデータである。
【0214】
任意で、事前に設定された条件は、メモリ22内にキャッシュされている第2のデータのデータ量とメモリ22内の記憶用に許可されているデータ量との間の関係を表すために使用される。
【0215】
任意で、事前に設定された条件は、第2のデータの行数が第1の事前に設定された閾値以上であることであり、且つ、
プロセッサ20は、具体的には、メモリ22内にキャッシュされている第2のデータの行数が第1の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0216】
任意で、事前に設定された条件は、メモリ22の、第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上であることであり、且つ、
プロセッサ20は、具体的には、メモリ22の、メモリ22内にキャッシュされている第2のデータによって占有されるサイズが、第2の事前に設定された閾値以上である場合、第1のソート列に従って、第2のデータをソートするように構成される。
【0217】
任意で、プロセッサ20は、具体的には、第1のソート列の数値または第1のソート列の数値のハッシュ値に従って、第2のデータをソートするように構成される。
【0218】
任意で、プロセッサ20は、具体的には、ソートされた第2のデータを底層記憶媒体21内のアイドル状態の物理ブロックにクラスタリング方式で記憶するように構成され、ここで、アイドル状態の物理ブロックは、第3のデータによって占有される物理ブロックを除く物理ブロックであり、且つ、第3のデータは、第1のデータ内の、第2のデータよりも先に底層記憶媒体21にクラスタリング方式で記憶されているデータである。
【0219】
任意で、プロセッサ20によって決定された第1のソート列は、物理的な列および表現のうちの少なくとも1つを含む。
【0220】
任意で、プロセッサ20は、第1のデータが底層記憶媒体21に全て記憶された後、クエリ列を決定し、クエリ列が第1のソート列内の1番目のソート列であるかどうかを決定し、クエリ列が第1のソート列内の1番目のソート列であると決定された場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行し、クエリ結果を出力するようにさらに構成される。
【0221】
さらに、プロセッサ20は、クエリ列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してクエリ操作を実行する前に、底層記憶媒体21に記憶された第1のデータをメモリ22に読み出すようにさらに構成され、且つ、
プロセッサ20は、具体的には、メモリ22内で、二分探索方式で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページに対してクエリ操作を実行し、クエリ結果を出力するように構成される。
【0222】
任意で、プロセッサ20は、第1のデータが底層記憶媒体21に全て記憶された後、第2のソート列を決定し、第2のソート列が第1のソート列内の1番目のソート列であるかどうかを決定し、第2のソート列が第1のソート列内の1番目のソート列であると決定された場合、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行し、ソートされた第1のデータを出力するようにさらに構成される。
【0223】
さらに、プロセッサ20は、第2のソート列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対してソート操作を実行する前に、底層記憶媒体21に記憶された第1のデータをメモリ22に読み出すようにさらに構成され、且つ、
プロセッサ20は、具体的には、メモリ22内で、第1のソート列内の1番目のソート列に従って、第1のデータに対してマージソートを実行し、ソートされた第1のデータを出力するように構成される。
【0224】
任意で、プロセッサ20は、第1のデータが底層記憶媒体21に全て記憶された後、集約列を決定し、集約列が第1のソート列内の1番目のソート列であるかどうかを決定し、集約列が第1のソート列内の1番目のソート列であると決定された場合、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行し、集約操作を実行した結果を出力するようにさらに構成され、ここで、集約操作は、最大値または最小値について第1のデータを探索する操作である。
【0225】
さらに、プロセッサ20は、集約列を決定した後で、且つ、第1のソート列内の1番目のソート列に従って、第1のデータに対して集約操作を実行する前に、底層記憶媒体21に記憶された第1のデータをメモリ22に読み出すようにさらに構成され、且つ、
プロセッサ20は、具体的には、メモリ22内で、第1のソート列内の1番目のソート列に従って、第1のデータの1つ以上のデータページの各データページにおける最大値または最小値を決定し、第1のデータにおける最大値または最小値を決定するために、各データページにおける最大値または最小値を連続的に比較し、最大値または最小値を出力するように構成される。
【0226】
さらに、プロセッサ20は、記憶されるべき第1のデータがメモリ22に1行ずつキャッシュされる前に、底層記憶媒体21内に表を作成するようにさらに構成され、ここで、表は第1のデータをロードするために使用され、且つ、
プロセッサ20は、具体的には、ソートされた第2のデータを底層記憶媒体21にクラスタリング方式で記憶するために、ソートされた第2のデータを表に1行ずつ挿入するように構成される。
【0227】
任意で、プロセッサ20によって決定された第1のソート列の数は少なくとも1つであり、ここで、第1のソート列の数が少なくとも2つであるとき、少なくとも2つの第1のソート列は、主要な第1のソート列と少なくとも1つの二次的な第1のソート列とを含む。
【0228】
本発明の本実施形態では、コンピュータノードは、クラスタリング方式でデータを記憶することができるコンピュータまたは任意の他のデバイスであってよく、このことは、本発明では限定されない。すなわち、本発明の実施形態で提供されるクラスタリング記憶方法を実施することができる装置およびデバイスの両方が、本発明の保護範囲に包含されるべきである。
【0229】
本発明の本実施形態で提供されるデータベースシステムによると、データベースシステム内のコンピュータノードは、記憶されるべき第1のデータをデータベースシステム内のメモリに1行ずつキャッシュし、第1のソート列を決定し、ここで、第1のソート列は、メモリ内にキャッシュされているデータをソートするために使用され、メモリ内にキャッシュされている第2のデータが事前に設定された条件を満たす場合、コンピュータノードは、第2のデータを第1のソート列に従ってソートし、ここで、第2のデータは、第1のデータ内の、メモリ内にキャッシュされているデータであり、コンピュータノードは、ソートされた第2のデータをデータベースシステム内の底層記憶媒体にクラスタリング方式で記憶する。この解決手段を使用することによって、コンピュータノードが記憶されるべき第1のデータをメモリに1行ずつキャッシュするプロセスでは、メモリ内にキャッシュされている第2のデータのデータ量がメモリ内の記憶用に許可されているデータ量を超過しているとき、コンピュータノードは、第2のデータを、決定された第1のソート列に従ってソートし始め、且つ、ソートされた第2のデータを底層記憶媒体に記憶する。記憶されるべきデータは、データローディングを完了するために、一部ずつソートおよび記憶されてよいため、データベースシステム内の底層記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0231】
本発明の実施形態で提供されるクラスタリング記憶方法をより明確に理解するために、以下では、本発明の実施形態で提供されるクラスタリング記憶方法をさらに説明するために具体例を使用する。
図8に示されるように、記憶されるべき第1のデータは、9000000行の学生データであり、具体的には、データの各行は、
図9に示されるクラス、学生番号および氏名等の各学生に関する情報を示すと仮定される。
【0232】
図9に示されるように、Aはソートされていないデータを示し、且つ、Bは、ソートされるとともに、本発明の実施形態で提供されるクラスタリング記憶方法を使用することによって記憶された後に得られるデータを示すことは留意されるべきである。
【0233】
データベースシステムでは、本発明の実施形態で提供されるクラスタリング記憶方法を使用することによって、クラスタリング方式で第1のデータを記憶するプロセスは、具体的には、以下のようになる:
【0234】
(1) コンピュータノードは、記憶されるべき学生データをデータベースシステム内のローカルメモリ内に1行ずつキャッシュする。
【0235】
(2) コンピュータノードは、第1のソート列がクラスおよび学生番号であることを決定し、ここで、第1のソート列は、ローカルメモリ内にキャッシュされている学生データをソートするために使用され、且つ、ソート列は、実際の要件に従ってユーザによって指定される。
【0236】
(3) ローカルメモリ内にキャッシュされている学生データが、本発明の本実施形態で提供される事前に設定された条件を満たす場合、コンピュータノードは、学生のクラスおよび学生番号に従って、ローカルメモリ内にキャッシュされている学生データをソートする。
【0237】
(4) コンピュータノードは、データベースシステム内の記憶媒体に、クラスタリング方式で、ローカルメモリ内のソートされた学生データを記憶する。
【0238】
(5) コンピュータノードは、記憶されるべき学生データが記憶媒体に一部ずつ全てソートおよび記憶されるまで、(1)から(4)を周期的に実行する。
【0239】
例示的に、
図9に示されるAでは、記憶されるべき学生データの12個の行があり、且つ、学生データの12個の行は非シーケンシャルに記憶される。本発明の実施形態で提供されるクラスタリング記憶方法が学生データを記憶するために使用されるとき、コンピュータノードは、学生データの第1の行から開始して、学生データをデータベースシステム内のローカルメモリ内に1行ずつキャッシュしてよい。
図9におけるB1に示されるように、学生データの6個の行のみが各回ローカルメモリ内にキャッシュされることができると仮定され、且つ、コンピュータノードが学生データの6個の行をローカルメモリ内にキャッシュしたとき、コンピュータノードは、学生データの6個の行をソートし、ソートされた学生データの6個の行をデータベースシステム内の記憶媒体にクラスタリング方式で記憶してよい。
図9におけるB2に示されるように、コンピュータノードが学生データの6個の行の記憶を完了した後、コンピュータノードは、学生データの他の6個の行をローカルメモリ内に1行ずつキャッシュし、キャッシングが完了した後の学生データの他の6個の行をソートし、ソートされた学生データの他の6個の行を記憶媒体内にクラスタリング方式で記憶し続けてよい。この場合、
図9におけるBに示されるように、コンピュータノードは、学生データの全ての記憶されるべき12個の行を記憶媒体にクラスタリング方式で記憶し、且つ、学生データの12個の行は、記憶媒体に部分的且つシーケンシャルに記憶される。
【0240】
さらに、学生データをキャッシュするとき、コンピュータノードは、ローカルメモリのサイズに従って学生データをキャッシュしてよい。具体的には、コンピュータノードによって一度にキャッシュされる学生データのいくつかの行のサイズが比較的大きい場合、コンピュータノードによってこの回にキャッシュされる学生データの行数は比較的小さく、それとは逆に、コンピュータノードによって一度にキャッシュされる学生データのいくつかの行のサイズが比較的小さい場合、コンピュータノードによってこの回にキャッシュされる学生データの行数は比較的大きい。具体的には、コンピュータノードによってキャッシュされる学生データのサイズは、実際の状態に従って決定されてよく、このことは、本発明では限定されない。
【0241】
本発明の実施形態で提供されるクラスタリング記憶方法では、コンピュータノードは、データベースシステム内のローカルメモリの処理能力に従って、記憶されるべきデータを1行ずつキャッシュしてよく、且つ、ローカルメモリ内にキャッシュされたデータの一部がローカルメモリの処理能力を超えるとき、コンピュータノードは、ユーザによって指定された決定されたソート列に従って、データのその部分をソートし始めて、ソートされたデータの部分をデータベースシステム内の記憶媒体に記憶してよい。コンピュータノードは、記憶されるべきデータを、データローディングを完了するために、一部ずつソートして、ソートされたデータを記憶してよいため、記憶媒体におけるデータが部分的にシーケンシャルであることが保証されることができ、その結果、データローディング性能およびデータ更新性能がわずかに影響を受けるという前提で、データクエリ性能およびデータ圧縮効率が改善されることが保証されることができる。
【0242】
便利且つ簡潔な説明のために、前述の機能モジュールの分割は説明のための例として使用されることは当業者によって明確に理解されることができる。実際の適用では、前述の機能は、異なる機能モジュールに割り当てられ、且つ、要件に従って実施されてよく、すなわち、装置の内部構造は異なる機能モジュールに分割されて、上記で説明された機能の全てまたはいくつかを実施する。前述のシステム、装置およびユニットの詳細な動作プロセスのために、前述の方法の実施形態における対応するプロセスに対して参照が行われてよく、且つ、詳細はここでは再び説明されない。
【0243】
本願で提供されるいくつかの実施形態では、開示されたシステム、装置および方法が他の方式で実施されてよいことは理解されるべきである、例えば、説明された装置の実施形態は、単に例示である。例えば、モジュールまたはユニット分割は単に、論理的な機能の分割であり、且つ、実際の実施では他の分割であってよい。例えば、複数のユニットまたはコンポーネントは、別のシステムに結合または統合されてよく、または、いくつかの特徴は無視されるかまたは実行されなくてよい。加えて、表示または議論された相互結合または直接結合または通信接続は、いくつかのインタフェースを介して実施されてよい。装置またはユニット間の間接結合または通信接続は、電子的、機械的または別の形態で実施されてよい。
【0244】
分離した部分として説明されたユニットは物理的に分離していてもいなくてもよく、且つ、ユニットとして表示された部分は、物理ユニットであってもなくてもよく、1つの位置に配置されてよく、または、複数のネットワークユニット上に分配されてよい。ユニットのいくつかまたはすべては、実施形態の解決手段の目的を達成するために、実際のニーズに従って選択されてよい。
【0245】
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてよく、または、ユニットの各々は、物理的に孤立して存在してよく、または、2つ以上のユニットは1つのユニットに統合される。統合されたユニットは、ハードウェアの形態で実施されてよく、または、ソフトウェア機能ユニットの形態で実施されてよい。
【0246】
統合されたユニットが、ソフトウェア機能ユニットの形態で実施されて、独立した製品として販売または使用されるとき、統合されたユニットは、コンピュータ可読記憶媒体に記憶されてよい。このような理解に基づくと、本発明の技術的解決手段は本質的に、または従来技術に貢献する部分は、または技術的解決手段の全てまたはいくつかは、ソフトウェア製品の形態で実施されてよい。ソフトウェア製品は記憶媒体に記憶されるとともに、本発明の実施形態で説明される方法のステップの全てまたはいくつかを実行するように、コンピュータデバイス(パーソナルコンピュータ、サーバまたはネットワークデバイスであってよい)またはプロセッサ(processor)に命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読出し専用メモリ(ROM, Read-Only Memory)、ランダムアクセスメモリ(RAM, Random Access Memory)、磁気ディスクまたは光ディスク等のプログラムコードを記憶することができる任意の媒体を含む。
【0247】
前述の説明は、単に、本発明の具体的な実施方式であるが、本発明の保護範囲を限定するように意図されない。本発明で開示される技術的範囲内で当業者によって容易に理解される任意の変更または置換は、本発明の保護範囲に包含されるべきである。従って、本発明の保護範囲は、請求項の保護範囲に従うべきである。