JP6025149B2 - データを管理するシステムおよび方法 - Google Patents

データを管理するシステムおよび方法 Download PDF

Info

Publication number
JP6025149B2
JP6025149B2 JP2013230608A JP2013230608A JP6025149B2 JP 6025149 B2 JP6025149 B2 JP 6025149B2 JP 2013230608 A JP2013230608 A JP 2013230608A JP 2013230608 A JP2013230608 A JP 2013230608A JP 6025149 B2 JP6025149 B2 JP 6025149B2
Authority
JP
Japan
Prior art keywords
data
key
kvs
area
unit
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
JP2013230608A
Other languages
English (en)
Other versions
JP2015090615A5 (ja
JP2015090615A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2013230608A priority Critical patent/JP6025149B2/ja
Priority to US14/491,337 priority patent/US9659048B2/en
Priority to CN201410643041.2A priority patent/CN104636417B/zh
Publication of JP2015090615A publication Critical patent/JP2015090615A/ja
Publication of JP2015090615A5 publication Critical patent/JP2015090615A5/ja
Application granted granted Critical
Publication of JP6025149B2 publication Critical patent/JP6025149B2/ja
Priority to US15/491,417 priority patent/US10740308B2/en
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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables

Landscapes

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

Description

本発明は、キー・バリュー型ストア( Key-Value Store :KVS)を対象とするデータの管理技術に関する。
大量のデータに対して高速にアクセスする用途に適したデータ管理システムとしてキー・バリュー型ストア( Key-Value Store :以下、KVS)がある。KVSでは、保存したいデータ(Value)に、任意のラベル(Key)を付けて、(Key,Value)のペアが保存される。そして、保存したデータを取得する際は、ラベル(Key)を指定して、対応するデータ(Value)を取得する。KVSは、データを保存するサーバの追加等も容易であり、データを複数のデータ・サーバに分散させて保存するのにも適している。
KVSにおいて、キーとデータとのペアの保存先(サーバやパーティション)の選択は、通常は、予め設定されたキー値に対する固定的なルールに従って行われる。このルールとしては、ハッシュ関数を用いたキー値の範囲に基づく振り分け等が一般的である。この場合、KVSシステムには、キー値のハッシュ値を計算するハッシュ機構が設けられ、保存先の選択ルールは、このハッシュ機構内に記述される。
KVSに関する従来の技術として、下記の特許文献1には、ハッシュ関数にデータのアクセス・キーを入力し、ハッシュ関数の出力から、当該データを格納しているストレージノードの位置情報を得ることが開示されている。また、下記の特許文献2には、各ストレージノードに対するハッシュ値の範囲の割り当てを変更する場合に、第1のノードに割り当てるハッシュ値の範囲と、第2のノードに割り当てるハッシュ値の範囲との境界を、第1のハッシュ値から第2のハッシュ値にシフトさせることが開示されている。
特開2013−50836号公報 特開2013−45378号公報
KVSでは、キーとデータとのペア(以下、キー/データ・ペアと記載)の保存(インサート)先の記憶領域(パーティション)の選択は、通常は、ハッシュ関数等を用いたキー値に対する固定的なルールに従って行われる。しかし、キー・グループ毎のキーの発生数、キー毎のデータ・サイズや成長度合いは一様ではないため、パーティションにおける記憶領域の使用状況に偏りが生じる場合がある。
また、パーティションによっては、KVSのシステムの運用を続けるに伴い、重複度の高いコリジョンや、ハッシュ・バケットのサイズを超える大きなデータの発生によって、オーバー・フロー領域へデータが溢れる事象が頻発し、処理パフォーマンスの低下を招いたり、パーティション内の空き領域不足に陥ったりすることがあり得る。
このような状況を改善するための手段として、パーティショニングの再編成処理を行うことが考えられる。このパーティショニングの再編成処理では、キー値単位での保存先パーティションの変更や、ハッシュ値の生成ロジックの変更が必要となることも多い。そして、このようなキー値単位での保存先パーティションの変更や、ハッシュ値の生成ロジックの変更には、KVSシステムに設けられたハッシュ機構内のルールを変更することが必要である。この作業は、一般に、影響を受けるパーティション群を一定期間停止し、全データを一度アンロード(unload)した後にリロード(reload)する手順で行われる。このような大掛かりな作業を伴うため、パーティショニングの再編成処理は、一定の期間をおいて定期的に行われることが多かった。
しかし、アカウント毎のトランザクション量の急激な増加等、KVSの使用状況が短期間に大きく変動するような場合は、上記のような定期的な一括の再編成処理では十分に対応することができない。このような場合に対応するため、パフォーマンスの低下や空き領域不足等の症状のより重いところから優先的に、症状を改善する新たな技術が求められている。
本発明は、上記の課題に鑑み、KVSにおいて、具体的な使用状況に基づき、アクセス対象ごとに、個別的に保存先を再編成することが可能なシステムを実現することを目的とする。
上記の目的を達成するため、本発明は、次のようなシステムとして実現される。このシステムは、データを管理するシステムであって、データとこのデータに対して一意に対応付けられたキーとの組を格納して管理するデータ管理部と、このキーを指定して行われた、このキーに対応付けられたデータにアクセスするためのアクセス要求を受け付けるアクセス管理部と、を備える。データ管理部は、アクセス対象となるデータの保存場所の情報を含む第1キーをこのデータに対して一意に対応付けられたキーとし、このデータとこの第1キーとの組を格納した第1記憶部と、第1キーをデータとし、この第1キーが対応付けられたデータにアクセスする際にアクセス要求において指定されるキーである第2キーをこの第1キーに対して一意に対応付けられたキーとし、この第1キーとこの第2キーとの組を格納した第2記憶部と、所定の実行条件を満たした場合に、第1記憶部におけるデータと第1キーとの組を第1記憶部の異なる領域に再配置する再配置部と、を備える。第1記憶部は、データと第1キーとの組における一つの組を格納するレコードのサイズが、予め定められた特定のサイズである第1領域と、データと第1キーとの組における一つの組を格納するレコードのサイズが、この組のデータ・サイズに応じて設定されたサイズである第2領域と、を備える。再配置部は、再配置対象のデータと第1キーとの組を、この組のデータ・サイズに適合するレコード・サイズを有する第2領域に再配置する。
より好ましくは、再配置部は、再配置しようとするデータと第1キーとの組のデータ・サイズに適合するレコード・サイズを有する第2領域が存在しない場合は、このレコード・サイズを有する第2領域を増設し、増設した第2領域のレコードに再配置対象の組を格納する。
また、より詳細には、再配置部は、実行条件として、第1記憶部の第1領域または第2領域に格納されたデータとキーとの組のうち、いずれかの組のデータ・サイズが、この組が格納されている第1領域または第2領域に対して設定された閾値よりも大きい場合に、この組を他の第2領域に再配置する。あるいは、再配置部は、実行条件として、第1記憶部の第1領域におけるデータとキーとの組の保存場所を示すハッシュ値のコリジョンの重複度が予め設定された閾値よりも大きい場合に、この組を第2領域に再配置する。
また、上記のシステムは、アクセス要求に基づいて、新規のデータと第2キーとを取得し、第1記憶部の第1領域におけるデータの保存場所を特定して、保存場所の情報を含む第1キーを生成し、第1キーとデータとの組を特定された保存場所に保存し、取得した第2キーと作成した第1キーとの組を作成し、第2記憶部に保存する保存制御部をさらに備える構成としても良い。さらに、上記のシステムにおいて、再配置部は、データと第1キーとの組の再配置を行った場合に、この第1キーに含まれる組の保存場所の情報を再配置後の保存場所の情報に置き換えて第1キーを更新し、第2記憶部に保存されている、再配置された前記データに対応する第2キーと第1キーとの組における第1キーを、再配置後の保存場所に基づいて更新した内容に置き換えるようにしても良い。
また、上記の目的を達成する他の本発明は、次のような方法としても実現される。この方法は、コンピュータにより、データを管理する方法であって、データとこのデータに対して一意に対応付けられたキーとの組を格納して管理するデータ管理部と、このキーを指定して行われた、このキーに対応付けられたデータにアクセスするためのアクセス要求を受け付けるアクセス管理部と、を備え、データ管理部は、アクセス対象となるデータの保存場所の情報を含む第1キーをこのデータに対して一意に対応付けられたキーとし、このデータとこの第1キーとの組を格納した第1記憶部と、第1キーをデータとし、この第1キーが対応付けられたデータにアクセスする際にアクセス要求において指定されるキーである第2キーをこの第1キーに対して一意に対応付けられたキーとし、この第1キーとこの第2キーとの組を格納した第2記憶部と、所定の実行条件を満たした場合に、第1記憶部におけるデータと第1キーとの組を第1記憶部の異なる領域に再配置する再配置部と、を備え、第1記憶部は、データと第1キーとの組における一つの組を格納するレコードのサイズが、予め定められた特定のサイズである第1領域と、データと第1キーとの組における一つの組を格納するレコードのサイズが、この組のデータ・サイズに応じて設定されたサイズである第2領域と、を備えるシステムにおいて、再配置の実行条件として、第1記憶部の第1領域または第2領域に格納されたデータとキーとの組のうち、この組のデータ・サイズが、この組が格納されている第1領域または第2領域に対して設定された閾値よりも大きいか否かを判断するステップと、再配置の実行条件として、第1記憶部の第1領域におけるデータとキーとの組の保存場所を示すハッシュ値のコリジョンの重複度が予め設定された閾値よりも大きいか否かを判断するステップと、これらの実行条件の何れかを満たすデータとキーとの組が存在する場合に、再配置部により、実行条件を満たす組を第2領域に再配置するステップと、を含む。
さらにまた、本発明は、コンピュータを制御して上述した装置の各機能を実現するプログラム、あるいは、コンピュータに上記の各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
本発明によれば、KVSにおいて、具体的な使用状況に基づき、アクセス対象ごとに、個別的に保存先を再編成することが可能となる。
本実施形態が適用されるKVSシステムの構成例を示す図である。 データKVSのキー/データ・ペアにおけるキー部の構成例を示す図である。 データKVSの構造を説明する図であり、図3(a)は、アプリケーションから見たデータKVSのセグメント階層構造の例を示す図、図3(b)は、キーKVSのキー/データ・ペアとデータKVSのキー/データ・ペアとの関係を示す図である。 本実施形態における通常パーティションおよび特殊パーティションの構成例を示す図である。 優先パーティション・リストを説明する図であり、図5(a)は優先パーティション・リストの構成例を示す図、図5(b)は優先パーティション・リストに登録される残数カウンター値の概念を説明する図である。 優先パーティション・リスト生成部による優先パーティション・リストの生成処理を示すフローチャートである。 キー/データ・ペア保存制御部によるキー/データ・ペアの配置処理を示すフローチャートである。 キー/データ・ペア保存制御部によるキー/データ・ペアの配置処理を示すフローチャートである。 再配置推奨キー・リスト生成部による再配置推奨キー・リストの生成処理を示すフローチャートである。 データ再配置部によるキー/データ・ペアの再配置処理を示すフローチャートである。 データKVS定義再編成部によるデータKVSのデータベース定義の再編成処理のうち、キー/データ・ペアをアンロードする際の処理を示すフローチャートである。 データKVS定義再編成部によるデータKVSのデータベース定義の再編成処理のうち、キー/データ・ペアをリロードする際の処理を示すフローチャートである。 本実施形態のKVSシステムを構成するのに好適なハードウェア構成例を示す図である。
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
<システム構成>
図1は、本実施形態が適用されるKVSシステムの構成例を示す図である。本実施形態が適用されるKVSシステム100は、データ管理部110と、優先パーティション・リスト生成部120と、再配置推奨キー・リスト生成部130と、を備える。また、本実施形態のKVSシステム100は、キー/データ・ペア保存制御部140と、データ再配置部150と、キーKVS再作成部160と、データKVS定義再編成部170と、を備える。また、本実施形態のKVSシステム100は、インターフェイス手段としてのアクセス管理部101、データ・アクセス・パス解決部102およびデータ編集部103と、データ管理部110の統計情報を扱う統計情報収集部104と、空き領域再編成部105と、を備える。
図1に示すように、本実施形態のKVSシステム100のアクセス管理部101は、外部装置200のアプリケーション・ソフトウェア(以下、アプリケーションと称す)によるアクセスを受け付け、各種の処理を行う。このアクセス管理部101は、例えばAPI(Application Programming Interface)により実現される。外部装置200のアプリケーションは、KVSシステム100に対して、データに対応付けられたキー(キー/データ・ペアにおけるキー値)によるアクセス要求を行い、データの格納(インサート)の実行や、所望のデータを検索しての読み出し(リード)、更新(アップデート)および削除(デリート)等の処理を実行させることができる。
データ管理部110は、KVSによるデータ格納手段を備える。本実施形態では、KVSシステム100にアクセスするアプリケーションによるアクセス対象となるデータ(アプリケーション・データ)を管理する第1記憶部としてのKVSと、アプリケーションが認識するキー値(アプリケーション・キー)を管理する第2記憶部としてのKVSとを個別に備える。以下、アプリケーション・キーを管理するKVS(第2記憶部)をキーKVS111とし、アプリケーション・データを管理するKVS(第1記憶部)をデータKVS112とする。
KVSは、管理対象のレコードにキー/データ・ペアを保存している。本実施形態において、キーKVS111に保存されるキー/データ・ペアは、キー部をアプリケーション・キーとし、データ部をデータKVS112のキー値を含む値とする。また、データKVS112に保存されるキー/データ・ペアは、キー部を所定の規則に基づいて設定されるキー/データ・ペアごとにユニークな固定長の値とし、データ部をアプリケーション・データとする。すなわち、本実施形態のデータ管理部110は、キーKVS111とデータKVS112という二重構造のKVSによりアプリケーション・キーとアプリケーション・データとを関連付けて管理している。なお、データKVS112のキー/データ・ペアにおけるデータ部には、アプリケーション・キーの値が含まれるものとする。このアプリケーション・キー値は、例えば、キーKVS111のキー/データ・ペアを更新したり、キーKVS111を再作成したりする際に使用される。
キーKVS111において、キー/データ・ペアの保存先を選択するための選択ルールには、例えば、アプリケーション・キーの属性や分布に応じて選択された適当なハッシュ関数が用いられる。一方、データKVS112において、キー/データ・ペアの保存先を選択するための選択ルールには、適当なハッシュ関数を用いた特別の選択ルールが用意される。データKVS112の選択ルールの詳細は後述する。これらの選択ルールは、図示しないハッシュ機構に記述される。
データKVS112のキー/データ・ペアにおけるキー部について、さらに説明する。図2は、データKVS112のキー/データ・ペアにおけるキー部の構成例を示す図である。図2に示すキー部10の値は、三つの部分値10a、10b、10cで構成される。
部分値10aは、キー部10に対応するデータ部に記録されるアプリケーション・データごとに個別に割り当てられた固有値である。この部分値10aは、データKVS112全体でユニークな値であれば、どのようにして設定された値であっても良い。例えば、配置(インサート)時や再配置時のUTCタイムスタンプの値にアプリケーションのコンテナの識別情報の値を付加して個別性を保証した値などとすることができる。また、ハッシュ値による検索効率が良いならば、アプリケーション・キーの値をそのまま部分値10aとして用いても良い。図2に示す例では、サーバー・インスタンスID(‘IMSA’)、アプリケーション・コンテナの識別情報(‘1234’x)、UTCタイムスタンプ(‘20130325132418092134’x)を組み合わせた値が部分値10aとして示されている。
部分値10bは、キー/データ・ペアが保存されるパーティション(以下、所属パーティション)の識別情報の値である。部分値10cは、所属パーティションでのアプリケーション・キーのハッシュ値である。データKVS112は、部分値10cが非負値である場合は、部分値10bおよび部分値10cにより、キー/データ・ペアの保存先としての所属パーティションおよびそのパーティション内でのハッシュ・バケットを決定する。一方、データKVS112は、部分値10cが負値である場合は、部分値10a、10bを組み合わせた値のハッシュ値を計算し、部分値10cを算出されたハッシュ値に置き換えて所属パーティション内でのハッシュ・バケットを決定する。
図1に戻り、本実施形態のデータ管理部110は、データKVS112により管理されるパーティションとして、初期的に用いられる第1領域としての通常パーティション112aと、特別のキー/データ・ペアの再配置先として用いられる第2領域としての特殊パーティション112bとを有する。通常パーティション112aに対しては、外部装置200のアプリケーションによるデータの格納(インサート)指示に基づいてキー/データ・ペアの格納が行われる。特殊パーティション112bに対しては、データ再配置部150の制御により、通常パーティション112aから移される形でキー/データ・ペアの格納が行われる。通常パーティション112aおよび特殊パーティション112bの詳細については後述する。なお、以下の説明において、通常パーティション112aと特殊パーティション112bとを特に区別する必要がない場合は、パーティション112a、112bと記載する。
本実施形態のKVSシステム100は、アクセス管理部101により外部装置200からのアプリケーション・データの検索要求を受け付けると、データ・アクセス・パス解決部102によりそのアプリケーション・データへのアクセス・パスを決定(解決)し、検索処理を実行する。データ・アクセス・パス解決部102によるアクセス・パスの決定は、データ管理部110のデータベース(データストア)構造を定義したデータベース定義(DBD)に基づいて行われる。データ・アクセス・パス解決部102の機能は、本実施形態のデータ管理部110のデータベース構造に基づくデータベース定義を用いることを除き、既存のKVSシステムにおけるアクセス・パスの決定手段と同様である。
また、KVSシステム100は、外部装置200からのアプリケーション・データの検索要求に基づく検索結果が得られると、データ編集部103により外部装置200へ返す検索結果のデータを編集し、アクセス管理部101により外部装置200へ返送する。検索結果のデータの編集は、外部装置200のアプリケーションに対して設定されたビュー定義(PSB)に基づいて行われる。データ編集部103の機能は、既存のKVSシステムにおける検索結果のデータの編集手段と同様である。
統計情報収集部104は、定期的にデータKVS112のパーティション112a、112bの空き領域について統計情報を収集する。統計情報としては、既存のKVSシステムにおいて収集される統計情報と同様に、例えば、オーバー・フロー領域の使用状況、空き領域の状況、これらのI/Oパフォーマンスへの影響、ハッシュ・コリジョンの重複度(シノニム長)とその分布等の情報が収集される。
空き領域再編成部105は、アプリケーション・データの再配置が行われた際等に、データKVS112における各パーティション112内の空き領域を再編成する。空き領域再編成部105の機能は、既存のKVSシステムにおいてデータの再配置等に伴い記憶装置の空き領域を再編成する手段と同様である。
また、本実施形態のKVSシステム100において、優先パーティション・リスト生成部120は、統計情報収集部104により収集された統計情報に基づいて、優先パーティション・リストを生成する。また、優先パーティション・リスト生成部120は、KVSシステム100の運用に伴って統計情報収集部104により収集された統計情報が更新された場合は、更新された統計情報に基づいて優先パーティション・リストを更新する。この優先パーティション・リストは、新規にアプリケーション・データ(キー/データ・ペア)が保存される際に、そのアプリケーション・データの格納先として優先的に選択される対象となるパーティションのリストである。また、優先パーティション・リストは、データKVS112に対して一つ生成される。優先パーティション・リストの詳細については後述する。
再配置推奨キー・リスト生成部130は、統計情報収集部104により収集された統計情報に基づいて、再配置推奨キー・リストを生成する。また、再配置推奨キー・リスト生成部130は、KVSシステム100の運用に伴って統計情報収集部104により収集された統計情報が更新された場合は、更新された統計情報に基づいて再配置推奨キー・リストを更新する。この再配置推奨キー・リストは、データ量が非常に多いキー値およびコリジョンの多いハッシュ値を持つキー値のリストである。また、再配置推奨キー・リストは、特殊パーティション112bを含むデータKVS112の全てのパーティションの各々に対して一つずつ生成される。再配置推奨キー・リストの詳細については後述する。
キー/データ・ペア保存制御部140は、新規にアプリケーション・データ(キー/データ・ペア)が保存される際に、上記の優先パーティション・リストを参照して、空きハッシュ・バケットのより多い通常パーティション112aに優先的にアプリケーション・データを格納する。これにより、アプリケーション・データの新規格納に伴ってデータKVS112の通常パーティション112a間におけるデータ量の偏りが発生することを、軽減することができる。
データ再配置部150は、上記の再配置推奨キー・リストで特定されるデータKVS112の各パーティション112a、112b内のアプリケーション・データを、そのデータの特性に応じた適切な特殊パーティション112bに再配置する。このアプリケーション・データの再配置は、再配置推奨キー・リストの更新に応じて、随時、選択的に実行される。これにより、ハッシュ・コリジョンや、データKVS112のオーバー・フロー領域へのデータのあふれを解消または緩和することができる。
キーKVS再作成部160は、データKVS112のパーティション112a、112b内のキー/データ・ペアから、データ部(アプリケーション・データ)に含まれるアプリケーション・キーの値を抽出する。そして、アプリケーション・キーを抽出したデータKVS112におけるキー/データ・ペアのキー部(以下、データKVSキーと呼ぶ)の値と抽出したアプリケーション・キーの値を用いて、キーKVS111のキー/データ・ペアを再作成する。
データKVS定義再編成部170は、データKVS112のパーティション112a、112bからアンロードしたキー/データ・ペアを、新しいデータベース定義に従ってアロケーションされたパーティション112a、112bにリロードすることにより、データKVS112を再編成する。そして、データKVS112へのキー/データ・ペアのリロード後に、再編成されたデータKVS112のパーティション112a、112bの内容に基づき、キーKVS再作成部160によりキーKVS111のキー/データ・ペアが再作成される。
<キーKVSの構造>
次に、本実施形態のデータ管理部110におけるキーKVS111の構造について説明する。本実施形態のキーKVS111は、固定長ルート・セグメントのみを備える。この固定長ルート・セグメントは、アプリケーション・キーを保管するフィールドを持つ。このフィールドは、キーKVS111の順序キー(主キー)・フィールドに相当し、かつ、データ管理部110における(データKVS112に対する)2次索引としての順序キー・フィールドに相当する。また、この固定長ルート・セグメントは、アプリケーション・キー値に対応するデータKVS112のキー値を保管するフィールドを持つ。このフィールドは、キーKVS111のキー/データ・ペアにおけるデータ部に相当し、かつ、データ管理部110における2次索引としての索引ポインター・フィールドに相当する。
本実施形態では、直接アクセスによるキーKVSのキー値の更新を高速に行うことを可能とするため、キーKVS111として、ハッシュ・テーブル方式のKVSを用いる。キーKVS111のハッシュ機構としては、通常のデータベース等で用いられるハッシュ・ルーチンを利用することが可能である。ただし、アプリケーション・キーがグルーピング可能なものである場合は、保守・運用の観点から、グループ毎にパーティションに分け、キー値中のグループ識別情報でパーティションを選択してからキー・ハッシュを行うようにしても良い(2段階ハッシング)。また、キー範囲を指定しての検索、キー順アクセスの効率性の観点から、ルート・セグメントの物理的な保管位置が上記のグループごとにキー値順にクラスタリングされるような特殊なハッシュ・ルーチンを用いても良い。
<データKVSの構造>
次に、本実施形態のデータ管理部110におけるデータKVS112の構造について説明する。図3は、データKVS112の構造を説明する図である。図3(a)は、アプリケーションから見たデータKVS112のセグメント階層構造の例を示し、図3(b)は、キーKVS111のキー/データ・ペアとデータKVS112のキー/データ・ペアとの関係を示す。図3(b)に示すように、キーKVS111は、データKVS112に対する2次索引に相当する。
本実施形態のデータKVS112には、複数のパーティションが設定される。図3(a)の例に示す、アプリケーションから見たセグメント階層構造(木構造)、いわゆるデータベース・レコードが、データKVS112のキー/データ・ペアにおけるデータ部に相当する。ただし、ルート・セグメント中のアプリケーション・キーは、通常のフィールド(アプリケーション・キー・フィールド)として定義する。また、図2を参照して説明したデータKVSキーの構造に基づいて定義される順序キー・フィールドをルート・セグメントの先頭に定義し、この定義された順序キー・フィールドを、データKVS112における順序キー・フィールドとする。そして、上記のアプリケーション・キー・フィールドを、図3(b)に示すように2次索引として見たキーKVS111の検索フィールドとし、データ部のルート・セグメントをターゲット・セグメントとする。
データKVS112のハッシュ機構において、ハッシュ・ルーチンは、例えば、既存のデータベースにおけるハッシュ機構に用いられる通常のランダマイジング・ルーチンを利用することができる。
<データKVSのパーティション構造>
次に、データKVS112のパーティション112a、112bの構造について、詳細に説明する。上述したように、本実施形態のKVSシステム100のデータ管理部110に設けられたデータKVS112は、通常パーティション112aと特殊パーティション112bという2種類のパーティションを有している。各パーティション112a、112bは、格納されるキー/データ・ペアが増加するにしたがって、適宜増設される。
通常パーティション112aには、キー/データ・ペアを格納するレコードのサイズとして、予め定められた固定長のハッシュ・バケット・サイズ(VSAM CIサイズ)が設定されている。このハッシュ・バケット・サイズは、KVSシステム100における平均的なアプリケーション・データ長(データベース・レコード長)に基づいて決定される。例えば、初期的には適当なアプリケーション・データ長を設定しておき、実際にKVSシステム100が運用されて、パーティショニングの再編成等が行われる際に、統計情報収集部104により収集された統計情報に基づいて設定し直すことができる。
特殊パーティション112bには、キー/データ・ペアを格納するレコードのサイズとして、具体的なアプリケーション・データ長に応じて特定されるハッシュ・バケット・サイズが、個々の特殊パーティション112bごとに個別に設定される。また、既にもうけられている通常パーティション112aまたは特殊パーティション112bのハッシュ・バケット・サイズよりも大きなアプリケーション・データが発生した場合は、そのアプリケーション・データのキー/データ・ペアを格納可能なハッシュ・バケット・サイズの特殊パーティション112bが新たに設けられる。
図4は、本実施形態における通常パーティション112aおよび特殊パーティション112bの構成例を示す図である。各パーティション112a、112bには、後述するように設定されるサイズのハッシュ・バケットが設けられると共に、ハッシュ・バケットのサイズを超える大きなデータを一時的に受け付けるためのオーバー・フロー領域が設けられている。各パーティション112a、112bのハッシュ・バケットの個数とオーバー・フロー領域のサイズは、データ量に応じて調整される。例えば、初期的には適当なハッシュ・バケットの個数とオーバー・フロー領域のサイズとを設定しておき、実際にKVSシステム100が運用されて、パーティショニングの再編成等が行われる際に、統計情報収集部104により収集された統計情報に基づいて設定し直すことができる。
図4に示す例において、通常パーティション112aは複数設けられている。そして、各通常パーティション112aのハッシュ・バケット・サイズは、例示として4KBに設定されている。
また、図4に示す例において、特殊パーティション112bは、ハッシュ・バケット・サイズが4KBのもの、ハッシュ・バケット・サイズが8KBのもの、ハッシュ・バケット・サイズが12KBのもの、ハッシュ・バケット・サイズが16KBのもの、ハッシュ・バケット・サイズが20KBのもの、ハッシュ・バケット・サイズが24KBのものが、それぞれ設定されている。例えば、ハッシュ・バケット・サイズが4KBの特殊パーティション112bは、データKVSキーの長さを考慮して、アプリケーション・データ長が3.2KB以下のアプリケーション・データの格納用に用いられる。また、ハッシュ・バケット・サイズが8KBの特殊パーティション112bは、3.2KBより大きく、6.4KB以下のアプリケーション・データの格納用に用いられる。また、ハッシュ・バケット・サイズが12KBの特殊パーティション112bは、6.4KBより大きく、9.6KB以下のアプリケーション・データの格納用に用いられる。また、ハッシュ・バケット・サイズが16KBの特殊パーティション112bは、9.6KBより大きく、12.8KB以下のアプリケーション・データの格納用に用いられる。また、ハッシュ・バケット・サイズが20KBの特殊パーティション112bは、12.8KBより大きく、16KB以下のアプリケーション・データの格納用に用いられる。また、ハッシュ・バケット・サイズが24KBの特殊パーティション112bは、16KBより大きいアプリケーション・データの格納用に用いられる。
図4に示すように、特殊パーティション112bは、通常パーティション112aよりもハッシュ・バケット・サイズが大きいものだけでなく、通常パーティション112aと同じサイズ(図示の例では4KB)のものを設けることができる。また、図4には、ハッシュ・バケット・サイズごとに一つの特殊パーティション112bが記載されているが、対応するアプリケーション・データの量に応じて、各ハッシュ・バケット・サイズに対して複数の特殊パーティション112bを設けることもできる。なお、特に図示していないが、ハッシュ・バケット・サイズが24KBの特殊パーティション112bに格納できないアプリケーション・データ(例えば19.2KBより大きいアプリケーション・データ)が発生した場合は、そのアプリケーション・データの格納用に、ハッシュ・バケット・サイズのさらに大きい特殊パーティション112bを新たに増設することができる。
<アプリケーション・データの格納および再配置>
本実施形態では、KVSシステム100のデータ管理部110にアプリケーション・データ(キー/データ・ペア)が保存される場合、新規なキー/データ・ペアは、まず通常パーティション112aに配置される。そして、ハッシュ・コリジョンの重複度が大きくなってアプリケーション・データを再配置する必要が生じた場合や、通常パーティション112aのデータベース・レコード長を超えるアプリケーション・データを格納する必要が生じた場合等に、これらのアプリケーション・データのキー/データ・ペアは、特殊パーティション112bに再配置される。
通常パーティション112aにキー/データ・ペアを配置する際の保存先は、優先パーティション・リスト生成部120により生成される優先パーティション・リストに基づいて決定される。また、特殊パーティション112bへの再配置が必要なキー/データ・ペアは、再配置推奨キー・リスト生成部130により生成される再配置推奨キー・リストに基づいて決定される。特殊パーティション112bにキー/データ・ペアを再配置する際の保存先は、再配置されるキー/データ・ペアのサイズ等に応じて決定される。
<優先パーティション・リストの生成>
ここで、優先パーティション・リスト生成部120による優先パーティション・リストの生成処理について説明する。優先パーティション・リスト生成部120は、まず、統計情報収集部104から、空きハッシュ・バケットの個数とハッシュ・コリジョンの重複数の平均値に対して設定された閾値とを受け取る。そして、この統計情報および閾値に基づいて、閾値を超えるデータKVS112の通常パーティション112aに関する優先パーティション・リストを作成する。なお、上記の閾値は、予め定められた規則にしたがって機械的に設定しても良いし、ユーザによる入力を受け付けて設定しても良い。
図5は、優先パーティション・リストを説明する図であり、図5(a)は優先パーティション・リストの構成例を示す図、図5(b)は優先パーティション・リストに登録される残数カウンター値の概念を説明する図である。図5(a)に示す例において、優先パーティション・リスト121の各エントリーは、「パーティション識別子」、「残数カウンター」の二つのフィールドを持ち、「残数カウンター」の値の降順にソートされている。なお、図5(a)に示す優先パーティション・リスト121の構成は、例示に過ぎず、図示の情報以外の情報(例えば、コリジョン数の最大値、最小値、平均値など)を含んで構成されても良い。また、各エントリーにおけるフィールドの順番は任意で良い。
図5(b)に示すように、残数カウンターは、各エントリーに対応する各パーティションの空きハッシュ・バケット数から、空きハッシュ・バケット数に対して設定された閾値を引いた値である。図5(b)に示す例では、9個の空きハッシュ・バケットを有するパーティション(図5(a)によればパーティション「0003」)、8個の空きハッシュ・バケットを有するパーティション(図5(a)によればパーティション「0005」)、6個の空きハッシュ・バケットを有するパーティション(図5(a)によればパーティション「0001」)、5個の空きハッシュ・バケットを有するパーティション(図5(a)によればパーティション「0007」)、2個の空きハッシュ・バケットを有するパーティション(図5(a)によればパーティション「0004」)、が存在する。そして、合計で30個の空きハッシュ・バケットがあることがわかる。
この残数カウンターの値は、その残数カウンターに対応する通常パーティション112aに新規のキー/データ・ペアが保存されるたびに、1だけ減じられる。そして、残数カウンター値の総和が、予め設定された閾値(例えば、一定期間における新規なキー/データ・ペアのインサート数の平均値など)を下回った時には、データ管理部110に、通常パーティション112aが増設される。そして、増設された通常パーティション112a用のエントリーが優先パーティション・リストに追加される。
図6は、優先パーティション・リスト生成部120による優先パーティション・リストの生成処理を示すフローチャートである。優先パーティション・リストの生成処理は、例えば、定期的に、あるいは一定数の新規のキー/データ・ペアの保存が行われた場合等のタイミングで行われる。
図6に示す例において、優先パーティション・リスト生成部120は、まず、一つの通常パーティション112aを選択し(ステップ601)、統計情報収集部104から選択した通常パーティション112aに関するハッシュ・コリジョン数の分布情報を取得する(ステップ602)。そして、優先パーティション・リスト生成部120は、取得したハッシュ・コリジョン数の分布情報から、ひとつもキーが割り当てられていないハッシュ値の数(空きハッシュ・バケット数に相当)と、ハッシュ・コリジョンの重複度の平均値とを抽出する(ステップ603)。
次に、優先パーティション・リスト生成部120は、抽出したハッシュ・コリジョンの重複度の平均値(M1)が閾値(T1)よりも小さく、かつ、抽出した空きハッシュ・バケット数(HB1)が閾値(T2)を超えているか否かを判断する(ステップ604)。ハッシュ・コリジョンの重複度の平均値(M1)が閾値(T1)以上か、または、空きハッシュ・バケット数(HB1)が閾値(T2)以下である場合は、優先パーティション・リスト生成部120は、ステップ601に戻り、未処理の一つの通常パーティション112aを選択して同様の処理を行う。
抽出したハッシュ・コリジョンの重複度の平均値(M1)が閾値(T1)よりも小さく、かつ、抽出した空きハッシュ・バケット数(HB1)が閾値(T2)を超えている場合は、優先パーティション・リスト生成部120は、抽出した空きハッシュ・バケット数(HB1)から閾値(T2)を引いた値(残数カウンター値)と、着目中の通常パーティション112aのパーティション識別子と、を付加したレコードを作成し、中間ファイルに書き出す(ステップ605)。そして、優先パーティション・リスト生成部120は、全ての通常パーティション112aに関してステップ605までの処理を行ったか否かを判断し、通常パーティション112aが存在している場合は、ステップ601に戻り、処理を繰り返す(ステップ606)。
全ての通常パーティション112aに対してステップ606までの処理が済んだ後、優先パーティション・リスト生成部120は、ステップ606までの処理で作成された中間ファイルが空か、または、残数カウンター値の総和(CS1)が閾値(T3)を下回っているか否かを判断する(ステップ607)。中間ファイルが空でなく、かつ、残数カウンター値の総和が閾値(T3)以上である場合、優先パーティション・リスト生成部120は、中間ファイルに記録されているレコードを空きハッシュ・バケット数の降順にソートして、優先パーティション・リストを作成する(ステップ608)。
一方、中間ファイルが空か、または、残数カウンター値の総和が閾値(T3)を下回っている場合は、優先パーティション・リスト生成部120は、新規の通常パーティション112aを一つ追加する(ステップ609)。追加された新規の通常パーティション112aには固有のパーティション識別子が与えられる。そして、優先パーティション・リスト生成部120は、追加したパーティションのハッシュ・バケット数から閾値(T2)を引いた数(残数カウンター値)と、追加したパーティションのパーティション識別子と、を含む優先パーティション・リストのエントリーを1つ作り、中間ファイルに追加する(ステップ610)。この後、優先パーティション・リスト生成部120は、中間ファイルに記録されているレコードを空きハッシュ・バケット数の降順にソートして、優先パーティション・リストを作成する(ステップ608)。
上記のようにして作成された優先パーティション・リストは、キー/データ・ペア保存制御部140のメモリに保存され、データKVS112に対して新規にキー/データ・ペアを保存する際に、保存先を決定するために使用される。優先パーティション・リストの更新は、次のようにして行われる。まず、上記のようにして新たな優先パーティション・リストが作成されると、キー/データ・ペア保存制御部140は、この新たな優先パーティション・リストをメモリにロードする。そして、キー/データ・ペア保存制御部140は、メモリにロードした優先パーティション・リストに対し、現エントリー・ポインタを設定し、このポインタの指すエントリーで指定されるパーティションを、次のキー/データ・ペアの格納先とする。なお、キー/データ・ペア保存制御部140における優先パーティション・リストの更新処理は、例えば、夜間などのトランザクション量の少ない時間帯に行うことにより、本実施形態のKVSシステム100を利用するアプリケーション処理への影響を抑制することが可能である。
<キー/データ・ペアの配置処理>
次に、キー/データ・ペア保存制御部140による通常パーティション112aへのキー/データ・ペアの配置処理(アプリケーション・データを新規に通常パーティション112aに格納する処理)について説明する。キー/データ・ペア保存制御部140は、外部装置200のアプリケーションからアプリケーション・データの格納要求を受け付けると、メモリに保存されている優先パーティション・リストを参照して格納先の通常パーティション112aを決定した後、データKVS112のハッシュ機構によりハッシュ・バケットを特定するハッシュ値を生成し、そのアプリケーション・データについてのキー/データ・ペアを格納する。
図7および図8は、キー/データ・ペア保存制御部140によるキー/データ・ペアの配置処理を示すフローチャートである。図7に示すように、キー/データ・ペア保存制御部140は、アプリケーション・データ(キー/データ・ペア)の格納要求を受け付けると(ステップ701)、データKVS112のキー値生成用領域(フィールド)を準備する(ステップ702)。
次に、キー/データ・ペア保存制御部140は、優先パーティション・リストにおいて現エントリー・ポインタにより指されるエントリー(現エントリー)の残数カウンター値(PC値)がゼロ(0)か否かを判断する(ステップ703)。現エントリーの残数カウンター値がゼロでない場合、次にキー/データ・ペア保存制御部140は、現エントリーが優先パーティション・リストにおける最上位のエントリーか否かを判断する(ステップ704)。現エントリーが最上位のエントリーである場合、キー/データ・ペア保存制御部140は、現エントリーの残数カウンター値を1減ずる(ステップ707)。
現エントリーが最上位のエントリーでない場合、次にキー/データ・ペア保存制御部140は、現エントリーの残数カウンター値(PC値)が優先パーティション・リストにおける一つ上位のエントリーの残数カウンター値(HC値)よりも1だけ多い値か否かを判断する(ステップ705)。現エントリーの残数カウンター値が一つ上位のエントリーの残数カウンター値よりも1だけ多い値である場合、キー/データ・ペア保存制御部140は、現エントリーの残数カウンター値を1減ずる(ステップ707)。
一方、現エントリーの残数カウンター値が一つ上位のエントリーの残数カウンター値よりも1だけ多い値でない場合、キー/データ・ペア保存制御部140は、優先パーティション・リストの最上位のエントリーを現エントリーとして(ステップ706)、現エントリー(最上位のエントリー)の残数カウンター値を1減ずる(ステップ707)。
ステップ703で現エントリーの残数カウンター値がゼロであった場合、および、ステップ707で現エントリーの残数カウンター値を1減じた後、図8に示すように、キー/データ・ペア保存制御部140は、現エントリーのパーティション識別子を含む所定の値をデータKVS112のキー値のフィールドにセットする(ステップ708)。具体的には、図2を参照して説明したデータKVS112のキー部10において、パーティション識別子が部分値10bとしてセットされる。また、固有値が部分値10aとしてセットされる。また、値「−1」が部分値10cとしてセットされる。
次に、キー/データ・ペア保存制御部140は、ステップ708でセットしたキー値をデータKVS112のハッシュ機構に渡してハッシュ値を取得する(ステップ709)。そして、キー/データ・ペア保存制御部140は、取得したハッシュ値をデータKVS112のキー値にセットする(ステップ710)。図2を参照して説明したように、データKVS112のハッシュ機構は、データKVS112のキー部10の部分値10cが負値である場合は、部分値10a、10bを組み合わせた値のハッシュ値を計算し、部分値10cを算出されたハッシュ値に置き換える。したがって、上記のように部分値10cに値「−1」をセットしたことにより、キー/データ・ペア保存制御部140は、ステップ708でハッシュ値を計算し、算出されたハッシュ値で部分値10cを置き換える。
次に、キー/データ・ペア保存制御部140は、ステップ709、710で得られたパーティション識別子とハッシュ値に基づいて、キー/データ・ペアの格納先の通常パーティション112aおよびハッシュ・バケットを特定し、データKVSキーおよびアプリケーション・データ(キー/データ・ペア)を格納する(ステップ711)。なお、格納先として特定されたハッシュ・バケットにキー/データ・ペアを格納できない場合(ハッシュ・バケット上に、アプリケーション・データを全て格納できるだけの空きスペースが存在しない場合等)、キー/データ・ペア保存制御部140は、ステップ709で得られたパーティション識別子により特定された通常パーティション112aのオーバー・フロー領域に、そのキー/データ・ペアを格納する。また、キー/データ・ペア保存制御部140は、通常パーティション112a(特定されたハッシュ・バケットまたはオーバー・フロー領域)にキー/データ・ペアを格納した際に、そのアプリケーション・データに含まれるアプリケーション・キー値をキー値とし、データKVSキーをデータとするキー/データ・ペアを生成して、キーKVS111に保存する。
この後、キー/データ・ペア保存制御部140は、以上の処理における現エントリーの次のエントリー(現エントリーが優先パーティション・リストの最下位のエントリーである場合は最上位のエントリー)を新たな現エントリーとして処理を終了する(ステップ712)。そして、次のアプリケーション・データ(キー/データ・ペア)の格納要求が行われるのを待つ。
なお、図7および図8のフローチャートに示した処理の例は、空きハッシュ・バケットが選ばれることを保証するものではなく、残数カウンターの現在値は、必ずしもその時点の空きパーティション数に符合したものではない。キー/データ・ペアの格納時に選択されるハッシュ値は、データKVSキーの値とハッシュ機構のハッシュ・ルーチンにより決定される。キー/データ・ペアを格納したことにより発生し得るコリジョンは、後述のデータ再配置部150の処理によって解消する。
<再配置推奨キー・リストの生成>
次に、再配置推奨キー・リスト生成部130による再配置推奨キー・リストの生成処理について説明する。この再配置推奨キー・リストの生成処理は、通常パーティション112aおよび特殊パーティション112bの双方を対象とする。再配置推奨キー・リスト生成部130は、まず、統計情報収集部104から、データ量が一定以上のデータベース・レコードに関し、その主キー値、インサート先パーティション名(エリア名)、ハッシュ値(RAP番号)等の情報を収集してデータ量の多い順にソートしたリストを受け取る。また、再配置推奨キー・リスト生成部130は、データベース・レコード長とハッシュ・コリジョンの重複度(シノニム長+1)に対して設定された各々の閾値を受け取る。そして、この統計情報および閾値に基づいて、閾値を超えるデータKVS112のデータに関する再配置推奨キー・リストを作成する。なお、上記の閾値は、データベース・ブロック長等のようなパーティションの物理特性に応じて自動的に設定しても良いし(例えば、ハッシュ・バケット・サイズの80%等とすることができる)、ユーザによる入力を受け付けて設定しても良い。
再配置推奨キー・リストの各エントリーは、例えば、データKVSキーの値、データKVSキーに対応するアプリケーション・キーの値、アプリケーション・データのデータ長、ハッシュ・コリジョン重複度、推奨理由フラグ、再配置先パーティション識別子等の各値が登録されるフィールドを持つ。そして、アプリケーション・データのデータ長の長いものから順にソートされている。なお、再配置推奨キー・リストのエントリーは、これら以外の情報を含んで構成されても良い。また、各エントリーにおけるフィールドの順番は任意で良い。
図9は、再配置推奨キー・リスト生成部130による再配置推奨キー・リストの生成処理を示すフローチャートである。再配置推奨キー・リストの生成処理は、例えば、定期的に、あるいはいずれかのパーティション112a、112bのオーバー・フロー領域に格納されたデータの量が一定量以上となった場合等のタイミングで行われる。
図9に示す例において、再配置推奨キー・リスト生成部130は、まず、統計情報収集部104から各パーティション112a、112bに関する統計情報を取得し、付加情報を付加して再配置推奨キー・リストのレコードを作成し、中間ファイルに保管する(ステップ901)。取得される統計情報には、保存されているアプリケーション・データのデータ長、パーティション識別子、ハッシュ値、キー/データ・ペアのキー値等が含まれる。付加情報には、アプリケーション・データに対応するアプリケーション・キー、ハッシュ・コリジョンの重複度等が含まれる。これらの情報に基づいて作成されたレコードは、データ長を第1ソート・キー、ハッシュ・コリジョンの重複度を第2ソート・キーとしてソートされる。
次に、再配置推奨キー・リスト生成部130は、処理が中間ファイルの最後に達したか否かを判断する(ステップ902)。そして、最後に達していなければ、中間ファイルから次のレコードを処理対象として読み出す(ステップ903)。初期的には、中間ファイルの先頭のレコードが読み出される。
再配置推奨キー・リスト生成部130は、まず、読み出したレコードに登録されているデータ長が、予め設定された閾値よりも大きいか否かを判断する(ステップ904)。そして、データ長が閾値よりも大きいならば、再配置推奨キー・リスト生成部130は、レコードの推奨理由フラグのフィールドに「データ長」を示すフラグをセットする(ステップ905)。
次に、再配置推奨キー・リスト生成部130は、読み出したレコードに登録されているハッシュ・コリジョンの重複度が、予め設定された閾値よりも大きいか否かを判断する(ステップ906)。そして、ハッシュ・コリジョンの重複度が閾値よりも大きいならば、再配置推奨キー・リスト生成部130は、レコードの推奨理由フラグのフィールドに「コリジョン」を示すフラグをセットする(ステップ907)。
次に、再配置推奨キー・リスト生成部130は、読み出したレコードの推奨理由フラグのフィールドにいずれかのフラグがセットされているか否かを判断する(ステップ908)。すなわち、ステップ905またはステップ907の処理が行われたならば、推奨理由フラグのフィールドには、「データ長」と「コリジョン」のいずれかを示すフラグがセットされている。推奨理由フラグのフィールドにフラグがセットされているならば、処理対象のレコードから、推奨理由フラグ以外の登録されている情報を取得し、これらの情報と推奨理由フラグの情報とを含むエントリーを再配置推奨キー・リストに追加する(ステップ909)。
ステップ908で推奨理由フラグのフィールドにいずれのフラグもセットされていない場合、またはステップ909で再配置推奨キー・リストのエントリーを追加した後、再配置推奨キー・リスト生成部130は、ステップ902に戻り、処理が中間ファイルの最後に達したか否かを判断する。そして、中間ファイルの最後に達していなければ、ステップ903で次のレコードを読み出し、中間ファイルの最後に達したならば、再配置推奨キー・リストの生成処理を終了する。すなわち、再配置推奨キー・リスト生成部130は、中間ファイルの先頭から最後まで順にレコードを読み出して、読み出したレコードに対してステップ904からステップ909までの処理を行うことにより、再配置推奨キー・リストを生成する。
なお、上記の動作において、中間ファイルの全てのレコードにおいて、ステップ904およびステップ906の条件をいずれも満たさず、ステップ905およびステップ907の処理が行われなかった場合は、結果的に再配置推奨キー・リストは作成されない。したがって、次回以降の再配置推奨キー・リストの生成処理において、ステップ904またはステップ906の条件を満たして再配置推奨キー・リストが生成されるまでキー/データ・ペアの再配置処理は行われない。
<キー/データ・ペアの再配置処理>
次に、データ再配置部150によるアプリケーション・データ(キー/データ・ペア)の再配置処理について説明する。データ再配置部150は、上記のようにして生成された再配置推奨キー・リストに基づいて、特殊パーティション112bへの再配置が推奨されるキー/データ・ペアの再配置を行う。通常パーティション112aと特殊パーティション112bのいずれに格納されたキー/データ・ペアも再配置の対象となり得る。一方、再配置先のパーティションは、特殊パーティション112bのみである。
図10は、データ再配置部150によるキー/データ・ペアの再配置処理を示すフローチャートである。図10に示すようにデータ再配置部150は、まず、再配置処理の対象として、再配置推奨キー・リストのエントリーの一つに着目する(ステップ1001)。そして、データ再配置部150は、着目したエントリーからデータ長の情報を取り出し、取り出したデータ長に適合する特殊パーティション112bのハッシュ・バケット・サイズを決定し(ステップ1002)、そのハッシュ・バケット・サイズを持つ特殊パーティション112bがあるか否かを判断する(ステップ1003)。そのハッシュ・バケット・サイズを持つ特殊パーティション112bが無い場合は、そのハッシュ・バケット・サイズを持つ特殊パーティション112bを追加する(ステップ1004)。
次に、データ再配置部150は、ステップ1003で見つかった特殊パーティション112bまたはステップ1004で追加された特殊パーティション112bを再配置先の特殊パーティション112bとして選択する。そして、選択した特殊パーティション112bのスペース・マップを調べ、最初の空きハッシュ・バケット(キー/データ・ペアの保存先の領域)を特定する(ステップ1005)。ここで、スペース・マップとは、特殊パーティション112bごとに設けられ、各ハッシュ・バケットが使用済みか否かを管理するテーブルである。このスペース・マップは、再配置処理ごとに参照される。また、再配置先として指定されてキー/データ・ペアが格納されたハッシュ・バケットに対応するスペース・マップの項目に対しては、使用済みフラグを立てることにより、未使用の空きハッシュ・バケットと識別できるようにする。
次に、データ再配置部150は、キーKVS111に対して、着目したエントリーに登録されているアプリケーション・キー値を指定し、そのアプリケーション・キーのハッシュ・バケットの更新をロックするように制御する(ステップ1006)。そして、データ再配置部150は、データKVS112に対して、着目したエントリーに登録されているデータKVSキー値を指定し、そのデータKVSキー値のデータを全て取り出す(ステップ1007)。
次に、データ再配置部150は、ステップ1007で取り出した再配置対象データのルート・セグメントに記述されているデータKVSキー値のパーティション識別子およびハッシュ値を、ステップ1005で選択した特殊パーティション112bのパーティション識別子およびステップ1005で特定した空きハッシュ・バケットのハッシュ値で置き換える(ステップ1008)。
次に、データ再配置部150は、ステップ1008でデータKVSキー値を更新した再配置対象データを、セグメント階層順にデータKVS112に格納する(ステップ1009)。なお、この再配置対象データは、新しいデータKVSキーで特定される特殊パーティション112bにおいて、このデータKVSキーで指定された空きハッシュ・バケットに格納される。そして、データ再配置部150は、ステップ1006でロックしたキーKVS111のキー/データ・ペアのデータ部に記述されているデータKVSキー値を、ステップ1008で置き換えられた新たなデータKVSキー値で置き換えた後、ロックを解除する(ステップ1010)。
次に、データ再配置部150は、再配置前のデータKVSキー値で特定される古いデータを、データKVS112から削除する(ステップ1011)。そして、データ再配置部150は、以上の処理によるキーKVS111およびデータKVS112の更新をコミットして処理を終了する(ステップ1012)。
以上のようにして、再配置対象として着目したエントリーのキー/データ・ペアの再配置が完了する。この再配置処理は、どのパーティション112a、112bから始めてもよく、各パーティション112a、112bに対する再配置推奨キー・リストのエントリーのいずれをどの順番に処理しても良い。ただし、全パーティション112a、112bにおける再配置推奨キー・リストの全エントリーを全て処理する場合は、特殊パーティション112bのCIサイズ(ハッシュ・バケット・サイズ)の大きいものから順に処理し、特殊パーティション112bに対する処理が全て終了した後に、通常パーティション112aに対する処理を行う。なお、最長のCIサイズを持つ特殊パーティション112bの再配置推奨キーについては、再配置を行わず、データ長の分布に応じて、その特殊パーティション112bのオーバー・フロー領域を拡張することによって対応することも可能である。
<キーKVSの再作成処理とデータKVSの定義再編成処理>
次に、キーKVS再作成部160によるキーKVS111の再作成処理と、データKVS定義再編成部170によるデータKVS112のデータベース定義の再編成処理について説明する。キー/データ・ペア保存制御部140によるキー/データ・ペアの配置処理が行われると、新規に保存されたアプリケーション・データへのアクセスを可能とするために、キーKVS111を再作成することが必要である。また、上記のようにキー/データ・ペアの再配置が行われると、アプリケーションによるアクセス対象のアプリケーション・データの保存場所が変わる。したがって、アクセス要求に応じて正しい(新しい)保存場所にアクセス可能とするために、データKVS112のデータベース定義を再編成すると共に、キーKVS111を再作成することが必要である。
まず、キーKVS再作成部160によるキーKVS111の再作成処理について説明する。キーKVS再作成部160は、データKVS112のパーティション112a、112bのうち、再作成しようとするキーKVS111のキー/データ・ペアに関連する全てのパーティション112a、112bからキー/データ・ペアを読み出し、読み出したデータKVS112のキー/データ・ペアの情報に基づいて、キーKVS111のキー/データ・ペアを再作成する。
具体的には、キーKVS再作成部160は、まず、読み出したデータKVS112のキー/データ・ペアのキー部に含まれているキーの値およびデータ部に含まれているアプリケーション・キーを抽出する。そして、キーKVS再作成部160は、データKVSキーとデータ部から抽出したアプリケーション・キーのペアを1レコードとして中間ファイルに書き出す。また、この中間ファイルは、後述するように、データKVS定義再編成部170によるデータKVS112のデータベース定義の再編成処理が行われた際に、データKVS定義再編成部170によっても作成される。なお、データKVS112のキー/データ・ペアを読み出す際、データKVS112の構造において、キー/データ・ペアのデータ部が階層構造を持つ複数のセグメントに分割されている場合は、ルート・セグメントのみを読み出せば良い。次に、キーKVS再作成部160は、上記の中間ファイルに書き出されたキー/データ・ペアをキーKVS111にリロードする。
次に、データKVS定義再編成部170によるデータKVS112のデータベース定義の再編成処理について説明する。データKVS定義再編成部170は、データKVS112のキー/データ・ペアを、そのデータ長に応じた特殊パーティションにリロードすることにより、データKVS112を再編成する。以下、データKVS112からキー/データ・ペアをアンロードする際の処理と、データKVS112にキー/データ・ペアをリロードする際の処理とに分けて説明する。
図11は、データKVS定義再編成部170によるデータKVS112のデータベース定義の再編成処理のうち、キー/データ・ペアをアンロードする際の処理を示すフローチャートである。データKVS定義再編成部170は、データKVS112からキー/データ・ペアをアンロードし(ステップ1101)、アンロードしたファイルにおけるキー/データ・ペアの各レコードに、データ長の情報を付加する(ステップ1102)。また、データKVS定義再編成部170は、アンロードしたキー/データ・ペアのデータ・サイズに基づいて、どのタイプ(ハッシュ・バケット・サイズ)の特殊パーティション112bに、いくつのキー/データ・ペアがリロードされるかの情報を取得する(ステップ1103)。アンロードしたファイルおよび取得した情報は、例えば外部記憶装置に保持される。そして、キー/データ・ペアのアンロードが完了した後、データKVS定義再編成部170は、外部記憶装置のリロード制御ファイルに、リロードするキー/データ・ペアの数を、特殊パーティション・タイプ毎(ハッシュ・バケット・サイズの範囲毎)に書き出す(ステップ1104)。
図12は、データKVS定義再編成部170によるデータKVS112のデータベース定義の再編成処理のうち、キー/データ・ペアをリロードする際の処理を示すフローチャートである。データKVS定義再編成部170は、データKVS112にキー/データ・ペアをリロードするために、まず、リロード制御ファイルを読み込み(ステップ1201)、特殊パーティション・タイプごとに、リロードするキー/データ・ペアの数に対してデータKVS112のハッシュ・バケット数が不足しているものがあるか否かを調べる(ステップ1202)。そして、ハッシュ・バケットが不足している特殊パーティション・タイプがあった場合は、データKVS定義再編成部170は、その特殊パーティション・タイプに対応する既存の特殊パーティション112bのハッシュ・バケット数を増やすか、または、同じ特殊パーティション・タイプの特殊パーティション112bを追加する(ステップ1203)。
次に、データKVS定義再編成部170は、アンロードしたファイルに未処理のキー/データ・ペアがあれば、アンロードしたファイルからリロードするキー/データ・ペアを一つ選択し(ステップ1204、1205)、選択したキー/データ・ペアのデータ長に応じて格納先の特殊パーティション112bを選択する(ステップ1206)。そして、データKVS定義再編成部170は、そのキー/データ・ペアにおけるデータKVSキーのパーティション識別子フィールド(例えば、図2に示したデータKVSキーの部分値10bが記録されるフィールド)の値を、選択した特殊パーティション112bのパーティション識別子で上書きする。また、データKVS定義再編成部170は、データKVSキーのハッシュ値フィールド(例えば、図2に示したデータKVSキーの部分値10cが記録されるフィールド)の値を、格納先の特殊パーティション112b毎に、格納順の連番で上書きする(ステップ1207)。
次に、データKVS定義再編成部170は、上記のようにパーティション識別子フィールドの値とハッシュ値フィールドの値とを更新したキー値により、格納先の特殊パーティション112bにキー/データ・ペアをリロードする(ステップ1208)。そして、データKVS定義再編成部170は、リロードしたキー/データ・ペアにおける新しいデータKVSキーとデータ部に含まれるアプリケーション・キー値とを、キーKVS111の再作成処理用の中間ファイルのレコードに書き出す(ステップ1209)。
次に、データKVS定義再編成部170は、ステップ1204に戻り、アンロードしたファイルの最後に達したか否かを判断する。そして、アンロードしたファイルの最後に達していなければ、ステップ1205へ進んで次のレコードを読み出し、ステップ1209までの処理を繰り返す。一方、アンロードしたファイルの最後に達したならば、データKVS112のデータベース定義の再編成を終了する。この後、キー/データ・ペアのリロードに伴って作成された中間ファイルを用いて、上述したキーKVS再作成部160によるキーKVS111の再作成処理が行われる。これにより、再配置されたキー/データ・ペアのデータKVSキー値の更新に伴って、キーKVS111のキー/データ・ペアのデータ部も更新されるため、アプリケーション・キー値とアプリケーション・データの関係が保たれる。
<ハードウェア構成例>
図13は、本実施形態のKVSシステム100を構成するのに好適なハードウェア構成例を示す図である。ここでは、コンピュータに適用する場合について説明する。図13に示すコンピュータは、演算手段であるCPU(Central Processing Unit)100aと、主記憶手段であるメモリ100cを備える。また、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)100g、ネットワーク・インターフェイス100f、ディスプレイ装置を含む表示機構100d、音声機構100h、キーボードやマウス等の入力デバイス100i等を備える。
図13に示す構成例では、メモリ100cおよび表示機構100dは、システム・コントローラ100bを介してCPU100aに接続されている。また、ネットワーク・インターフェイス100f、磁気ディスク装置100g、音声機構100hおよび入力デバイス100iは、I/Oコントローラ100eを介してシステム・コントローラ100bと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
なお、図13は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施形態は、電子文書を表示して閲覧可能とし、検索キーに基づくデータの検索を行うことが可能な情報処理装置に広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
図13において、磁気ディスク装置100gにはOSのプログラムやアプリケーション・プログラムが格納されている。そして、これらのプログラムがメモリ100cに読み込まれてCPU100aに実行されることにより、本実施形態におけるKVSシステム100の各機能が実現される。また、データ管理部110は、メモリ100cや磁気ディスク装置100g等の記憶手段により実現される。なお、KVSシステム100は、複数のコンピュータにデータ管理部110や機能を分散させて構成することができる。そのような構成とする場合は、各々のコンピュータを図13に示すようなハードウェア構成とすることができる。
なお、上記の実施形態において、通常パーティション112aをハッシュ・バケット方式とし、キー/データ・ペアの保存先をハッシュ機構により決定することとしたが、通常パーティション112aは上記の構成に限定されない。例えば、特殊パーティション112bと同様に、最初の空き領域から順にキー/データ・ペアを保存する構成することも可能である。その他、上記の実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれる。
100…KVSシステム、104…統計情報収集部、110…データ管理部、111…キーKVS、112…データKVS、112a…通常パーティション、112b…特殊パーティション、120…優先パーティション・リスト生成部、130…再配置推奨キー・リスト生成部、140…キー/データ・ペア保存制御部、150…データ再配置部、160…キーKVS再作成部、170…データKVS定義再編成部

