JP6034512B2 - 計算機システム及びデータ管理方法 - Google Patents

計算機システム及びデータ管理方法 Download PDF

Info

Publication number
JP6034512B2
JP6034512B2 JP2015554353A JP2015554353A JP6034512B2 JP 6034512 B2 JP6034512 B2 JP 6034512B2 JP 2015554353 A JP2015554353 A JP 2015554353A JP 2015554353 A JP2015554353 A JP 2015554353A JP 6034512 B2 JP6034512 B2 JP 6034512B2
Authority
JP
Japan
Prior art keywords
file
key
information
data
type data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015554353A
Other languages
English (en)
Other versions
JPWO2015097774A1 (ja
Inventor
鵜飼 敏之
敏之 鵜飼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of JP6034512B2 publication Critical patent/JP6034512B2/ja
Publication of JPWO2015097774A1 publication Critical patent/JPWO2015097774A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、分散KVSが適用された計算機システムに関する。
近年、計算機システムにおいてアプリケーションプログラムが処理すべきデータ量は爆発的に増えてきている。多数のサーバを使って大量のデータを高速に処理するための技術として、分散メモリキャッシュ技術が知られている(例えば、特許文献1)。分散メモリキャッシュ技術は、複数のサーバのメモリを統合して、大量のデータを格納するメモリ空間(メモリストア)を構成する技術である。複数のサーバへのデータの分割配置による処理の並列化と、メモリにデータを保持することによる入出力の高速化とを実現することができる。
分散メモリキャッシュ技術では、大量のデータを複数のサーバに分散させるために、キー・バリュー型データ形式のデータを扱う分散キーバリューストア(分散KVS)が採用される。キー・バリュー型データは、データの識別子であるキーと、データの本体であるバリュー(値)とを対応づけたデータ構造であり、[キー、バリュー]の組合わせで管理される。
例えば、複数のレコードから構成されるファイルに分散KVSを採用する場合、一つのレコードから一つキー・バリュー型データが生成され、キーの範囲(キーレンジ)に応じてキー・バリュー型データが複数のサーバに分割配置される。各サーバ上で稼動するアプリケーションは分割配置されたキー・バリュー型データを並列に処理することによって処理の高速化を実現できる。
特許文献1には、「分散メモリストレージ管理部が定義情報に従ってファイルを断片化し、各断片を複数の物理メモリ領域を統合して構成される分散メモリストレージに分割配置する。分散メモリストレージアクセス部はUAPからファイルへのアクセス要求を受け付け、ファイル管理情報を参照して自ホスト計算機の物理メモリ領域に断片化して配置された断片へのアクセスを実行する」ことが記載されている。
特開2011−191835号公報
ファイル(データソース)に対する処理を高速化するために、キー・バリュー型データをキャッシュとして利用することが考えられる。しかし、キー・バリュー型データのソースデータであるファイルを管理するファイルシステム等と、キー・バリュー型データを管理する分散KVS管理部等との連携が希薄であるという問題がある。
分散KVSでは、キー・バリュー型データの生成時にファイルのレコード構造等の情報が失われるため、キー・バリュー型データをそのままファイルに反映することができない。したがって、分散KVSにおいて、ストレージ装置はメモリストアのキャッシュ又は冗長化のためのデータのコピーを格納する記憶領域として用いられるため、キー・バリュー型データがそのままストレージ装置に格納される。
すなわち、従来技術では、キー・バリュー型データとデータソースとが対応付けて管理されていないため、キー・バリュー型データの更新をデータソースに反映するような仕組みは提供されていない。
また、キー・バリュー型データの格納場所とファイルの格納場所とが対応づけられていないため、分散ファイルシステムによって管理される分散ファイルに分散KVSを採用した場合、サーバ間の通信負荷が増大するという問題がある。より具体的には、複数のサーバに配置される分散ファイルからキー・バリュー型データを生成し、又は、キー・バリュー型データを分散ファイルに反映する場合、複数のサーバの各々が、キー・バリュー型データの配置又は分散ファイルの配置を把握するために頻繁に通信を行う必要があり、サーバ間の通信負荷が増大するという問題がある。
本発明は、前述した課題に鑑みてなされた発明である。データソースとキー・バリュー型データとを対応付けて管理することによって、更新されたキー・バリュー型データをデータソースに反映する仕組みを提供する。すなわち、ファイルI/O API及びキー・バリュー型データAPIのいずれでも同一の内容のデータにアクセス可能な仕組みを提供する。また、データソースとキー・バリュー型データとを対応付けて管理することによって、分散ファイルに分散KVSを採用する場合に、サーバ間の通信負荷を抑える仕組みを提供する。
本発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して接続される複数の計算機を備える計算機システムであって、前記複数の計算機の各々は、プロセッサ、前記プロセッサに接続されるメモリ及び前記プロセッサに接続されるネットワークインタフェースを有し、複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、前記ストレージ装置に格納される前記ファイルを管理するファイルシステムと、前記複数の計算機が有する記憶領域を統合することによってデータ格納領域を一つ以上生成し、前記データ格納領域に配置されたキーバリュー型データを管理するキーバリュー型データ管理部と、前記ファイルを分割して、検索キーと前記レコードの内容を示すバリューとを対応づけることによって前記キーバリュー型データを生成し、前記生成されたキーバリュー型データを前記データ格納領域に分散して格納するローダと、を有し、前記キーバリュー型データ毎に、前記検索キー、前記バリューのサイズ、及び前記キーバリュー型データに対応する前記レコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報と、前記データ格納領域の識別情報を含む前記データ格納領域に格納される前記キーバリュー型データを管理するためのキーバリュー型データ管理情報と、を保持し、前記キーバリュー型データ管理部は、前記キーバリュー型データの更新要求を受け付けた場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データを更新し、前記更新されたキーバリュー型データのリストであるダーティリストが生成されているか否かを判定し、前記ダーティリストが生成されていると判定された場合、新たに更新されたキーバリュー型データを前記ダーティリストに追加し、前記ダーティリストが生成されていないと判定された場合、前記ダーティリストを生成して、前記生成されたダーティリストへのポインタを前記キーバリュー型データ管理情報に設定し、前記ローダは、更新された前記キーバリュー型データの前記ファイルへの反映を指示する永続化指示を受け付けた場合、前記複数の計算機の各々の前記キーバリュー型データ管理部に、前記更新されたキーバリュー型データを取得するための要求であって、処理対象のデータ格納領域の識別情報を含む読出要求を送信し、前記キーバリュー型データ管理部は、前記読出要求を受信した場合、前記読出要求に含まれる前記データ格納領域の識別情報に一致する前記キーバリュー型データ管理情報を検索し、前記検索されたキーバリュー型データ管理情報の前記ダーティリストへのポインタに基づいて前記ダーティリストを参照して、前記処理対象のデータ格納領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを取得し、前記読出要求を送信した前記ローダに前記更新されたキーバリュー型データを送信し、前記ローダは、前記複数の計算機の各々のキーバリュー型データ管理部から取得された前記更新されたキーバリュー型データに基づいて、前記更新されたキーバリュー型データを反映させる処理対象のファイルを特定し、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定し、前記特定された計算機に、前記更新されたキーバリュー型データを含むファイルの更新要求を送信し、前記ファイルシステムは、前記ファイルの更新要求を受信した場合、前記キーバリュー型データ構造情報に基づいて、前記更新されたキーバリュー型データに対応する前記レコードの前記ファイルにおける位置を特定し、前記特定されたファイルの位置に、前記更新されたキーバリュー型データを書き込むことによって前記ファイルを更新することを特徴とする。
本発明によれば、キーバリュー型データ管理部がキーバリュー型データ構造情報に基づいて、ファイルとキー・バリュー型データとを対応付けて管理することができ、また、更新されたキーバリュー型データをファイルに反映することができる。したがって、ファイルI/O API及びキー・バリュー型データAPIのいずれでも同一の内容のデータにアクセスすることができる。
上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
本発明の実施例1における計算機システムの構成例を示すブロック図である。 本発明の実施例1におけるファイルの構成例を示す説明図である。 本発明の実施例1におけるKV型データの構成例を示す説明図である。 本発明の実施例1におけるファイル管理情報の一例を示す説明図である。 本発明の実施例1におけるレコード定義情報の構成例を示す説明図である。 本発明の実施例1におけるUAPのソースプログラムの一例を示す説明図である。 本発明の実施例1のKV型データ管理情報及びKV型データの一例を示す説明図である。 本発明の実施例1のファイル配置情報の一例を示す説明図である。 本発明の実施例1のKV型データ構造情報の一例を示す説明図である。 本発明の実施例1におけるロード処理を説明するフローチャートである。 本発明の実施例1におけるKV型データの更新処理を説明するフローチャートである。 本発明の実施例1のKV型データ永続化処理の流れを説明するシーケンス図である。 本発明の実施例1における実行サーバ判定処理の一例を説明するフローチャートである。 本発明の実施例1のレコード更新処理の一例を説明するフローチャートである。 本発明の実施例1の変形例におけるファイル構成情報の一例を示す説明図である。 本発明の実施例1の変形例におけるファイル構成情報の登録処理の一例を説明するフローチャートである。 本発明の実施例1の変形例におけるロード処理の一例を説明するフローチャートである。 本発明の実施例2における計算機システムの構成例を示すブロック図である。 本発明の実施例2におけるファイル管理情報の一例を示す説明図である。 本発明の実施例2のKV型データ永続化処理の流れを説明するシーケンス図である。 本発明の実施例2におけるローダ決定処理の一例を説明するフローチャートである。 本発明の実施例2における一時リストの一例を説明する説明図である。 本発明の実施例2における実行サーバ判定処理の一例を説明するフローチャートである。 本発明の実施例2のレコード更新処理の一例を説明するフローチャートである。
以下、実施例を図面を参照して詳細に説明する。
[実施例1]
図1は、本発明の実施例1における計算機システムの構成例を示すブロック図である。
実施例1の計算機システムは、サーバ101、複数の分散KVSサーバ102、及びストレージ装置104、105から構成される。
サーバ101は、ネットワーク103を介して複数の分散KVSサーバ102の各々と接続される。ネットワーク103は、LAN及びWAN等が考えられるが、本発明はネットワーク103の種別に限定されない。
分散KVSサーバ102は、キー・バリュー・ストア(KVS)を構成する計算機である。各分散KVSサーバ102は、データソース(ファイル181)が格納されるストレージ装置105と接続する。ストレージ装置105は、例えば、HDD等の不揮発性記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置及び光ディスク装置等が考えられる。
以下の説明では、「分散KVSサーバ102が管理するファイル181」との表現は、分散KVSサーバ102と接続されるストレージ装置105に格納されるファイル181を表すものとする。また、「ファイル181を管理する分散KVSサーバ102」との表現は、ファイル181を格納するストレージ装置105と接続される分散KVSサーバ102を表すものとする。
本実施例では、複数の分散KVSサーバ102の各々が備える記憶領域を統合することによって、一つ以上のキャッシュ領域161が生成される。キャッシュ領域161には、ファイル181から生成されたキー・バリュー型データ171が格納される。以下の説明では、キー・バリュー型データ171をKV型データ171とも記載する。
ここで、ファイル181とKV型データ171との関係について説明する。
図2は、本発明の実施例1におけるファイル181の構成例を示す説明図である。図3は、本発明の実施例1におけるKV型データ171の構成例を示す説明図である。
ファイル181は、UAP141等のアプリケーションによって処理されるデータの基本単位となる複数のレコードから構成される。図2に示す例では、ファイル181は、レコード201、レコード202、レコード203、及びレコード204を含む。
各レコード201、202、203、204は複数のフィールドから構成される。フィールドには数値及び文字などの各種情報が格納される。図2に示す例では、各レコードは、フィールド211、フィールド212、及びフィールド213を含む。
一般に、システムの制約の範囲内において、一つのファイルは任意の数のレコードを含むことができ、また、一つのレコードは任意の数のフィールドを含むことができる。例えば、商品取引業務で用いられるようなデータの場合、1件の取引における取引情報からレコードが構成され、口座番号、店番号、及び商品コード等の個々の情報(データ)がフィールドに記録される。
一方、KV型データ171は、KV型データヘッダ情報301、キー302、及びバリュー303から構成される。
KV型データヘッダ情報301は、KV型データの構成、及び同一ファイルから生成された他のKV型データとの関係を示す情報である。KV型データヘッダ情報301の詳細は図9を用いて説明する。キー302は、検索キーとなる情報である。バリュー303は、KV型データのデータ本体である。
UAP141は、ファイル181又はKV型データ171を用いて所定の処理を実行する。本実施例では、ファイル181は、レコード単位に分割され、一つのレコードについて、任意のフィールドをキーとしてレコード本体をバリューとするKV型データが生成される。図1の説明に戻る。
キャッシュ領域161は、分散KVSサーバ102から共有デバイスと同様にアクセスすることが可能である。また、レコード単位に分割されたファイル181のデータ、すなわち、KV型データ171は、複数の分散KVSサーバ102上に配置される。各UAP141は、それぞれ、自身が稼働する分散KVSサーバ102上に配置されたKV型データ171を用いて処理を実行する。
前述したように、複数のUAP141の各々が、複数のKV型データ171を並列に処理することによって、一つのUAP141が処理するデータ量を削減することができる。したがって、処理の高速化を実現できる。
また、本実施例では処理の対象のデータソースとしてファイル181を例に説明するが、本発明はこれに限定されず、データの格納形式は特に問わない。
サーバ101は、プロセッサ111、メモリ112、及びインタフェース(I/F)113−1、113−2を備える。サーバ101は、インタフェース113−1を介してストレージ装置104と接続され、また、インタフェース113−2を介して複数の分散KVSサーバ102と接続される。
プロセッサ111は、メモリ112に格納されるプログラムを実行する。プロセッサ111が、メモリ112に格納されるプログラムを実行することによって、サーバ101の機能が実現される。
メモリ112は、プロセッサ111が実行するプログラム及び当該プログラムを実行するために必要なデータを格納する。メモリ112は、例えば、DRAMのような半導体メモリが考えられ、ストレージ装置104に比べ高速にアクセスすることができる。
本実施例のメモリ112は、ファイルシステム131を実現するプログラムを格納する。ファイルシステム131は、ファイル単位のデータを管理する。本実施例のファイルシステム131は、各分散KVSサーバ102に接続されるストレージ装置105に格納されるファイル181を一元管理する。
ストレージ装置104は、各種情報を格納し、例えば、HDD等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置及び光ディスク装置等が考えられる。本実施例のストレージ装置104には、複数のファイル管理情報132、及び複数のレコード定義情報133が格納される。
ファイル管理情報132は、ファイル181のメタデータ等の管理情報を格納する。一つのファイル181に対して一つのファイル管理情報132が存在する。レコード定義情報133は、ファイル181を構成するレコードの管理情報を格納する。レコード定義情報133は、一つのファイル管理情報132と対応付けられて管理される。ファイル管理情報132及びレコード定義情報133の詳細は、図4、図5及び図6を用いて後述する。
分散KVSサーバ102は、プロセッサ121、メモリ122、及びインタフェース(I/F)123−1、123−2を備える。分散KVSサーバ102は、インタフェース123−1を介してサーバ101及び他の分散KVSサーバ102と接続される。また、分散KVSサーバ102は、インタフェース123−2を介してストレージ装置105と接続される。
本実施例では、各分散KVSサーバ102は同一の構成であるものとして説明するが、以下に説明する機能及び処理を実現できるものであれば、必ずしも同一の構成でなくてもよい。
プロセッサ121は、メモリ122に格納されるプログラムを実行する。プロセッサ121が、メモリ122に格納されたプログラムを実行することによって後述する分散KVSサーバ102の機能が実現される。
メモリ122は、プロセッサ121が実行するプログラム及び当該プログラムを実行するために必要なデータを格納する。メモリ122は、例えば、DRAMのような半導体メモリが考えられ、ストレージ装置105に比べ高速にアクセスすることができる。
本実施例のメモリ122は、UAP(ユーザアプリケーションプログラム)141、並びに、分散KVS管理部142、ローダ143、及びファイルシステム144を実現するプログラムを格納する。また、メモリ122は、KV型データ管理情報151、ファイル配置情報152、及びKV型データ構造情報153を格納する。
UAP141は、各種処理を実行する。ファイルシステム144は、ファイルシステム131と同一のものである。分散KVS管理部142は、他の分散KVSサーバ102の分散KVS管理部142と協調して、キャッシュ領域161を管理する。また、分散KVS管理部142は、キャッシュ領域161へのアクセスを制御する。ローダ143は、ストレージ装置105に格納されるファイル181からKV型データ171を生成し、KV型データ171をキャッシュ領域161に分散配置し、また、キャッシュ領域161に格納されるKV型データ171をストレージ装置105に格納する。
以下の説明では、ストレージ装置105に格納されるファイル181をキャッシュ領域161に分散して配置する処理をロード処理と記載する。また、キャッシュ領域161に格納されるKV型データ171を、ストレージ装置105へ格納する処理をアンロード処理と記載する。
KV型データ管理情報151は、キャッシュ領域161を構成する分散KVSサーバ102の記憶領域に格納されるKV型データ171を管理するための情報である。ファイル配置情報152は、キャッシュ領域161及びファイル181の対応関係を管理するための情報である。KV型データ構造情報153は、ファイル181のレコード及びKV型データ171の対応関係を管理するための情報である。
KV型データ管理情報151、ファイル配置情報152、及びKV型データ構造情報153の詳細については、図7、図8、及び図9を用いて後述する。
なお、メモリ112及びメモリ122に格納されるプログラム及びデータは、常にメモリ112及びメモリ122上に格納される必要はなく、図示しないストレージ装置又は図示しない外部記憶装置等に格納されてもよい。この場合、必要に応じて、プログラム又はデータがストレージ装置又は外部記憶装置からメモリ112、114に読み出される。なお、データを読み出す場合、データの一部又は全部を読み出すことができる。
なお、ファイルシステム131、144、分散KVS管理部142は、図示しないオペレーティングシステム(OS)の一部、又は、図示しないユーザアプリケーションプログラムによって使用される入出力ライブラリとして提供されてもよい。
なお、図1の分散KVSサーバ102は、物理的な計算機である必要はなく、論理計算機でもよい。この場合、プロセッサ121、メモリ122、及びインタフェース123等の計算機リソースは、仮想化プログラム(図示省略)等によって論理的な計算機リソースとして論理計算機に割り当てられる。
なお、サーバ101は分散KVSサーバ102であってもよい。この場合、少なくとも一つの分散KVSサーバ102がファイル管理情報132及びレコード定義情報133を保持すればよい。また、図1では全ての分散KVSサーバ102がローダ143を備えているが、本発明はこれに限定されず、少なくとも一つの分散KVSサーバ102がローダ143を備えていればよい。
図4は、本発明の実施例1におけるファイル管理情報132の一例を示す説明図である。
ファイル管理情報132は、ファイルID401、パーミション402、オーナ403、サイズ404、タイムスタンプ405、レコード定義情報へのポインタ406、及び格納場所情報407を含む。
ファイルID401は、ストレージ装置105に格納されるファイル181の識別情報を格納する。ファイルID401には、ファイル181を一意に識別できる情報であればどのような情報が格納されてもよい。例えば、フルパスのファイル名又はDBにおけるテーブル名などが格納される。本実施例ではファイルID401にはファイル名が格納されるものとする。
パーミション402は、ファイル181のアクセス権限に関する情報を格納する。オーナ403は、ファイル181の所有者を示す情報を格納する。サイズ404は、ファイル181のサイズを示す情報を格納する。タイムスタンプ405は、ファイル181の更新日時を示す情報を格納する。
レコード定義情報へのポインタ406は、ファイル181に対応するレコード定義情報133へのポインタを格納する。格納場所情報407は、ファイル181の格納場所に関する情報を格納する。本実施例では、各分散KVSサーバ102に接続されるストレージ装置105に複数のファイル181が格納されるため、格納場所情報407には、例えば、分散KVSサーバ102の識別子及びストレージ装置105の識別情報が格納される。
図5は、本発明の実施例1におけるレコード定義情報133の構成例を示す説明図である。
レコード定義情報133は、レコード構成501、フィールド構成502及びキー・フィールド番号503を含む。
レコード構成501は、ファイル181におけるレコード構造を把握するための情報を格納し、レコード種別511及びレコード長512を含む。なお、レコード構成501には、レコード種別511及びレコード長512以外の情報が含まれてもよい。
レコード種別511は、ファイル181におけるレコードが固定長レコード又は可変長レコードのいずれであるかを示す情報を格納する。レコード種別511に固定長レコードを示す情報が格納される場合、ファイル181は、同一かつ所定の長さのレコードから構成される。レコード種別511に可変長レコードを示す情報が格納される場合、ファイル181は、長さが異なるレコードから構成される。
レコード長512は、レコード種別511に固定長レコードを示す情報が格納される場合に、一つのレコードの長さを示す情報を格納する。
なお、レコード構成501にはレコードの構造を把握することができる情報が含まれていればよく、レコード種別511及びレコード長512の全ての情報を含む必要はない。フィールド構成502は、レコードに含まれるフィールドを識別するための情報を格納するものであり、フィールド数521及びフィールド情報522を含む。
フィールド数521は、一つのレコードに含まれるフィールドの数を格納する。フィールド情報522は、各フィールドに記録されるデータに関する情報を格納し、フィールド種別531、サイズ532及び記述形式533を含む。
フィールド種別531は、レコード種別511に可変長レコードを示す情報が格納される場合、当該レコードに対応するフィールドが可変長フィールド又は固定長フィールドのいずれであるかを示す情報を格納する。
サイズ532は、フィールドの大きさを示す情報を格納する。記述形式533は、ASCII、バイナリ等、フィールドに記録されたデータの記述形式を格納する。
なお、フィールド構成502は、レコードに含まれるフィールドを把握できればよいため、フィールド数521、及びフィールド情報522のすべての情報を含む必要はない。
ファイル181が固定長レコードから構成される場合、レコード長512に設定された値によって個々のレコードを認識することができる。一方、ファイル181が可変長レコードから構成される場合、各レコードの先頭には、そのレコードの大きさを記録するフィールドが設けられ、当該フィールドに基づいてレコードの区切れを判定することができる。
また、レコードが可変長レコードである場合、フィールド構成502に格納される情報に基づいて最初のフィールドが識別され、レコードサイズを算出することができる。レコードが認識された後は、フィールド構成502のフィールド数521、及びフィールド情報522のサイズ532を参照することによってフィールドを把握できる。
図6は、本発明の実施例1におけるUAP141のソースプログラムの一例を示す説明図である。
図6は、COBOL言語を用いて記述されたUAP141のソースコードを示す。COBOL言語を用いて記述されたUAP141では、プログラム中にデータソースとしてのファイルのレコード構造が定義される。
図6に示す例では、DATA DIVISIONのFILE SECTION602においてファイルの構造が定義される。プログラムに用いられる各ファイルは、一つのファイル記述項(FD)と、それに続く一つ以上のレコード記述項とによって定義される。本実施例において、レコード定義情報133のレコード構成501及びフィールド構成502には、FILE SECTION602に記述された情報が格納される。
図7は、本発明の実施例1のKV型データ管理情報151及びKV型データ171の一例を示す説明図である。
KV型データ管理情報151は、各分散KVSサーバ102にKV型データ171を配置されるときに生成される。このとき、KV型データリストも生成される。KV型データリストは、各分散KVSサーバ102に配置されたKV型データ171をキーの順番に並べたリストである。また、本実施例では、KV型データ171の更新時にダーティリストが生成又は更新される。分散KVS管理部142又はローダ143等は、ダーティリストに基づいて更新されたKV型データ171を把握することができる。
まず、KV型データヘッダ情報301について説明する。KV型データヘッダ情報301は、フラグ711、next712、及びダーティリストnext713を含む。
フラグ711は、KV型データ171が更新されたことを示すフラグを格納する。本実施例では、KV型データ171の更新前のフラグ711には「0」が設定され、KV型データ171の更新後のフラグ711には「1」が設定されるものとする。
next712は、KV型データリストにおける当該KV型データ171の次のKV型データ171へのポインタを格納する。これによって、KV型データリストに含まれる全てのKV型データ171をたどることができる。ダーティリストnext713は、後述するダーティリストにおける当該KV型データ171の次のKV型データ171へのポインタを格納する。
本実施例では、KV型データリスト及びダーティリストのそれぞれ独立した二つのリストが生成される。KV型データリストに基づいて、一つのファイル181から生成され、分散配置されたKV型データ171を把握できる。また、ダーティリストに基づいて、一つのファイル181から生成され、分散配置されたKV型データ171のうち、更新されたKV型データ171を把握できる。
次に、KV型データ管理情報151について説明する。KV型データ管理情報151は、キャッシュ領域ID701、ファイルID702、KV型データリストポインタ703、及びダーティリストポインタ704を含む。
キャッシュ領域ID701は、キャッシュ領域161の識別情報を格納する。ファイルID702は、KV型データ171のソースであるファイル181の識別情報を格納する。KV型データリストポインタ703は、KV型データリストにおける最初のKV型データ171へのポインタを格納する。ダーティリストポインタ704は、ダーティリストにおける最初のKV型データ171へのポインタを格納する。
図8は、本発明の実施例1のファイル配置情報152の一例を示す説明図である。
ファイル配置情報152は、キャッシュ領域161毎に、当該キャッシュ領域161に格納されるKV型データ171のソースであるファイル181の情報を格納する。具体的には、ファイル配置情報152は、キャッシュ領域ID801、ファイルID802、及び、KV型データ構造情報へのポインタ803を含む。
キャッシュ領域ID801は、キャッシュ領域161を識別するための識別情報を格納する。ファイルID802は、キャッシュ領域ID801に対応するキャッシュ領域161にKV型データ171として格納されるファイル181の識別情報を格納する。本実施例では、ファイル名が格納される。KV型データ構造情報へのポインタ803は、ファイル配置情報152のエントリに対応するKV型データ構造情報153へのポインタを格納する。
図9は、本発明の実施例1のKV型データ構造情報153の一例を示す説明図である。
KV型データ構造情報153は、KV型データ171毎に、当該KV型データ171に対応するレコードの構造に関する情報を格納する。具体的には、KV型データ構造情報153は、ID901、キー902、バリューサイズ903、及びオフセット904を含む。
ID901は、KV型データ構造情報153のエントリを一意に識別するための識別番号を格納する。KV型データ構造情報153のエントリは、ファイルID802に対応するファイル181から生成された一つのKV型データ171に対応する。
キー902は、ファイルID802に対応するファイル181から生成されたKV型データ171のキーの情報を格納する。バリューサイズ903は、KV型データ171のサイズを格納する。オフセット904は、ファイルID802に対応するファイル181上の、KV型データ171に対応するレコードの位置を示す情報を格納する。
図10は、本発明の実施例1におけるロード処理を説明するフローチャートである。
ローダ143は、UAP141から任意のファイル181のキャッシュ領域161へのロード指示を受け付けると処理を開始する。ロード指示には、処理対象のファイル181の識別情報(ファイルID)及びKV型データ171のキーとして用いるフィールドの情報が含まれる。また、ロード指示には、KV型データ171を配置するキャッシュ領域161の識別情報(キャッシュ領域ID)も含まれる。
なお、以下の説明ではKV型データ171が配置されるキャッシュ領域161が生成されていないものとする。
ローダ143は、処理対象のファイル181のファイル管理情報132及びレコード定義情報133を取得する(ステップS1001)。具体的には以下のような処理が実行される。
ローダ143は、ファイルシステム144に処理対象のファイルオープンを指示する。ファイルシステム144は、当該ファイルオープンの指示を受け付けると、処理対象のファイルのファイル管理情報132及びレコード定義情報133のキャッシュを保持しているか否かを判定する。
処理対象のファイル181のファイル管理情報132及びレコード定義情報133のキャッシュを保持していると判定された場合、ファイルシステム144は、ローダ143に対して、ファイルオープンに対する戻り値とともに、キャッシュされているファイル管理情報132及びレコード定義情報133を応答する。
一方、処理対象のファイルのファイル管理情報132及びレコード定義情報133のキャッシュを保持していないと判定された場合、ファイルシステム144は、サーバ101のファイルシステム131にファイル管理情報132及びレコード定義情報133の取得要求を送信する。当該取得要求には、ファイルIDが含まれる。
サーバ101のファイルシステム131は、ファイルID401が取得要求に含まれるファイルIDと一致するファイル管理情報132を検索する。ファイルシステム131は、検索されたファイル管理情報132のレコード定義情報へのポインタ406に基づいて、ファイル管理情報132に対応するレコード定義情報133を取得する。ファイルシステム131は、分散KVSサーバ102のファイルシステム144に、ファイル管理情報132及びレコード定義情報133を送信する。
ファイルシステム144は、ファイル管理情報132及びレコード定義情報133を受信すると、受信したファイル管理情報132及びレコード定義情報133をキャッシュに保持する。また、ファイルシステム144は、ローダ143に対して、ファイルオープンに対する戻り値とともに、ファイル管理情報132及びレコード定義情報133を応答する。
なお、戻り値としては処理対象のファイル181へのアクセスに必要な情報が含まれる。例えば、ファイル管理情報132の格納場所情報407が戻り値として格納される。以上がステップS1001の処理の説明である。
次に、ローダ143は、取得されたファイル管理情報132の格納場所情報407に基づいて処理対象のファイル181を取得する(ステップS1002)。具体的には、以下のような処理が実行される。
ローダ143は、ファイルシステム144にファイルID及び格納場所情報407を含む読出要求を発行する。このとき、ファイルシステム144は以下のような処理を実行する。
ファイルシステム144は、ロード処理を実行するローダ143が稼働する分散KVSサーバ102が処理対象のファイル181を管理しているか否かを判定する。以下の説明では、ロード処理を実行するローダ143が稼働する分散KVSサーバ102を自分散KVSサーバ102とも記載する。
自分散KVSサーバ102が処理対象のファイル181を管理する場合、ファイルシステム144は、ファイルID及び格納場所情報407に基づいて、自分散KVSサーバ102と接続されるストレージ装置105から処理対象のファイル181を読み出し、ローダ143に応答する。
一方、自分散KVSサーバ102が処理対象のファイル181を管理していない場合、ファイルシステム144は、格納場所情報407に基づいて、処理対象のファイル181を管理する分散KVSサーバ102を特定する。
さらに、ファイルシステム144は、特定された分散KVSサーバ102のファイルシステム144に読出要求を送信する。読出要求には、格納場所情報407及びファイルIDが含まれる。ここでは、読出要求を送信したファイルシステム144をリクエスト側ファイルシステム144と記載し、読出要求を受信したファイルシステム144をレスポンス側ファイルシステム144と記載する。
レスポンス側ファイルシステム144は、読出要求を受け付けつけると、当該読出要求に含まれるファイルID及び格納場所情報407に基づいて、ストレージ装置105から処理対象のファイル181を読み出す。レスポンス側ファイルシステム144は、リクエスト側ファイルシステム144に、読み出された処理対象のファイル181を送信する。リクエスト側ファイルシステム144は、ローダ143に読み出されたファイル181を応答する。以上の処理によって、ローダ143は、自分散KVSサーバ102以外の分散KVSサーバ102が管理するファイル181を取得できる。以上がステップS1002の説明である。
次に、ローダ143は、分散KVS管理部142にキャッシュ領域161の生成要求を送信する(ステップS1003)。その後、ローダ143は、分散KVS管理部142からの応答を受け付けるまで待ち状態となる。生成要求には、ロード指示に含まれるキャッシュ領域161の識別情報を生成要求に含める。
なお、分散KVS管理部142は、他の分散KVSサーバ102の分散KVS管理部142と連携してキャッシュ領域を生成する。キャッシュ領域161の生成処理は公知の技術を用いればよいため詳細な説明は省略する。このとき、キャッシュ領域161の管理情報(図示省略)もあわせて生成される。キャッシュ領域161の管理情報(図示省略)には、キャッシュ領域161の識別情報、キャッシュ領域161の全容量、分散KVSサーバ102の識別情報、及び当該分散KVSサーバ102におけるキャッシュ領域161を構成する記憶領域の容量等が格納される。
ローダ143は、キャッシュ領域161が正常に生成されたか否かを判定する(ステップS1004)。例えば、ローダ143は、分散KVS管理部142から生成完了の通知を受けつけた場合、キャッシュ領域161が正常に生成されたと判定する。一方、ローダ143は、分散KVS管理部142から生成失敗の通知を受けつけた場合、又は、分散KVS管理部142から一定時間応答がない場合、キャッシュ領域161が正常に生成されなかったと判定する。
キャッシュ領域161が正常に生成されなかったと判定された場合、ローダ143は、異常終了する(ステップS1011)。例えば、ローダ143は、ロード処理が失敗した旨をUAP141に通知する。
キャッシュ領域161が正常に生成されたと判定された場合、ローダ143は、ファイル配置情報152に処理対象のファイル181のエントリを登録する(ステップS1005)。具体的には、ローダ143は、ファイル配置情報152にエントリを追加する。ローダ143は、追加されたエントリのキャッシュ領域ID801に新たに生成されたキャッシュ領域161の識別情報を設定し、ファイルID802にファイル管理情報132のファイルID401に格納される情報を設定する。
ローダ143は、取得されたファイル181及びキーとして用いられるフィールドの情報に基づいて、KV型データ171を生成し(ステップS1006)、また、KV型データ構造情報153を生成する(ステップS1007)。具体的には、以下のような処理が実行される。
ローダ143は、レコード定義情報133を参照してファイル181のレコード構造を把握する。ローダ143は、把握したレコードの構造に基づいて、指定されたフィールドからキーを生成し、また、KV型データ171を生成する。
また、ローダ143は、キーの値に基づいてKV型データ171を配置する分散KVSサーバ102を決定する。このとき、分散KVS管理部142は、キーの範囲及び分散KVSサーバ102の識別子が対応付けられるマップを生成する。
なお、キーの範囲は、例えば、コンシステント・ハッシュ法を用いて決定する方法が考えられる。また、予め、キーの範囲を決定し、キーの範囲に関する情報を保持してもよい。
ローダ143は、生成されたKV型データ171の数だけ、KV型データ構造情報153にエントリを生成し、生成されたエントリのID901に「1」から順に識別番号を設定する。
ローダ143は、生成されたKV型データ171を一つ選択する。ローダ143は、レコード定義情報133を参照して、選択されたKV型データ171に対応するレコードのデータサイズ、及び処理対象のファイル181におけるレコードの位置を特定する。
ローダ143は、空のエントリのキー902に選択されたKV型データ171のキーを設定し、バリューサイズ903にKV型データ171のサイズを設定し、また、オフセット904にKV型データ171に対応するレコードのファイル181における位置を示す情報を設定する。以上が、ステップS1006及びステップS1007の処理の説明である。
ローダ143は、キーの範囲にしたがって生成されたKV型データ171の配置先となる分散KVSサーバ102を決定し、決定された分散KVSサーバ102にKV型データ171の配置要求を送信する(ステップS1008)。具体的には、ローダ143は、決定された分散KVSサーバ102のローダ143に配置要求を送信する。なお、配置要求には、マップ、所定のキーの範囲に含まれるKV型データ171、ファイル配置情報152、及びKV型データ構造情報153が含まれるものとする。
ローダ143は、キャッシュ領域161を構成する記憶領域に自身が担当するキーの範囲のKV型データ171を配置する(ステップS1009)。このとき、ローダ143は、KV型データリスト及びKV型データ管理情報151を生成する。具体的には、ローダ143は、KV型データヘッダ情報301をキーの順番に従ってソートし、当該ソートの結果に基づいて、各KV型データヘッダ情報301のnext712に他のKV型データ171へのポインタを設定する。さらに、分散KVS管理部142は、KV型データ管理情報151を生成し、ファイルID702にファイル181の識別情報を設定し、KV型データリストポインタ703にKV型データリストにおける最初のKV型データ171へのポインタを設定する。
ローダ143は、ファイル配置情報152のKV型データ構造情報へのポインタ803に、KV型データ構造情報153へのポインタを設定し(ステップS1010)、処理を終了する。
なお、他の分散KVSサーバ102のローダ143は、配置要求を受信した場合、ステップS1009及びステップS1010と同一の処理を実行する。
図11は、本発明の実施例1におけるKV型データ171の更新処理を説明するフローチャートである。
分散KVS管理部142は、UAP141からKV型データ171の更新要求を受け付ける(ステップS1101)。更新要求には、更新対象のKV型データ171のキー及び更新データが含まれる。
分散KVS管理部142は、当該分散KVS管理部142が更新対象のKV型データ171を管理するか否かを判定する(ステップS1102)。具体的には、分散KVS管理部142は、キーに基づいてマップを参照し、更新対象のKV型データ171を管理する分散KVSサーバ102を特定し、特定された分散KVSサーバ102が当該分散KVS管理部142が稼働する分散KVSサーバ102であるか否かを判定する。
分散KVS管理部142が更新対象のKV型データ171を管理すると判定された場合、分散KVS管理部142は、更新対象のKV型データ171の更新処理を実行する(ステップS1103)。KV型データ171の更新処理は公知の処理であるため詳細な説明を省略する。
分散KVS管理部142は、更新されたKV型データ171にフラグを設定し、また、ダーティリストに当該KV型データ171を登録する(ステップS1104)。具体的には、以下のような処理が実行される。
分散KVS管理部142は、KV型データヘッダ情報301のフラグ711に「1」を設定し、ダーティリストが生成されているか否かを確認する。
ダーティリストが生成されていない場合、分散KVS管理部142は、ダーティリストを生成する。分散KVS管理部142は、ダーティリストにステップS1103において更新されたKV型データ171を追加する。
ダーティリストが生成されている場合、分散KVS管理部142は、ダーティリストの最後のKV型データ171のダーティリストnext713に、更新されたKV型データ171へのポインタを設定し、また、ダーティリストの最後に更新されたKV型データ171を追加する。以上がステップS1104の処理の説明である。
ステップS1102において、他の分散KVSサーバ102が更新対象のKV型データ171を管理する場合、分散KVS管理部142は、他の分散KVSサーバ102にKV型データ171の更新要求を送信し(ステップS1105)、その後ステップS1106に進む。KV型データ171の更新要求には、更新対象のKV型データ171のキー及び更新データが含まれる。
他の分散KVSサーバ102の分散KVS管理部142は、KV型データ171の更新要求を受信すると、ステップS1103及びステップS1104と同一の処理を実行し、更新要求を送信した分散KVS管理部142に実行結果を送信する。
分散KVS管理部142は、KV型データ171を正常に更新できたか否かを判定する(ステップS1106)。
KV型データ171を正常に更新できたと判定された場合、分散KVS管理部142は、処理を終了する。KV型データ171を正常に更新できなかったと判定された場合、分散KVS管理部142は、異常終了する(ステップS1107)。例えば、分散KVS管理部142は、KV型データ171の更新処理が失敗した旨をUAP141に通知する。
本実施例では、図11を用いて説明したように、分散KVS管理部142は、更新されたKV型データ171に更新されたことを示すフラグを付与し、また、更新されたKV型データ171のリスト(ダーティリスト)を生成する。これによって、更新されたKV型データ171を特定することが可能となる。
図12は、本発明の実施例1のKV型データ永続化処理の流れを説明するシーケンス図である。
一つの分散KVSサーバ102上のUAP141が、ローダ143に対して、更新されたKV型データ171のファイル181への反映を指示する永続化指示を送信する(ステップS1201)。永続化指示には処理対象のキャッシュ領域161の識別情報が含まれる。
以下の説明において、永続化指示を最初に受け付けた分散KVSサーバ102に含まれるローダ143、分散KVS管理部142、及びファイルシステム144をマスタローダ143、マスタ分散KVS管理部142、及びマスタファイルシステム144とも記載する。また、それ以外の分散KVSサーバ102に含まれるローダ143、分散KVS管理部142、及びファイルシステム144をスレーブローダ143、スレーブ分散KVS管理部142、及びスレーブファイルシステム144とも記載する。なお、マスタローダ143及びスレーブローダ143を区別しない場合にはローダ143と記載し、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142を区別しない場合には分散KVS管理部142と記載し、マスタファイルシステム144及びスレーブファイルシステム144を区別しない場合にはファイルシステム144と記載する。
マスタローダ143は、処理対象のキャッシュ領域161に格納されるKV型データ171の読出要求をマスタ分散KVS管理部142に送信する(ステップS1202)。読出要求には処理対象のキャッシュ領域161の識別情報が含まれる。
マスタ分散KVS管理部142は、処理対象のキャッシュ領域161を構成する分散KVSサーバ102を特定し、特定された分散KVSサーバ102の分散KVS管理部142に読出要求を送信する(ステップS1203)。読出要求には処理対象のキャッシュ領域161の識別情報が含まれる。
例えば、マスタ分散KVS管理部142は、キャッシュ領域161の管理情報(図示省略)に基づいて、処理対象のキャッシュ領域161を構成する分散KVSサーバ102を特定できる。なお、マスタ分散KVS管理部142が処理対象のキャッシュ領域161を構成する場合、マスタ分散KVS管理部142は自分自身にも読出要求を送信する。ここでは、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142の両方に読出要求が送信されるものとする。
分散KVS管理部142は、読出要求を受け付けると、処理対象のキャッシュ領域161に格納されるKV型データ171の中から更新されたKV型データ171を特定する(ステップS1204)。具体的には、分散KVS管理部142は、KV型データ管理情報151を参照して、キャッシュ領域ID701に処理対象のキャッシュ領域161の識別情報が格納されるKV型データ管理情報151を検索する。分散KVS管理部142は、検索されたKV型データ管理情報151のダーティリストポインタ704に基づいて、ダーティリストに登録されるKV型データ171を特定する。
マスタ分散KVS管理部142及びスレーブ分散KVS管理部142は、特定されたKV型データ171をマスタ分散KVS管理部142に送信する(ステップS1205)。
マスタ分散KVS管理部142は、更新されたKV型データ171の読み出しが完了した旨をマスタローダ143に応答する(ステップS1206)。
マスタローダ143は、実行サーバ判定処理を実行する(ステップS1207)。実行サーバ判定処理は、更新されたKV型データ171をファイル181に反映させる実行サーバ(分散KVSサーバ102)を決定するための処理である。実行サーバ判定処理の詳細は、図13を用いて後述する。
マスタローダ143は、実行サーバ判定処理によって決定された分散KVSサーバ102にレコード更新要求を送信する(ステップS1208)。レコード更新要求には、処理対象のファイル181の識別情報、及び更新されたKV型データ171が含まれる。
マスタローダ143が含まれる分散KVSサーバ102が実行サーバとして決定された場合、マスタローダ143は、マスタファイルシステムに144にレコード更新要求を送信する。また、他の分散KVSサーバ102が実行サーバとして決定された場合、マスタローダ143は、他の分散KVSサーバ102のスレーブローダ143にレコード更新要求を送信する。スレーブローダ143は、当該要求をスレーブファイルシステム144に送信する。
ファイルシステム144は、レコード更新要求を受信すると、更新されたKV型データ171をファイル181に反映させためにレコード更新処理を実行する(ステップS1209)。レコード更新処理の詳細については、図14を用いて後述する。
ファイルシステム144は、レコード更新処理が終了した後、マスタローダ143に処理が完了した旨を通知してもよい。この場合、マスタローダ143は、UAP141に処理が正常に終了した旨を通知する。
図13は、本発明の実施例1における実行サーバ判定処理の一例を説明するフローチャートである。
マスタローダ143は、マスタ分散KVS管理部142からKV型データ171の読み出しが完了した旨の応答を受け付けると実行サーバ判定処理を開始する。まず、マスタローダ143は、処理対象のキャッシュ領域161に格納されるKV型データ171に対応するファイル181を特定する(ステップS1301)。具体的には、以下のような処理が実行される。
マスタローダ143は、ファイル配置情報152を参照し、キャッシュ領域ID801が処理対象のキャッシュ領域161の識別情報と一致するエントリを検索する。マスタローダ143は、検索されたエントリのファイルID802に基づいてKV型データ171に対応するファイル181を特定する。
マスタローダ143は、マスタファイルシステム144に処理対象のファイル181のオープンを指示する。ファイルシステム144は、ファイルオープンに対する戻り値とともに、キャッシュされているファイル管理情報132及びレコード定義情報133を応答する。以上がステップS1301の処理の説明である。
次に、マスタローダ143は、ファイル管理情報132の格納場所情報407を参照して、処理対象のファイル181を管理する分散KVSサーバ102を特定し、特定された分散KVSサーバ102を実行サーバとして決定する(ステップS1302)。また、マスタローダ143は、実行サーバとして決定された分散KVSサーバ102のローダ143にレコード更新要求を送信し(ステップS1303)、処理を終了する。
図14は、本発明の実施例1のレコード更新処理の一例を説明するフローチャートである。
ファイルシステム144は、ローダ143からレコード更新要求を受信するとレコード更新処理を開始する。まず、ファイルシステム144は、処理対象のファイル181に対応するKV型データ構造情報153を取得する(ステップS1401)。具体的には、ファイルシステム144は、ファイル配置情報152を参照し、ファイルID802が処理対象のファイル181の識別情報と一致するエントリを検索する。ファイルシステム144は、検索されたエントリのKV型データ構造情報153へのポインタ803を参照して、KV型データ構造情報153を取得する。
ファイルシステム144は、KV型データ171のループ処理を開始する(ステップS1402)。ファイルシステム144は、レコード更新要求に含まれるKV型データ171を一つ選択する。
ファイルシステム144は、KV型データ171に対応するレコードの処理対象のファイル181における位置を特定し、特定された位置にKV型データ171を書き込む(ステップS1403)。具体的には、以下のような処理が実行される。
ファイルシステム144は、取得されたKV型データ構造情報153を参照し、キー902が選択されたKV型データ171のキー302と一致するエントリを検索する。ファイルシステム144は、検索されたエントリのバリューサイズ903及びオフセット904に基づいて、更新されたKV型データ171に対応するレコードの処理対象のファイル181における位置を特定する。
ファイルシステム144は、更新されたKV型データ171を特定された位置に上書きすることによって、更新されたKV型データ171を処理対象のファイル181に反映させる。以上がステップS1403の処理の説明である。
次に、ファイルシステム144は、レコード更新要求に含まれる全てのKV型データ171について処理が完了した否かを判定する(ステップS1404)。
全てのKV型データ171について処理が完了していないと判定された場合、ファイルシステム144は、ステップS1402に戻り同様の処理を実行する。全てのKV型データ171について処理が完了したと判定された場合、ファイルシステム144は、処理を終了する。
ここまで、既存のKV型データ171の更新について説明したが、新たなKV型データ171の追加及びKV型データ171の削除についても同様の処理を適用することができる。
(KV型データ171の追加)
KV型データの追加処理は、図11に示すKV型データ更新処理とほぼ同様であるが、一部処理が異なる。
まず、KV型データの追加処理では、UAP141は分散KVS管理部142及びローダ143に新規KV型データ171の追加要求を送信する。
ステップS1101、ステップS1102の処理は同一の処理である。
ステップS1103において、分散KVS管理部142は、キャッシュ領域161にKV型データ171を追加する。
ステップS1104において、分散KVS管理部142は、KV型データヘッダ情報301のフラグ711に「1」を設定する。KV型データリストへの新規KV型データ171の追加処理はステップS1104において説明した処理と同一である。
ステップS1105以降の処理は図11に示す処理と同一の処理である。
一方、ローダ143は、新規KV型データ171の追加要求の受信後、KV型データ構造情報153にエントリを追加し、追加されたエントリのID901に識別番号を設定し、キー902及びバリューサイズ903のそれぞれに値を設定する。分散KVS管理部142は、追加されたエントリの一つ上のエントリのバリューサイズ903及びオフセット904に基づいて、追加されたKV型データ171のファイルにおけるオフセットを算出する。以下の説明では、追加されたエントリの一つ上のエントリを上位エントリとも記載する。
例えば、上位エントリのオフセット904にバリューサイズ903を加算することによって算出された値を追加されたエントリのオフセット904に設定する方法が考えられる。
その他の処理は実施例1の処理と同一であるため説明を省略する。
(KV型データ171の削除)
KV型データの削除処理は、図11に示す処理とほぼ同様であるが、一部処理が異なる。
ステップS1101、ステップS1102の処理は図11に示す処理と同一の処理である。
ステップS1103において、分散KVS管理部142は、キャッシュ領域161からKV型データ171を削除する。このとき、分散KVS管理部142は、バリュー303のみを削除し、キー302及びKV型データヘッダ情報301はそのまま保持する。前述した処理以外に、バリュー303を無効化する処理、又はバリュー303に「0」等のデータを書き込むなどの処理が考えられる。
ステップS1104において、分散KVS管理部142は、KV型データヘッダ情報301のフラグ711に、KV型データの削除を示す「−1」を設定する。また、分散KVS管理部142は、KV型データリストからKV型データ171を削除する。KV型データリストの更新方法は公知のものであるため詳細な説明を省略するが、削除されたKV型データ171へのポインタを他のKV型データ171へのポインタに変更する方法が考えられる。
ステップS1105以降の処理は図11に示す処理と同一の処理である。
KV型データ永続化処理は、図12に示す処理とほぼ同様であるが、一部処理が異なる。
ステップS1201からステップS1203の処理は図12に示す処理と同一の処理である。
ステップS1204において、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142は、それぞれ、ダーティリストを参照して、更新されたKV型データ171及び削除されたKV型データ171を特定し、キャッシュ領域161から特定されたKV型データ171を読み出す。
ステップS1205において、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142は、それぞれ、特定されたKV型データ171をマスタ分散KVS管理部142に送信した後、フラグ711に「−1」が設定されるKV型データ171をキャッシュ領域161から削除する。ステップS1206以降の処理の流れは実施例1と同一であるが、実行サーバ判定処理及びレコード更新処理の一部内容が異なる。
実行サーバ判定処理では、マスタローダ143は、読み出されたKV型データ171を、更新されたKV型データ171と、削除されたKV型データ171とに分ける。具体的には、マスタローダ143は、KV型データ171のKV型データヘッダ情報301のフラグ711を参照して、フラグ711が「1」であるKV型データ171と、フラグ711が「−1」であるKV型データ171とに分ける。
マスタローダ143は、更新されたKV型データ171に対してステップS1301からステップS1303の処理を実行し、また、削除されたKV型データ171に対してステップS1301からステップS1303の処理を実行する。すなわち、ファイル181のレコードの更新を指示するレコード更新要求と、ファイル181からのレコードの削除を指示するレコード更新要求との二つのレコード更新要求が送信されることとなる。
分散KVSサーバ102がファイル181のレコードの更新を指示するレコード更新要求を受信した場合、実施例1と同一の処理が実行される。一方、分散KVSサーバ102がファイル181のレコードの削除を指示するレコード更新要求を受け付けた場合以下のような処理が実行される。
ステップS1401及びステップS1402の処理は図14に示す処理と同一の処理である。
ステップS1403において、ファイルシステム144は、削除されたKV型データ171に対応するレコードの処理対象のファイル181における位置を特定し、特定された位置からバリューサイズ903分のデータを削除する。
具体的には、ファイルシステム144は、検索されたエントリのバリューサイズ903及びオフセット904に基づいて、削除されたKV型データ171に対応するレコードの処理対象のファイル181における位置を特定する。
ファイルシステム144は特定された位置(オフセット)からバリューサイズ903分のデータを削除する。さらに、ファイルシステム144は、KV型データ構造情報153から検索されたエントリを無効化する。
その他の処理は実施例1の処理と同一であるため説明を省略する。
実施例1によれば、KV型データ171の更新又は削除結果をファイル(データソース)に反映することができる。これによって、ファイルシステムと分散KVSとの連携が可能となり、ファイルI/O API及びKV型データAPIのいずれを用いても同一内容のデータにアクセスすることが可能となる。
(変形例)
実施例1では、ファイル管理情報132及びレコード定義情報133を用いてファイル181のレコード構造を把握していたが、予め、分散KVSサーバ102にファイル181のレコード定義情報を設定してもよい。
図15は、本発明の実施例1の変形例におけるファイル構成情報1500の一例を示す説明図である。
ファイル構成情報1500は、ファイル181、レコード、及びKV型データ171のキーとして用いられたフィールドの対応関係を管理する情報であり、ファイルID1501、レコード定義情報1502、及びキー・フィールド番号1503を含む。変形例では、ファイル構成情報1500が予め分散KVSサーバ102に登録される。
ファイルID1501は、ストレージ装置105に格納されるファイル181の識別情報を格納する。ファイルID1501は、ファイルID401と同一のものである。レコード定義情報1502は、ファイル181を構成するレコードの管理情報を格納する。レコード定義情報1502は、レコード定義情報133と同一のものである。キー・フィールド番号1503は、ファイル181から生成されたKV型データ171のキーとして用いられたフィールドの識別番号を格納する。KV型データ171が生成される前は、キー・フィールド番号1503は空欄である。
図16は、本発明の実施例1の変形例におけるファイル構成情報1500の登録処理の一例を説明するフローチャートである。
ファイル181がストレージ装置105に格納される場合に、ファイル構成情報1500の登録処理が実行される。
ファイルシステム144は、ファイル181及びユーザによって定義されたファイル181のレコード定義情報を受け付ける(ステップS1601)。
ファイルシステム144は、ファイル181の内容とレコード定義情報とを比較し、整合性を確認し(ステップS1602)、ファイル181の内容とレコード定義情報とが整合しているか否かを判定する(ステップS1603)。
ファイル181の内容とレコード定義情報とが整合していないと判定された場合、ファイルシステム144は、ファイル構成情報1500の登録が失敗した旨を通知し(ステップS1605)、処理を終了する。
ファイル181の内容とレコード定義情報とが整合していると判定された場合、ファイルシステム144は、ファイル構成情報1500にファイル181及びレコード定義情報を対応付けて登録し(ステップS1604)、処理を終了する。具体的には、ファイルシステム144はファイル構成情報1500にエントリを追加する。ファイルシステム144は、追加されたエントリのファイルID1501にファイル181の識別情報を設定し、また、追加されたエントリのレコード定義情報1502に受け付けたレコード定義情報を設定する。この時点では、ファイル181に対応するKV型データ171が生成されていないため、キー・フィールド番号1503は空欄となっている。
なお、ファイルシステム144は、他の分散KVSサーバ102のファイルシステム144に追加されたエントリの情報を通知する。他の分散KVSサーバ102のファイルシステム144は、当該通知に従って、ファイル構成情報1500を更新する。
図17は、本発明の実施例1の変形例におけるロード処理の一例を説明するフローチャートである。以下、実施例1との差異を中心に説明する。
変形例では、ファイル管理情報132及びレコード定義情報133の代わりに、ファイル構成情報1500を用いるため、ステップS1001の処理は省略される。
ローダ143は、ファイル181を取得した後、ファイル181の内容とキーとして用いられるフィールドの情報との整合性を確認し(ステップS1701)、ファイル181の内容とフィールドの情報とが整合しているか否かを判定する(ステップS1702)。
ファイル181の内容とフィールドの情報とが整合していないと判定された場合、ローダ143は、ステップS1011に進む。
ファイル181の内容とフィールドの情報とが整合していると判定された場合、ローダ143は、ファイル構成情報を更新し、さらに、分散KVS管理部142にキャッシュ領域161の生成要求を送信する(ステップS1703)。具体的には、ローダ143は、ファイル構成情報1500を参照し、ファイルID1501が処理対象のファイル181の識別情報と一致するエントリを検索する。ローダ143は、検索されたエントリのキー・フィールド番号1503に指定されたフィールドの情報を設定する。
ステップS1007では、ファイル構成情報1500に基づいてKV型データ171が生成される。その他の処理は実施例1と同一であるため説明を省略する。
[実施例2]
実施例2では、一つのファイル181が複数のサブファイル1811に分割され、複数の分散KVSサーバ102に接続されるストレージ装置105にサブファイル1811が格納される点が異なる。以下、実施例1との差異を中心に実施例2について説明する。
図18は、本発明の実施例2における計算機システムの構成例を示すブロック図である。実施例2の計算機システムは、実施例1の計算機システムと同一の構成である。実施例2では、ストレージ装置105にサブファイル1811が格納される点が異なる。また、実施例1では少なくとも一つの分散KVSサーバ102がローダ143を備えていればよいが、実施例2では、全ての分散KVSサーバ102がローダ143を備えていることを前提とする。
サブファイル1811は、一つのファイル181が分割されたファイルデータであり、当該ファイル181をブロック単位に分割したデータ(ブロックデータ)から構成される。一つのブロックデータには、複数のレコードを含むことができる。ただし、ブロックのサイズとレコードのサイズとは一致しない場合があるため、一つのレコードのデータが複数のブロックデータに含まれる場合がある。
本実施例では、ファイルシステム131が、ファイル181をストレージ装置105に格納する場合、ファイル181を所定の大きさのブロックデータに分割し、アドレスが連続する所定の数のブロックデータ群を複数のストレージ装置105に分散して格納する。本実施例では、一般的なストライピングを適用するものとする。なお、ファイル181の最初のレコードから順に分割されるものとする。
ここで、四つのストレージ装置105にファイル181を分散して格納する場合、すなわち、ストライプ数が「4」の場合を例に説明する。以下の説明では、四つのストレージ装置105をストレージ装置A、ストレージ装置B、ストレージ装置C及びストレージ装置Dと仮定し、また、ブロックのサイズを「64KB」と仮定し、また、ストライプサイズを「16ブロック」と仮定する。
この場合、ファイルシステム131は、ファイル181を「64KB」単位のブロックデータに分割し、ブロックの番号が「1」から「16」のブロックデータをストレージ装置Aに、ブロックの番号が「17」から「32」のブロックデータをストレージ装置Bに、ブロックの番号が「33」から「48」のブロックデータをストレージ装置Cに、ブロックの番号が「49」から「64」のブロックデータをストレージ装置Dに格納する。以下同様の手順に従って、ストレージ装置A、ストレージ装置B、ストレージ装置C及びストレージ装置Dの順にブロックデータ群が格納される。
ファイル181の先頭からのオフセットが分かれば、ブロックの番号及び当該ブロックの番号に対応するブロックデータを格納するストレージ装置105を特定することができる。
図19は、本発明の実施例2におけるファイル管理情報132の一例を示す説明図である。
実施例2では、一つのファイル181が複数のサブファイル1811として複数のストレージ装置105に格納されるため、ファイル管理情報132の格納場所情報407には、サブファイル1811の格納場所に関する情報が格納される。
格納場所情報407は、サブファイル1811の構成を管理するための情報であり、ストライプ数1901、ストライプサイズ1902、及び分散KVSサーバID1903を含む。
ストライプ数1901は、一つのファイル181が分散して配置されるサブファイル1811の数である。ストライプサイズ1902は、ブロックデータ群のサイズ(ブロック数)を表す。
分散KVSサーバID1903は、サブファイル1811を管理する分散KVSサーバ102の識別情報を格納する。本実施例では、サブファイル1811には「1」から順に識別番号が付与されているものとする。この場合、分散KVSサーバID1903には、例えば、サブファイル1811の識別番号及びサブファイル1811を管理する分散KVSサーバ102の識別情報が対応付けられて格納される。
実施例2のファイル配置情報152のファイルID802にはサブファイル1811の識別番号が格納される点が実施例1と異なる。実施例2のKV型データ構造情報153は、実施例1と同一のものである。
実施例1では、一つのストレージ装置105に一つのファイル181が格納されていたため、一つのローダ143がロード処理を実行していた。しかし、実施例2では、一つのファイル181から生成された複数のサブファイル1811が複数のストレージ装置105に格納される。そのため、各分散KVSサーバ102上のローダ143が並列的にロード処理を実行する。したがって、実施例2では、KV型データ171をキャッシュ領域161に配置する場合に、ロード処理を実行する分散KVSサーバ102を決定するための処理が実行される。
図20は、本発明の実施例2のKV型データ永続化処理の流れを説明するシーケンス図である。
ステップS1201からステップS1206の処理は同一である。
マスタローダ143は、実行サーバ判定処理を実行する(ステップS2007)。実施例2の実行サーバ判定処理は、更新されたKV型データ171を反映させる複数のサブファイル1811が特定され、さらに、複数のサブファイル1811の各々を管理する分散KVSサーバ102が実行サーバとして決定される。実施例2では、複数の分散KVSサーバ102が実行サーバとして決定される。実施例2の実行サーバ判定処理の詳細は、図21を用いて後述する。
マスタローダ143は、実行サーバ判定処理の処理結果によって決定された複数の分散KVSサーバ102にレコード更新要求を送信する(ステップS2008)。レコード更新要求には、サブファイル1811の識別情報、及び抽出されたKV型データ171が含まれる。
マスタローダ143が含まれる分散KVSサーバ102自身にレコード更新要求を送信する場合、マスタローダ143は、マスタファイルシステムに144にレコード更新要求を送信する。一方、他の分散KVSサーバ102にレコード更新要求を送信する場合、マスタローダ143は、他の分散KVSサーバ102のスレーブローダ143にレコード更新要求を送信する。スレーブローダ143は、当該要求をスレーブファイルシステム144に送信する。
ファイルシステム144は、レコード更新要求を受信すると、更新されたKV型データ171をファイル181に反映させるためにレコード更新処理を実行する(ステップS2009)。実施例2のレコード更新処理の詳細については、図24を用いて後述する。
ファイルシステム144は、レコード更新処理が終了した後、マスタローダ143に処理が完了した旨を通知してもよい。この場合、マスタローダ143は、UAP141に処理が正常に終了した旨を通知する。
図21は、本発明の実施例2におけるローダ決定処理の一例を説明するフローチャートである。図22は、本発明の実施例2における一時リストの一例を説明する説明図である。
ローダ143は、UAP141から任意のファイル181のキャッシュ領域161へのロード指示を受け付けると以下で説明するローダ決定処理を開始する。ロード指示には処理対象のファイル181の識別情報(ファイルID)及びKV型データ171のキーとして用いられるフィールドの情報が含まれる。また、ロード指示には、KV型データ171を配置するキャッシュ領域161の識別情報(キャッシュ領域ID)も含まれる。
ローダ143は、対象ファイル181のサブファイル1811を管理する分散KVSサーバ102を特定する(ステップS2101)。具体的には、以下のような処理が実行される。
ローダ143は、ファイルシステム144に処理対象のファイルオープンを指示する。ファイルシステム144は、ファイルオープンに対する戻り値とともに、ファイル管理情報132及びレコード定義情報133を応答する。なお、ファイルシステム144が実行する処理は、ステップS1001と同一の処理であるため説明を省略する。
ローダ143は、ファイル管理情報132の格納場所情報407を参照して、サブファイル1811を管理する分散KVSサーバ102を特定する。本実施例では格納場所情報407の分散KVSサーバID1903に基づいて、前述した分散KVSサーバ102を特定することができる。
本実施例では、特定された複数の分散KVSサーバ102に対してロード処理の実行が指示される。このとき、ローダ143は、図22に示すような一時リスト2200を生成する。ここで、一時リスト2200について説明する。
一時リスト2200は、サブファイルID2201、分散KVSサーバID2202、レコードID2203、及び担当フラグ2204を含む。
サブファイルID2201は、サブファイル1811の識別番号を格納する。分散KVSサーバID2202は、サブファイル1811を管理する分散KVSサーバ102の識別情報を格納する。レコードID2203は、サブファイル1811に含まれるレコードの識別情報である。担当フラグ2204は、分散KVSサーバ102がロード処理を担当するレコードであるか否かを示す情報を格納する。例えば、分散KVSサーバ102がロード処理を担当するレコードの場合、担当フラグ2204には「1」が格納され、分散KVSサーバ102がロード処理を担当するレコードの場合、担当フラグ2204には「0」が格納される。
ステップS2101において、ローダ143は、一時リスト2200にサブファイル1811の数だけエントリを生成し、生成されたエントリのサブファイルID2201にサブファイル1811の識別番号を設定する。また、ローダ143は、生成されたエントリの分散KVSサーバID2202に特定された分散KVSサーバ102の識別情報を設定する。この時点では、レコードID2203及び担当フラグ2204は空欄のままである。以上がステップS2101の処理の説明である。
本実施例では、一つのレコードのデータが複数のブロックデータに含まれている可能性がある。そのため、当該レコードのロード処理をどの分散KVSサーバ102が担当するかを決定する必要がある。そこで、ステップS2103からステップS2110までの処理が実行される。
まず、ローダ143は、各サブファイル1811に含まれるレコードを特定する(ステップS2102)。具体的には、ローダ143は、レコード定義情報133及び格納場所情報407を参照して、各サブファイル1811に含まれるレコードを算出する。例えば、以下のような処理が考えられる。
ローダ143は、サブファイル1811を一つ選択する。レコード定義情報133のレコード構成501に基づいてレコードの長さ把握する。次に、ローダ143は格納場所情報407のストライプ数1901及びストライプサイズ1902に基づいてサブファイル1811に含まれるブロックデータ群を特定する。さらに、ローダ143は、レコードの長さ、ストライプ数、及びストライプサイズからサブファイル1811に含まれるレコードを特定する。
ローダ143は、選択されたサブファイル1811に対応する一時リスト2200のエントリのレコードID2203に特定されたレコードの識別情報を設定し、さらに、担当フラグ2204に「0」を設定する。
ローダ143は、全てのサブファイル1811に対して前述した処理を繰り返し実行する。以上がステップS2102の処理の説明である。
次に、ローダ143は、サブファイル1811のループ処理を開始する(ステップS2103)。具体的には、ローダ143は、一時リスト2200から処理対象のサブファイル1811を一つ選択する。ここでは、サブファイル1811の識別番号順に選択されるものとする。
ローダ143は、選択されたサブファイル1811に含まれるレコードのループ処理を開始する(ステップS2104)。具体的には、ローダ143は、選択されたサブファイル1811に対応する一時リスト2200のエントリのレコードID2203の中から処理対象のレコードを一つ選択する。
ローダ143は、選択されたレコードの担当フラグ2204が「1」であるか否かを判定する(ステップS2105)。すなわち、ステップS2103において選択されたエントリの分散KVSサーバID2202に対応する分散KVSサーバ102が、当該レコードのロード処理を担当することが決定済みであるか否かが判定される。
選択されたレコードの担当フラグ2204が「1」であると判定された場合、ローダ143は、ステップS2109に進む。
選択されたレコードの担当フラグ2204が「1」でないと判定された場合、ローダ143は、当該レコードのデータが複数の分散KVSサーバ102に分散して配置されているか否かを判定する(ステップS2106)。具体的には、ローダ143は、一時リスト2200の他のサブファイル1811のエントリのレコードID2203を参照し、選択されたレコードの識別情報と同一の識別情報が存在するか否かを判定する。他のサブファイル1811のエントリのレコードID2203に選択されたレコードの識別情報と同一の識別情報が存在する場合、ローダ143は、当該レコードのデータが複数の分散KVSサーバ102に分散して配置されていると判定する。
選択されたレコードのデータが複数の分散KVSサーバ102に分散して配置されていないと判定された場合、ローダ143は、当該レコードの担当フラグ2204に「1」を設定し(ステップS2108)、ステップS2109に進む。
選択されたレコードが複数の分散KVSサーバ102に分散して配置されていると判定された場合、ローダ143は、当該レコードのロード処理を担当する分散KVSサーバ102を決定する(ステップS2107)。その後、ローダ143は、ステップS2109に進む。
例えば、ローダ143は、レコードの先頭のデータが含まれるサブファイル1811を管理する分散KVSサーバ102を当該レコードのロード処理を担当する分散KVSサーバ102として決定する方法が考えられる。また、レコードの全体のデータ量に対し、レコードのデータを最も多く含むサブファイル1811を管理する分散KVSサーバ102を当該レコードのロード処理を担当する分散KVSサーバ102として決定する方法も考えられる。なお、本発明は、レコードのロード処理を担当する分散KVSサーバ102の決定方法に限定されない。
選択されたレコードのロード処理を担当する分散KVSサーバ102が選択されたサブファイル1811を管理する分散KVSサーバ102の場合、ローダ143は、選択されたレコードの担当フラグ2204に「1」を設定する。また、ローダ143は、他のサブファイル1811のエントリから当該レコードの識別情報を削除する。
選択されたレコードのロード処理を担当する分散KVSサーバ102が選択されたサブファイル1811を管理する分散KVSサーバ102とは異なる分散KVSサーバ102の場合、ローダ143は、他の分散KVSサーバ102が管理するサブファイル1811に対応するエントリの当該レコードの担当フラグ2204に「1」を設定する。また、ローダ143は、他のサブファイル1811のエントリから当該レコードの識別情報を削除する。以上がステップS2107の処理の一例である。
次に、ローダ143は、選択されたサブファイル1811に含まれる全てのレコードについて処理が完了したか否かを判定する(ステップS2109)。具体的には、ローダ143は、一時リスト2200を参照して、選択されたサブファイル1811のエントリの担当フラグ2204が「0」であるレコードが存在するか否かを判定する。担当フラグ2204が「0」であるレコードが存在する場合、ローダ143は、全てのレコードについて処理が完了していないと判定する。
選択されたサブファイル1811に含まれる全てのレコードについて処理が完了していないと判定された場合、ローダ143は、ステップS2104に戻り同様の処理を実行する。
選択されたサブファイル1811に含まれる全てのレコードについて処理が完了したと判定された場合、ローダ143は、選択されたサブファイル1811を管理する分散KVSサーバ102が担当するレコード(レコードのレンジ)を決定する(ステップS2110)。具体的には、ローダ143は、選択されたサブファイル1811に対応する一時リスト2200のエントリを参照し、当該エントリのレコードID2203に登録されるレコードを担当するレコードとして決定する。
ローダ143は、全てのサブファイル1811について処理が完了したか否かを判定する(ステップS2111)。全てのサブファイル1811について処理が完了していないと判定された場合、ローダ143は、ステップS2003に戻り同様の処理を実行する。
全てのサブファイル1811について処理が完了したと判定された場合、ローダ143は、サブファイル1811を管理する分散KVSサーバ102に対してロード処理の実行指示を送信する(ステップS2112)。
ロード処理の実行指示には、サブファイル1811の識別番号及び担当するレコードの識別情報(レンジの情報)が含まれる。分散KVSサーバ102のローダ143は、ロード処理の実行指示を受け付けると、図10に示すロード処理を実行する。なお、ステップS1002において、サブファイル1811に分散配置されたレコードのデータが含まれる場合、ローダ143は、分散配置されたレコードのデータを含む他のサブファイル1811を管理する分散KVSサーバ102に当該レコードのデータの読み出しを要求する。その他の処理は実施例1と同一であるため説明を省略する。
KV型データ更新処理は実施例1と同一であるため説明を省略する。
図23は、本発明の実施例2における実行サーバ判定処理の一例を説明するフローチャートである。
ステップS1301は同一の処理である(ステップS1301)。マスタローダ143は、ファイル管理情報132の格納場所情報407を参照して、処理対象のファイル181から生成されるサブファイル1811を管理する分散KVSサーバ102を特定する(ステップS2302)。
マスタローダ143は、KV型データ171のループ処理を開始する(ステップS2303)。具体的には、マスタローダ143は、更新されたKV型データ171の中から、処理対象のKV型データ171を一つ選択する。
マスタローダ143は、KV型データ構造情報153及びファイル管理情報132の格納場所情報407を参照して、選択されたKV型データ171に対応するレコードのデータを含むサブファイル1811を特定する(ステップS2304)。具体的には以下のような処理が実行される。
マスタローダ143は、選択されたKV型データ171に対応するKV型データ構造情報153のエントリのバリューサイズ903及びオフセット904を取得する。
マスタローダ143は、オフセット904に基づいて、選択されたKV型データ171に対応するレコードの先頭のデータが含まれるブロックデータの番号を特定する。例えば、マスタローダ143は、オフセット904の値をブロックデータのサイズで除算することによって、レコードのデータを含むブロックデータの番号を算出する。
さらに、マスタローダ143は、バリューサイズ903に基づいて特定されたブロックデータに、選択されたKV型データ171に対応するレコードの全てのデータが含まれるか否かを判定する。
特定されたブロックデータに選択されたKV型データ171に対応するレコードの全てのデータが含まれる場合、当該ブロックデータの番号を処理結果として出力する。一方、特定されたブロックデータに選択されたKV型データ171に対応するレコードの全てのデータが含まれない場合、マスタローダ143は、バリューサイズ903に基づいて、当該レコードのデータを含むブロックデータの番号を特定する。
マスタローダ143は、格納場所情報407のストライプ数1901及びストライプサイズ1902に基づいて、特定されたブロックデータの番号がどのブロックデータ群に含まれるかを特定し、また、当該ブロックデータ群を含むサブファイル1811を特定する。
このとき、マスタローダ143は、KV型データ171のキーと、特定されたサブファイル1811を管理する分散KVSサーバ102の識別情報とを対応付けたリストを生成する。以上がステップS2304の処理の説明である。
次に、マスタローダ143は、全てのKV型データ171について処理が完了したか否かを判定する(ステップS2305)。全てのKV型データ171について処理が完了していないと判定された場合、マスタローダ143は、ステップS2303に戻り、同様の処理を実行する。
全てのKV型データ171について処理が完了したと判定された場合、マスタローダ143は、特定された各分散KVSサーバ102にレコード更新要求を送信し(ステップS2306)、処理を終了する。具体的には、以下のような処理が実行される。
マスタローダ143は、処理対象のサブファイル1811を選択する。マスタローダ143は、ステップS2304において生成されたリストを参照して、選択されたサブファイル1811を管理する分散KVSサーバ102に送信するKV型データ171を抽出する。
マスタローダ143は、選択されたサブファイル1811を管理する分散KVSサーバ102に、処理対象のサブファイル1811の識別情報、及び抽出されたKV型データ171が含まれるレコード更新要求を送信する。以上がステップS2306の処理の説明である。
図24は、本発明の実施例2のレコード更新処理の一例を説明するフローチャートである。
ファイルシステム144は、レコード更新要求を受信するとレコード更新処理を開始する。まず、ファイルシステム144は、処理対象のサブファイル1811に対応するKV型データ構造情報153を取得する(ステップS2401)。ステップS2401の処理は、ステップS1401と同一の処理を用いる。
ファイルシステム144は、KV型データ171のループ処理を開始する(ステップS2402)。ファイルシステム144は、レコード更新要求に含まれるKV型データ171を一つ選択する。
ファイルシステム144は、KV型データ171に対応するレコードの処理対象のサブファイル1811における位置を特定し、特定された位置にKV型データ171を書き込む(ステップS2403)。具体的には、以下のような処理が実行される。
ファイルシステム144は、取得されたKV型データ構造情報153を参照し、キー902が選択されたKV型データ171のキー302と一致するエントリを検索する。ファイルシステム144は、検索されたエントリのオフセット904に基づいて、選択されたKV型データ171に対応するレコードの先頭のデータが含まれるブロックデータの番号を特定する。さらに、ファイルシステム144は、バリューサイズ903に基づいて特定されたブロックデータに含まれるレコードのデータを特定する。これによって、KV型データ171の位置及び書き込むデータが特定される。
ファイルシステム144は、特定された位置に、特定されたデータ分だけKV型データ171を上書きすることによって、更新されたKV型データ171を処理対象のファイル181に反映させる。以上がステップS2403の処理の説明である。
次に、ファイルシステム144は、レコード更新要求に含まれる全てのKV型データ171について処理が完了した否かを判定する(ステップS2404)。
全てのKV型データ171について処理が完了していないと判定された場合、ファイルシステム144は、ステップS2402に戻り同様の処理を実行する。全てのKV型データ171について処理が完了したと判定された場合、ファイルシステム144は、処理を終了する。
実施例2によれば、ファイルのデータが複数のサーバにサブファイル1811として分散配置される場合でも、KV型データ171の更新又は削除結果をサブファイル1811に反映することができる。これによって、分散ファイルシステムと分散KVSとの連携が可能となり、ファイルI/O API及びKV型データAPIのいずれを用いても同一内容のデータにアクセスすることが可能となる。また、更新されたKV型データ171をサブファイル1811に反映する場合、各分散KVSサーバ102が担当するレコードを決定しているため、サーバ間の通信量の増加を抑制し、分散KVSと分散ファイルシステムとの間の高速なデータ転送を実現することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記憶媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。

Claims (10)

  1. ネットワークを介して接続される複数の計算機を備える計算機システムであって、
    前記複数の計算機の各々は、
    プロセッサ、前記プロセッサに接続されるメモリ及び前記プロセッサに接続されるネットワークインタフェースを有し、
    複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、
    前記ストレージ装置に格納される前記ファイルを管理するファイルシステムと、
    前記複数の計算機が有する記憶領域を統合することによってデータ格納領域を一つ以上生成し、前記データ格納領域に配置されたキーバリュー型データを管理するキーバリュー型データ管理部と、
    前記ファイルを分割して、検索キーと前記レコードの内容を示すバリューとを対応づけることによって前記キーバリュー型データを生成し、前記生成されたキーバリュー型データを前記データ格納領域に分散して格納するローダと、を有し、
    前記キーバリュー型データ毎に、前記検索キー、前記バリューのサイズ、及び前記キーバリュー型データに対応する前記レコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報と、前記データ格納領域の識別情報を含む前記データ格納領域に格納される前記キーバリュー型データを管理するためのキーバリュー型データ管理情報と、を保持し、
    前記キーバリュー型データ管理部は、
    前記キーバリュー型データの更新要求を受け付けた場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データを更新し、
    前記更新されたキーバリュー型データのリストであるダーティリストが生成されているか否かを判定し、
    前記ダーティリストが生成されていると判定された場合、新たに更新されたキーバリュー型データを前記ダーティリストに追加し、
    前記ダーティリストが生成されていないと判定された場合、前記ダーティリストを生成して、前記生成されたダーティリストへのポインタを前記キーバリュー型データ管理情報に設定し、
    前記ローダは、更新された前記キーバリュー型データの前記ファイルへの反映を指示する永続化指示を受け付けた場合、前記複数の計算機の各々の前記キーバリュー型データ管理部に、前記更新されたキーバリュー型データを取得するための要求であって、処理対象のデータ格納領域の識別情報を含む読出要求を送信し、
    前記キーバリュー型データ管理部は、
    前記読出要求を受信した場合、前記読出要求に含まれる前記データ格納領域の識別情報に一致する前記キーバリュー型データ管理情報を検索し、
    前記検索されたキーバリュー型データ管理情報の前記ダーティリストへのポインタに基づいて前記ダーティリストを参照して、前記処理対象のデータ格納領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを取得し、
    前記読出要求を送信した前記ローダに前記更新されたキーバリュー型データを送信し、
    前記ローダは、
    前記複数の計算機の各々のキーバリュー型データ管理部から取得された前記更新されたキーバリュー型データに基づいて、前記更新されたキーバリュー型データを反映させる処理対象のファイルを特定し、
    前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定し、
    前記特定された計算機に、前記更新されたキーバリュー型データを含むファイルの更新要求を送信し、
    前記ファイルシステムは、
    前記ファイルの更新要求を受信した場合、前記キーバリュー型データ構造情報に基づいて、前記更新されたキーバリュー型データに対応する前記レコードの前記ファイルにおける位置を特定し、
    前記特定されたファイルの位置に、前記更新されたキーバリュー型データを書き込むことによって前記ファイルを更新することを特徴とする計算機システム。
  2. 請求項1に記載の計算機システムであって、
    少なくとも一つの計算機は、前記ファイルの構成を管理するためのファイル管理情報を保持し、
    前記ファイル管理情報は、前記ファイルの識別情報及び前記ファイルを格納するストレージ装置の情報を含み、
    前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記ファイルの識別情報とを対応付けたファイル配置情報を保持し、
    前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
    前記ローダは、
    前記更新されたキーバリュー型データを取得した後、前記ファイル管理情報を取得し、
    前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に対応する前記ファイル配置情報を参照して、前記処理対象のファイルを特定し、
    前記処理対象のファイルに対応する前記ファイル管理情報を取得し、
    前記処理対象のファイルに対応するファイル管理情報を参照して、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定することを特徴とする計算機システム。
  3. 請求項2に記載の計算機システムであって、
    前記少なくとも一つの計算機は、
    前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
    前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
    前記ローダは、
    前記データ格納領域への新規ファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得し、
    前記ファイル管理情報を参照して、前記新規ファイルを格納する前記ストレージ装置と接続される前記計算機から当該新規ファイルを取得し、
    前記データ格納領域の識別情報と、前記新規ファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成し、
    前記新規ファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成し、
    前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成し、
    前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信し、
    前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信することを特徴とする計算機システム。
  4. 請求項1に記載の計算機システムであって、
    前記ストレージ装置に格納されるファイルは、一つのソースファイルが分割されたサブファイルであって、
    少なくとも一つの計算機は、前記サブファイルの構成を管理するためのファイル管理情報を保持し、
    前記ファイル管理情報は、前記サブファイルの識別情報及び前記サブファイルを格納するストレージ装置の識別情報を含み、
    前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記サブファイルの識別情報とを対応付けたファイル配置情報を保持し、
    前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
    前記ローダは、
    前記更新されたキーバリュー型データを取得した後、前記ファイル管理情報を取得し、
    前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に基づいて前記ファイル配置情報を参照して、前記処理対象のソースファイルを特定し、
    前記処理対象のソースファイルに対応する前記ファイル管理情報を取得し、
    前記処理対象のソースファイルに対応するファイル管理情報を参照して、前記処理対象のソースファイルに対応する前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定することを特徴とする計算機システム。
  5. 請求項4に記載の計算機システムであって、
    前記少なくとも一つの計算機は、
    前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
    前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
    前記ローダは、
    前記データ格納領域への新規ソースファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得し、
    前記ファイル管理情報に基づいて、前記新規ソースファイルが分割された前記複数のサブファイルを特定し、
    前記複数のサブファイル毎に、前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定し、
    前記複数のサブファイル毎に、前記サブファイルに含まれる前記レコードを特定することによって、当該サブファイルを格納する前記ストレージ装置と接続する前記計算機が担当するレコードを決定し、
    前記決定されたレコードの情報を含む前記サブファイルの配置を指示するロード指示を前記計算機に送信し、
    前記ロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得し、
    前記ファイル管理情報を参照して、前記ストレージ装置から前記決定されたレコードを含む前記サブファイルを取得し、
    前記データ格納領域の識別情報と、前記サブファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成し、
    前記サブファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成し、
    前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成し、
    前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信し、
    前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信することを特徴とする計算機システム。
  6. ネットワークを介して接続される複数の計算機を有する計算機システムにおけるデータ管理方法であって、
    前記複数の計算機の各々は、
    プロセッサ、前記プロセッサに接続されるメモリ及び前記プロセッサに接続されるネットワークインタフェースを有し、
    複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、
    前記ストレージ装置に格納される前記ファイルを管理するファイルシステムと、
    前記複数の計算機が有する記憶領域を統合することによってデータ格納領域を一つ以上生成し、前記データ格納領域に配置されたキーバリュー型データを管理するキーバリュー型データ管理部と、
    前記ファイルを分割して、検索キーと前記レコードの内容を示すバリューとを対応づけることによって前記キーバリュー型データを生成し、前記生成されたキーバリュー型データを前記データ格納領域に分散して格納するローダと、を有し、
    前記キーバリュー型データ毎に、前記検索キー、前記バリューのサイズ、及び前記キーバリュー型データに対応する前記レコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報と、前記データ格納領域の識別情報を含む前記データ格納領域に格納される前記キーバリュー型データを管理するためのキーバリュー型データ管理情報と、を保持し、
    前記データ管理方法は、
    前記キーバリュー型データ管理部が、前記キーバリュー型データの更新要求を受け付けた場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データを更新する第1のステップと、
    前記キーバリュー型データ管理部が、前記更新されたキーバリュー型データのリストであるダーティリストが生成されているか否かを判定する第2のステップと、
    前記キーバリュー型データ管理部が、前記ダーティリストが生成されていると判定された場合、新たに更新されたキーバリュー型データを前記ダーティリストに追加する第3のステップと、
    前記キーバリュー型データ管理部が、前記ダーティリストが生成されていないと判定された場合、前記ダーティリストを生成して、前記生成されたダーティリストへのポインタを前記キーバリュー型データ管理情報に設定する第4のステップと、
    前記ローダが、更新された前記キーバリュー型データの前記ファイルへの反映を指示する永続化指示を受け付けた場合、前記複数の計算機の各々の前記キーバリュー型データ管理部に、前記更新されたキーバリュー型データを取得するための要求であって、処理対象のデータ格納領域の識別情報を含む読出要求を送信する第5のステップと、
    前記キーバリュー型データ管理部が、前記読出要求を受信した場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを検索する第6のステップと、
    前記キーバリュー型データ管理部が、前記読出要求を送信した前記ローダに前記更新されたキーバリュー型データを送信する第7のステップと、
    前記ローダが、前記複数の計算機の各々のキーバリュー型データ管理部から取得された前記更新されたキーバリュー型データに基づいて、前記更新されたキーバリュー型データを反映させる処理対象のファイルを特定して、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定する第8のステップと、
    前記ローダが、前記特定された計算機に、前記更新されたキーバリュー型データを含むファイルの更新要求を送信する第9のステップと、
    前記ファイルシステムが、前記ファイルの更新要求を受信した場合、前記キーバリュー型データ構造情報に基づいて、前記更新されたキーバリュー型データに対応する前記レコードの前記ファイルにおける位置を特定する第10のステップと、
    前記ファイルシステムが、前記特定されたファイルの位置に、前記更新されたキーバリュー型データを書き込むことによって前記ファイルを更新する第11のステップと、を含み、
    前記第6のステップは、
    前記読出要求に含まれる前記データ格納領域の識別情報に一致する前記キーバリュー型データ管理情報を検索するステップと、
    前記検索されたキーバリュー型データ管理情報の前記ダーティリストへのポインタに基づいて前記ダーティリストを参照して、前記処理対象のデータ格納領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを取得するステップと、を含むことを特徴とするデータ管理方法。
  7. 請求項6に記載のデータ管理方法であって、
    少なくとも一つの計算機は、前記ファイルの構成を管理するためのファイル管理情報を保持し、
    前記ファイル管理情報は、前記ファイルの識別情報及び前記ファイルを格納するストレージ装置の情報を含み、
    前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記ファイルの識別情報とを対応付けたファイル配置情報を保持し、
    前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
    前記第8のステップは、
    前記ファイル管理情報を取得するステップと、
    前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に対応する前記ファイル配置情報を参照して、前記処理対象のファイルを特定するステップと、
    前記処理対象のファイルに対応する前記ファイル管理情報を取得するステップと、
    前記処理対象のファイルに対応するファイル管理情報を参照して、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定するステップと、を含むことを特徴とするデータ管理方法。
  8. 請求項7に記載のデータ管理方法であって、
    前記少なくとも一つの計算機は、
    前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
    前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
    前記データ管理方法は、
    前記ローダが、前記データ格納領域への新規ファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得するステップと、
    前記ローダが、前記ファイル管理情報を参照して、前記新規ファイルを格納する前記ストレージ装置と接続される前記計算機から当該新規ファイルを取得するステップと、
    前記ローダが、前記データ格納領域の識別情報と、前記新規ファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成するステップと、
    前記ローダが、前記新規ファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成するステップと、
    前記ローダが、前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成するステップと、
    前記ローダが、前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信するステップと、
    前記ローダが、前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信するステップと、を含むことを特徴とするデータ管理方法。
  9. 請求項6に記載のデータ管理方法であって、
    前記ストレージ装置に格納されるファイルは、一つのソースファイルが分割されたサブファイルであって、
    少なくとも一つの計算機は、前記サブファイルの構成を管理するためのファイル管理情報を保持し、
    前記ファイル管理情報は、前記サブファイルの識別情報及び前記サブファイルを格納するストレージ装置の識別情報を含み、
    前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記サブファイルの識別情報とを対応付けたファイル配置情報を保持し、
    前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
    前記第8のステップは、
    前記更新されたキーバリュー型データを取得した後、前記ファイル管理情報を取得するステップと、
    前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に基づいて前記ファイル配置情報を参照して、前記処理対象のソースファイルを特定するステップと、
    前記処理対象のソースファイルに対応する前記ファイル管理情報を取得するステップと、
    前記処理対象のソースファイルに対応するファイル管理情報を参照して、前記処理対象のソースファイルに対応する前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定するステップと、を含むことを特徴とするデータ管理方法。
  10. 請求項9に記載のデータ管理方法であって、
    前記少なくとも一つの計算機は、
    前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
    前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
    前記データ管理方法は、
    前記ローダが、前記データ格納領域への新規ソースファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得するステップと、
    前記ローダが、前記ファイル管理情報に基づいて、前記新規ソースファイルが分割された前記複数のサブファイルを特定するステップと、
    前記ローダが、前記複数のサブファイル毎に、前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定するステップと、
    前記ローダが、前記複数のサブファイル毎に、前記サブファイルに含まれる前記レコードを特定することによって、当該サブファイルを格納する前記ストレージ装置と接続する前記計算機が担当するレコードを決定するステップと、
    前記ローダが、前記決定されたレコードの情報を含む前記サブファイルの配置を指示するロード指示を前記計算機に送信するステップと、
    前記ローダが、前記ロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得するステップと、
    前記ローダが、前記ファイル管理情報を参照して、前記ストレージ装置から前記決定されたレコードを含む前記サブファイルを取得するステップと、
    前記ローダが、前記データ格納領域の識別情報と、前記サブファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成するステップと、
    前記ローダが、前記サブファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成するステップと、
    前記ローダが、前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成するステップと、
    前記ローダが、前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信するステップと、
    前記ローダが、前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信するステップと、を含むことを特徴とするデータ管理方法。
JP2015554353A 2013-12-25 2013-12-25 計算機システム及びデータ管理方法 Active JP6034512B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/084631 WO2015097774A1 (ja) 2013-12-25 2013-12-25 計算機システム及びデータ管理方法

Publications (2)

Publication Number Publication Date
JP6034512B2 true JP6034512B2 (ja) 2016-11-30
JPWO2015097774A1 JPWO2015097774A1 (ja) 2017-03-23

Family

ID=53477716

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015554353A Active JP6034512B2 (ja) 2013-12-25 2013-12-25 計算機システム及びデータ管理方法

Country Status (3)

Country Link
US (1) US9934248B2 (ja)
JP (1) JP6034512B2 (ja)
WO (1) WO2015097774A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016138657A1 (en) * 2015-03-05 2016-09-09 Intel Corporation Techniques for storing or accessing key-value item
US10061629B2 (en) * 2015-07-22 2018-08-28 Optumsoft, Inc. Compact binary event log generation
US10742491B2 (en) 2017-07-20 2020-08-11 Vmware, Inc. Reducing initial network launch time of container applications
US9934287B1 (en) 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
US11030218B2 (en) 2017-08-10 2021-06-08 Hitachi, Ltd. Computer system and data processing method
US10922096B2 (en) * 2018-02-28 2021-02-16 Vmware, Inc. Reducing subsequent network launch time of container applications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198258A (ja) * 2009-02-25 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> キャッシュメンテナンス装置、その方法及びそのプログラム
WO2010114006A1 (ja) * 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
WO2012114531A1 (ja) * 2011-02-23 2012-08-30 株式会社日立製作所 計算機システム及びデータ管理方法
JP2013004067A (ja) * 2011-06-22 2013-01-07 Nippon Telegr & Teleph Corp <Ntt> ストレージシステム、ストレージ制御方法、プログラム
JP2013088920A (ja) * 2011-10-14 2013-05-13 Hitachi Ltd 計算機システム及びデータ管理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5439236B2 (ja) 2010-03-12 2014-03-12 株式会社日立製作所 計算機システムおよびアプリケーションプログラムの実行方法
US9838242B2 (en) * 2011-04-13 2017-12-05 Jetflow Technologies Flowlet-based processing with key/value store checkpointing
US8676951B2 (en) * 2011-07-27 2014-03-18 Hitachi, Ltd. Traffic reduction method for distributed key-value store
JP5762878B2 (ja) * 2011-08-08 2015-08-12 株式会社東芝 key−valueストアを有するメモリシステム
JP5524144B2 (ja) * 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
US20130332608A1 (en) * 2012-06-06 2013-12-12 Hitachi, Ltd. Load balancing for distributed key-value store
JP6025149B2 (ja) * 2013-11-06 2016-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを管理するシステムおよび方法
US9323457B2 (en) * 2013-12-09 2016-04-26 Xilinx, Inc. Memory arrangement for implementation of high-throughput key-value stores

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198258A (ja) * 2009-02-25 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> キャッシュメンテナンス装置、その方法及びそのプログラム
WO2010114006A1 (ja) * 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
US20120036317A1 (en) * 2009-03-31 2012-02-09 Takashi Torii Storage system and storage access method and program
WO2012114531A1 (ja) * 2011-02-23 2012-08-30 株式会社日立製作所 計算機システム及びデータ管理方法
JP2013004067A (ja) * 2011-06-22 2013-01-07 Nippon Telegr & Teleph Corp <Ntt> ストレージシステム、ストレージ制御方法、プログラム
JP2013088920A (ja) * 2011-10-14 2013-05-13 Hitachi Ltd 計算機システム及びデータ管理方法

Also Published As

Publication number Publication date
US9934248B2 (en) 2018-04-03
WO2015097774A1 (ja) 2015-07-02
US20160012075A1 (en) 2016-01-14
JPWO2015097774A1 (ja) 2017-03-23

Similar Documents

Publication Publication Date Title
JP6034512B2 (ja) 計算機システム及びデータ管理方法
US7765189B2 (en) Data migration apparatus, method, and program for data stored in a distributed manner
US7849282B2 (en) Filesystem building method
US10242050B2 (en) Database caching in a database system
JP5775177B2 (ja) クローンファイル作成方法と、それを用いたファイルシステム
CN110321301B (zh) 一种数据处理的方法及装置
JP5589205B2 (ja) 計算機システム及びデータ管理方法
CN103154948B (zh) 可丢弃文件的基于卡的管理
JP4568115B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
CN110062925A (zh) 用于云集成的快照元数据布置
CN107180092B (zh) 一种文件系统的控制方法、装置及终端
US20120005307A1 (en) Storage virtualization
US20110153606A1 (en) Apparatus and method of managing metadata in asymmetric distributed file system
CN110119425A (zh) 固态驱动器、分布式数据存储系统和利用键值存储的方法
US20100036872A1 (en) Data management method
US20160364407A1 (en) Method and Device for Responding to Request, and Distributed File System
US10503693B1 (en) Method and system for parallel file operation in distributed data storage system with mixed types of storage media
CN109684282A (zh) 一种构建元数据缓存的方法及装置
US20120005233A1 (en) Computer system and recording medium
KR20080033264A (ko) 공간을 비워두기 위해 저장 볼륨 상의 파일로부터 대안의장소로의 데이터 이동
CN104516974A (zh) 一种文件系统目录项的管理方法及装置
JP2011191835A (ja) 計算機システムおよびアプリケーションプログラムの実行方法
CN113853778A (zh) 一种文件系统的克隆方法及装置
JP2015114913A (ja) ストレージ装置、ストレージシステム及びデータ管理プログラム
US9483199B1 (en) Data deduplication using multiple devices

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160914

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161011

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161027

R150 Certificate of patent or registration of utility model

Ref document number: 6034512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150