JP2017173979A - データ管理装置、方法、及びプログラム - Google Patents
データ管理装置、方法、及びプログラム Download PDFInfo
- Publication number
- JP2017173979A JP2017173979A JP2016057003A JP2016057003A JP2017173979A JP 2017173979 A JP2017173979 A JP 2017173979A JP 2016057003 A JP2016057003 A JP 2016057003A JP 2016057003 A JP2016057003 A JP 2016057003A JP 2017173979 A JP2017173979 A JP 2017173979A
- Authority
- JP
- Japan
- Prior art keywords
- request
- key
- value
- address information
- master
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
【課題】KVS型データベースにおいてスループットを低下させることなく信頼性を向上させる。
【解決手段】取得部21はバリューの書込み指示又は読出し指示に対応するアドレス情報を含む第1のリクエスト10を取得する。変換部22は第1のリクエスト10を、アドレス情報とアドレス情報が示す位置を書込み位置とする書込み指示がある度に更新されるバージョン情報との組み合わせを含むキーを含む第2のリクエスト20に変換する。制御部23は第2のリクエスト20に基づいて、それぞれマスタ又はスレーブに設定された複数のストレージを含むキーバリューストア型のデータベース11にキーに対応するバリューを書き込むための書込み処理又はデータベース11からキーに対応するバリューを読み出すための読出し処理を行う。
【選択図】図1
【解決手段】取得部21はバリューの書込み指示又は読出し指示に対応するアドレス情報を含む第1のリクエスト10を取得する。変換部22は第1のリクエスト10を、アドレス情報とアドレス情報が示す位置を書込み位置とする書込み指示がある度に更新されるバージョン情報との組み合わせを含むキーを含む第2のリクエスト20に変換する。制御部23は第2のリクエスト20に基づいて、それぞれマスタ又はスレーブに設定された複数のストレージを含むキーバリューストア型のデータベース11にキーに対応するバリューを書き込むための書込み処理又はデータベース11からキーに対応するバリューを読み出すための読出し処理を行う。
【選択図】図1
Description
本発明の実施形態は、データ管理装置、方法、及びプログラムに関する。
データベースの構築に利用されるデータ管理方式として、KVS(Key Value Store)方式が知られている。KVS方式においては、識別情報であるキーと書込み、読出し等の対象であるバリューとのペアからなるデータがストレージに記憶される。ユーザはキーを指定することにより所望のバリューの書込み、読出し等を高速で行うことができる。
KVS型のデータを複数のストレージ間でレプリケーションすることにより、冗長化され高い信頼性を有するストレージを構築することができる。このようなレプリケーションのための処理は通常、ユーザインターフェースとなるクライアントサーバ側ではなくストレージ側で行われる。例えば、ストレージサーバがホストストレージに記憶されたデータのスナップショットをスレーブストレージにコピーする方法がある。
Robustness in the Salus Scalable Block Store [NSDI'13]
複数のストレージを含むKVS型データベースにおいては、複数のストレージ間で処理の一貫性を保証するために書込み順序の管理が必要となる。単純には、1つのタイミングで実行可能な書込み処理を1つに制限することにより一貫性を保証することができる。しかし、そのような手法によると、書込み等の処理をパイプラインにより処理することができず、スループットが低下する。
そこで、以下の実施形態では、KVS型データベースにおいてスループットを低下させることなく信頼性を向上させることを目的とする。
実施形態のデータ管理措置は、取得部と、変換部と、制御部とを備える。取得部は、バリューの書込み指示又は読出し指示に対応するアドレス情報を含む第1のリクエストを取得する。変換部は、第1のリクエストを、アドレス情報とアドレス情報が示す位置を書込み位置とする書込み指示がある度に更新されるバージョン情報との組み合わせを含むキーを含む第2のリクエストに変換する。制御部は、第2のリクエストに基づいて、それぞれマスタ又はスレーブに設定された複数のストレージを含むキーバリューストア型のデータベースにキーに対応するバリューを書き込むための書込み処理又はデータベースからキーに対応するバリューを読み出すための読出し処理を行う。
(第1の実施形態)
図1は、第1の実施形態に係るデータ管理システム1の基本的な機能的構成を例示する図である。データ管理システム1は、データベース11、取得部21、変換部22、及び制御部23を含む。
図1は、第1の実施形態に係るデータ管理システム1の基本的な機能的構成を例示する図である。データ管理システム1は、データベース11、取得部21、変換部22、及び制御部23を含む。
データベース11は、KVS型分散データベースであり、複数のKVS型データベース31〜33を含む。各KVS型データベース31〜33は、識別情報であるキーと書込み、読出し等の対象であるバリューとのペアからなるデータを記憶している。
取得部21は、データベース11へのバリューの書込み、データベース11からのバリューの読出し等を指示するユーザリクエスト10(第1のリクエスト)を取得する。ユーザリクエスト10は、書込み処理又は読出し処理に対応するアドレス情報を含む。アドレス情報は、例えばLBA(Logical Block Addressing)により割り当てられたセクタを特定する情報であり得る。アドレス情報はLBAに基づく情報に限られるものではなく、例えばKVSのキー等であってもよい。
変換部22は、ユーザリクエスト10をKVSリクエスト20(第2のリクエスト)に変換する。KVSリクエスト20は、キーを含むKVSコマンド等であり得る。本実施形態のKVSリクエスト20に含まれるキーは、アドレス情報とバージョン情報との組み合わせを含む。バージョン情報は、アドレス情報毎に割り当てられ、当該アドレス情報を書込み位置とする書込み指示がある度に更新される情報である。例えば、アドレス情報「0」を書込み位置とする1回目の書込み指示があった場合におけるバージョン情報が「0」であった場合、アドレス情報「0」を書込み位置とする2回目の書込み指示があった場合におけるバージョン情報は「1」に更新される(この更新例は単なる一例に過ぎない)。すなわち、変換部22は、ユーザリクエスト10に含まれるアドレス情報と、書込み指示がある度に更新されるバージョン情報との組み合わせを含む情報を生成することにより、KVS型のデータベース11を検索するためのキーを生成する。
制御部23は、変換部22により生成されたKVSリクエスト20に基づいて、データベース11にバリューを書き込むための書込み処理、データベース11からバリューを読み出すための読出し処理等を行う。制御部23による書込み処理により、データベース11内にはバージョン情報を含むキーにより区分されたキー・バリュー・ペアを含むデータが書き込まれる。バージョン情報は上述したように書込み指示がある度に更新される情報であるため、書込み順序の一貫性が保たれることになる。
図2は、第1の実施形態に係るデータ管理システム1のハードウェア構成を例示する図である。本例に係るデータ管理システム1は、データ管理装置101及びデータベースシステム201を含む。データ管理装置101は、ユーザインターフェースを構成する情報処理装置であり、クライアントサーバと称される場合がある。データ管理装置101は、CPU(Central Processing Unit)111、RAM(Random Access Memory)112、ROM(Read Only Memory)113、入力デバイス114、出力デバイス115、通信I/F(Interface)116等を含む。
CPU111は、ROM113等に記憶された制御プログラムに従ってRAM112をワーキングエリアとして所定の演算処理を行う。入力デバイス114は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス115は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、スピーカ等である。通信I/F116は、ネットワーク121を介して外部の装置との間で情報の送受信を可能にするデバイスである。データ管理装置101により、上記取得部21、変換部22、及び制御部23の各機能の少なくとも一部が実現される。取得部21、変換部22、及び制御部23は、プログラムに従って処理を行うCPU111、各種論理回路、又はこれらの協働により構成され得る。
データベースシステム201は、ストレージサーバ(ファイルサーバ)211及び分散ストレージ212を含む。ストレージサーバ211は、データ管理装置101と同様に、プログラムにより制御されるCPU、プログラムを記憶するROM、ワーキングエリアとなるRAM等を含む情報処理装置である。分散ストレージ212は、複数のストレージを含み、各ストレージがKVS型データベースを構築する。各ストレージは、フラッシュメモリ記憶装置(SSD(Solid State Drive))、磁気ディスク記憶装置(HDD(Hard Disc Drive))等であり得る。ストレージサーバ211は、KVSプロトコルに基づいて、分散ストレージ212にバリューを書き込むための処理、分散ストレージ212からバリューを読み出すための処理、マスタストレージを設定する処理、スレーブストレージを設定する処理等を実行する。データベースシステム201により、上記データベース11の機能が実現される。
なお、図2に示すハードウェア構成は一例であり、実施形態はこれに限定されるものではない。例えば、1つのデータベースシステム201に複数のデータ管理装置101が接続されてもよい。1つのデータ管理装置101に複数のデータベースシステム201が接続されてもよい。ストレージサーバ211は複数のストレージの各々に対応するように複数設けられてもよい。データ管理装置101とデータベースシステム201とが1つの情報処理装置により構成されてもよい。この場合、分散ストレージ212は情報処理装置内のストレージにより構築され、ストレージサーバ211の機能はCPU111により実現される。データ管理システム1のハードウェア構成は公知又は新規の技術を適宜利用し、図1に示す機能ブロックによる機能を実現できる範囲において自由に設計されるべきものである。
図3は、第1の実施形態に係るデータ管理システム1の具体的な機能的構成を例示する図である。本例に係るデータ管理システム1は、図2に示すハードウェア構成に対応するものであり、データ管理装置101及びデータベースシステム201を含む。
データ管理装置101は、アプリケーション301及びブロックストレージ部302を含む。
アプリケーション301は、図1に示す取得部21の少なくとも一部に対応する。アプリケーション301は、ユーザインターフェースの機能を有し、ユーザによる操作の受け付け、各種データの出力等を実行する。ユーザは、アプリケーション301を介してバリューの書込み、読出し等を指示することができる。例えば、ユーザは、書込み指示として、書き込みたいバリューと書込み位置(保存場所)を示すアドレス情報とを入力したり、読出し指示として、バリューの書込み位置を示すアドレス情報を入力したりすることができる。
アプリケーション301は、ユーザの入力に基づいてユーザリクエスト10を取得(生成)する。本例に係るユーザリクエスト10は、指示内容情報、アドレス情報、バリュー等を含んでもよい。指示内容情報は、ユーザが求める指示の種類を特定する情報であり、例えば「書込み」、「読出し」等の指示の種類毎に割り当てられた文字列、記号、値等であってもよい。アドレス情報は、上述したように、書込み位置、読出し位置等を特定する情報であり、例えばLBA方式により割り当てられた値、KVS方式におけるキー等であってもよい。バリューは、書込み対象となるデータであり、テキスト、イメージ等の各種ファイル等であってもよい。バリューは、指示の種類によっては(例えば読出し指示においては)ユーザリクエスト10に含まれない場合がある。
ブロックストレージ部302は、ユーザリクエスト10に基づいて、データベースシステム201にバリューを書き込むための処理、データベースシステム201からバリューを読み出すための処理等を実行する。ブロックストレージ部302は、例えばLBA方式等を利用することにより、バリューの書込み/読出し等が1つの記憶領域に対して行われているかのように各種処理を行う。ブロックストレージ部302は、変換部311、ストレージI/F312、及び記憶部313を含む。
変換部311は、図1に示す変換部22の少なくとも一部に対応する。変換部311は、アプリケーション301から取得したユーザリクエスト10をKVSリクエスト20に変換する。KVSリクエスト20は、データベースシステム201を動作させる命令であり、例えばKVSコマンド等であってもよい。KVSコマンドは、データベースシステム201のストレージサーバ211にインストールされているソフトウェアに応じて決定されるものであるが、例えば書込みを示す「SET」、読出しを示す「GET」等を含むコマンドであってもよい。SETコマンドにはキー及びバリューのペアが含まれる。GETコマンドにはキーが含まれ、バリューが含まれない場合がある。その他にも多くの種類のKVSコマンドが知られているが、ここではそれらの説明を省略する。本実施形態はSET及びGET以外のコマンドの使用を制限するものではない。
変換部311は、上述したように、ユーザリクエスト10に含まれるアドレス情報とバージョン情報とを組み合わせることにより、KVSコマンドに含まれるキーを生成する。変換部311は、記憶部313に記憶されているカウンタテーブル321を管理し、カウンタテーブル321に基づいてアドレス情報に対応するバージョン情報を設定する。
カウンタテーブル321は、アドレス情報322とカウンタ値323との対応関係を示している。カウンタ値323は、アドレス情報322毎に割り当てられている。変換部311は、各カウンタ値323を、各カウンタ値323に対応するアドレス情報322が示す位置を書込み位置とする書込み指示(ユーザリクエスト10)がある度にインクリメントする。
ストレージI/F312は、図1に示す制御部23の少なくとも一部に対応する。ストレージI/F312は、データ管理装置101とデータベースシステム201との間でのデータの送受信を制御する。ストレージI/F312は、変換部311により生成されたKVSリクエスト20をデータベースシステム201に送信し、データベースシステム201から取得したデータ(バリュー、応答信号等)を受信する。
ストレージI/F312は、記憶部313に記憶されたマスタ監視テーブル331及びリクエスト監視テーブル341を管理する。
マスタ監視テーブル331は、データベースシステム201に含まれる複数(本例では3つ)のストレージ211〜213について、どのストレージ211〜213がマスタであるか又はスレーブであるかを示している。図3に示すマスタ監視テーブル331は、第1のストレージ211(KVS1)がマスタであり、第2のストレージ212(KVS2)及び第3のストレージ213(KVS3)がスレーブであることを示している。マスタ/スレーブの切り換えは、データベースシステム201内の処理だけで行われてもよいし、データ管理装置101からの指示に応じて行われてもよい。ストレージI/F312は、マスタの切り換えに応じてマスタ監視テーブル331を更新する。
ストレージI/F312は、書込み処理を実行させる(例えばSETコマンドを含む)KVSリクエスト20をマスタ及びスレーブに送信し、読出し処理を実行させる(例えばGETコマンドを含む)KVSリクエスト20をマスタにのみ送信する。通常の読出し処理はマスタのみを用いて行われ、書込み処理は冗長性を得るためにマスタだけでなくスレーブに対しても行われる。これにより、データベースシステム201側でホストのスナップショットを各スレーブにコピーするといった処理を行うことなく冗長化を実現することができる。
リクエスト監視テーブル341は、書込み処理を実行させるものであって未達成と判定されるKVSリクエスト20をリスト化したテーブルである。本例に係るストレージI/F312は、先ず、ストレージI/F312からデータベースシステム201のマスタに送信されたKVSリクエスト20をリクエスト監視テーブル341に追加し、その後、マスタから書込みが正常の行われたことを示す応答を受信した場合に、当該KVSリクエスト20をリクエスト監視テーブル341から削除する。すなわち、リクエスト管理テーブル341に含まれているKVSリクエスト20は、送信後、処理の達成が確認されていないKVSリクエスト20である。
ストレージI/F312は、リクエスト監視テーブル341に含まれているKVSリクエスト20を所定の条件に基づいてマスタに再送信する。所定の条件は、例えばマスタが切り換わった場合、リクエスト監視テーブル341内に所定時間以上同一のKVSリクエスト20が残っている場合等であってもよい。再送信されるKVSリクエスト20のキーに含まれるバージョン情報は、それ以前に送信された同一のKVSリクエスト20のキーに含まれていたバージョン情報と一致する。これにより、再送信されるKVSリクエスト20が新たなKVSリクエスト20として扱われることを防止することができ、書込み処理の一貫性を確保することができる。
以下に、図4〜図11を参照してデータ管理システム1における処理の流れを例示する。図4は、第1の実施形態に係るデータ管理システム1において書込み指示が出された場合の状態を例示する図である。本例は、アプリケーション301がユーザからアドレス情報「0」が示す領域に対象データ(バリュー)「DataA」を書き込む指示を受け付けた場合を示している。アプリケーション301は、書込み指示を示す文字列「Write」、アドレス情報「0」、及びバリュー「DataA」を含むユーザリクエスト10Aを生成する。
変換部311は、ユーザリクエスト10AをKVSリクエスト20Aに変換する。KVSリクエスト20Aは、書込み指示を示すコマンド「SET」、キー「(0,1)」、及びバリュー「DataA」を含む。
先ず、変換部311は、ユーザリクエスト10Aに「Write」が含まれていることに対応してカウンタテーブル321を更新する。変換部311は、カウンタテーブル321のアドレス情報322:「0」に対応するカウンタ値323をインクリメントして「0」から「1」にする。その後、変換部311は、更新されたカウンタテーブル321に基づいてアドレス情報「0」とカウンタ値「1」とを組み合わせたキー「(0,1)」を生成し、キー「(0,1)」を含むKVSリクエスト20Aを生成する。
KVSリクエスト20Aは書込み処理を実行させるものであるため、ストレージI/F312はKVSリクエスト20Aをマスタ(第1のストレージ211)及びスレーブ(第2のストレージ212及び第3のストレージ213)に送信する。ストレージI/F312は、マスタに送信されたKVSリクエスト20Aをリクエスト監視テーブル341に記載する。
図5は、第1の実施形態に係るデータ管理システム1において書込み指示が達成された場合の状態を例示する図である。KVSリクエスト20Aを受信した各ストレージ211〜213は、キー「(0,1)」とバリュー「DataA」とのペアからなるデータを記憶する。マスタである第1のストレージ211は、書込み処理が正常に行われた場合には、書込み処理が正常に行われたことを示す応答信号30をデータ管理装置101(ストレージI/F312)に送信する。ストレージI/F312は、応答信号30を受信すると、リクエスト監視テーブル341から当該応答信号30に対応するKVSリクエスト20Aを削除する。
ストレージI/F312に受信された応答信号30は、変換部311を介してアプリケーション301に送信される。ユーザはアプリケーション301を介して書込み指示が正常に行われたことを認識することができる。
図6は、第1の実施形態に係るデータ管理システム1において読出し指示が出された場合の状態を例示する図である。本例は、アプリケーション301がユーザからアドレス情報「0」に記憶されているデータを読み出す指示を受け付けた場合を示している。アプリケーション301は、読出し指示を示す文字列「Read」及びアドレス情報「0」を含むユーザリクエスト10Bを生成する。
変換部311は、ユーザリクエスト10BをKVSリクエスト20Bに変換する。KVSリクエスト20Bは、読出し指示を示すコマンド「GET」及びキー「(0,1)」を含む。
ユーザリクエスト10Bには「Write」が含まれていないため、変換部311はカウンタテーブル321を更新しない。変換部311は、カウンタテーブル321のアドレス情報322:「0」に対応するカウンタ値323:「1」を取得し、アドレス情報「0」とカウンタ値「1」とを組み合わせてキー「(0,1)」を生成する。変換部311は、キー「(0,1)」を含むKVSリクエスト20Bを生成する。
KVSリクエスト20Bは読込み処理を実行させるものであるため、ストレージI/F312はKVSリクエスト20Bをマスタ(第1のストレージ211)にのみ送信する。ストレージI/F312は、マスタに送信されたKVSリクエスト20Bをリクエスト監視テーブル341に記載する。
図7は、第1の実施形態に係るデータ管理システム1において読出し指示が達成された場合の状態を例示する図である。KVSリクエスト20Bを受信した第1のストレージ211は、キー「(0,1)」に対応するバリュー40「DataA」を読出し、ストレージI/F312に送信する。ストレージI/F312は、バリュー40「DataA」を受信すると、リクエスト監視テーブル341からKVSリクエスト20Bを削除する。
ストレージI/F312に受信されたバリュー40「DataA」は変換部311を介してアプリケーション301に送信される。ユーザはアプリケーション301を介してバリュー40「DataA」を取得することができる。
図8は、第1の実施形態に係るデータ管理システム1において書込み指示及び読出し指示が出された場合の状態を例示する図である。本例は、アプリケーション301がユーザからアドレス情報「0」が示す領域にバリュー「DataB」を書き込む指示、アドレス情報「0」に記憶されているデータを読み出す指示、及びアドレス情報「0」が示す領域にバリュー「DataC」を書き込む指示を、この順番で受け付けた場合を示している。すなわち、同一のアドレス情報「0」に対して時間的に前後して2回の書込み指示が出され、当該2回の書込み指示の間に読出し指示が出されている。アプリケーション301は、上記各指示に対応するユーザリクエスト10C「Write/0/DataB」、「Read/0」、及び「Write/0/DataC」を変換部311に送信する。
変換部311は、ユーザリクエスト10CをKVSリクエスト20C「SET/(0,2)/DataB」、「GET/(0,2)」、及び「SET/(0,3)/DataC」に変換する。
先ず、変換部311は、最初のユーザリクエスト10C「Write/0/DataB」に「Write」が含まれていることに対応してカウンタテーブル321を更新し、アドレス情報322:「0」に対応するカウンタ値323:「1」(図7に示す状態)を「2」にインクリメントする。その後、変換部311は、更新されたカウンタテーブル321に基づいてアドレス情報「0」とカウンタ値「2」とを組み合わせたキー「(0,2)」を生成し、ユーザリクエスト10C「Write/0/DataB」に対応するKVSリクエスト20C「SET/(0,2)/DataB」を生成する。
次いで、変換部311は、2番目のユーザリクエスト10C「Read/0」に対応するKVSリクエスト20C「GET/(0,2)」を生成する。このとき、ユーザリクエスト10C「Read/0」には「Write」が含まれていないため、変換部311はカウンタテーブル321を更新しない。変換部311は、現在のカウンタテーブル321に基づいてアドレス情報「0」とカウンタ値「2」とを組み合わせてキー「(0,2)」を生成し、KVSリクエスト20C「GET/(0,2)」を生成する。
次いで、変換部311は、3番目のユーザリクエスト10C「Write/0/DataC」に対応するKVSリクエスト20C「SET/(0,3)/DataC」を生成する。このとき、変換部311は、ユーザリクエスト10C「Write/0/DataC」に「Write」が含まれていることに対応してカウンタテーブル321を更新し、アドレス情報322:「0」に対応するカウンタ値323「2」を「3」にインクリメントする。その後、変換部311は、更新されたカウンタテーブル321に基づいてアドレス情報「0」とカウンタ値「3」とを組み合わせたキー「(0,3)」を生成し、ユーザリクエスト10C「Write/0/DataC」に対応するKVSリクエスト20C「SET/(0,3)/DataB」を生成する。
ストレージI/F312は、マスタである第1のストレージ211には全てのKVSリクエスト20C「SET/(0,2)/DataB」、「GET/(0,2)」、及び「SET/(0,3)/DataC」を送信する。ストレージI/F312は、スレーブである第2のストレージ212及び第3のストレージ213には書込みを実行させるKVSリクエスト20D「SET/(0,2)/DataB」及び「SET/(0,3)/DataC」を送信する。ストレージI/F312は、マスタに送信されたKVSリクエスト20C「SET/(0,2)/DataB」、「GET/(0,2)」、及び「SET/(0,3)/DataC」をリクエスト監視テーブル341に記載する。
図9は、第1の実施形態に係るデータ管理システム1においてマスタに障害が発生した場合の状態を例示する図である。本例は、図8に示すKVSリクエスト20C「SET/(0,2)/DataB」、「GET/(0,2)」、及び「SET/(0,3)/DataC」の送信後、マスタである第1のストレージ211からの応答がない場合を示している。同図において、全てのストレージ211〜213にKVSリクエスト20C「SET/(0,2)/DataB」及び「SET/(0,3)/DataC」に対応するデータ「(0,2) DataB」及び「(0,3) DataC」が記憶され、リクエスト監視テーブル341にKVSリクエスト20C「SET/(0,2)/DataB」、「GET/(0,2)」、及び「SET/(0,3)/DataC」が残っている状態が示されている。これは、書込み処理が達成したにもかかわらずマスタから応答が送信されないため、ストレージI/F312がリクエスト監視テーブル341からKVSリクエスト20Cを削除できないためである。
図10は、第1の実施形態に係るデータ管理システム1においてKVSリクエスト20Cが再送信された場合の状態を例示する図である。本例においては、図9に示す状態になった後、マスタは第1のストレージ211から第2のストレージ212に切り換えられている。
ストレージI/F312は、マスタの切り換えに応じてマスタ監視テーブル331を更新する。その後、ストレージI/F312は、新たなマスタである第2のストレージ212に、リクエスト監視テーブル341に残っているKVSリクエスト20Cを再送信する。
図11は、第1の実施形態に係るデータ管理システム1において再送信されたKVSリクエスト20Cに対応する指示が達成された場合の状態を例示する図である。同図において、新たなマスタである第2のストレージ212から各KVSリクエスト20Cに対する応答がストレージI/F312に送信されている状態が示されている。図中上部の応答信号30「OK」はKVSリクエスト20C「SET/(0,2)/DataB」に対する応答である。バリュー40「DataB」はKVSリクエスト20C「GET/(0,2)」に対する応答である。図中下部の応答信号30「OK」はKVSリクエスト20C「SET/(0,3)/DataC」に対する応答である。当該応答は、変換部311を介してアプリケーション301に送信され、ユーザにより確認される。ストレージI/F312は、当該応答の受信に応じてリクエスト監視テーブル341内のKVSリクエスト20Cを削除する。
上記のように、本実施形態によれば、再送信された読出し処理を実行するためのKVSリクエスト20C「GET/(0,2)」に対する応答はバリュー40「DataB」となる。この応答結果は、マスタの故障前(第1のストレージ211がマスタであったとき)に得られたであろう応答結果と一致する。故障前におけるKVSリクエスト20C「GET/(0,2)」(図8参照)と再送信されたKVSリクエスト20C「GET/(0,2)」(図10参照)とが一致しているからである。
図8〜図10に示す例においては、ユーザは、最初の指示においてアドレス情報「0」に対してバリュー「DataB」を書き込む指示を出し、2番目の指示においてアドレス情報「0」に対応するバリューを読み出す指示を出し、3番目の指示においてアドレス情報「0」に対してバリュー「DataC」を書き込む指示を出している。すなわち、2番目の読出し指示により、最初の書込み指示により書き込まれたバリュー「DataB」が読み出されなければならない。しかし、従来のシステムにおいては、3番目の書込み指示に対応するKVSリクエスト(「DataC」を書き込むリクエスト)の送信後に、マスタの切り換え等に対応するために2番目の読出し指示に対応するKVSリクエストを再送信する場合に、取得されるべきバリュー「DataB」ではなく、後で書き込まれたバリュー「DataC」が取得されてしまう可能性がある。
これに対し、本実施形態においては、KVSリクエスト20のキーが、書込み指示がある度に更新されるバージョン情報を含んでいるため、KVSリクエスト20が再送信された場合であっても、後の書込み処理の影響を受けることなく適切な読出し処理を実行することができる。また、同時に複数の書込み又は読出し処理を行うことができるので、スループットを低減させることはない。従って、本実施形態によれば、KVS型データベースにおいてスループットを低下させることなく信頼性を向上させることが可能となる。
(第2の実施形態)
以下に、第2の実施形態について図面を参照して説明するが、第1の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
以下に、第2の実施形態について図面を参照して説明するが、第1の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
図12は、第2の実施形態に係るデータ管理システム501の機能的な構成を例示する図である。本実施形態に係るストレージI/F312は削除部615を含み、記憶部313はデータ削除監視テーブル621を記憶している。
削除部615は、各ストレージ211〜213に記憶されたデータから過去のバージョン情報に対応するデータを削除するための処理を行う。削除部615は、変換部311に対して所定のタイミングで(例えば一定期間毎に)要求信号50を送信する。要求信号50は、変換部311に対し各アドレス情報322に対応する現在のカウンタ値323の送信を要求する信号である。変換部311は、要求信号50を受信すると、カウンタテーブル321に基づいてアドレス情報322と現在のカウンタ値323との対応関係を含むカウンタ情報60を生成し、削除部615に送信する。削除部615は、カウンタ情報60を受信すると、過去のバージョン情報(カウンタ値)を含むキーを含むデータを削除するための処理を実行させる削除リクエスト70をデータベースシステム201に送信する。削除部615は、データの削除に応じてデータ削除監視テーブル621を更新する。データ削除監視テーブル621は、アドレス情報322と削除されたデータのバージョン情報を示す削除カウンタ値623との対応関係を示すテーブルである。
図13は、第2の実施形態に係るデータ管理システム501において過去のバージョン情報に対応するデータが削除された状態を例示する図である。本例は、要求信号50が変換部311に受信された後の状態を示している。変換部311は、要求信号50の受信に応じて、カウンタ情報60「(0,3)、(1,0)、(2,0)、及び(3,0)」を削除部615に送信する。カウンタ情報60は、カウンタテーブル321の内容に対応している。
削除部615は、カウンタ情報60に基づいて削除リクエスト70「DELETE/(0,1)及びDELETE/(0,2)」を生成し、データベースシステム201に送信する。削除リクエスト70「DELETE/(0,1)」はキー(0,1)を含むデータを削除させるKVSコマンドであり、削除リクエスト70「DELETE/(0,2)」はキー(0,2)を含むデータを削除させるKVSコマンドである。本例に係る削除部615は、既に削除された削除カウンタ値623をA、現在のカウンタ値323をBとするとき、Aから(B−1)までのカウンタ値に対応するデータを削除する。本例においては、アドレス情報322「0」に対応する既に削除された削除カウンタ値623(A)は「0」であり(図12参照)、アドレス情報322「0」に対応する現在のカウンタ値323(B)は「3」である。従って、削除されるデータは、アドレス情報「0」とカウンタ値「0」〜「2」のいずれか1つとを含むキーを含むデータ「(0,1) DataA」及び「(0,2) DataB」となる。ストレージI/F312は、実行されたデータの削除に応じてデータ削除監視テーブル621の削除カウンタ値623を更新する。
上記のように、第2の実施形態によれば、第1の実施形態による効果に加え、各ストレージ211〜213から過去のバージョンに対応するデータを削除することができる。これにより、各ストレージ211〜213の記憶容量の損失を抑制することができる。
上記データ管理システム1,501(データ管理装置101)の各種機能を実現させるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、プログラムは、ネットワークに接続された所定の記憶装置から所定の情報処理装置にダウンロードすることにより提供されてもよいし、予めROM等に組み込まれて所定の情報処理装置に提供されてもよい。また、プログラムは、上記各種機能を実現する複数のモジュールから構成されてもよい。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,501 データ管理システム
10,10A〜10C ユーザリクエスト(第1のリクエスト)
11 データベース
20,20A〜20C KVSリクエスト(第2のリクエスト)
21 取得部
22,311 変換部
23 制御部
30 応答信号
40 バリュー
101 データ管理装置
111 CPU
112 RAM
113 ROM
114 入力デバイス
115 出力デバイス
116 通信I/F
121 ネットワーク
201 データベースシステム
211 ストレージサーバ
212 分散ストレージ
301 アプリケーション
302 ブロックストレージ部
312 ストレージI/F
313 記憶部
321 カウンタテーブル
322 アドレス情報
323 カウンタ値
331 マスタ監視テーブル
341 リクエスト監視テーブル
615 削除部
621 データ削除監視テーブル
623 削除カウンタ値
10,10A〜10C ユーザリクエスト(第1のリクエスト)
11 データベース
20,20A〜20C KVSリクエスト(第2のリクエスト)
21 取得部
22,311 変換部
23 制御部
30 応答信号
40 バリュー
101 データ管理装置
111 CPU
112 RAM
113 ROM
114 入力デバイス
115 出力デバイス
116 通信I/F
121 ネットワーク
201 データベースシステム
211 ストレージサーバ
212 分散ストレージ
301 アプリケーション
302 ブロックストレージ部
312 ストレージI/F
313 記憶部
321 カウンタテーブル
322 アドレス情報
323 カウンタ値
331 マスタ監視テーブル
341 リクエスト監視テーブル
615 削除部
621 データ削除監視テーブル
623 削除カウンタ値
Claims (7)
- バリューの書込み指示又は読出し指示に対応するアドレス情報を含む第1のリクエストを取得する取得部と、
前記第1のリクエストを、前記アドレス情報と前記アドレス情報が示す位置を書込み位置とする前記書込み指示がある度に更新されるバージョン情報との組み合わせを含むキーを含む第2のリクエストに変換する変換部と、
前記第2のリクエストに基づいて、それぞれマスタ又はスレーブに設定された複数のストレージを含むキーバリューストア型のデータベースに前記キーに対応する前記バリューを書き込むための書込み処理又は前記データベースから前記キーに対応する前記バリューを読み出すための読出し処理を行う制御部と、
を備えるデータ管理装置。 - 前記制御部は、
前記書込み処理を実行させる前記第2のリクエストを前記マスタ及び前記スレーブに送信し、
前記読出し処理を実行させる前記第2のリクエストを前記マスタにのみ送信する、
請求項1に記載のデータ管理装置。 - 前記制御部は、
前記第2のリクエストに対する前記マスタからの応答に基づいて未達成の前記第2のリクエストを判定し、
前記マスタが変更された場合に、新たな前記マスタに未達成の前記第2のリクエストを再送信する、
請求項2に記載のデータ管理装置。 - 前記制御部は、前記マスタに送信された前記第2のリクエストを保持し、前記マスタから正常な応答を受けた前記第2のリクエストが削除される情報に基づいて未達成の前記第2のリクエストを判定する、
請求項3に記載のデータ管理装置。 - 前記データベースから過去の前記バージョン情報を含む前記キーに対応するデータを削除する削除部、
を更に備える請求項1〜4のいずれか1項に記載のデータ管理装置。 - バリューの書込み指示又は読出し指示に対応するアドレス情報を含む第1のリクエストを取得するステップと、
前記第1のリクエストを、前記アドレス情報と前記アドレス情報が示す位置を書込み位置とする前記書込み指示がある度に更新されるバージョン情報との組み合わせを含むキーを含む第2のリクエストに変換するステップと、
前記第2のリクエストに基づいて、それぞれマスタ又はスレーブに設定された複数のストレージを含むキーバリューストア型のデータベースに前記キーに対応する前記バリューを書き込むための書込み処理又は前記データベースから前記キーに対応する前記バリューを読み出すための読出し処理を行うステップと、
を含むデータ管理方法。 - コンピュータに、
バリューの書込み指示又は読出し指示に対応するアドレス情報を含む第1のリクエストを取得する処理と、
前記第1のリクエストを、前記アドレス情報と前記アドレス情報が示す位置を書込み位置とする前記書込み指示がある度に更新されるバージョン情報との組み合わせを含むキーを含む第2のリクエストに変換する処理と、
前記第2のリクエストに基づいて、それぞれマスタ又はスレーブに設定された複数のストレージを含むキーバリューストア型のデータベースに前記キーに対応する前記バリューを書き込むための書込み処理又は前記データベースから前記キーに対応する前記バリューを読み出すための読出し処理を行う処理と、
を実行させるデータ管理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016057003A JP2017173979A (ja) | 2016-03-22 | 2016-03-22 | データ管理装置、方法、及びプログラム |
US15/380,417 US20170277723A1 (en) | 2016-03-22 | 2016-12-15 | Data management device, data management method, and computer program product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016057003A JP2017173979A (ja) | 2016-03-22 | 2016-03-22 | データ管理装置、方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017173979A true JP2017173979A (ja) | 2017-09-28 |
Family
ID=59898758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016057003A Abandoned JP2017173979A (ja) | 2016-03-22 | 2016-03-22 | データ管理装置、方法、及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170277723A1 (ja) |
JP (1) | JP2017173979A (ja) |
-
2016
- 2016-03-22 JP JP2016057003A patent/JP2017173979A/ja not_active Abandoned
- 2016-12-15 US US15/380,417 patent/US20170277723A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170277723A1 (en) | 2017-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6344798B2 (ja) | データ送信方法、データ受信方法、及びストレージデバイス | |
JP4727437B2 (ja) | データベースを有するストレージシステムの記憶制御方法 | |
EP3062226B1 (en) | Data replication method and storage system | |
JP6151353B2 (ja) | 分散ストレージシステム及び分散ストレージの方法 | |
US8448167B2 (en) | Storage system, and remote copy control method therefor | |
JP5548829B2 (ja) | 計算機システム、データ管理方法及びデータ管理プログラム | |
WO2018154698A1 (ja) | ファイルストレージ、オブジェクトストレージ、およびストレージシステム | |
JP4773788B2 (ja) | 記憶システムにおけるリモートコピー制御 | |
US9031906B2 (en) | Method of managing data in asymmetric cluster file system | |
JP2009205201A (ja) | 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム | |
JPWO2014170952A1 (ja) | 計算機システム、計算機システム管理方法及びプログラム | |
JP6931081B2 (ja) | データバックアップシステム、中継サイトストレージ、データバックアップ方法、及び中継サイトストレージの制御プログラム | |
JP2014186383A (ja) | 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法 | |
US20190065330A1 (en) | Copy-on-read process in disaster recovery | |
JP2015114784A (ja) | バックアップ制御装置及びバックアップ制御方法、ディスクアレイ装置、並びにコンピュータ・プログラム | |
JP5900096B2 (ja) | レプリケーションシステム、レプリケーションプログラム及びレプリケーション構成の再構築方法 | |
JP2017173979A (ja) | データ管理装置、方法、及びプログラム | |
WO2015198371A1 (ja) | ストレージシステム及び記憶制御方法 | |
JP5963324B2 (ja) | 仮想シーケンシャルアクセスボリュームのデータのコピー方法、システム | |
JP2018206230A (ja) | 情報処理システム、情報処理装置および情報処理方法 | |
JP2013161383A (ja) | 情報処理装置、情報処理方法、プログラム及び情報処理システム | |
JP6291977B2 (ja) | 分散ファイルシステム、バックアップファイル取得方法、制御装置及び管理装置 | |
KR20130130383A (ko) | 데이터 서버의 계층화를 이용한 데이터 복제 장치 및 방법 | |
KR20160025994A (ko) | 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 | |
JP2019152945A (ja) | ストレージ装置、データ移行方法、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180222 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20181206 |