Claims (8)

  1. データを管理するシステムであって、
    データと当該データに対して一意に対応付けられたキーとの組を格納して管理するデータ管理部と、
    前記キーを指定して行われた、当該キーに対応付けられた前記データにアクセスするためのアクセス要求を受け付けるアクセス管理部と、を備え、
    前記データ管理部は、
    アクセス対象となるデータの保存場所の情報を含む第1キーを当該データに対して一意に対応付けられたキーとして、当該データと当該第1キーとの組を格納した第1記憶部と、
    前記第1キーをデータとし、当該第1キーが対応付けられたデータにアクセスする際に前記アクセス要求において指定されるキーである第2キーを当該第1キーに対して一意に対応付けられたキーとして、当該第1キーと当該第2キーとの組を格納した第2記憶部と、
    所定の実行条件を満たした場合に、前記第1記憶部における前記データと前記第1キーとの組を当該第1記憶部の異なる領域に再配置する再配置部と、を備え、
    前記第1記憶部は、
    前記データと前記第1キーとの組における一つの組を格納するレコードのサイズが、予め定められた特定のサイズである第1領域と、
    前記データと前記第1キーとの組における一つの組を格納するレコードのサイズが、当該組のデータ・サイズに応じて設定されたサイズである第2領域と、を備え、
    前記再配置部は、再配置対象の前記データと前記第1キーとの組を当該組のデータ・サイズに適合するレコード・サイズを有する前記第2領域に再配置する、システム。
  2. 前記再配置部は、再配置しようとする前記データと前記第1キーとの組のデータ・サイズに適合するレコード・サイズを有する前記第2領域が存在しない場合は、当該レコード・サイズを有する第2領域を増設し、増設した当該第2領域のレコードに当該組を格納する、請求項1に記載のシステム。
  3. 前記再配置部は、前記実行条件として、前記第1記憶部の前記第1領域または前記第2領域に格納された前記データと前記キーとの組のうち、当該組のデータ・サイズが、当該組が格納されている当該第1領域または当該第2領域に対して設定された閾値よりも大きい場合に、当該組を他の第2領域に再配置する、請求項1に記載のシステム。
  4. 前記再配置部は、前記実行条件として、前記第1記憶部の前記第1領域における前記データと前記キーとの組の保存場所を示すハッシュ値のコリジョンの重複度が予め設定された閾値よりも大きい場合に、当該組を前記第2領域に再配置する、請求項1に記載のシステム。
  5. 前記アクセス要求に基づいて、新規の前記データと前記第2キーとを取得し、前記第1記憶部の前記第1領域における当該データの保存場所を特定して、当該保存場所の情報を含む前記第1キーを生成し、当該第1キーと当該データとの組を特定された当該保存場所に保存し、取得した当該第2キーと作成した当該第1キーとの組を作成し、前記第2記憶部に保存する保存制御部をさらに備える、請求項1に記載のシステム。
  6. 前記再配置部は、前記データと前記第1キーとの組の再配置を行った場合に、当該第1キーに含まれる当該組の保存場所の情報を再配置後の保存場所の情報に置き換えて当該第1キーを更新し、前記第2記憶部に保存されている、再配置された前記データに対応する前記第2キーと前記第1キーとの組における当該第1キーを、再配置後の保存場所に基づいて更新した内容に置き換える、請求項5に記載のシステム。
  7. コンピュータによりデータを管理するためのプログラムであって、
    前記コンピュータが実行することにより、当該コンピュータに、
    第1の実行条件として、記憶部の第1領域または第2領域に格納されたデータとキーとの組のうち、当該組のデータ・サイズが、当該組が格納されている当該第1領域または当該第2領域に対して設定された閾値よりも大きいか否かを判断する処理と、
    第2の実行条件として、前記記憶部の前記第1領域における前記データと前記キーとの組の保存場所を示すハッシュ値のコリジョンの重複度が予め設定された閾値よりも大きいか否かを判断する処理と、
    前記第1の実行条件または前記第2の実行条件の何れかを満たす前記データと前記キーとの組が存在する場合に、当該組を前記第2領域に再配置する処理と、
    を実行させる、プログラム。
  8. コンピュータにより、データを管理する方法であって、
    前記コンピュータが、実行条件として、第1記憶部の第1領域または第2領域に格納されたデータキーとの組のうち、当該組のデータ・サイズが、当該組が格納されている当該第1領域または当該第2領域に対して設定された閾値よりも大きいか否かを判断するステップと、
    前記コンピュータが、前記実行条件として、前記第1記憶部の前記第1領域における前記データと前記キーとの組の保存場所を示すハッシュ値のコリジョンの重複度が予め設定された閾値よりも大きいか否かを判断するステップと、
    前記コンピュータが、前記実行条件の何れかを満たす前記データと前記キーとの組が存在する場合に当該組を前記第2領域に再配置するステップと、
    を含む、方法。
