JP2021501389A - データ階層記憶及び階層探索方法及び装置 - Google Patents
データ階層記憶及び階層探索方法及び装置 Download PDFInfo
- Publication number
- JP2021501389A JP2021501389A JP2020519351A JP2020519351A JP2021501389A JP 2021501389 A JP2021501389 A JP 2021501389A JP 2020519351 A JP2020519351 A JP 2020519351A JP 2020519351 A JP2020519351 A JP 2020519351A JP 2021501389 A JP2021501389 A JP 2021501389A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- local
- file
- disk
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
データ階層記憶及び階層探索方法及び装置を提供する。この方法は、データファイルをリモートディスクに記憶することと、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュすることと、データブロックをローカルディスクからキャッシング用のローカルメモリにロードすることとを含む。この出願で、データアクセスの実際の需要に自動的に応じたデータブロックの形で、データを少なくとも階層的に記憶することができ、それにより、データを、より高速でロードして計算することができ、より少ないネットワーク資源を消費する。
Description
この出願は、「データ階層記憶及び階層探索方法及び装置」と称する2017年10月30日に出願の中国特許出願第201711036438.5号に優先権を主張し、その内容全体を参照により本明細書に引用したものとする。
技術分野
本発明は、コンピュータアプリケーション技術の分野、特に、データ階層記憶及び階層探索方法及び装置に関する。
本発明は、コンピュータアプリケーション技術の分野、特に、データ階層記憶及び階層探索方法及び装置に関する。
技術背景
解析データベース(Analytic DB)の場合、計算の前に、計算に関連する全データを、外部データソース(例えば、分散ファイルシステム)から計算ノードにインポートし、その後、計算中に、ローカルデータを読み取る。これにより、計算工程のネットワークオーバーヘッドを減らすことができる。しかし、まだ、少なくとも下記の問題がある。
解析データベース(Analytic DB)の場合、計算の前に、計算に関連する全データを、外部データソース(例えば、分散ファイルシステム)から計算ノードにインポートし、その後、計算中に、ローカルデータを読み取る。これにより、計算工程のネットワークオーバーヘッドを減らすことができる。しかし、まだ、少なくとも下記の問題がある。
1.解析データベースの局所的容量は、制限されており、計算の前に、大量のデータファイルを記憶する必要がある。現在、この問題は、解析データベースにおける計算ノードを増加し、解析データベースの記憶容量を拡大することによって、主に解決されているけれども、計算ノードの増加により、ユーザの使用コストが必然的に増加する。
2.関連技術において、幾つかの状態を解析データベースに事前に設定することによって、データを、階層記憶用のコールドデータ及びホットデータに分割する。ホットデータを、解析データベースの高レベル(例えば、ローカルSSD)で記憶し、コールドデータを、低レベル(例えば、ローカルHDD)で記憶する。上述の第1の点に記載の問題は、まだ存在するし、これらの状態を、ユーザアクセスで動的に更新することができず、従って、コールドデータ及びホットデータの分散は、あまり正確でなく、階層記憶は、あまり柔軟性がない。
3.現在、解析データベースは、階層記憶をサポートすることができるけれども、解析データベースのデータ階層の細かさは、ファイルであり、粒度は、比較的大きい。ファイルにおけるコールドデータ及びホットデータを、階層的に記憶することができないし、データのローディング速度及び計算速度が低下すると同時に、大量のネットワーク資源が浪費される。
発明の概要
この出願の目的は、関連技術における技術的課題のうち少なくとも1つを解決することにある。
この出願の目的は、関連技術における技術的課題のうち少なくとも1つを解決することにある。
データアクセスの実際の需要に自動的に応じたデータブロックの形で、どのデータを少なくとも階層的に記憶することができるかに基づく、データ階層記憶及び階層探索方法及び装置が、この出願で提供されており、データを、より高速でロードして計算することができ、より少ないネットワーク資源を消費する。
下記の技術的解決策を、この出願で採用する。
データファイルをリモートディスクに記憶することと、
ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュすることと、
データブロックをローカルディスクからキャッシング用のローカルメモリにロードすることと
を含むデータ階層記憶方法。
ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュすることと、
データブロックをローカルディスクからキャッシング用のローカルメモリにロードすることと
を含むデータ階層記憶方法。
固定長ブロックを含む少なくとも1つの固定長ブロックファイルをローカルディスクに生成し、データブロックをローカルディスクにキャッシュするステップは、データブロックをローカルディスクの空ブロックにキャッシュすることを含む。
データブロックをローカルディスクにキャッシュするステップの前に、方法は、ローカルディスクの全ブロックが一杯である場合、ブロックの一部を空にするように最低使用頻度アルゴリズムを使用することによって、ブロックの一部におけるデータを削除することを更に含む。
固定長ブロックを含む少なくとも1つの固定長ブロックファイルをローカルメモリに生成し、データブロックをローカルディスクからキャッシング用のローカルメモリにロードするステップの前に、方法は、ローカルメモリの全ブロックが一杯である場合、ブロックの一部を空にするように最低使用頻度アルゴリズムを使用することによって、ブロックの一部におけるデータを削除することを更に含む。
データファイルを記憶する少なくとも1つのローカルファイルをローカルディスクに更に生成し、方法は、事前指定データファイルをローカルディスクのローカルファイルにキャッシュすることを更に含む。
ローカルディスクは、ブロックファイルが生成されるブロックキャッシュと、ローカルファイルが生成されるファイルキャッシュとを含み、事前指定データファイルをローカルディスクのローカルファイルにキャッシュするステップの後に、方法は、ローカルディスクにおけるファイルキャッシュの使用容量を走査することによって、ローカルディスクにおけるブロックキャッシュの容量を拡大又は縮小することを更に含む。
ローカルディスクにおけるブロックキャッシュの容量を拡大又は縮小するステップは、
ファイルキャッシュの解放可能容量に応じてブロックキャッシュの容量を対応して増大し、新しい容量に応じてブロックキャッシュにおけるブロックファイル又はブロックを新しく生成することと、
ファイルキャッシュで増大される必要がある容量に応じてブロックキャッシュにおけるブロックファイル又はブロックの一部を削除し、ブロックキャッシュの容量を対応して縮小することと
のうち少なくとも1つを含む。
ファイルキャッシュの解放可能容量に応じてブロックキャッシュの容量を対応して増大し、新しい容量に応じてブロックキャッシュにおけるブロックファイル又はブロックを新しく生成することと、
ファイルキャッシュで増大される必要がある容量に応じてブロックキャッシュにおけるブロックファイル又はブロックの一部を削除し、ブロックキャッシュの容量を対応して縮小することと
のうち少なくとも1つを含む。
データブロックをローカルディスクにキャッシュするステップの前に、方法は、ブロックファイルに対応する先行書き込みログ(WAL)をローカルディスクに設定することを更に含む。
方法は、ユーザによるアクセス中に、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュすることを更に含む。
集約ノードによって、ユーザ機器からの計算タスクを計算サブタスクに分割し、計算サブタスクを複数の計算ノードに分散させることと、
複数の計算ノードによって、計算サブタスクを実行することによって、
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作
を実行することと、
集約ノードによって、複数の計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供することと
を含むデータ階層探索方法。
複数の計算ノードによって、計算サブタスクを実行することによって、
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作
を実行することと、
集約ノードによって、複数の計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供することと
を含むデータ階層探索方法。
複数の計算ノードは、計算サブタスクを実行することによって、データファイルをリモートディスクに記憶する操作を更に実行する。
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュするステップは、データブロックがローカルメモリ又はローカルディスクで得られない場合、対応するデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュすることと、データブロックをローカルディスクからキャッシング用のローカルメモリにロードすることとを含む。
データファイルをリモートディスクに記憶し、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得するように構成されているリモートファイル処理ユニットと、
データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュするように構成されているブロック処理ユニットと、
データブロックをローカルディスクからキャッシング用のローカルメモリにロードするように構成されているメモリキャッシングユニットと
を含むデータ階層記憶装置。
データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュするように構成されているブロック処理ユニットと、
データブロックをローカルディスクからキャッシング用のローカルメモリにロードするように構成されているメモリキャッシングユニットと
を含むデータ階層記憶装置。
装置は、少なくとも固定長ブロックを含む少なくとも1つの固定長ブロックファイルをローカルディスクに生成するように構成されているブロックキャッシングユニットを更に含み、ブロック処理ユニットは、データブロックを空ブロックにキャッシュするように構成されている。
装置は、データファイルを記憶する少なくとも1つのローカルファイルをローカルディスクに生成するように構成され、かつ事前指定データファイルをローカルディスクのローカルファイルにキャッシュするように構成されているファイル処理ユニットを更に含む。
ローカルディスクは、ブロックファイルが生成されるブロックキャッシュと、ローカルファイルが生成されるファイルキャッシュとを含み、装置は、ローカルディスクにおけるファイルキャッシュの使用容量を走査することによって、ローカルディスクにおけるブロックキャッシュの容量を拡大又は縮小するように構成されているディスク処理ユニットを更に含む。
装置は、ブロックファイルに対応するWALをローカルディスクに設定するように構成されているメタデータ処理ユニットを更に含む。
装置は、ユーザによるアクセス中に、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索するように構成されているブロックファイル処理ユニットを更に含み、ブロックキャッシングユニットは、ブロックファイル処理ユニットによってデータブロックを探索する工程で、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュするように更に構成されている。
リモートディスクと通信するように構成されている通信回路と、
階層記憶モードをサポートするデータ記憶装置であって、低レベルとしてローカルディスクを含み、高レベルとしてローカルメモリを含むデータ記憶装置と、
データ階層記憶プログラムが記憶されている記憶装置と、
データファイルをリモートディスクに記憶し、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュし、データブロックをローカルディスクからキャッシング用のローカルメモリにロードするデータ階層記憶プログラムを読み取るように構成されているプロセッサと
を含む計算デバイス。
階層記憶モードをサポートするデータ記憶装置であって、低レベルとしてローカルディスクを含み、高レベルとしてローカルメモリを含むデータ記憶装置と、
データ階層記憶プログラムが記憶されている記憶装置と、
データファイルをリモートディスクに記憶し、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュし、データブロックをローカルディスクからキャッシング用のローカルメモリにロードするデータ階層記憶プログラムを読み取るように構成されているプロセッサと
を含む計算デバイス。
少なくとも1つの集約ノードと複数の計算ノードとを含む分散計算システムであって、
集約ノードは、ユーザ機器からの計算タスクを計算サブタスクに分割し、計算サブタスクを複数の計算ノードに分散させ、複数の計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供するように構成されており、
計算ノードは、計算サブタスクを実行することによって、
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作を実行するように構成されている、
分散計算システム。
集約ノードは、ユーザ機器からの計算タスクを計算サブタスクに分割し、計算サブタスクを複数の計算ノードに分散させ、複数の計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供するように構成されており、
計算ノードは、計算サブタスクを実行することによって、
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作を実行するように構成されている、
分散計算システム。
この出願は、下記の利点を有する。
1つの態様において、この出願では、ユーザによって最後にアクセスされたデータファイルを、データブロックにセグメント化し、局所的に階層的に記憶する。その結果、解析データベースは、ユーザアクセスの変更に応じて局所的に階層的に記憶されるデータを動的に更新することができる。従って、ホットデータを、データアクセスの実際の需要に応じた小さい粒度のデータブロックの形で階層的に記憶する。コールド及びホットデータの分散及び階層記憶は、実際のデータアクセス状況により整合し、階層記憶を、ファイル内のデータブロックの需要に応じて自動的に実行することができる。それにより、データのローディング速度及び計算速度を大幅に増加することができるだけでなく、解析データベースとユーザ機器との間、及び解析データベースとリモートディスクとの間で、データファイルを頻繁に伝送する必要もあり、これによって、大量のネットワーク資源が節約される。
別の態様において、この出願では、大量のデータファイルをリモートディスクに記憶することによって、計算の前に、データファイルを全て、解析データベースに局所的に記憶する必要があるわけではなく、計算に関連するデータ(即ち、ユーザによって現在アクセスされる)だけを局所的にロードする必要があり、これは、解析データベースの局所的容量を実質的に拡大することと同等であり、従って、解析データベースの局所記憶圧力が大幅に減少し、ユーザの使用コストが減少すると同時に、大量のデータファイルを遠隔位置から局所位置に伝送することによって生じるネットワーク資源の浪費が回避される。
更に別の態様において、この出願では、解析データベースは、データファイル及びデータブロックが共存する記憶方法をサポートすることができる。リアルタイム性能に関する低い要件を有するアプリケーションシナリオにおいて、ホットデータを、データアクセスの実際の需要に応じた小さい粒度のデータブロックの形で階層的に記憶することができる一方、リアルタイム性能に関する高い要件を有するアプリケーションシナリオにおいて、データファイルを、局所的に直接記憶することができる。それによって、高い計算速度及び様々なアプリケーションシナリオの両方を達成することができ、ユーザ経験は、一層優れている。
当然、この出願を実施する任意の製品は、上述の利点の全部を同時に達成する必要が必ずしもあるわけではない。
図面の簡単な説明
この出願による例示的なアプリケーション環境の略図である。
第1の実施形態によるデータ階層記憶方法の概略フローチャートである。
第1の実施形態によるデータ階層探索方法の例示的な概略フローチャートである。
第1の実施形態によるデータ階層探索方法の別の例示的な概略フローチャートである。
第2の実施形態によるデータ階層記憶装置の例示的な概略構造図である。
第2の例による、解析データベースにおける計算ノードの階層構造、及び計算ノードとリモートディスクとの間のインタラクションの略図である。
第3の例による、解析データベースにおける計算ノードの階層構造、及び計算ノードとリモートディスクとの間のインタラクションの略図である。
第4の例による、容量縮小及び容量拡大の略図である。
第5の例による、データブロックの階層記憶モードにおけるデータアクセス工程の略図である。
詳細な説明
この出願の技術的解決策について、添付図面及び実施形態を参照して、より詳細に後述する。
この出願の技術的解決策について、添付図面及び実施形態を参照して、より詳細に後述する。
矛盾がない場合、この出願の実施形態及び実施形態における様々な特徴を互いに組み合わせることができ、これらの実施形態及び特徴は全て、この出願の保護範囲に含まれることに留意すべきである。更に、論理的順序をフローチャートに示すけれども、図示又は記載のステップを、場合によっては、ここに示す順序と異なる順序で実行することができる。
典型的な構成において、クライアント又はサーバの計算デバイスは、1つ又は複数の中央処理装置(CPU)、入出力インターフェース、ネットワークインターフェース、及びメモリを含む。
メモリは、揮発性メモリ、ランダムアクセスメモリ(RAM)、及び/又は不揮発性メモリ、例えば読み出し専用メモリ(ROM)、又はフラッシュRAMなどのコンピュータ可読媒体を含んでもよい。メモリは、コンピュータ可読媒体の例である。メモリは、モジュール1、モジュール2、・・・、及びモジュールN(Nは、2を超える整数である)を含んでもよい。
コンピュータ可読媒体は、可動及び非可動媒体だけでなく不揮発性及び揮発性媒体も含み、任意の方法又は技術によって情報記憶装置を実装することができる。情報は、コンピュータ可読命令、データ構造、及びプログラム又は他のデータのモジュールであってもよい。コンピュータの記憶媒体の例は、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのRAM、ROM、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリ又は他のメモリ技術、コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)又は他の光学的記憶装置、カセットテープ、磁気テープ/磁気ディスク記憶装置又は他の磁気記憶デバイス、又は任意の他の非伝送媒体(但し、これらに限定されない)を含み、これらの記憶媒体を使用して、計算デバイスにアクセス可能な情報を記憶することができる。ここで、定義によれば、コンピュータ可読媒体は、変調データ信号及び搬送波などの一時的媒体を含まない。
関連技術において、解析データベースは、ユーザの大量のデータファイルを、計算の前に解析データベースによって事前に局所的に記憶する事前記憶モードをサポートするだけである。このモードは、少なくとも下記の欠点を有する。1.大量のデータファイルを局所的に記憶し、大量の局所空間を占める。しかし、解析データベースの制限された局所的容量のために、ユーザデータ量が大きい場合、計算ノードを増加する必要があり、その結果、ユーザのコストが必然的に増加する。2.ユーザによってインポートされるデータ量が非常に大きい場合、データインポートの工程は遅く、時間的なコストが高い。インポート工程は、大量のネットワーク資源を消費し、その結果、解析データベースのサービスの安定性に間接的に影響を及ぼす。3.ユーザによってインポートされるデータファイルに大量のコールドデータがある場合があり、その結果、局所記憶空間を占めるだけでなく、計算速度にも影響を及ぼす。4.計算の工程において、計算ノードはファイル単位でデータを読み取るので、粒度が大きく、読み取り効率が低い。ホットデータ及びコールドデータがデータファイルに共存する場合、計算に不要なデータを読み取ることもあり、その結果、データのローディング速度及び計算速度に影響を及ぼすだけでなく、大量のネットワーク資源も浪費する。
関連技術において、需要の度合いに応じて、データファイルを解析データベースに記憶することができるけれども、ファイル内のコールド及びホットブロックを、階層的に記憶することができない。これは、低いローディング速度及び低いデータ計算速度を必然的に引き起こし、更に、大量の大きい粒度のデータファイルの伝送のために、ネットワーク資源も浪費する。
関連技術に存在する上述の技術的課題を解決するために、下記の技術的解決策を、この出願で提供する。
図1は、この出願による例示的なアプリケーション環境の略図を示す。図1に示すように、解析データベースは、複数の集約ノード(M1、・・・、Mn、但し、nは、2以上の整数である)、及び複数の計算ノード(Worker1、・・・、Worker_m、但し、mは、2以上の整数である)を含んでもよい。集約ノードの各々は、ユーザとインタラクションし、ユーザによって提示されるタスクを分割し、分割タスクを複数の計算ノードに送信する役割を果たす。計算ノードは、集約ノードによって送信されるタスクを実行し、計算結果を集約ノードにフィードバックする。集約ノードは、計算ノードによってフィードバックされる計算結果を結合してから、結合計算結果をユーザに提供する。探索計算を実行する場合、解析データベースにおける計算ノードは、データを外部データソース(例えば、分散ファイルシステム)から局所位置に直接コピーしてから、対応するデータファイルをこの局所位置から読み取ってもよい。例えば、データを探索する必要がある場合、ユーザは、探索SQLを集約ノードMnに送信してもよい。集約ノードMnは、対応する探索タスクをサブタスクに分割し、これらのサブタスクをWorker1及びWorker_mに分散させる。Worker1及びWorker_mは、それぞれ探索を実行する。Worker1及びWorker_mは、それぞれData1及びData2を外部データソースから直接コピーしてから、Data1及びData2に関する探索計算を実行し、最後に、探索計算の結果を集約ノードMnに戻してもよい。集約ノードMnは、Worker1及びWorker_mによって戻される結果を集約してから、集約結果をユーザに戻す。
この出願の技術的解決策について、詳細に後述する。この出願の下記の技術的解決策を解析データベース(但し、限定されない)に適用することができることに留意すべきである。更に、この出願の技術的解決策を、他のタイプのデータベース(但し、限定されない)に適用することもできる。
第1の実施形態
図2に示すように、データ階層記憶方法は、下記のステップを含んでもよい。
図2に示すように、データ階層記憶方法は、下記のステップを含んでもよい。
ステップ201では、データファイルをリモートディスクに記憶する。
ステップ202では、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュする。
ステップ203では、データブロックをローカルディスクからキャッシング用のローカルメモリにロードする。
この実施形態において、ユーザによって最後にアクセスされたデータファイルを、局所的に階層的に記憶するデータブロックにセグメント化し、その結果、解析データベースは、ユーザアクセスの変更に応じて局所的に階層的に記憶されるデータを動的に更新することができる。従って、ホットデータを、データアクセスの実際の需要に応じた小さい粒度のデータブロックの形で階層的に記憶する。コールド及びホットデータの分散及び階層記憶は、実際のデータアクセス状況により整合し、階層記憶を、ファイル内のデータブロックの需要に応じて自動的に実行することができる。それによって、データのローディング速度及び計算速度を大幅に増加することができるだけでなく、解析データベースとユーザ機器との間、及び解析データベースとリモートディスクとの間で、データファイルを頻繁に伝送する必要もあり、これによって、大量のネットワーク資源が節約される。
この実施形態において、ローカルメモリ及びローカルディスクは、解析データベースに属する。階層記憶の場合、ローカルメモリは高レベルと考えられ、ローカルディスクは低レベルと考えられる。即ち、解析データベースにアクセスする場合、データブロックを、ローカルメモリから優先的に取得し、ローカルメモリがデータブロックを有しない場合、ローカルディスクから取得する。ローカルディスクがデータブロックを有しない場合、これは、データブロックがローカル解析データベースにないことを意味する。この場合、対応するデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックは、ローカルディスク及びローカルメモリに次に記憶される。
この実施形態において、データブロックを、ローカルディスクにおけるBlockFileの形で記憶することができる。即ち、少なくとも1つの固定長BlockFileを、ローカルディスクに生成することができる。BlockFileは、固定長Blockを含む。データブロックをローカルディスクにキャッシュするステップは、データブロックをローカルディスクの空Blockにキャッシュすることを含んでもよい。
実装形態において、マッピング関係をローカルディスクに構成することができる。マッピング関係は、少なくともデータブロックの長さ、各Blockのアドレス、及びBlockにおけるデータ内容が属するファイルのアドレス、及び他の情報を含む。リモートディスクからのデータファイルを、マッピング関係を介して固定長データブロックにセグメント化することができ、次に、データブロックを、ローカルディスクにおける空Blockに記憶することができる。例えば、データファイルは、10Gであり、1つのBlockの長さを、128KBに設定する。従って、データファイルを、81920個のデータブロックにセグメント化することができる。従って、データブロックの粒度は、データファイルの粒度よりも非常に小さいことが明らかである。
実装形態において、複数のBlockFileを、ローカルSSDに生成することができる。各BlockFileは、固定長ファイルである。各BlockFileを、固定長Blockに内部的に分割し、各Blockの状態を記録する。ここで、Blockは、データがBlockに記憶されていないことを示す空状態と、Blockがデータで一杯であることを示す一杯状態との2つの状態を有してもよい。それによって、データブロックをローカルディスクにキャッシュする必要がある場合、空Blockを探索してもよく、データブロックを空Blockに記憶することができる。
例えば、システムを起動する場合、ローカルディスクの利用可能容量(デフォルトにより700GBである)に応じて、BlockFileを生成することができる。1つのBlockFileの長さを1GBに設定し、1つのBlockの長さを128KBに設定した場合、及びローカルディスクの全利用可能容量がデータブロックの記憶に利用可能である場合、各々が8192個のBlockに内部的に分割されている、700個のBlockFileを生成することができる。1つのBlockの長さを256KBに設定した場合、各BlockFileを、4096個のBlockに内部的に分割してもよい。従って、データをBlockでローカルディスクにキャッシュし、Blockレベルのキャッシングは、コールド及びホットデータのファイルレベルの階層よりも、ホットデータを集約するために有益であることが明らかである。例えば、10GBのデータファイルの場合、その中で、わずか1G又は数百KBが、探索計算に必要であるとして、データをBlockレベルでキャッシュする場合、データの所望の小さい部分を直接ロードすることができるが、ファイルレベルのコールド及びホット階層の場合は、10Gのデータファイルをロードする必要がある。従って、この実施形態における方法は、関連技術と比較して、データのローディング速度及び計算速度を大幅に増加することができる。
実装形態において、1つの計算又は探索用のデータブロックをローカルディスクにキャッシュする工程は、下記の通りであることができる。連続的な空Blockがある場合、連続Blockを自動的に使用して、優先的に現在の計算又は探索用のデータを記憶する。ローカルディスクが、連続しない空ブロックを有する場合、これらの不連続空ブロックを自動的に使用して、現在の計算又は探索用のデータを記憶することができる。この実施形態において、ローカルディスクは、ランダム読み取りをサポートし、その結果、データを連続ブロックに記憶するかどうかは、読み取り効率に影響を及ぼさない。例えば、使用の初めに、ユーザアクセスが発生していない場合、ローカルディスクは空であってもよい。この場合、ローカルディスクは、リモートディスクから取得された各データファイルをデータブロックに分割してから、データブロックを複数の連続Block又はBlockFileに記憶することができる。別の例で、多重ユーザアクセスの後、幾つかの空ブロックが、ローカルディスクに存在してもよい。しかし、これらのブロックは、不連続であり、異なるBlockFileに属することがある。この場合、データブロックを、これらの不連続空ブロックに直接記憶することもできる。
この実施形態において、新しいデータをロードする必要がある場合、新しいデータをキャッシュするのに十分なBlockをローカルディスクが有しない場合、新しいデータをキャッシュするために、ローカルディスクにおけるBlockの幾つかを空にすることができる。即ち、データブロックをローカルディスクにキャッシュする前に、ローカルディスクの全Blockが一杯である場合、データブロックをBlockの一部にキャッシュするように、最低使用頻度(LRU)アルゴリズムを使用して、ブロックの当該一部におけるデータを削除し、Blockの当該一部を空にすることができる。
実装形態において、現在キャッシュされる必要があるデータブロックの所要容量、及びそれぞれのBlockの現在の状態(空又は一杯)に基づいて、ローカルディスクは、データブロックをBlockの一部に記憶するように、LRUアルゴリズムを使用して、Blocksの当該一部を空にしてもよい。それによって、データを複数回ロードすることによって、ローカルディスクにキャッシュされるデータブロックは、頻繁にアクセスされるデータ、即ちホットデータとなる。
この実施形態において、データブロック、又はデータブロック及びデータファイルを、ローカルディスクと同様な形でローカルメモリに記憶することができる。実装形態において、データブロックを、BlockFileの形でローカルメモリに記憶することができる。即ち、少なくとも1つの固定長BlockFileをローカルメモリに更に生成し、このBlockFileは固定長Blockを含む。ここで、データブロックをローカルメモリに記憶する方法は、ローカルディスクに記憶する方法と同じであり、詳細に説明しない。
この実施形態において、新しいデータをロードする必要があるとき、新しいデータをキャッシュするのに十分な空間をローカルメモリが有しない場合、新しいデータをキャッシュするために、ローカルメモリは、ローカルメモリ自体のBlockの幾つかを空にすることもできる。具体的には、データブロックをローカルディスクからキャッシング用のローカルメモリにロードする前に、ローカルメモリにおける全Blockが一杯である場合、データブロックをBlockの一部に記憶することができるように、LRUアルゴリズムを使用して、Blocksの当該一部におけるデータを削除し、ブロックの当該一部を空にすることができる。
実装形態において、キャッシュされる必要があるデータブロックの所要容量、及びそれぞれのBlockの現在の状態(空又は一杯)に基づいて、ローカルメモリは、キャッシュされる必要があるデータブロックをBlockの一部に記憶するように、LRUアルゴリズムを使用して、Blockの当該一部を空にしてもよい。それによって、複数回のローディングによって、ローカルメモリにキャッシュされるデータは、頻繁にアクセスされるデータ、即ちホットデータとなる。
この実施形態において、少なくとも1つのLocalFileを、ローカルディスクに生成してもよく、このLocalFileを使用して、データファイルを記憶する。方法は、事前指定データファイルをローカルディスクのLocalFileにキャッシュすることを更に含む。それによって、データの一部を、シナリオ又はユーザの要件に応じて事前記憶モードで解析データベースに記憶することができ、その結果、解析データベースを、リアルタイム性能に関するより高い要件を有するアプリケーションシナリオ、例えば監視と同様なアプリケーションシナリオに適用することもできる。
実装形態において、ローカルディスクを区分して、異なる区分を介してデータファイルの事前記憶及びデータブロックの階層記憶の両方をサポートすることができる。即ち、ローカルディスクは、BlockFileが生成されるブロックキャッシュと、LocalFileが生成されるファイルキャッシュとを含むことができる。それによって、上述のデータブロックの階層記憶を、ブロックキャッシュ及びローカルメモリで実施することができ、上述の事前記憶モードを、ファイルキャッシュ及びローカルメモリで実施することができる。
この実施形態において、ローカルディスクにおけるファイルキャッシュの使用容量を走査することによって、ローカルディスクにおけるブロックキャッシュの容量を拡大又は縮小することもできる。
実装形態において、ローカルディスクにおけるブロックキャッシュの容量を拡大又は縮小するステップは、1)ファイルキャッシュの解放可能容量に応じてブロックキャッシュの容量を対応して増大し、新しい容量に応じてブロックキャッシュにおけるBlockFile又はBlocksを新しく生成すること、及び2)ファイルキャッシュで増大される必要がある容量に応じてブロックキャッシュにおけるBlockFile又はBlockの一部を削除し、ブロックキャッシュの容量を対応して縮小すること
のうち少なくとも1つを含むことができる。
のうち少なくとも1つを含むことができる。
例えば、事前記憶モード及びデータブロック階層記憶モードが共存する場合、事前記憶モードの優先順位を、データブロック階層記憶モードの優先順位よりも高く設定することができる。データファイルの増加のために、事前記憶モードの容量を拡大する必要がある場合、データブロック階層記憶モードにおける記憶空間を、事前記憶モードのために解放する必要がある。この場合、ローカルディスクにおけるブロックキャッシュの容量を自動的に縮小することができる。データファイルの減少のために、事前記憶モードで占有される記憶空間がより小さい場合、事前記憶モードにおける冗長な記憶空間を、データブロック階層記憶モードで用いるために解放することができる。即ち、事前記憶モードで解放された記憶空間を使用して、ローカルディスクにおけるブロックキャッシュの容量を自動的に拡大することができる。
ブロックキャッシュの大きい容量のために、計算ノードを再始動する場合、ウォーミングアップ時間は非常に長く、その結果、探索性能に必然的に影響を及ぼす。この問題を回避するために、この実施形態において、ブロックキャッシュを、先行書き込みログ(WAL)によって持続することもできる。即ち、データブロックをローカルディスクにキャッシュする前に、BlockFileに対応するWALを、ローカルディスクのブロックキャッシュに設定することができる。それによって、計算ノードを再始動した後、このログを再現することによって、ブロックキャッシュを迅速にウォーミングアップすることができる。
実装形態において、ブロックキャッシュをWALによって持続する工程は、メタデータをブロックキャッシュに記憶することができ、このメタデータを2つの部分に分割する。一方の部分を使用して、どのBlockが割り当てられているか、及びどのBlockが割り当てられていないか、即ち、Blockの状態を記録し、他方の部分を使用して、各BlockがどのBlockFileに属するか、即ち、BlockとBlockFileとの間の従属関係を記録する。それによって、計算ノードを再始動した場合、各BlockFileにキャッシュされたデータを、検索の必要なく、メタデータを介して、完全に回復することができる。メタデータを保存しない場合、BlockFileにおける全データを自動的に空にする。この場合、更に、データファイルを、再度取得し、セグメント化し、キャッシュする必要があり、その結果、データの探索計算速度に必然的に影響を及ぼし、解析データベースの性能に更に影響を及ぼす。
この実施形態において、方法は、ユーザによるアクセス中に、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュすることを更に含む。
実装形態において、上述のデータ階層記憶方法に基づいて、上述の解析データベースに適用されるデータ階層探索方法を、この実施形態で更に提供する。このデータ階層探索方法を用いて、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュする。図3に示すように、データ階層探索方法は、下記のステップを含むことができる。
ステップ301では、対応するデータブロックを、計算層からの探索命令に応じてローカルメモリから読み取る。
ステップ302では、データブロックがローカルメモリに存在する場合、データブロックを計算層にフィードバックする。
実装形態において、対応するデータブロックをローカルメモリから読み取った後、方法は、データブロックがローカルメモリに存在しない場合、データブロックをローカルディスクから読み取ることと、データブロックがローカルディスクに存在する場合、データブロックをローカルディスクからローカルメモリにロードすることと、データブロックをローカルメモリから再度読み取ることとを更に含むことができる。
実装形態において、対応するデータブロックをローカルディスクから読み取った後、方法は、データブロックがローカルディスクに存在しない場合、対応するデータファイルをリモートディスクから読み取り、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュすることと、データブロックをローカルディスクからローカルメモリにロードすることと、データブロックをローカルメモリから再度読み取ることとを更に含むことができる。
実装形態において、ユーザは、指示を介して、対応する記憶層に入れるためのデータの探索を制御することができる。例えば、ユーザは、次の探索SQL:/*+MemBlockCache=false,SSDBlockCache=false*/select*をテーブル1から入力することができる。探索SQLは、SSDBlockCache=falseの場合、データがローカルSSDキャッシュに入らないことを示し、MemBlockCache=falseの場合、データがローカルメモリキャッシュに入らないことを示すことを意味する。実際のアプリケーションにおいて、ユーザによって探索されるデータは、デフォルトでキャッシュされる。同様の機能によって、ユーザは、探索SQLを介して、必要に応じて幾つかの探索結果がキャッシュに入るのを防止することができ、その結果、キャッシュの無効なスワップイン及びスワップアウトを回避することができる。
上述のデータ階層探索方法を、解析データベースの任意の計算ノードで実施することができる。計算ノードの計算層がデータをデータ処理層(並行処理は考慮されていない)から読み取る場合、データを上層(即ち、ローカルメモリ)から最初に取得する。データが見いだされない場合、所望のデータを取得するまで、データを下層(即ち、ローカルディスク及びリモートディスク)から再帰的に下方へ取得する。対応するデータを、探索中に、対応する記憶階層にキャッシュする。
上述のデータ階層記憶方法に基づいて、解析データベースに適用できる別のデータ階層探索方法を、この実施形態で更に提供する。図4に示すように、データ階層探索方法は、下記のステップを含んでもよい。
ステップ401では、集約ノードは、ユーザ機器からの計算タスクを計算サブタスクに分割し、計算サブタスクを複数の計算ノードに分散させる。
ステップ402では、計算ノードは、計算サブタスクを実行することによって、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作を実行する。
ステップ403では、集約ノードは、計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供する。
実装形態において、計算ノードは、計算サブタスクを実行することによって、データファイルをリモートディスクに記憶する操作を更に実行することができる。
実装形態において、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュするステップは、データブロックがローカルメモリ又はローカルディスクで得られない場合、対応するデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュすることと、データブロックをローカルディスクからキャッシング用のローカルメモリにロードすることとを含むことができる。
実装形態において、計算ノードによって、「対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュすること」を実行する工程を、図3に示すデータ階層探索方法を用いて実施可能であり、詳細に説明しない。
計算ノードは、探索サブタスクを実行することによって、対応するデータブロックを対応するローカルメモリから読み取り、データブロックがローカルメモリに存在する場合、データブロックを集約ノードにフィードバックする。
集約ノードは、計算ノードによってフィードバックされたデータブロックを集約してから、集約データブロックをユーザ機器に提供する。
実装形態において、対応するデータブロックを解析データベースの対応するローカルメモリから読み取った後、方法は、データブロックがローカルメモリに存在しない場合、データブロックを対応するローカルディスクから読み取ることと、データブロックがローカルディスクに存在する場合、データブロックを、ローカルディスクからキャッシング用のローカルメモリにロードすることと、データブロックをローカルメモリから再度読み取ることとを更に含むことができる。
実装形態において、データブロックを解析データベースのローカルディスクから読み取った後、方法は、データブロックがローカルディスクに存在しない場合、対応するデータファイルをリモートディスクから読み取り、データファイルをデータブロックにセグメント化し、データブロックを対応するローカルディスクにキャッシュすることと、データブロックをローカルディスクからキャッシング用のローカルメモリにロードすることと、データブロックをローカルメモリから再度読み取ることとを更に含むことができる。
上述のデータ階層探索方法は、計算ノードによって、計算サブタスクを実行することにより、指定データファイルを、ローカルメモリからローカルディスク及びリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データファイルをローカルメモリにキャッシュする操作を実行することを更に含むことができることに留意すべきである。
この実施形態の上述の方法について、特定の例によって詳細に説明する。
ユーザは、データを過去100日間保存することを望み、新しいデータをユーザのカスタム解析データベースに毎日インポートすると想定する。解析データベースが事前記憶モード及びデータブロック階層記憶モードを同時に採用し、毎日記憶されるデータをデフォルトによりデータブロック階層記憶モードで記憶することをユーザが設定した場合、解析データベースにおいて、ユーザによって毎日記憶されるデータは、データファイルの形でデフォルトによりリモートディスクに記憶する。
ユーザが初めて幾つかの特定のデータを探索する場合、解析データベースは、対応するデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、解析データベースにおけるローカルディスクの様々なBlockFileの空Blockにデータブロックをキャッシュし、データブロックをローカルディスクからキャッシング用の解析データベースのローカルメモリにロードする。
多くの探索の後、ユーザによって頻繁にアクセスされるデータを、データブロックの形でローカルディスク及びローカルメモリにキャッシュする。ユーザがこのようなデータを再度探索する場合、解析データベースの計算ノードは、ローカルディスク又はローカルメモリからデータを直接読み取ることができ、読み取られたデータは、Blockレベルであり、その結果、探索が高速になるだけでなく、ユーザの探索コストもより低くなる。
一般的に、ユーザは、最近アクセスされたデータを探索することが多く、特別な場合にだけ、ずっと前に記憶されたデータを探索する。
ユーザがずっと前に記憶されたデータを必要とし、このようなデータが少ない頻度でアクセスされる場合、データがローカルディスク又はローカルメモリにキャッシュされていない可能性がある。ユーザがこのようなデータを探索する場合、解析データベースの計算ノードは、ローカルディスク及びローカルメモリを層ごとに下方へ探索し、場合によっては、計算ノードは、対応するデータファイルをリモートディスクから取得し、データファイルをデータブロックにセグメント化し、データブロックをローカルディスク及びローカルメモリに記憶し、最後にデータブロックの形でデータをユーザに提供する必要があることがある。このようなデータの探索は、最初遅いことがある。しかし、対応するデータは、一度探索された後、ローカルディスク及びローカルメモリにもキャッシュされる。ユーザが、このようなデータをその後頻繁にアクセスする場合、データは、ホットデータとして長い間ローカルディスク及びローカルメモリにキャッシュされ、アクセス回数が増加するにつれて、データのローディング速度及び計算速度が増加する。
第2の実施形態
図5に示すように、データ階層記憶装置は、
データファイルをリモートディスクに記憶し、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得するように構成されているリモートファイル処理ユニット51と、
データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュするように構成されているブロック処理ユニット52と、
データブロックをローカルディスクからキャッシング用のローカルメモリにロードするように構成されているメモリキャッシングユニット53と
を含んでもよい。
図5に示すように、データ階層記憶装置は、
データファイルをリモートディスクに記憶し、ユーザによって最後にアクセスされたデータファイルをリモートディスクから取得するように構成されているリモートファイル処理ユニット51と、
データファイルをデータブロックにセグメント化し、データブロックをローカルディスクにキャッシュするように構成されているブロック処理ユニット52と、
データブロックをローカルディスクからキャッシング用のローカルメモリにロードするように構成されているメモリキャッシングユニット53と
を含んでもよい。
実装形態において、上述のデータ階層記憶装置は、少なくとも固定長Blockを含む少なくとも1つの固定長BlockFileをローカルディスクに生成するように構成されているブロックキャッシングユニット54を更に含むことができ、ブロック処理ユニット52は、データブロックを空Blockにキャッシュするように構成されている。
実装形態において、上述のデータ階層記憶装置は、データファイルを記憶する少なくとも1つのLocalFileをローカルディスクに生成するように構成されかつ事前指定データファイルをローカルディスクのLocalFileにキャッシュするように構成されているファイル処理ユニット55を更に含むことができる。
実装形態において、ローカルディスクは、BlockFileが生成されるブロックキャッシュと、LocalFileが生成されるファイルキャッシュとを含み、上述のデータ階層記憶装置は、ローカルディスクにおけるファイルキャッシュの使用容量を走査することによって、ローカルディスクにおけるブロックキャッシュの容量を拡大又は縮小するように構成されているディスク処理ユニット56を更に含むことができる。
実装形態において、上述のデータ階層記憶装置は、BlockFileに対応するWALをローカルディスクに設定するように構成されているメタデータ処理ユニット57を更に含むことができる。
実装形態において、上述のデータ階層記憶装置は、ユーザによるアクセス中に、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索するように構成されているブロックファイル処理ユニット58を更に含むことができ、ブロックキャッシングユニット54は、ブロックファイル処理ユニットによってデータブロックを探索する工程において、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュするように更に構成することができる。
この実施形態の他の技術的詳細は、第1の実施形態及び以下の様々な例を参照して得ることができる。
第3の実施形態
計算デバイスは、
リモートディスクと通信するように構成されている通信回路と、
階層記憶モードをサポートするデータ記憶装置であって、低レベルとしてローカルディスクを含み、高レベルとしてローカルメモリを含むデータ記憶装置と、
データ階層記憶プログラムが記憶されている記憶装置と、
第1の実施形態に記載のデータ階層記憶方法の操作を実行するデータ階層記憶プログラムを読み取るように構成されているプロセッサと
を含むことができる。
計算デバイスは、
リモートディスクと通信するように構成されている通信回路と、
階層記憶モードをサポートするデータ記憶装置であって、低レベルとしてローカルディスクを含み、高レベルとしてローカルメモリを含むデータ記憶装置と、
データ階層記憶プログラムが記憶されている記憶装置と、
第1の実施形態に記載のデータ階層記憶方法の操作を実行するデータ階層記憶プログラムを読み取るように構成されているプロセッサと
を含むことができる。
実装形態において、プロセッサは、データ階層記憶プログラムを読み取るように更に構成され、データ階層記憶プログラムは、ユーザによるアクセス中に、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュする操作を実行する。
この実施形態の他の技術的詳細は、第1の実施形態及び以下の様々な例を参照して得ることができる。
第4の実施形態
分散計算システムは、少なくとも1つの集約ノードと複数の計算ノードとを含み、
集約ノードは、ユーザ機器からの計算タスクを計算サブタスクに分割し、計算サブタスクを計算ノードに分散させ、計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供するように構成されており、
計算ノードは、計算サブタスクを実行することによって、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作を実行するように構成されている。
分散計算システムは、少なくとも1つの集約ノードと複数の計算ノードとを含み、
集約ノードは、ユーザ機器からの計算タスクを計算サブタスクに分割し、計算サブタスクを計算ノードに分散させ、計算ノードによって戻されるデータブロックを集約してから、集約データブロックをユーザ機器に提供するように構成されており、
計算ノードは、計算サブタスクを実行することによって、対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、データブロックをローカルメモリ及びローカルディスクに層ごとにキャッシュし、得られたデータブロックを集約ノードに戻す操作を実行するように構成されている。
この実施形態の他の技術的詳細は、第1の実施形態及び以下の様々な例を参照して得ることができる。
第5の実施形態
データ階層記憶プログラムを記憶するコンピュータ可読記憶媒体であり、データ階層記憶プログラムがプロセッサによって実行される場合、第1の実施形態に記載のデータ階層記憶方法のステップが実施される。
データ階層記憶プログラムを記憶するコンピュータ可読記憶媒体であり、データ階層記憶プログラムがプロセッサによって実行される場合、第1の実施形態に記載のデータ階層記憶方法のステップが実施される。
この実施形態の他の技術的詳細は、第1の実施形態及び以下の様々な例を参照して得ることができる。
上述の実施形態の例示的な実装形態について、詳細に後述する。下記の例を互いに組み合わせることができることに留意すべきである。その上、下記の例における工程、実行工程などを、実際のアプリケーション要件に応じて調整することもできる。更に、上述の実施形態を、実際のアプリケーションにおいて、他の方法で実装することもできる。
この実施形態について、複数の例によって詳細に後述する。
第1の例
実装形態の解決策において、ローカルディスクを、高いアクセス速度を有するソリッドステートディスク(SSD)として実施してもよく、ローカルメモリを、より高いアクセス速度を有するダイナミックランダムアクセスメモリ(DRAM)として実施してもよい。リモートディスクを、大量のデータを記憶することができる分散ファイルシステム(DFS)、例えばリモートシリアルアドバンストテクノロジーアタッチメント(SATA)として実施することができる。
実装形態の解決策において、ローカルディスクを、高いアクセス速度を有するソリッドステートディスク(SSD)として実施してもよく、ローカルメモリを、より高いアクセス速度を有するダイナミックランダムアクセスメモリ(DRAM)として実施してもよい。リモートディスクを、大量のデータを記憶することができる分散ファイルシステム(DFS)、例えばリモートシリアルアドバンストテクノロジーアタッチメント(SATA)として実施することができる。
この実装形態の解決策において、データが階層記憶モードで記憶された後、
DFS(リモートSATA)は、ユーザの全データファイルを記憶し、
解析データベースのローカルSSDは、1.計算に関するデータを記憶し、データブロックに応じて記憶データを管理し、2.異なる需要の度合いに応じて別々に異なるデータファイルをキャッシュし、3.データファイルにおけるデータを、コールドデータ及びホットデータに分割し、データブロックの形でコールドデータ及びホットデータをキャッシュし、4.必要ならば、LRUアルゴリズムを用いてデータをクリアし、
解析データベースのローカルDRAMは、計算に関するローカルSSDからのホットデータを記憶し、必要ならば、LRUアルゴリズムを用いて記憶データをクリアする。
DFS(リモートSATA)は、ユーザの全データファイルを記憶し、
解析データベースのローカルSSDは、1.計算に関するデータを記憶し、データブロックに応じて記憶データを管理し、2.異なる需要の度合いに応じて別々に異なるデータファイルをキャッシュし、3.データファイルにおけるデータを、コールドデータ及びホットデータに分割し、データブロックの形でコールドデータ及びホットデータをキャッシュし、4.必要ならば、LRUアルゴリズムを用いてデータをクリアし、
解析データベースのローカルDRAMは、計算に関するローカルSSDからのホットデータを記憶し、必要ならば、LRUアルゴリズムを用いて記憶データをクリアする。
更に、ローカルメモリ、ローカルディスク及びリモートディスクを、他の形で実装することもでき、特定の実装形態の形は、このアプリケーションで限定されない。
第2の例
実装形態の解決策において、解析データベースは、この実施形態における、ローカルディスク及びローカルメモリへのデータブロックの階層記憶であるデータブロック階層記憶モードだけをサポートすることができる。
実装形態の解決策において、解析データベースは、この実施形態における、ローカルディスク及びローカルメモリへのデータブロックの階層記憶であるデータブロック階層記憶モードだけをサポートすることができる。
この例において、DRAMが、解析データベースにおける計算ノードのメモリである。
図6は、この例による、解析データベースにおける計算ノードの階層構造、及び計算ノードとリモートディスクとの間のインタラクションの略図を示す。リモートディスクとしてのSATAは、ユーザによってインポートされる全データファイルを記憶する役割を果たす。1つの計算ノードは、計算層(Compute)とデータ処理層(DataManager)とを含むことができる。計算層は、データ処理層を呼び出して指定データブロックを探索し、集約ノードによって送信されるサブタスクを実行することによって計算を行い、計算結果を集約ノードにフィードバックする役割を果たす。データ処理層は、計算層の探索命令に応じて指定データブロックを探索するように構成されている。
図6に示すように、この例において、データ処理層は、高レベルDRAM及び低レベルSSDの2つの層を含むことができる。複数のBlockFile:BlockFile1、BlockFile2、・・・、及びBlockFileN(Nは、1以上の整数である)がSSDに生成される。データ処理層は、データブロック階層記憶モードをサポートする。データブロック階層記憶モードにおいて、ユーザによって最後にアクセスされたデータブロックが、DRAM又はSSDにキャッシュされていない場合、データ管理層は、対応するデータファイルをSATAから取得し、このデータファイルを固定長データブロックにセグメント化し、SSDにおけるBlockFile内の様々なBlockにデータブロックをキャッシュし、データブロックをキャッシング用のDRAMにロードする。
図6に示すように、データ処理層は、データブロックの階層記憶を実施する下記の機能ユニットを含んでもよい:
SATAとインタラクションする役割を果たすリモートファイル処理ユニット。リモートファイル処理ユニットは、データファイルをSATAから取得するように構成することができる。
Blockレベルのデータを管理する役割を果たすブロック処理ユニット。ブロック処理ユニットは、データファイルを固定長データブロックにセグメント化し、SSDにおけるBlockFile内の様々なBlockにデータブロックをキャッシュするように構成することができる。
Blockの割り当て、及びBlockとBlockFileとの間の従属関係をSSDに記録するために、上述のBlockFileに対応するWALをSSDに設定するように構成されているメタデータ処理ユニット。これにより、計算ノードが再始動された後、Blockにキャッシュされたデータを迅速に回復することができる。
SSD上のBlockFile及びBlockを管理する役割を果たすブロックキャッシングユニット。ブロックキャッシングユニットは、複数のBlockFile:BlockFile1、BlockFile2、・・・、及びBlockFileN(Nは、1以上の整数である)をSSDに生成するように構成することができ、各BlockFileは、複数の固定長Blockに分割される。ブロックキャッシングユニットは更に、ブロック処理ユニットによって呼び出された場合、且つローカルディスクの全Blockが一杯である場合、LRUアルゴリズムを使用してBlockの一部におけるデータを削除し、Blockの当該一部をクリアするように構成することができ、その結果、ブロック処理ユニットは、データブロックをSSDのBlocksにキャッシュすることができる。
DRAMとインタラクションする役割を果たすブロックファイル処理ユニット。ブロックファイル処理ユニットは、データブロックがDRAMに存在しない場合、対応するデータブロックをSSDで探索し、対応するデータブロックがSSDに存在しない場合、ブロックファイル処理ユニットを呼び出して、対応するデータファイルをSATAから取得し、最後に、得られたデータブロックをDRAMにロードするように構成することができる。
SATAとインタラクションする役割を果たすリモートファイル処理ユニット。リモートファイル処理ユニットは、データファイルをSATAから取得するように構成することができる。
Blockレベルのデータを管理する役割を果たすブロック処理ユニット。ブロック処理ユニットは、データファイルを固定長データブロックにセグメント化し、SSDにおけるBlockFile内の様々なBlockにデータブロックをキャッシュするように構成することができる。
Blockの割り当て、及びBlockとBlockFileとの間の従属関係をSSDに記録するために、上述のBlockFileに対応するWALをSSDに設定するように構成されているメタデータ処理ユニット。これにより、計算ノードが再始動された後、Blockにキャッシュされたデータを迅速に回復することができる。
SSD上のBlockFile及びBlockを管理する役割を果たすブロックキャッシングユニット。ブロックキャッシングユニットは、複数のBlockFile:BlockFile1、BlockFile2、・・・、及びBlockFileN(Nは、1以上の整数である)をSSDに生成するように構成することができ、各BlockFileは、複数の固定長Blockに分割される。ブロックキャッシングユニットは更に、ブロック処理ユニットによって呼び出された場合、且つローカルディスクの全Blockが一杯である場合、LRUアルゴリズムを使用してBlockの一部におけるデータを削除し、Blockの当該一部をクリアするように構成することができ、その結果、ブロック処理ユニットは、データブロックをSSDのBlocksにキャッシュすることができる。
DRAMとインタラクションする役割を果たすブロックファイル処理ユニット。ブロックファイル処理ユニットは、データブロックがDRAMに存在しない場合、対応するデータブロックをSSDで探索し、対応するデータブロックがSSDに存在しない場合、ブロックファイル処理ユニットを呼び出して、対応するデータファイルをSATAから取得し、最後に、得られたデータブロックをDRAMにロードするように構成することができる。
第3の例
実装形態の解決策において、解析データベースは、事前記憶モード及びデータブロック階層記憶モードを同時にサポートすることができる。データブロック階層記憶モードは、この実施形態における、ローカルディスク及びローカルメモリにデータブロックを階層的に記憶するモードである。事前記憶モードは、計算の前にデータファイルをユーザによってローカル解析データベースにインポートするモードである。
実装形態の解決策において、解析データベースは、事前記憶モード及びデータブロック階層記憶モードを同時にサポートすることができる。データブロック階層記憶モードは、この実施形態における、ローカルディスク及びローカルメモリにデータブロックを階層的に記憶するモードである。事前記憶モードは、計算の前にデータファイルをユーザによってローカル解析データベースにインポートするモードである。
図7は、この例による、解析データベースにおける計算ノードの階層構造、及び計算ノードとリモートディスクとの間のインタラクションの略図を示す。図7に示すように、この例における計算ノードの階層構造及びデータ処理層の階層記憶構造は、データ処理層が事前記憶モード及びデータブロック階層記憶モードを同時にサポートすることができるということを除いて、第2の例と同じである。データ処理層のSSDは、ブロックキャッシュ及びファイルキャッシュの2つの領域に分割されている。複数のBlockFile:BlockFile1、BlockFile2、・・・、及びBlockFileN(Nは、2以上の整数である)がブロックキャッシュに生成され、複数のLocalFile:BlockFile1、BlockFile2、・・・、及びBlockFileX(Xは、2以上の整数である)がファイルキャッシュに生成される。
この例において、データブロック階層記憶モードでは、ユーザによって最後にアクセスされたデータブロックがDRAM又はSSDにキャッシュされていない場合、対応するデータファイルをSATAから取得することができ、このデータファイルを固定長データブロックにセグメント化し、SSDにおけるBlockFile内の様々なBlockにデータブロックをキャッシュし、最後に、データブロックをキャッシング用のDRAMにロードする。
この例において、事前記憶モードでは、データ処理層は、ユーザによってインポートされた指定タイプのデータファイルをSSDのLocalFileに直接記憶することができ、探索時に、対応するデータファイルをLocalFileから直接取得し、データファイルをキャッシング用のDRAMにロードした後、データファイルをDRAMから読み取り、データファイルを計算層からフィードバックすることができる。
図7に示すように、第2の例の機能ユニットを含むことに加えて、データ処理層は、データファイルの記憶及びデータブロックの階層記憶を同時にサポートする下記の機能ユニットを含むこともできる。
ユーザによってインポートされた指定データファイルをSSDの様々なLocalFileに記憶する役割を果たすファイル処理ユニット、及び
LocalFileに対応するメタデータを記録する役割を果たすファイルメタデータ処理ユニット。メタデータは、計算ノードが再始動されたときにデータを回復するために、LocalFileの状態(即ち、データファイルを記憶するかどうか)を記録するために使用される。。
ユーザによってインポートされた指定データファイルをSSDの様々なLocalFileに記憶する役割を果たすファイル処理ユニット、及び
LocalFileに対応するメタデータを記録する役割を果たすファイルメタデータ処理ユニット。メタデータは、計算ノードが再始動されたときにデータを回復するために、LocalFileの状態(即ち、データファイルを記憶するかどうか)を記録するために使用される。。
第4の例
この例において、第3の例の構成においてローカルディスクのブロックキャッシュの容量を拡大及び縮小する工程について、特定の例によって詳細に説明する。
この例において、第3の例の構成においてローカルディスクのブロックキャッシュの容量を拡大及び縮小する工程について、特定の例によって詳細に説明する。
図8は、この例による、ブロックキャッシュの容量縮小及び容量拡大の略図を示す。この例において、事前記憶モードにおける拡大のために、データブロック階層記憶モードで空間を解放する必要がある場合、ブロックキャッシュの容量を縮小する。図8に示すように、容量縮小の前に、次のBlockFile:BlockFileN、BlockFileN+1、・・・、BlockFileN+M、BlockFileN+M+1(N及びMは共に、1以上の整数である)がブロックキャッシュに生成される。容量縮小の後に、BlockNをブロックキャッシュから削除する。しかし、BlockN+1、・・・、BlockN+M、BlockN+M+1は残される。事前記憶モードにおいて容量が縮小されることで、データブロック階層記憶モードにおいてより大きい容量を使用することができる場合、ブロックキャッシュの容量を拡大することができる。図8に示すように、容量拡大の後に、複数の新しいBlockFileが、ブロックキャッシュによる拡大記憶空間に生成される。ここで、図8の陰影部におけるBlockは、データが記憶されているBlockである。
第5の例
実装形態の解決策において、データブロック階層記憶モードにおけるデータアクセス工程、即ち、データ階層探索工程は、計算層がデータをデータ処理層から読み取る場合、データを上層(即ち、ローカルメモリ)から最初に読み取ること、データが見いだされない場合、データが読み取られるまで、データを下層(即ち、ローカルSSD及びDFS)から再帰的に下方へ読み取ること、及びこの下層から読み取られたデータをローカルメモリにロードすることを含むことができる。
実装形態の解決策において、データブロック階層記憶モードにおけるデータアクセス工程、即ち、データ階層探索工程は、計算層がデータをデータ処理層から読み取る場合、データを上層(即ち、ローカルメモリ)から最初に読み取ること、データが見いだされない場合、データが読み取られるまで、データを下層(即ち、ローカルSSD及びDFS)から再帰的に下方へ読み取ること、及びこの下層から読み取られたデータをローカルメモリにロードすることを含むことができる。
図9に示すように、この例でのデータブロック階層記憶モードにおけるデータアクセス工程は、下記のステップを含むことができる。
ステップ901では、データブロックをローカルメモリから読み取り、データブロックを見いだしたかを判断し、肯定の場合、現在の工程を直ちに終了する。それ以外ならば、工程は、ステップ902に進む。
ステップ902では、同じデータブロックが他の工程で読み取られるかを判断し、肯定の場合、工程は、ステップ903に進み、それ以外ならば、工程は、ステップ905に進む。
ステップ903では、通知を待つ。
ステップ904では、他の工程からの通知を受信し、工程は、ステップ901に戻る。
ステップ905では、データブロックをローカルSSDから読み取り、データブロックを見いだしたかを判断し、肯定の場合、工程は、ステップ906に進み、否定の場合、工程は、ステップ908に進む。
ステップ906では、データブロックをローカルメモリにダウンロードする。
ステップ907では、同じデータブロックの読み取りを待つ他の工程(以下、「待ち工程」という)に通知し、工程は、ステップ1に戻る。
ステップ908では、他の工程が同じデータブロックを読み取っているかを判断し、肯定の場合、工程は、ステップ909に進み、それ以外ならば、工程は、ステップ911に進む。
ステップ909では、通知を待つ。
ステップ910では、他の工程からの通知を受信し、工程は、ステップ901に戻る。
ステップ911では、データブロックをDFSから読み取る。
ステップ912では、DFSから読み取られたデータブロックをローカルSSDにダウンロードする。
ステップ913では、データブロックをローカルSSDからキャッシング用のローカルにダウンロードする。
ステップ914では、待ち工程に通知し、工程は、ステップ901に戻る。
上述の図9は単に例であることに留意すべきである。他の実際のアプリケーションシナリオにおいて、データブロック階層記憶モードにおけるデータアクセス工程を、他の方法で実施することもできる。
上述の方法におけるステップの全部又は一部を、関連ハードウェアに指示するプログラムによって達成することができることが当業者によって分かる。このプログラムは、読み出し専用メモリ、磁気ディスク又は光ディスクなどのコンピュータ可読記憶媒体に記憶されてもよい。任意選択的に、上述の実施形態におけるステップの全部又は一部を、1つ又は複数の集積回路を用いて実施することもできる。それに対応して、上述の実施形態におけるモジュール/ユニットを、ハードウェアの形、又はソフトウェア機能モジュールの形で実施することができる。この出願は、ハードウェア及びソフトウェアの任意の特定の形の組み合わせに限定されない。
当然、この出願は、多くの他の実施形態を含んでもよい。当業者は、この出願の精神及び要旨から逸脱することなく、この出願によって様々な対応する変更及び修正を行うことができる。しかし、これらの対応する変更及び修正は全て、この出願の特許請求の範囲の保護範囲に含まれるべきである。
Claims (20)
- データファイルをリモートディスクに記憶することと、
ユーザによって最後にアクセスされたデータファイルを前記リモートディスクから取得し、前記データファイルをデータブロックにセグメント化し、前記データブロックをローカルディスクにキャッシュすることと、
前記データブロックを前記ローカルディスクからキャッシング用のローカルメモリにロードすることと
を含むデータ階層記憶方法。 - 固定長ブロックを含む少なくとも1つの固定長ブロックファイルを前記ローカルディスクに生成し、
前記データブロックを前記ローカルディスクにキャッシュするステップは、前記データブロックを前記ローカルディスクの空ブロックにキャッシュすることを含む、請求項1に記載のデータ階層記憶方法。 - 前記データブロックを前記ローカルディスクにキャッシュするステップの前に、
前記ローカルディスクの全ブロックが一杯である場合、前記ブロックの一部をクリアするように最低使用頻度アルゴリズムを使用することによって、前記ブロックの前記一部におけるデータを削除することを更に含む、請求項1又は2に記載のデータ階層記憶方法。 - 固定長ブロックを含む少なくとも1つの固定長ブロックファイルを前記ローカルメモリに生成し、
前記データブロックを前記ローカルディスクからキャッシング用の前記ローカルメモリにロードするステップの前に、前記ローカルメモリの全ブロックが一杯である場合、前記ブロックの一部をクリアするように最低使用頻度アルゴリズムを使用することによって、前記ブロックの前記一部におけるデータを削除することを更に含む、請求項1に記載のデータ階層記憶方法。 - データファイルを記憶する少なくとも1つのローカルファイルを前記ローカルディスクに更に生成し、
事前指定データファイルを前記ローカルディスクの前記ローカルファイルにキャッシュすることを更に含む、請求項1又は2に記載のデータ階層記憶方法。 - 前記ローカルディスクは、ブロックファイルが生成されるブロックキャッシュと前記ローカルファイルが生成されるファイルキャッシュとを含み、
前記事前指定データファイルを前記ローカルディスクの前記ローカルファイルにキャッシュするステップの後に、前記ローカルディスクにおける前記ファイルキャッシュの使用容量を走査することによって、前記ローカルディスクにおける前記ブロックキャッシュの容量を拡大又は縮小することを更に含む、請求項5に記載のデータ階層記憶方法。 - 前記ローカルディスクにおける前記ブロックキャッシュの前記容量を拡大又は縮小するステップは、
前記ファイルキャッシュの解放可能容量に応じて前記ブロックキャッシュの前記容量を対応して増大し、新しい容量に応じて前記ブロックキャッシュにおける前記ブロックファイル又は前記ブロックを新しく生成することと、
前記ファイルキャッシュで増大される必要がある容量に応じて前記ブロックキャッシュにおける前記ブロックファイル又は前記ブロックの一部を削除し、前記ブロックキャッシュの前記容量を対応して縮小することと
のうち少なくとも1つを含む、請求項6に記載のデータ階層記憶方法。 - 前記データブロックを前記ローカルディスクにキャッシュするステップの前に、
前記ブロックファイルに対応する先行書き込みログ(WAL)を前記ローカルディスクに設定することを更に含む、請求項2に記載のデータ階層記憶方法。 - 前記ユーザによるアクセス中に、対応するデータブロックを、前記ローカルメモリ、前記ローカルディスクから前記リモートディスクへ層ごとに再帰的に下方へ探索し、その間に、前記データブロックを前記ローカルメモリ及び前記ローカルディスクに層ごとにキャッシュすることを更に含む、請求項1に記載のデータ階層記憶方法。
- 集約ノードによって、ユーザ機器からの計算タスクを計算サブタスクに分割し、前記計算サブタスクを複数の計算ノードに分散させることと、
前記複数の計算ノードによって、前記計算サブタスクを実行することによって、
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、前記データブロックを前記ローカルメモリ及び前記ローカルディスクに層ごとにキャッシュし、前記得られたデータブロックを前記集約ノードに戻す操作
を実行することと、
前記集約ノードによって、前記複数の計算ノードによって戻される前記データブロックを集約してから、前記集約データブロックを前記ユーザ機器に提供することと
を含むデータ階層探索方法。 - 前記複数の計算ノードは、前記計算サブタスクを実行することによって、データファイルをリモートディスクに記憶する操作を更に実行する、請求項10に記載のデータ階層探索方法。
- 対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、前記データブロックを前記ローカルメモリ及び前記ローカルディスクに層ごとにキャッシュするステップは、
前記データブロックが前記ローカルメモリ又は前記ローカルディスクで得られない場合、前記対応するデータファイルを前記リモートディスクから取得し、前記データファイルをデータブロックにセグメント化し、前記データブロックを前記ローカルディスクにキャッシュすることと、前記データブロックを前記ローカルディスクからキャッシング用の前記ローカルメモリにロードすることとを含む、請求項10に記載のデータ階層探索方法。 - データファイルをリモートディスクに記憶し、ユーザによって最後にアクセスされたデータファイルを前記リモートディスクから取得するように構成されているリモートファイル処理ユニットと、
前記データファイルをデータブロックにセグメント化し、前記データブロックをローカルディスクにキャッシュするように構成されているブロック処理ユニットと、
前記データブロックを前記ローカルディスクからキャッシング用のローカルメモリにロードするように構成されているメモリキャッシングユニットと
を含むデータ階層記憶装置。 - 少なくとも固定長ブロックを含む少なくとも1つの固定長ブロックファイルを前記ローカルディスクに生成するように構成されているブロックキャッシングユニットを更に含み、
前記ブロック処理ユニットは、前記データブロックを空ブロックにキャッシュするように構成されている、請求項13に記載のデータ階層記憶装置。 - データファイルを記憶する少なくとも1つのローカルファイルを前記ローカルディスクに生成するように構成され、かつ事前指定データファイルを前記ローカルディスクの前記ローカルファイルにキャッシュするように構成されているファイル処理ユニットを更に含む、請求項13又は14に記載のデータ階層記憶装置。
- 前記ローカルディスクは、ブロックファイルが生成されるブロックキャッシュと、前記ローカルファイルが生成されるファイルキャッシュとを含み、
前記ローカルディスクにおける前記ファイルキャッシュの使用容量を走査することによって、前記ローカルディスクにおける前記ブロックキャッシュの容量を拡大又は縮小するように構成されているディスク処理ユニットを更に含む、請求項15に記載のデータ階層記憶装置。 - 前記ブロックファイルに対応するWALを前記ローカルディスクに設定するように構成されているメタデータ処理ユニットを更に含む、請求項14に記載のデータ階層記憶装置。
- 前記ユーザによるアクセス中に、対応するデータブロックを、前記ローカルメモリ、前記ローカルディスクから前記リモートディスクへ層ごとに再帰的に下方へ探索するように構成されているブロックファイル処理ユニットを更に含み、
前記ブロックキャッシングユニットは、前記ブロックファイル処理ユニットによって前記データブロックを探索する工程で、前記データブロックを前記ローカルメモリ及び前記ローカルディスクに層ごとにキャッシュするように更に構成されている、請求項14に記載のデータ階層記憶装置。 - リモートディスクと通信するように構成されている通信回路と、
階層記憶モードをサポートするデータ記憶装置であって、低レベルとしてローカルディスクを含み、高レベルとしてローカルメモリを含むデータ記憶装置と、
データ階層記憶プログラムが記憶されている記憶装置と、
請求項1〜8のいずれか一項に記載のデータ階層記憶方法の操作を実行する前記データ階層記憶プログラムを読み取るように構成されているプロセッサと
を含む計算デバイス。 - 少なくとも1つの集約ノードと複数の計算ノードとを含む分散計算システムであって、
前記集約ノードは、ユーザ機器からの計算タスクを計算サブタスクに分割し、前記計算サブタスクを前記複数の計算ノードに分散させ、前記複数の計算ノードによって戻されるデータブロックを集約してから、前記集約データブロックを前記ユーザ機器に提供するように構成されており、
前記計算ノードは、前記計算サブタスクを実行することによって、
対応するデータブロックを、ローカルメモリ、ローカルディスクからリモートディスクへ層ごとに再帰的に下方へ探索し、その間に、前記データブロックを前記ローカルメモリ及び前記ローカルディスクに層ごとにキャッシュし、前記得られたデータブロックを前記集約ノードに戻す操作
を実行するように構成されている、
分散計算システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711036438.5 | 2017-10-30 | ||
CN201711036438.5A CN109947787A (zh) | 2017-10-30 | 2017-10-30 | 一种数据分层存储、分层查询方法及装置 |
PCT/CN2018/110968 WO2019085769A1 (zh) | 2017-10-30 | 2018-10-19 | 一种数据分层存储、分层查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021501389A true JP2021501389A (ja) | 2021-01-14 |
Family
ID=66331351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020519351A Pending JP2021501389A (ja) | 2017-10-30 | 2018-10-19 | データ階層記憶及び階層探索方法及び装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200257450A1 (ja) |
JP (1) | JP2021501389A (ja) |
CN (1) | CN109947787A (ja) |
WO (1) | WO2019085769A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022524174A (ja) * | 2019-12-23 | 2022-04-28 | 商▲湯▼国▲際▼私人有限公司 | データ処理方法、装置、及びエッジデバイス |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515964A (zh) * | 2019-08-30 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 一种文件更新方法、装置、电子设备和介质 |
CN110750507B (zh) * | 2019-09-30 | 2022-09-20 | 华中科技大学 | 面向dfs的全局命名空间下的持久客户端缓存方法及*** |
CN111694865A (zh) * | 2020-06-02 | 2020-09-22 | 中国工商银行股份有限公司 | 基于分布式***的四层结构数据获取方法和装置 |
CN112181302B (zh) * | 2020-09-28 | 2024-07-09 | 上海简苏网络科技有限公司 | 一种数据多级存储和访问方法及*** |
CN112559459B (zh) * | 2020-12-15 | 2024-02-13 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层***及方法 |
US11429397B1 (en) | 2021-04-14 | 2022-08-30 | Oracle International Corporation | Cluster bootstrapping for distributed computing systems |
CN113805805B (zh) * | 2021-05-06 | 2023-10-13 | 北京奥星贝斯科技有限公司 | 缓存内存块的淘汰方法、装置及电子设备 |
CN112948025B (zh) * | 2021-05-13 | 2021-09-14 | 阿里云计算有限公司 | 数据加载方法、装置及存储介质、计算设备、计算*** |
CN113254270B (zh) * | 2021-05-28 | 2022-06-14 | 济南浪潮数据技术有限公司 | 一种存储缓存热点数据自恢复方法、***及存储介质 |
CN113741807B (zh) * | 2021-07-29 | 2023-08-11 | 苏州浪潮智能科技有限公司 | 一种提高***存储性能的方法、***、设备和存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050038767A1 (en) * | 2003-08-11 | 2005-02-17 | Oracle International Corporation | Layout aware calculations |
US20100145990A1 (en) * | 2008-12-09 | 2010-06-10 | Washington University In St. Louis | Selection and performance of hosted and distributed imaging analysis services |
US8407190B2 (en) * | 2009-06-30 | 2013-03-26 | Commvault Systems, Inc. | Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer |
CN103116618B (zh) * | 2013-01-28 | 2015-09-30 | 南开大学 | 基于客户端持久缓存的远程文件***镜像方法及*** |
CN103605483A (zh) * | 2013-11-21 | 2014-02-26 | 浪潮电子信息产业股份有限公司 | 一种分级存储***中块级数据特征处理方法 |
US9323615B2 (en) * | 2014-01-31 | 2016-04-26 | Google Inc. | Efficient data reads from distributed storage systems |
CN104850572B (zh) * | 2014-11-18 | 2018-11-23 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其*** |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN106649687B (zh) * | 2016-12-16 | 2023-11-21 | 飞狐信息技术(天津)有限公司 | 大数据联机分析处理方法及装置 |
US10318649B2 (en) * | 2017-04-18 | 2019-06-11 | International Business Machines Corporation | Implementing a secondary storage dentry cache |
US20190163664A1 (en) * | 2017-11-27 | 2019-05-30 | Salesforce.Com, Inc. | Method and system for intelligent priming of an application with relevant priming data |
-
2017
- 2017-10-30 CN CN201711036438.5A patent/CN109947787A/zh active Pending
-
2018
- 2018-10-19 JP JP2020519351A patent/JP2021501389A/ja active Pending
- 2018-10-19 WO PCT/CN2018/110968 patent/WO2019085769A1/zh active Application Filing
-
2020
- 2020-04-29 US US16/862,163 patent/US20200257450A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022524174A (ja) * | 2019-12-23 | 2022-04-28 | 商▲湯▼国▲際▼私人有限公司 | データ処理方法、装置、及びエッジデバイス |
JP7212153B2 (ja) | 2019-12-23 | 2023-01-24 | 商▲湯▼国▲際▼私人有限公司 | データ処理方法、装置、及びエッジデバイス |
Also Published As
Publication number | Publication date |
---|---|
US20200257450A1 (en) | 2020-08-13 |
WO2019085769A1 (zh) | 2019-05-09 |
CN109947787A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021501389A (ja) | データ階層記憶及び階層探索方法及び装置 | |
US10579364B2 (en) | Upgrading bundled applications in a distributed computing system | |
US11086725B2 (en) | Orchestration of heterogeneous multi-role applications | |
US11099937B2 (en) | Implementing clone snapshots in a distributed storage system | |
US20190213085A1 (en) | Implementing Fault Domain And Latency Requirements In A Virtualized Distributed Storage System | |
US8499121B2 (en) | Methods and apparatus to access data in non-volatile memory | |
US9772949B2 (en) | Apparatus, system and method for providing a persistent level-two cache | |
US9996542B2 (en) | Cache management in a computerized system | |
US9817765B2 (en) | Dynamic hierarchical memory cache awareness within a storage system | |
US8386717B1 (en) | Method and apparatus to free up cache memory space with a pseudo least recently used scheme | |
US20180329712A1 (en) | File access predication using counter based eviction policies at the file and page level | |
CN103544045A (zh) | 一种基于hdfs的虚拟机镜像存储***及其构建方法 | |
US9430492B1 (en) | Efficient scavenging of data and metadata file system blocks | |
US10678788B2 (en) | Columnar caching in tiered storage | |
US20130290636A1 (en) | Managing memory | |
CN108089825B (zh) | 一种基于分布式集群的存储*** | |
CN112540982A (zh) | 具有可更新逻辑表指针的虚拟数据库表 | |
WO2023045492A1 (zh) | 一种数据预取方法、计算节点和存储*** | |
CN113010479A (zh) | 一种文件管理方法、装置与介质 | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
US20220350779A1 (en) | File system cloning method and apparatus | |
US10482012B1 (en) | Storage system and method of operating thereof | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US11748203B2 (en) | Multi-role application orchestration in a distributed storage system | |
US20240086091A1 (en) | Using object properties for facilitating object storage |