JP2013230608A 2013-11-06 2013-11-06 データを管理するシステムおよび方法 Active JP6025149B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2013230608A JP6025149B2 (ja) 2013-11-06 2013-11-06 データを管理するシステムおよび方法
US14/491,337 US9659048B2 (en) 2013-11-06 2014-09-19 Key-Value data storage system
CN201410643041.2A CN104636417B (zh) 2013-11-06 2014-11-06 管理数据的***和方法
US15/491,417 US10740308B2 (en) 2013-11-06 2017-04-19 Key_Value data storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013230608A JP6025149B2 (ja) 2013-11-06 2013-11-06 データを管理するシステムおよび方法

Publications (3)

Publication Number Publication Date
JP2015090615A JP2015090615A (ja) 2015-05-11
JP2015090615A5 JP2015090615A5 (ja) 2016-03-31
JP6025149B2 true JP6025149B2 (ja) 2016-11-16

Family

ID=53007842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013230608A Active JP6025149B2 (ja) 2013-11-06 2013-11-06 データを管理するシステムおよび方法

Country Status (3)

Country Link
US (2) US9659048B2 (ja)
JP (1) JP6025149B2 (ja)
CN (1) CN104636417B (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9934248B2 (en) * 2013-12-25 2018-04-03 Hitachi, Ltd. Computer system and data management method
US9779110B2 (en) * 2014-07-11 2017-10-03 Nec Corporation Placement device, placement method and recording medium, that stores placement program information processing device
US10089089B2 (en) * 2015-06-03 2018-10-02 The Mathworks, Inc. Data type reassignment
KR102416004B1 (ko) * 2015-09-02 2022-07-04 삼성전자주식회사 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치
US10437809B1 (en) * 2015-09-28 2019-10-08 Amazon Technologies, Inc. Projection-based updates
CN105354315B (zh) * 2015-11-11 2018-10-30 华为技术有限公司 分布式数据库中子表***的方法、子表节点和***
US10356174B2 (en) * 2016-05-06 2019-07-16 Masergy Communications, Inc. Multi-layer data storage system
US10198461B2 (en) 2016-05-06 2019-02-05 Masergy Communications, Inc. Data storage system
US10846024B2 (en) 2016-05-16 2020-11-24 Commvault Systems, Inc. Global de-duplication of virtual disks in a storage platform
US10425483B2 (en) 2016-05-16 2019-09-24 International Business Machines Corporation Distributed client based cache for keys using demand fault invalidation
US10795577B2 (en) 2016-05-16 2020-10-06 Commvault Systems, Inc. De-duplication of client-side data cache for virtual disks
US10248174B2 (en) 2016-05-24 2019-04-02 Hedvig, Inc. Persistent reservations for virtual disk using multiple targets
US11070628B1 (en) 2016-05-26 2021-07-20 Nutanix, Inc. Efficient scaling of computing resources by accessing distributed storage targets
US10706105B2 (en) * 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree garbage metrics
US10706106B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US10725988B2 (en) 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
US10719495B2 (en) * 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US10579612B2 (en) * 2017-04-03 2020-03-03 Citrix Systems, Inc. Enforcing uniqueness of property-value pairs in a schemaless data store
CN107145522B (zh) * 2017-04-11 2019-12-31 南京南瑞集团公司 一种数据库数据内容比对方法
US10609172B1 (en) * 2017-04-27 2020-03-31 Chicago Mercantile Exchange Inc. Adaptive compression of stored data
WO2019144214A1 (en) * 2017-10-10 2019-08-01 Phemi Systems Corporation Methods and systems for context-specific data set derivation from unstructured data in data storage devices
US10848468B1 (en) 2018-03-05 2020-11-24 Commvault Systems, Inc. In-flight data encryption/decryption for a distributed storage platform
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US10922142B2 (en) 2018-10-31 2021-02-16 Nutanix, Inc. Multi-stage IOPS allocation
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal
US11580162B2 (en) 2019-04-18 2023-02-14 Samsung Electronics Co., Ltd. Key value append
KR20210017268A (ko) * 2019-08-07 2021-02-17 삼성전자주식회사 사용자 데이터에 대해 암호화 동작을 수행하는 전자 장치
US11507555B2 (en) * 2019-10-13 2022-11-22 Thoughtspot, Inc. Multi-layered key-value storage
US20210342098A1 (en) * 2020-05-03 2021-11-04 Ionir Systems Ltd. System and method for storing and retrieving data
US20220092046A1 (en) * 2020-09-18 2022-03-24 Kioxia Corporation System and method for efficient expansion of key value hash table
US11853563B1 (en) 2022-06-17 2023-12-26 Western Digital Technologies, Inc. Key value data storage device with tiers
US11966630B2 (en) * 2022-06-27 2024-04-23 Western Digital Technologies, Inc. Key-to-physical table optimization for key value data storage devices

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04206586A (ja) 1990-11-30 1992-07-28 Fujitsu Ltd 半導体発光装置及びその製造方法
JP4206586B2 (ja) 1999-11-12 2009-01-14 株式会社日立製作所 データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体
CN101483605B (zh) * 2009-02-25 2011-04-06 北京星网锐捷网络技术有限公司 数据报文的存储、查找方法和装置
CN102147798A (zh) * 2010-02-10 2011-08-10 华为技术有限公司 处理哈希查找冲突问题的方法和装置
US8756199B2 (en) * 2010-03-01 2014-06-17 Hitachi, Ltd. File level hierarchical storage management system, method, and apparatus
US8694703B2 (en) * 2010-06-09 2014-04-08 Brocade Communications Systems, Inc. Hardware-accelerated lossless data compression
JP2013033345A (ja) 2011-08-01 2013-02-14 Internatl Business Mach Corp <Ibm> トランザクション処理システム、方法及びプログラム
JP2013045378A (ja) 2011-08-26 2013-03-04 Fujitsu Ltd ストレージ制御方法、情報処理装置およびプログラム
JP2013050836A (ja) 2011-08-31 2013-03-14 Nec Corp ストレージシステムとデータ・インテグリティのチェック方法並びにプログラム
JP5733124B2 (ja) * 2011-09-12 2015-06-10 富士通株式会社 データ管理装置、データ管理システム、データ管理方法、及びプログラム
JP2013088920A (ja) 2011-10-14 2013-05-13 Hitachi Ltd 計算機システム及びデータ管理方法
WO2013073020A1 (ja) * 2011-11-16 2013-05-23 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
CN102402622B (zh) * 2011-12-27 2015-09-09 北京人大金仓信息技术股份有限公司 嵌入式内存数据库的内存页面管理调度方法
CN102880628B (zh) * 2012-06-15 2015-02-25 福建星网锐捷网络有限公司 哈希数据存储方法和装置

Also Published As

Publication number Publication date
US10740308B2 (en) 2020-08-11
CN104636417A (zh) 2015-05-20
US9659048B2 (en) 2017-05-23
US20150127658A1 (en) 2015-05-07
CN104636417B (zh) 2017-10-13
JP2015090615A (ja) 2015-05-11
US20170220572A1 (en) 2017-08-03

Similar Documents

Publication Publication Date Title
JP6025149B2 (ja) データを管理するシステムおよび方法
US11238098B2 (en) Heterogenous key-value sets in tree database
CN101556557B (zh) 一种基于对象存储设备的对象文件组织方法
US7558802B2 (en) Information retrieving system
US7299243B2 (en) System and method for controlling free space distribution by key range within a database
US7146377B2 (en) Storage system having partitioned migratable metadata
US20160350302A1 (en) Dynamically splitting a range of a node in a distributed hash table
CN108140040A (zh) 存储器中数据库的选择性数据压缩
CN110109886B (zh) 分布式文件***的文件存储方法及分布式文件***
US9389913B2 (en) Resource assignment for jobs in a system having a processing pipeline that satisfies a data freshness query constraint
CN106570113B (zh) 一种海量矢量切片数据云存储方法及***
CN112148680B (zh) 一种基于分布式图数据库的文件***元数据管理方法
CN112163048A (zh) 基于ClickHouse实现OLAP分析的方法、装置
JP2012168781A (ja) 分散型データストアシステム及び分散型データストアシステムにおけるレコード管理方法
US7853619B2 (en) Storage model for large object columns
Xu et al. Enhancing HDFS with a full-text search system for massive small files
CN112711564B (zh) 合并处理方法以及相关设备
KR20090007926A (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
JP6006740B2 (ja) インデックス管理装置
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
EP3550451A1 (en) Data storage and maintenance method and device, and computer storage medium
JP2013088920A (ja) 計算機システム及びデータ管理方法
EA005269B1 (ru) Способ организации и хранения данных в базе данных и база данных
CN111597262B (zh) 一种区块链中的区块数据的管理方法和管理***
US20240160617A1 (en) Garbage collection based on metadata indicating unmodified objects

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160216

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: 20160913

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20160913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161004

R150 Certificate of patent or registration of utility model

Ref document number: 6025149

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150