JP2020119445A - 情報処理装置、情報処理プログラム、及び情報処理システム - Google Patents

情報処理装置、情報処理プログラム、及び情報処理システム Download PDF

Info

Publication number
JP2020119445A
JP2020119445A JP2019012310A JP2019012310A JP2020119445A JP 2020119445 A JP2020119445 A JP 2020119445A JP 2019012310 A JP2019012310 A JP 2019012310A JP 2019012310 A JP2019012310 A JP 2019012310A JP 2020119445 A JP2020119445 A JP 2020119445A
Authority
JP
Japan
Prior art keywords
key
data
unit
idx
value store
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.)
Withdrawn
Application number
JP2019012310A
Other languages
English (en)
Inventor
一仁 松田
Kazuhito Matsuda
一仁 松田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019012310A priority Critical patent/JP2020119445A/ja
Priority to US16/737,329 priority patent/US20200242094A1/en
Publication of JP2020119445A publication Critical patent/JP2020119445A/ja
Withdrawn legal-status Critical Current

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
    • 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/2282Tablespace storage structures; Management thereof

Landscapes

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

Abstract

【課題】キーバリューストアに格納されたデータに対するインデックスの作成処理のリソース量を低減させる。【解決手段】キーとバリューとを対応付けて格納するキーバリューストア12aに対するデータの格納要求を受け付け、前記データに割り当てられた識別情報と前記データとを前記キーバリューストア12aに格納する格納処理部11と、単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報13aを管理する管理部13と、前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報13aと、前記キーバリューストア12aが格納するデータと、に基づいて、前記キーバリューストア12aのインデックス15bを作成する作成部15、16と、を備える。【選択図】図2

Description

本発明は、情報処理装置、情報処理プログラム、及び情報処理システムに関する。
IoT(Internet of Things)において利用されるセンサ等の観測又は計測(以下、まとめて「観測」と表記する)を行なうIoTデバイスは、観測対象の近くに設置され、観測結果をデータセンタ等における1以上のサーバに送信する。
なお、観測結果は、IoTデバイスから、インターネット等のネットワークを介して直接、又は、観測対象の近く(「エッジ」)に設置されたエッジコンピュータ及び当該ネットワークを介して、サーバに送信される。サーバでは、受信した(収集した)観測結果が様々な分析やサービスに利用される。
なお、観測結果は、観測する情報の種類(キー;key)、及び、観測する情報の値(バリュー;value)を含んでよい。以下、観測結果を「キーバリュー」と表記する場合がある。
サーバでは、IoTデバイスから受信した複数のキーバリュー(キーバリュー群)を、KVS(Key-Value Store)等のデータベース(DB;DataBase、「データストア」と表記されてもよい)に格納する。KVSシステムとしては、公知の分散KVSシステムを用いることができる。
分散KVSシステムでは、KVSからのリード(read)のみならずKVSへのライト(write)においても、処理を行なうノード(以下、「担当ノード」と表記する場合がある)を増加させることで、リニアに性能を向上させることが可能である。
これは、分散KVSシステムが、分散ハッシュテーブル(DHT;Distributed Hash Table)等によって、キー(key)に対しキー数に依存しないオーダで担当ノードを決定するとともに、負荷を平準化するからである。
特開2018−133037号公報
ところで、サーバは、KVSシステムに対して、一般的なRDBMS(Relational DB Management System)で用いられるインデックス作成機構によって、KVSの蓄積データのインデックスを作成し、インデックスを使用して検索要求に対する処理を行なう。以下の説明において、「インデックス」を「IDX」(Index)と表記する場合がある。
しかし、IoTデバイス等からのキーバリュー群を蓄積するKVSシステムにおいては、多様なキーが比較的高いレートでKVSに書き込まれることになる。
そのため、例えば、IDX作成処理におけるプロセッサの処理負荷の増加や、IDXを記憶する記憶領域の使用サイズの増加等が生じ、IDXの計算リソースや記憶領域のリソースを多く要する場合がある。
1つの側面では、本発明は、キーバリューストアに格納されたデータに対するインデックスの作成処理のリソース量を低減させることを目的の1つとする。
1つの側面では、情報処理装置は、格納処理部と、管理部と、作成部と、を備えてよい。前記格納処理部は、キーとバリューとを対応付けて格納するキーバリューストアに対するデータの格納要求を受け付け、前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納してよい。前記管理部は、単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理してよい。前記作成部は、前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成してよい。
1つの側面では、キーバリューストアに格納されたデータに対するインデックスの作成処理のリソース量を低減させることができる。
一実施形態に係るIoTシステムの構成例を示すブロック図である。 一実施形態に係るKVSシステムの機能構成例を示すブロック図である。 エントリ情報の一例を示す図である。 KVSに格納されるデータの一例を示す図である。 UID(Unique Identifier)リストに格納されるデータの一例を示す図である。 エントリ検索情報の一例を示す図である。 IDX作成状況の一例を示す図である。 IDXに格納されるデータの一例を示す図である。 KVSクラスタに対するエントリの登録処理に係る構成例を示すブロック図である。 ノードリストの一例を示す図である。 KVSクラスタに対するエントリの検索処理に係る構成例を示すブロック図である。 インデクサリストの一例を示す図である。 一実施形態に係るKVSシステムにおけるスケールアウト処理の制御に着目した機能構成例を示すブロック図である。 一実施形態に係るKVSシステムによる処理の一例を説明するフローチャートである。 一実施形態に係るKVSシステムによる処理の一例を説明するフローチャートである。 一実施形態に係るKVSシステムによる処理の一例を説明するフローチャートである。 エントリ格納処理の動作例を説明するフローチャートである。 エントリ格納処理の動作例を説明する図である。 エントリ検索処理の動作例を説明するフローチャートである。 エントリ検索処理及びIDX作成処理の動作例を説明する図である。 エントリ検索処理の動作例を説明する図である。 IDX作成処理の動作例を説明するフローチャートである。 スケールアウト処理の動作例を説明するフローチャートである。 一実施形態に係るコンピュータのハードウェア構成例を示すブロック図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
一般的なRDBMSで作成されるIDXは、蓄積量に従ってIDXサイズが肥大化し、また、蓄積量に従ってエントリの追加や削除の際の処理時間が大きくなる。そのため、頻繁な更新が行なわれない検索キーに対して少数のIDXを作成するというのが一般的である。
これに対し、IoTデバイス等は、デバイスの種類や設置場所、目的等に応じて、多様なキーを持つことが想定される。また、IoTデバイス等は、一般的なRDBMS或いはKVSシステムで想定されるレートよりも比較的高いレートで、KVSに対してキーバリュー群の書き込みを行なうことが想定される。
そのため、IoTデバイス等からのキーバリュー群を蓄積する分散KVSシステムにおいては、多様なキーが高いレートでKVSに書き込まれることになり、上述したように、IDXの計算コストや記憶領域のコストが高くなることが想定される。
また、IoTデバイス等で収集されるデータは、格納処理数に対して検索要求の頻度が低い場合が多い。そのため、一般的なRDBMSのようにIDXを常時維持することは、費用対効果の面においても、KVSシステムには適さない場合があるといえる。
そこで、一実施形態では、1つの側面において、KVSシステムに格納されたデータに対するIDXの作成処理のリソース量を低減させる手法を説明する。
また、一実施形態では、他の側面において、IoTデバイス等で生成されるキーバリュー群に対し、リソース量の面でスケール可能な仕組みを提供する手法を説明する。
〔1−1〕一実施形態の構成例
図1は、一実施形態の一例としてのIoTシステム100の構成例を示すブロック図である。図1に示すように、IoTシステム100は、例示的に、複数のIoTデバイス101、複数のエッジコンピュータ102、インターネット等のネットワーク103及び106、データセンタ104、及び、複数のサーバ105を備えてよい。
IoTデバイス101は、種々の手法によってデータを取得し、当該データをデータセンタ104に登録するために、当該データを含む登録要求を、対応するエッジコンピュータ102に送信する。なお、IoTデバイス101は、データを取得する都度、エッジコンピュータ102に送信してもよいし、データを蓄積し、一定時間間隔で蓄積したデータを送信してもよい。なお、IoTデバイス101は、エッジコンピュータ102を介さずに、ネットワーク103(データセンタ104)に対して登録要求を送信してもよい。
IoTデバイス101が取得するデータとしては、例えば、観測対象の観測結果、ユーザ等による入力結果、及び、入力されたデータに対する演算結果、等のキーバリューが挙げられる。キーバリューは、情報の種類(キー)、及び、情報の値(バリュー)を含んでよい。
IoTデバイス101としては、例えば、情報処理装置101a、GPS等の衛星測位システムを利用する測位デバイス101b、及び、種々のセンサ101c等が挙げられる。情報処理装置としては、PC(Personal Computer)、スマートホン、タブレット、及び携帯電話等が挙げられる。なお、IoTデバイスは、無線又は有線による通信機能を備えてもよいし、当該通信機能を備える通信デバイスと接続されてもよい。
エッジコンピュータ102は、観測対象の近く(エッジ)に設置され、IoTデバイス101から受信した登録要求を、ネットワーク103を介してデータセンタ104に送信する。なお、エッジコンピュータ102は、IoTデバイス101からデータそのものを受信し、IoTデバイス101に代わって、受信したデータを含む登録要求を作成し、作成した登録要求をデータセンタ104に送信してもよい。
データセンタ104は、図示しない複数のサーバを備える。データセンタ104は、複数のサーバにより、IoTデバイス101から送信された登録要求を受信し、受信した登録要求に含まれるデータを、DB、例えばKVSに格納する。また、データセンタ104は、複数のサーバにより、サーバ105から送信された検索要求を受信し、検索要求で指定された検索条件を満たすデータを、IDXを用いてDBから検索して、検索結果を検索要求元に応答する。
複数のサーバ105は、インターネット等のネットワーク106を介してデータセンタ104のDB、例えばKVSに格納されたデータの参照を行なう。例えば、サーバ105は、データセンタ104の複数のサーバに対して検索要求を送信し、検索結果を複数のサーバから受信する。なお、ネットワーク106は、ネットワーク103と同一のネットワークであってもよい。
複数のサーバ105としては、種々の情報処理装置、例えば、物理マシン、仮想マシン、又は、これらの組み合わせ、等のコンピュータが挙げられる。サーバ105は、例えば、人工知能(AI;Artificial Intelligence)における学習(例えば深層学習(Deep Learning))用又は分析用のデータとして、KVSに格納されたデータを参照してもよい。KVSに格納されるデータは、いわゆる「ビッグデータ」として扱われるデータであってもよい。
〔1−2〕機能構成例
図2は、一実施形態の一例としてのKVSシステム1の機能構成例を示すブロック図である。KVSシステム1は、情報処理システムの一例であり、例えば、図1に示すデータセンタ104が備える複数のサーバにより実現されてよい。なお、KVSシステム1は、データセンタ104とは異なる施設等の拠点に設けられたサーバにより実現されてもよい。
データセンタ104及び/又は拠点に設けられた複数のサーバの各々は、後述するように、プロセッサ、メモリ、及び、記憶装置等を備えた物理マシンであってよい。物理マシンである複数のサーバは、複数の仮想マシン(VM;Virtual Machine)を実行してもよい。仮想マシンは、例えば複数のサーバがIaaS(Infrastructure as a Service)等のクラウドシステムを提供する場合、当該クラウドシステムにより提供される仮想マシンであってもよい。
従って、KVSシステム1は、複数の物理マシン、複数の仮想マシン、或いは、1以上の物理マシン及び1以上の仮想マシンの組み合わせによって実現(実行)されてよい。
KVSシステム1としては、分散KVSシステムを用いることができる。
図2に示すように、KVSシステム1は、例示的に、ストアハンドラ11、KVSクラスタ12、UIDマネージャ13、クエリハンドラ14、IDXマネージャ15、及び、インデクサ16を備えてよい。
ストアハンドラ11、KVSクラスタ12、UIDマネージャ13、クエリハンドラ14、IDXマネージャ15、及び、インデクサ16は、それぞれ、1つ又は複数のノードにより実現(実行)されてよい。ノードとしては、例えば、仮想マシン、又は、物理マシンが挙げられる。
一実施形態に係るKVSシステム1は、後述する構成によって、スケールアウトを可能とする。スケールアウトとは、KVSシステム1に対して、ハードウェア(HW;Hardware)資源やネットワーク(NW;Network)資源を投入(追加)することにより、KVSシステム1全体の性能を向上させることである。一実施形態に係るKVSシステム1は、スケールアウトにより、KVSに対するデータの格納性能及び検索性能を、スケールアウトの規模に比例して向上させることが可能となる。
なお、HW資源としては、CPU(Central Processing Unit)等のプロセッサ、メモリ、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の記憶装置、等が挙げられる。NW資源としては、通信回線の帯域(又は帯域幅)、ルータやスイッチ等の通信機器、等が挙げられる。
以下、図2〜図8を参照した説明においては、便宜上、機能ブロック11〜16が、それぞれ1つのノードにより実現される場合について説明する。
ストアハンドラ11は、KVSクラスタ12に対するデータのストア(登録、格納)の制御を行なう。例えば、ストアハンドラ11は、IoTデバイス101からKVSクラスタ12へのデータの登録要求を受け付ける登録受付API(Application Programming Interface)として機能してよい。なお、ストアハンドラ11は、ストアハンドラ11の処理負荷等に応じてノードを増減可能とする、スケールアウト機構を有してよい。
図2に示すように、ストアハンドラ11は、例示的に、登録受付APIの一例であるストア受付部11aと、格納部11bと、を備えてよい。
ストア受付部11aは、例えば、IoTデバイス101から登録要求(格納要求)を受信し、登録要求からKVSクラスタ12に登録する登録対象のデータ(以下、「エントリ」と表記する場合がある)を含むエントリ情報を引数として取得する。そして、ストア受付部11aは、取得したエントリ情報を格納部11bに出力する。
図3は、エントリ情報の一例を示す図である。上述のように、一実施形態においては、KVSシステム1は、IoTデバイス101から、データとして、観測結果等のキーバリューを受信する。従って、一実施形態において、エントリにはキーバリューが含まれる。
以下の説明において、IoTデバイス101から受信したオリジナルの「キー」、「バリュー」、「キーバリュー」を、それぞれ、「オリジナルキー」、「オリジナルバリュー」、「オリジナルキーバリュー」と表記する場合がある。
ここで、図3に示すように、エントリ情報には、タイムスタンプ(timestamp)が含まれてよい。タイムスタンプには、IoTデバイス101がデータを取得した時刻又は送信した時刻がIoTデバイス101により設定されてよい。なお、タイムスタンプには、上記時刻に加えて又は代えて、KVSシステム1(ストアハンドラ11)がデータを受信した時刻又はKVSクラスタ12への格納時刻等がストア受付部11aにより設定されてもよい。
格納部11bは、ストア受付部11aが受け付けたエントリ情報に基づいて、KVSクラスタ12にエントリを登録する。
例えば、格納部11bは、受け付けたエントリ情報に含まれる、KVSクラスタ12への登録対象のエントリに対して、ユニークID(UID;Unique Identifier)を付与してよい。UIDは、KVSシステム1(例えばKVSクラスタ12)において固有のIDであり、「識別情報」の一例である。
一例として、格納部11bは、UIDマネージャ13に対してUIDの発行を依頼し、発行されたUIDを登録対象のエントリ、換言すればオリジナルキーバリューに割り当てる(対応付ける)。なお、IoTデバイス101が一定時間ごとに登録要求を送信する場合のように、エントリ情報には、オリジナルキーバリューの複数のセットが含まれることがある。この場合、格納部11bは、オリジナルキーバリューの複数のセットに対して、1つのUIDを割り当ててもよいし、オリジナルキーバリューのセットごとにUIDを割り当ててもよい。
なお、格納部11bは、UIDの発行依頼の送信とともに、又は、UIDの発行後に、エントリ情報をUIDマネージャ13に送信してもよい。
さらに、格納部11bは、KVSクラスタ12に対して、UIDをキーとし、登録対象のエントリをバリューとしたキーバリューを送信し、後述するKVS12aへの当該キーバリューの格納を指示してよい。なお、格納部11bからKVSクラスタ12に送信されるキー(UID)及びバリュー(エントリ)のうちのバリューは、IoTデバイス101から受信した「オリジナルキーバリュー」となる。
このように、ストアハンドラ11は、KVS12aに対するデータの格納要求を受け付け、当該データに割り当てられた識別情報と当該データとをKVS12aに格納する格納処理部の一例である。
KVSクラスタ12は、キーとバリューとを対応付けて格納するキーバリューストアの一例であるKVS12aを備え、KVS12aに対するデータのリード及びライトの制御、KVS12aの管理等を行なう。
なお、KVSクラスタ12は、分散ハッシュテーブル(DHT)等により、例えばKVSクラスタ12の処理負荷やKVS12aでのデータの記憶容量(或いは空き容量)等に応じてノードを増減可能とする、スケールアウト機構を有してよい。
KVSクラスタ12は、例えば、格納部11bからキーバリューの格納指示を受けると、KVS12aに対するキーバリューの格納を行なう。
図4は、KVS12aに格納されるデータの一例を示す図である。図4に例示するように、KVSクラスタ12は、格納指示に係るキーであるUIDと、格納指示に係るバリューであるエントリ(オリジナルキーバリュー)と、をKVS12aに格納する。
KVS12aは、KVSクラスタ12を実現するノードが有する記憶領域により実現されてよい。なお、図4では、KVS12aに格納されるデータを、便宜上、テーブル形式として示すが、これに限定されるものではない。KVSクラスタ12は、例えば、DB形式やXML(eXtensible Markup Language)形式等の種々の形態で、KVS12aにデータを記憶してよい。
また、KVSクラスタ12は、後述するクエリハンドラ14、IDXマネージャ15、又は、インデクサ16から、検索キーとしてUIDを指定した抽出要求(検索要求)を受信すると、当該UIDに対応するバリューであるエントリをKVS12aから抽出する。そして、KVSクラスタ12は、抽出したエントリを抽出要求元に応答する。
UIDマネージャ13は、UIDの発行、及び、UIDリスト13aの管理を行なう管理部の一例である。例えば、UIDマネージャ13は、UIDリスト13aの管理において、UIDリスト13aへのデータの追加、UIDリスト13aからのデータの抽出、等を行なう。
なお、UIDマネージャ13は、例えばUIDマネージャ13の処理負荷等に応じてノードを増減可能とする、スケールアウト機構を有してよい。
UIDマネージャ13は、格納部11bからのUIDの発行依頼に応じて、KVSシステム1(KVS12a)内で一意のUIDを、格納部11bに発行する。UIDの決定は、所定の規則に従った演算や所定のリストからの抽出等、既知の種々の手法により行なうことが可能である。
また、UIDマネージャ13は、格納部11bからエントリを受信すると、受信したエントリ内のオリジナルキー及びタイムスタンプと、当該エントリに対して発行したUIDとに基づくリストを作成し、UIDリスト13aに格納する。
図5は、UIDリスト13aに格納されるデータの一例を示す図である。UIDリスト13aは、UIDマネージャ13を実現するノードが有する記憶領域に記憶される情報であってよい。なお、図5では、UIDリスト13aを、便宜上、テーブル形式として示すが、これに限定されるものではなく、UIDリスト13aは、DB形式や配列、XML形式等の種々の形態でノードの記憶領域に記憶されてよい。
UIDリスト13aは、各タイムスロット(TS;time_slot)において受信したエントリのUIDを管理する情報である。TSは、単位時間或いは一定期間の一例であり、各TSは、一定の時刻範囲(開始時刻〜終了時刻)に対応してよい。1つのTSは、例えば、1時間〜数日等であってよく、一実施形態では、「1日」であるとする。なお、TSの長さ(TS長、TS区間)は、後述するように可変であってもよい。
UIDリスト13aは、例えば、オリジナルキーごとにリストを有してよい。図5の例において、“key_x”、“key_y”、“key_z”、…、は、オリジナルキーを示す。図5の例において、オリジナルキー“key_x”に着目すると、“time_slot=1”の期間において受信したエントリであって、オリジナルキー“key_x”を含むエントリのUIDは、“66ea7427”、“15f2883e”、“fd41a09c”であることがわかる。
このように、UIDリスト13aによれば、特定のオリジナルキーを含むエントリをKVS12aから検索するための検索キー(UID)を、TS単位で特定することが可能となる。
換言すれば、UIDリスト13aは、単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報の一例である。
例えば、UIDマネージャ13は、格納部11bから受信したエントリ情報に含まれるオリジナルキーを参照してよい。また、UIDマネージャ13は、格納部11bから受信したエントリ情報に含まれるタイムスタンプを参照し、タイムスタンプが属するTSを特定してよい。そして、UIDマネージャ13は、UIDリスト13aにおいて、参照したオリジナルキー及び特定したTSに対応するリストを特定し、当該リストに対して、エントリに割り当てられたUIDを設定(格納)する。
なお、上記の説明では、タイムスタンプが示す時刻を、ストア受付部11aがIoTデバイス101からエントリを受信した時刻として扱っている。これは、例えば、タイムスタンプにIoTデバイス101がデータを取得した時刻又は送信した時刻が設定されている場合、タイムスタンプが示す時刻とエントリを受信した時刻との差が、これらを同一視できる程度に小さいものと仮定したためである。
しかしながら、これに限定されるものではなく、一実施形態では、上記「差」が生じないように、ストア受付部11aは、例えば、上述したように、IoTデバイス101からデータを受信した時刻を、受信したデータのタイムスタンプに設定してもよい。
クエリハンドラ14は、KVSクラスタ12に対するデータの検索の制御を行なう検索受付部の一例である。例えば、クエリハンドラ14は、サーバ105からKVSクラスタ12へのデータの検索要求を受け付ける検索受付APIとして機能してよい。なお、クエリハンドラ14は、クエリハンドラ14の処理負荷等に応じてノードを増減可能とする、スケールアウト機構を有してよい。
クエリハンドラ14は、例示的に、検索受付APIの一例であるクエリ受付部14aと、検索部14bと、を備えてよい。
例えば、クエリ受付部14aは、サーバ105から検索要求を受信し、検索要求から、KVSクラスタ12から検索する条件である検索条件を含むエントリ検索情報を引数として取得し、取得したエントリ検索情報を検索部14bに出力する。
図6は、エントリ検索情報の一例を示す図である。図6に例示するように、エントリ検索情報には、検索条件として、時刻範囲(timerange)、並びに、検索キー及び検索バリューが含まれてよい。時刻範囲には、検索対象とする開始時刻及び終了時刻の少なくとも一方が含まれてよい。検索キー及び検索バリューには、検索対象とするオリジナルキー、検索対象とするオリジナルバリュー、及び、検索対象とするオリジナルバリューの範囲、の少なくとも1つが含まれてよい。なお、オリジナルバリューの範囲には、検索対象とする開始値及び終了値の少なくとも一方が含まれてよい。
検索部14bは、クエリ受付部14aから受信したエントリ検索情報に基づいて、KVSクラスタ12に対してエントリの検索要求を送信し、KVSクラスタ12から検索結果を受信すると、検索要求の送信元であるサーバ105に対して、検索結果を応答する。
例えば、検索部14bは、検索条件に含まれる時刻範囲に基づき、検索対象となるTSを特定してよい。そして、検索部14bは、IDXマネージャ15に対して、エントリ検索情報、及び、特定したTSを含む、UIDリストの取得要求を送信してよい。検索部14bは、IDXマネージャ15からUIDリストを受信すると、KVSクラスタ12に対して、受信したUIDリストを含む、バリュー(オリジナルキーバリュー)の検索要求を送信してよい。検索部14bは、KVSクラスタ12から、UIDリストにより特定されるキー(UID)に対応するバリュー(オリジナルキーバリュー)を、検索結果として受信する。
IDXマネージャ15は、IDX作成状況15a及びIDX15bを管理し、クエリハンドラ14からの取得要求に応じた処理、IDX15bからのIDXデータの抽出、インデクサ16の動作の制御、等を行なう。
なお、IDXマネージャ15は、例えばIDXマネージャ15又はインデクサ16の処理負荷等に応じてノードを増減可能とする、スケールアウト機構を有してよい。
図7は、IDX作成状況15aに格納されるデータの一例を示す図であり、図8は、IDX15bに格納されるデータの一例を示す図である。IDX作成状況15a及びIDX15bは、それぞれ、IDXマネージャ15を実現するノードが有する記憶領域に記憶される情報であってよい。なお、図7及び図8では、IDX作成状況15a及びIDX15bを、便宜上、テーブル形式として示すが、これに限定されるものではない。例えば、IDX作成状況15a及びIDX15bは、それぞれ、DB形式や配列、XML形式、ビットマップ形式等の種々の形態でノードの記憶領域に記憶されてよい。
IDX作成状況15aは、オリジナルキーごとのIDXデータの作成状況を管理するための情報である。図7に示すように、IDX作成状況15aには、例示的に、TSごと、且つ、オリジナルキーごとに、IDXデータの有効又は無効が設定されてよい。一例として、図7に示すように、“key_x”の“time_slot(time_slot_id)”=“1”及び“5”には、IDXデータが有効である(作成されている)ことを示す“1”(又は“true”)が設定される。また、“key_x”の“time_slot(time_slot_id)”=“2”、“3”及び“4”には、IDXデータが無効である(作成されていない)ことを示す“0”(又は“false”)が設定される。
ここで、一実施形態では、IDXデータの作成は、チャンク(chunk)単位で行なわれてよい。「チャンク」は、連続する複数(図7の例では5つ)のTSを一単位として束ねた所定期間の一例である。これは、IoTデバイス101で収集されるデータに対する検索要求には、局所性、例えば時間的局所性があるためである。
図7の例では、“key_x”の“time_slot”=“1”及び“5”に“1”が設定されているため、IDX15bには、“chunk(chunk_id)”=“1”の期間(“time_slot”=“1”〜“5”の期間)における“key_x”のIDXデータが作成されている。なお、IDX作成状況15aにおいて、チャンクに属する全てのTSに“0”が設定されている場合、IDX15bには、当該チャンクのIDXデータは作成されない。
このように、IDX作成状況15aは、チャンクに含まれる各TSに受信したデータに関するIDXデータが当該チャンクのIDX15bに含まれるか否かを示す作成管理情報の一例である。
チャンク単位でIDXデータを作成することにより、TS単位でIDXデータを作成するよりも、IDX15b内のIDXツリー数の増加を抑制することができるとともに、IDX15bの走査(参照)効率を高めることができる。
なお、チャンクの長さ(チャンク長、チャンク区間)は、可変であってもよい。例えば、チャンクごとに、内包するTS数が異なるように設定されてもよい。或いは、上述のようにTS長が可変に設定されることで、チャンク長が調整されてもよい。又は、チャンク長及びTS長の双方が可変に設定されてもよい。チャンク長、TS長の調整(増減)は、IDXマネージャ15により制御されてよい。
以上のことから、図7に示す例では、IDX15bに含まれるIDXデータのうち、チャンク“1”における“key_x”のIDXデータは、“time_slot”=“1”及び“5”の期間に受信したエントリを含むことを意味する。換言すれば、IDX15bに含まれるIDXデータのうち、チャンク“1”における“key_x”のIDXデータは、“time_slot”=“2”〜“4”の期間に受信したエントリを含まないことを意味する。
図8に示すように、一実施形態に係るIDX15bは、1つのオリジナルキーに対して、チャンク単位でIDXデータを含んでよい。なお、図8の例では、“key”、“chunk(chunk_id)”及び“index”のセットがIDXデータに対応する。“index”には、オリジナルバリューから当該オリジナルバリューに割り当てられた(対応付けられた)UIDを探索するためのツリー(IDXツリー)が設定される。IDXツリーのデータ構造は、例えば、RDBMSのIDXツリーと同様であってよい。
なお、IDXマネージャ15は、IDX15bの利用状況を、例えばLRU(Least Recently Used)アルゴリズム等により管理してよく、IDX15bのサイズの要件等に合わせて、チャンク単位でIDXデータを削除してもよい。
IDXマネージャ15は、クエリハンドラ14からUIDリストの取得要求を受信すると、IDX作成状況15aを参照し、エントリ検索情報に含まれる検索キー及び時刻範囲に基づき、UIDリストを抽出するためのIDXデータの有無を判定してよい。
IDXマネージャ15は、UIDリストを抽出するためのIDXデータが作成されていないと判定した場合、インデクサ16とともに、未作成分のIDXデータの作成処理(IDX作成処理)を行なう。換言すれば、IDXマネージャ15は、検索要求で指定された時刻に対応するTSに受信したデータに関するIDXデータがIDX15bに含まれない場合に、IDX作成処理により当該IDXデータをIDX15bに追加するのである。
なお、IDXマネージャ15は、IDX作成処理が完了した場合、IDX作成状況15aにおける、IDXデータを作成したTS、且つ、IDXデータを作成した検索キー(オリジナルキー)に、有効を示す“1”を設定してよい。
IDXマネージャ15は、IDXデータが作成されていると判定した場合、又は、IDX作成処理を行なった場合、検索条件に含まれる全ての検索キーに対して、IDX15bを走査(参照)し、検索条件に該当する1以上のエントリのUIDを取得(抽出)する。
そして、IDXマネージャ15は、取得したUIDのリスト(UIDリスト)を、取得要求の応答としてクエリハンドラ14に送信する。
インデクサ16は、IDXマネージャ15とともに、以下のIDX作成処理を行なう。なお、インデクサ16は、例えばIDXマネージャ15又はインデクサ16の処理負荷等に応じてノードを増減可能とする、スケールアウト機構を有してよい。
IDX作成処理において、IDXマネージャ15は、IDXデータの作成対象となるTSにおいて、IDXデータの作成対象となる検索キーを持つエントリ群のUIDリストを、例えばインデクサ16を介して、UIDマネージャ13から取得する。そして、IDXマネージャ15は、インデクサ16に対して、取得したUIDリストに基づくIDXデータの作成を指示する。
インデクサ16は、IDXマネージャ15からの指示に応じて、UIDリストに含まれるUIDを検索キーとしてKVS12aからエントリを検索するための検索要求を、KVSクラスタ12に送信する。
そして、インデクサ16は、KVSクラスタ12から検索結果のエントリを受信し、受信したエントリに基づき、IDX15bにIDXデータを作成(追加)する。これにより、IDX作成処理が完了する。
このように、IDXマネージャ15及びインデクサ16は、時刻が指定された検索要求と、UIDリスト13aと、KVS12aが格納するデータと、に基づいて、KVS12aのIDX15bを作成する作成部の一例である。この作成部は、検索要求で指定された時刻に対応する識別情報をUIDリスト13aから抽出し、抽出した識別情報に対応するデータをKVS12aから抽出して、抽出した識別情報及びデータに基づき、IDX15bのIDXデータを作成するのである。
以上のように、一実施形態に係るKVSシステム1は、エントリの検索要求を受信した場合であって、検索条件に対応するIDXデータが作成されていない場合に、IDX作成処理を行なう。
これにより、一般的なRDBMSで作成されるIDXを利用する場合のように、KVSへのエントリ格納時にIDXを作成(更新)する従来の手法と比較して、以下の利点がある。
・IoTデバイス101から高頻度でKVS12aに対してキーバリュー群の書き込みが発生したとしても、KVS12aへのエントリの格納時にIDX作成処理が行なわれないため、IDX作成処理の処理負荷や処理時間の増加を抑制できる。従って、KVS12aへのエントリの格納処理自体の処理負荷や処理時間の増加を抑制できる。
・IDXマネージャ15及びインデクサ16は、サーバ105からの検索条件で指定された検索キーに係るIDXデータを、検索要求に応じて作成するため、不要なIDXデータを作成せずに済み、IDX15bに使用される記憶領域のサイズの増加を抑制できる。
・チャンク単位でIDXデータが管理され、使用されないIDXデータはチャンク単位で削除されるため、IDX15bに使用される記憶領域のサイズの増加を抑制できる。
このように、一実施形態に係るKVSシステム1によれば、KVS12aに格納されたデータに対するIDXの作成処理のリソース量を低減させることができる。従って、例えば、KVS12aへのキーバリュー群の登録量に依存しない処理時間及び処理性能によって、KVS12aに対するキーバリュー群の格納及び検索等が可能となる。
なお、ここまで、一実施形態に係るKVSシステム1は、エントリの検索要求を受信した場合であって、検索条件に対応するIDXデータが作成されていない場合に、IDX作成処理を行なうものとして説明したが、これに限定されるものではない。
KVSシステム1では、例えば、KVS12aに対してUID及びエントリが格納されるストアのタイミングで、IDX作成処理が行なわれることが許容されてもよい。
一例として、KVSシステム1は、検索部14bにキーバリューを格納する際に、IDX作成フラグを参照し、IDX作成フラグが有効か否かを判定してよい。そして、KVSシステム1は、IDX作成フラグが有効である場合に、IDXマネージャ15に対してIDX作成処理の実行を指示してもよい。
IDX作成フラグは、KVS12aにおけるキーバリューの格納のタイミングで(換言すれば、格納の都度)、IDX作成処理を行なうか否かを指定する情報であり、例えば、KVSシステム1のユーザや管理者等により予めKVSシステム1に設定されてよい。IDX作成フラグの参照及び判定は、ストアハンドラ11、KVSクラスタ12、又は、IDXマネージャ15等が行なってもよい。
〔1−3〕スケールアウトに係る構成例
ここまで、KVSシステム1における、KVS12aへのエントリの格納、IDXデータの作成、及び、KVS12aからの検索、の処理に着目して説明を行なった。一実施形態に係るKVSシステム1は、上述した構成に加えて、以下のような構成を備えることにより、スケールアウトを容易に実現することが可能である。
以下、図9〜図12を参照して、KVSシステム1におけるスケールアウトの機能に着目した構成例を説明する。
図9は、KVSクラスタ12に対するエントリの登録処理に係る構成例を示すブロック図である。なお、図9の例では、KVSシステム1におけるクエリハンドラ14、IDXマネージャ15、及び、インデクサ16の図示、並びに、KVSクラスタ12におけるKVS12a及びUIDマネージャ13におけるUIDリスト13aの図示を省略している。
図9に示すように、KVSシステム1は、図2に示す構成に加えて、ロードバランサ17を備えてよい。また、ストアハンドラ11、KVSクラスタ12、及びUIDマネージャ13としての機能は、それぞれ、複数(図9の例では3台)のノード21、複数(図9の例では4台)のノード22、及び複数(図9の例では3台)のノード23、により実現されてよい。さらに、UIDマネージャ13は、管理部2を備えてよい。
ロードバランサ17は、IoTデバイス101から受信した登録要求を、複数のノード21の各々の処理負荷(Load)等に応じて、いずれかのノード21に送信する、負荷分散(ロードバランス)を行なう。
複数のノード21の各々は、図2に示すストアハンドラ11としての機能を備えてよい。すなわち、いずれのノード21がロードバランサ17から登録要求を受信したとしても、上述したストアハンドラ11としての処理を行なうことができる。
複数のノード22は、DHT等によるスケールアウト機構を有し、複数のノード22により、図2に示すKVSクラスタ12及びKVS12aの機能が実現される。
複数のノード23の各々は、図2に示すUIDマネージャ13の機能を備えてよく、また、複数のノード23間でUIDリスト13aを分散して管理してよい。
管理部2は、複数のノード23の各々による、UIDリスト13aに対するUIDの登録(更新)処理の処理負荷等に応じて、登録(更新)処理を行なう(担当する)ノード23を決定する。このように、管理部2は、複数のノード23の負荷分散を行なう。なお、管理部2自体も、1つ又は複数のノードであってよい。
管理部2は、図9に示すように、ノード23を管理するためのノードリスト2aを管理してよい。例えば、管理部2は、オリジナルキーごとに、UIDリストを記録するノード23を割り当ててよい。
図10は、ノードリスト2aの一例を示す図である。図10に示すように、ノードリスト2aは、オリジナルキーのUIDを記録するノード23を管理する情報であってよい。なお、1つのオリジナルキーに対して、複数のノード23が割り当てられてもよい。
図10の例では、オリジナルキー“key_x”に対して、複数のノード23のうちのノードA及びノードB(図10参照)が割り当てられており、“key_y”に対して、ノードBが割り当てられている。
このように、一実施形態に係るKVSシステム1によれば、エントリの登録処理に係るストアハンドラ11、KVSクラスタ12、及び、UIDマネージャ13のそれぞれにおいて負荷分散が可能な構成を採用することができる。
従って、例えば、ストアハンドラ11によるストア受付部11aとしての機能を、複数のノード21(換言すれば、複数のホスト)により並列に実行可能となる。また、ストアハンドラ11による格納部11bとしての機能を、複数のノード21により並列に実行可能となる。
また、KVS12aにおいては、ノード22(ホスト)を追加することにより、略リニアにライト性能及びリード性能を向上させることが可能となる。
さらに、例えば、UIDリスト13aに対する、TSごとのエントリのUIDの記録処理を、複数のノード23(換言すれば、複数のホスト)により並列に実行可能となる。
これにより、KVSシステム1のスケールアウトを容易に実現することができ、KVSに対するデータの格納性能を、スケールアウトの規模に比例して向上させることが可能となる。
図11は、KVSクラスタ12に対するエントリの検索処理に係る構成例を示すブロック図である。なお、図11の例では、KVSシステム1におけるストアハンドラ11の図示、並びに、KVSクラスタ12におけるKVS12a、UIDマネージャ13におけるUIDリスト13a、及び、IDXマネージャ15におけるIDX15bの図示を省略している。
図11に示すように、KVSシステム1は、図2及び図9に示す構成に加えて、ロードバランサ18を備えてよい。また、クエリハンドラ14、IDXマネージャ15、及びインデクサ16としての機能は、それぞれ、複数(図11の例では4台)のノード24、複数(図11の例では3台)のノード25、及び複数(図11の例では3台)のノード26、により実現されてよい。さらに、IDXマネージャ15は、管理部3を備えてよい。
ロードバランサ18は、サーバ105から受信した検索要求を、複数のノード24の各々の処理負荷等に応じて、いずれかのノード24に送信する、負荷分散(ロードバランス)を行なう。なお、例えば、ロードバランサ17及び18は、同一の情報処理装置又は通信装置、例えばノードにより実現されてもよい。
複数のノード24の各々は、図2に示すクエリハンドラ14としての機能を備えてよい。すなわち、いずれのノード24がロードバランサ18から検索要求を受信したとしても、上述したクエリハンドラ14としての処理を行なうことができる。
複数のノード25の各々は、図2に示すIDXマネージャ15の機能を備えてよく、また、複数のノード25間でIDX15bを分散して管理してよい。
複数のノード26の各々は、図2に示すインデクサ16の機能を備えてよい。すなわち、いずれのノード26によっても、IDX作成処理を行なうことができる。
管理部3は、複数のノード25及び26の各々による、IDX作成処理の処理負荷等に応じて、IDXデータの管理やIDX作成処理を行なう(担当する)ノード25及びノード26を決定する。このように、管理部3は、複数のノード25及び複数のノード26の負荷分散を行なう。なお、管理部3自体も、1つ又は複数のノードであってよい。
例えば、管理部3は、チャンクごと、且つ、オリジナルキーごとに、IDXデータの管理やIDX作成処理を行なうノード25及びノード26を割り当ててよい。管理部3は、図11に示すように、ノード25及びノード26を管理するためのインデクサリスト3aを管理してよい。
図12は、インデクサリスト3aの一例を示す図である。図12に示すように、インデクサリスト3aは、チャンク単位で、各オリジナルキーのIDXデータを管理するノード25及びノード26を管理する情報であってよい。なお、1組のノード25及びノード26に対して、複数のチャンク及び複数のオリジナルキーが割り当てられてもよい。
なお、一実施形態において、ノード25とノード26とは、1対1、1対他、又は、他対1のいずれの対応であってもよい。図12の例では、ノード25とノード26とは、1対1に対応するものとするものとし、複数のノード25のうちのノードA、ノードB、ノードCは、それぞれ、複数のノード26のうちのノードA、ノードB、ノードC(いずれも図示省略)に対応するものとする。
図12の例では、オリジナルキー“key_x”、“chunk_id”=“1”に対して、ノードAが割り当てられており、“key_x”、“chunk_id”=“2”に対して、ノードBが割り当てられている。また、“key_y”、“chunk_id”=“1”に対して、ノードBが割り当てられており、“key_y”、“chunk_id”=“2”に対して、ノードBが割り当てられている。
このように、一実施形態に係るKVSシステム1によれば、エントリの検索処理及びIDX作成処理に係るクエリハンドラ14、IDXマネージャ15、及び、インデクサ16のそれぞれにおいて負荷分散が可能な構成を採用することができる。
従って、例えば、クエリハンドラ14によるクエリ受付部14aとしての機能を、複数のノード24(換言すれば、複数のホスト)により並列に実行可能となる。また、クエリハンドラ14による検索部14bとしての機能を、複数のノード24により並列に実行可能となる。
また、例えば、IDXマネージャ15は、各チャンクのIDXデータをチャンク単位で異なるノード25及び26(換言すれば、ホスト)で管理することが可能となる。
これにより、KVSシステム1のスケールアウトを容易に実現することができ、KVSに対するデータの検索性能を、スケールアウトの規模に比例して向上させることが可能となる。
ここで、図13に例示するように、一実施形態に係るKVSシステム1は、図2及び図9〜図12に示す構成に加えて、ボトルネック箇所を解析し、ボトルネック箇所に応じたスケールアウト処理の実行を制御するスケールアウト制御部19を備えてよい。
スケールアウト制御部19は、KVSシステム1の性能を監視する監視部の一例であり、所定のタイミングでKVSシステム1におけるボトルネックを解析してよい。スケールアウト制御部19による監視対象の「性能」としては、例えば、ストアハンドラ11、UIDマネージャ13、クエリハンドラ14、IDXマネージャ15等のノードの処理性能(例えばプロセッサやメモリの使用率や処理時間)等が挙げられる。なお、監視対象の「性能」には、例えば、KVSシステム1に対する格納要求や検索要求のリクエスト数等が含まれてもよい。
スケールアウト制御部19は、所定のタイミングで、各種性能監視結果と、性能の種別に応じた所定の閾値とを比較し、性能が所定の閾値を超えたノードをボトルネック箇所として特定する。そして、スケールアウト制御部19は、特定したボトルネック箇所に対して、スケールアウト処理の実行を指示する。換言すれば、スケールアウト制御部19は、性能監視結果に基づき、ボトルネック箇所に対して、スケールアウト処理の実行トリガを送信するといえる。
一例として、スケールアウト制御部19は、ボトルネック箇所がストアハンドラ11又はクエリハンドラ14である場合、ボトルネック箇所であるストアハンドラ11又はクエリハンドラ14に対して、ノード21又は24の台数を増加させる指示を送信してよい。ストアハンドラ11又はクエリハンドラ14は、当該指示の受信に応じて、ノード21又は24の台数を増加させてよい。
また、スケールアウト制御部19は、ボトルネック箇所がUIDマネージャ13によるUIDリスト13aの更新処理である場合、UIDマネージャ13に対して、ノード23の台数を増加させる指示を送信してよい。UIDマネージャ13は、当該指示の受信に応じて、ノード23の台数を増加させ、監視結果に基づいて、オリジナルキーごとに、ノード23にUIDリスト13aを分散して記憶させてよい。例えば、UIDマネージャ13は、監視結果に基づいて、格納頻度の高いオリジナルキーのリクエスト(UIDリスト13a)を、複数のノード23に分散させてよい。
さらに、スケールアウト制御部19は、ボトルネック箇所がIDX15bの更新処理である場合、IDXマネージャ15及び/又はインデクサ16に対して、ノード25及び/又は26の台数を増加させる指示を送信してよい。IDXマネージャ15及び/又はインデクサ16は、当該指示の受信に応じて、ノード25及び/又は26の台数を増加させ、監視結果に基づいて、オリジナルキーごとに、ノード25及び/又は26にIDX15bを分散して記憶させてよい。また、IDXマネージャ15は、検索頻度の高いキーのチャンク長を小さくしてよい。
このように、スケールアウト制御部19は、監視の結果に基づいて、ノード21、ノード22、ノード23、ノード24、並びに、ノード25及び26、のうちの少なくとも1つのノード数を変更する制御を行なう。
以上のように、スケールアウト制御部19によれば、性能監視結果に応じて、KVSシステム1のスケールアウトを柔軟に実行することができる。また、ボトルネック箇所に応じてスケールアウトが実行されるため、HW資源やNW資源を効率的に使用することができる。
なお、スケールアウト制御部19は、例えば、図2に示すストアハンドラ11、UIDマネージャ13、クエリハンドラ14、及び、IDXマネージャ15、の少なくとも1つの機能として実装されてもよい。すなわち、ストアハンドラ11、UIDマネージャ13、クエリハンドラ14、及び、IDXマネージャ15の少なくとも1つが、スケールアウト制御部19の機能を備えてもよい。或いは、スケールアウト制御部19は、ノード21〜26(図9及び図11参照)とは異なる1以上のノードにより実現されてもよい。
〔1−4〕動作例
次に、図14〜図23を参照して、上述の如く構成された一実施形態に係るKVSシステム1の動作例を説明する。
〔1−4−1〕全体の処理
まず、図14〜図16を参照して、KVSシステム1による全体の処理を説明する。
(エントリの格納要求を受信した場合)
図14に例示するように、ストアハンドラ11のストア受付部11aは、IoTデバイス101からエントリの格納要求を受信すると(ステップA1)、エントリ情報を引数として取得し、エントリ情報を格納部11bに出力する。
格納部11bは、エントリ情報に基づき、KVSクラスタ12に対するエントリ格納処理を行ない(ステップA2)、処理が終了する。
なお、ストアハンドラ11又はKVSクラスタ12は、エントリ格納処理において、IDX作成フラグを参照し、IDX作成フラグが有効である場合には、IDXマネージャ15に対してIDX作成処理の実行を指示してもよい(ステップA3)。IDXマネージャ15がIDX作成フラグの参照を行なってもよい。
(エントリの検索要求を受信した場合)
図15に例示するように、クエリハンドラ14のクエリ受付部14aは、サーバ105からエントリの検索要求を受信すると(ステップB1)、エントリ検索情報を引数として取得し、エントリ検索情報を検索部14bに出力する。
検索部14bは、エントリ検索情報に基づき、KVSクラスタ12からのエントリ検索処理を行ない(ステップB2)、処理が終了する。
なお、エントリ検索処理において、IDXマネージャ15及びインデクサ16が、IDX作成処理を行なう場合がある(ステップB3)。
(スケールアウト処理を行なう場合)
図16に例示するように、スケールアウト制御部19は、KVSシステム1の性能監視を行ない、性能の監視結果に基づき、ボトルネック箇所を特定する。そして、スケールアウト制御部19は、特定したボトルネック箇所に対して、スケールアウト処理の実行トリガを送信する。
ボトルネック箇所は、上述のようにしてスケールアウト制御部19から送信された実行トリガを受信すると(ステップC1)、スケールアウト処理を実行し(ステップC2)、処理が終了する。ボトルネック箇所としては、例えば、ストアハンドラ11、UIDマネージャ13、クエリハンドラ14、又は、IDXマネージャ15が挙げられる。
〔1−4−2〕エントリ格納処理
次に、図17及び図18を参照して、図14のステップA2に示すエントリ格納処理の動作例を説明する。
図17に例示するように、格納部11bは、ストア受付部11aからエントリ情報を受信すると、UIDマネージャ13に対して、UIDの発行を依頼する。格納部11bは、発行されたUIDを登録対象のエントリに付与する(ステップA11)。
図18の例では、登録受付APIとしてのストア受付部11aが、タイムスタンプ“112233”、オリジナルキー“hoge”:オリジナルバリュー:“huga”、オリジナルキー“foo”:オリジナルバリュー:“10.5”、のエントリ情報を取得する(符号I参照)。そして、格納部11bは、当該エントリ情報に対して、UIDマネージャ13から発行されたUID“a058b76a”を付加する(符号II参照)。
そして、格納部11bは、KVSクラスタ12に対して、UIDをキーとし、エントリ情報に含まれるオリジナルキーバリューをバリューとしたキーバリューの格納指示を送信する。KVSクラスタ12は、格納指示に応じて、キーバリューをKVS12aに格納し(ステップA12;図18の符号III参照)、処理が終了する。
また、格納部11bは、ステップA11と並行して、又は、ステップA11の後に、エントリ情報をUIDマネージャ13に送信する。UIDマネージャ13は、現在のTSで識別されるUIDリスト13aに、エントリ情報に対して発行したUIDの情報を追記し(ステップA13)、処理が終了する。図18の例では、UIDマネージャ13は、TS“1122”、オリジナルキー“hoge”、UID“a058b76a”の情報と、TS“1122”、オリジナルキー“foo”、UID“a058b76a”の情報と、を、それぞれUIDリスト13aに追加する(図18の符号IV参照)。
さらに、例えば格納部11bは、IDX作成フラグを参照し、IDX作成フラグが有効か否か、すなわち、即時にIDX作成処理を行なうか否か、を判定する(ステップA14)。IDX作成フラグが無効の場合(ステップA14でNo)、処理が終了する。
IDX作成フラグが有効の場合(ステップA14でYes)、格納部11bは、IDXマネージャ15に対してIDX作成処理の実行を指示する。IDXマネージャ15は、インデクサ16とともにIDX作成処理を行ない(ステップA15;図18の符号V参照)、処理が終了する。
なお、ステップA12、A13、並びに、A14及びA15、の処理は、並行して(換言すれば、互いに非同期に)実行されてよい。
〔1−4−3〕エントリ検索処理
次に、図19〜図21を参照して、図15のステップB2に示すエントリ検索処理の動作例を説明する。
図19に例示するように、検索部14bは、クエリ受付部14aからエントリ検索情報を受信すると、エントリ検索情報に含まれる検索条件の時刻範囲に該当するTSを特定する(ステップB11)。そして、検索部14bは、IDXマネージャ15に対して、エントリ検索情報及び特定したTSを含む、UIDリストの取得要求を送信する。
次いで、IDXマネージャ15は、該当TSにおいて、検索条件が含む検索キーのIDXデータが作成済か否かを判定する。
図20の例では、検索受付APIとしてのクエリ受付部14aが、時刻範囲“112210”〜“112240”、検索キー“hoge”:検索バリュー“fuga”、検索キー“foo”:検索バリュー“9.0”〜“12.0”のエントリ検索情報を取得した場合を想定する(符号I参照)。この場合、IDXマネージャ15は、IDX作成状況15aを参照して、TS“1122”における、検索キー“hoge”及び“foo”のそれぞれのIDXデータの作成有無を判定する(符号II参照)。
IDXデータが作成済の場合(ステップB12でYes)、処理がステップB14に移行する。一方、IDXデータが未作成の場合(ステップB12でNo)、IDXマネージャ15は、インデクサ16とともにIDX作成処理を行ない(ステップB13)、処理がステップB14に移行する。
図20の例では、符号IIに示すように、IDX作成状況15aにおいて、TS“1122”における検索キー“foo”のIDXデータは作成済(true)となっている(ステップB12でYes)。一方、TS“1122”における検索キー“hoge”のIDXデータは未作成(false)となっている(ステップB12でNo)。従って、IDXマネージャ15は、ステップB13のIDX作成処理において、TS“1122”における検索キー“hoge”のIDXデータを作成する(図20の符号III〜符号V参照(後述する))。
IDXマネージャ15は、検索条件に含まれる全ての検索キーに対して、それぞれIDX15bを走査(参照)し、各検索キーに該当するエントリのUIDを取得(抽出)することで、UIDリストを取得(作成)する(ステップB14;図21の符号I参照)。そして、IDXマネージャ15は、取得したUIDリストを検索部14bに送信する。
検索部14bは、IDXマネージャ15からUIDリストを受信すると、KVSクラスタ12に対して、受信したUIDリストを含む、バリュー(オリジナルキーバリュー)の検索要求を送信する。
KVSクラスタ12は、KVS12aから、UIDリストに含まれるキー(UID)に対応するバリュー(オリジナルキーバリュー;エントリ)を取得し(図21の符号II参照)、取得したエントリ群を検索部14bに送信する。
検索部14bは、KVSクラスタ12から取得したエントリ群を検索結果としてサーバ105に送信(応答)し(ステップB15)、処理が終了する。
〔1−4−4〕IDX作成処理
次に、図22及び図20を参照して、図17のステップA15に示すIDX作成処理、及び、図19のステップB13に示すIDX作成処理の動作例を説明する。
以下、図17のステップA15に示すIDX作成処理に係るTS、チャンク、検索キー等を、「登録」に係るTS、チャンク、検索キー等と表記する。また、図19のステップB13に示すIDX作成処理に係るTS、チャンク、検索キー等を、「検索」に係るTS、チャンク、検索キー等と表記する。
図22に例示するように、IDXマネージャ15は、登録又は検索に係るTSにおいて登録又は検索の対象となる検索キーを持つエントリ群のUIDリストの取得要求を、UIDマネージャ13に送信する。
UIDマネージャ13は、UIDリストの取得要求を受信すると、UIDリスト13aから、指定されたUIDリストを検索(抽出)し(図20の符号III参照)、得られたUIDリストをIDXマネージャ15に送信する。IDXマネージャ15は、UIDマネージャ13からUIDリストを取得する(ステップS11)。
IDXマネージャ15は、UIDマネージャ13からUIDリストを取得すると、IDX作成状況15aを参照して、登録又は検索に係るチャンク内で一部のIDXデータが作成済か否かを判定する(ステップS12)。例えば、IDXマネージャ15は、IDX作成状況15aにおいて、登録又は検索に係るTSが属するチャンク内の全てのTSのうち、少なくとも1つのTSが有効を示すか否かを判定する。
当該チャンク内において少なくとも一部のIDXデータが作成済である場合(ステップS12でYes)、処理がステップS14に移行する。
一方、当該チャンク内においていずれのIDXデータも作成されていない場合(ステップS12でNo)、IDXマネージャ15は、当該チャンクに対するIDX15bを、ノード25に割り当て(ステップS13)、当該ノード25を担当ノードに決定する。負荷の平準化を図るためである。
そして、当該チャンクを担当する担当ノード25から、当該担当ノード25に対応するインデクサ16のノード26に対して、UIDリストを送信する(ステップS14)。
インデクサ16のノード26は、KVSクラスタ12に対して、IDXマネージャ15から受信したUIDリストに基づくエントリの取得(検索)要求を送信する。KVSクラスタ12は、KVS12aから、UIDリストで指定されたUID(キー)に対応するエントリ(バリュー)を抽出(検索)し(図20の符号IV参照)、抽出結果をインデクサ16に送信する。インデクサ16は、抽出結果をKVSクラスタ12から受信する(ステップS15)。
インデクサ16は、UIDリスト、並びに、KVSクラスタ12から受信したエントリ群、すなわち、オリジナルキーバリュー群に基づき、IDX15bに対して、IDXデータを作成(追加)する(ステップS16;図20の符号V参照)。そして、インデクサ16は、IDXマネージャ15に対して、IDXデータの作成完了を通知する。
IDXマネージャ15は、登録又は検索に係る検索キー及びTSについてのIDXデータを作成したこと、IDX作成状況15aに記録し(ステップS17)、処理が終了する。
〔1−4−5〕スケールアウト処理
次に、図23を参照して、図16のステップC1及びC2に示す処理の動作例を説明する。
図23に例示するように、スケールアウト制御部19は、KVSシステム1の性能監視結果に基づき、ボトルネック箇所を解析し(ステップC11)、ステップC12、C14、及び、C16の各処理を行なう。なお、ステップC12、C14、及び、C16の処理は、並行して行なわれてもよいし、所定の順序で行なわれてもよい。
スケールアウト制御部19は、ボトルネック箇所がストアハンドラ11又はクエリハンドラ14であるか否かを判定する(ステップC12)。
ボトルネック箇所がストアハンドラ11又はクエリハンドラ14である場合(ステップC12でYes)、スケールアウト制御部19は、ボトルネック箇所であるストアハンドラ11又はクエリハンドラ14に対してスケールアウト処理の実行を指示する。
ボトルネック箇所であるストアハンドラ11又はクエリハンドラ14は、スケールアウト処理の実行指示に応じて、ボトルネック箇所のノード21又は24の台数を増加させる(ステップC13)。
ステップC13の指示をした場合、又は、ボトルネック箇所がストアハンドラ11又はクエリハンドラ14ではない場合(ステップC12でNo)、処理が終了する。
また、スケールアウト制御部19は、ボトルネック箇所がUIDマネージャ13であるか否かを判定する(ステップC14)。
ボトルネック箇所がUIDマネージャ13である場合(ステップC14でYes)、スケールアウト制御部19は、ボトルネック箇所であるUIDマネージャ13に対してスケールアウト処理の実行を指示する。
ボトルネック箇所であるUIDマネージャ13は、スケールアウト処理の実行指示に応じて、ボトルネック箇所のノード23の台数を増加させ、格納頻度の高いキーのリクエストを、複数のノード23に分散させる(ステップC15)。
ステップC15の指示をした場合、又は、ボトルネック箇所がUIDマネージャ13ではない場合(ステップC14でNo)、処理が終了する。
さらに、スケールアウト制御部19は、ボトルネック箇所がIDX15bの更新(又は作成)であるか否かを判定する(ステップC16)。
ボトルネック箇所がIDX15bの更新等である場合(ステップC16でYes)、スケールアウト制御部19は、ボトルネック箇所であるIDXマネージャ15に対してスケールアウト処理の実行を指示する。
ボトルネック箇所であるIDXマネージャ15は、スケールアウト処理の実行指示に応じて、ボトルネック箇所のノード25及び/又はノード26の台数を増加させ、検索頻度の高いキーのチャンクを小さくする(ステップC17)。
ステップC17の指示をした場合、又は、ボトルネック箇所がIDX15bの更新等ではない場合(ステップC16でNo)、処理が終了する。
〔1−5〕ハードウェア構成例
図24は、一実施形態に係るKVSシステム1が備える複数のノードを実現するHW資源及びNW資源を構成するコンピュータ10のハードウェア構成例を示すブロック図である。コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、IF(Interface)部10d、I/O(Input / Output)部10e、及び、読取部10fを備えてよい。
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
プロセッサ10aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
メモリ10bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ10bとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリが挙げられる。
記憶部10cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部10cとしては、HDD等の磁気ディスク装置、例えばSSD等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
また、記憶部10cは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10gを格納してよい。例えば、コンピュータ10のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、図2及び図9〜図13に示すKVSシステム1としての機能を実現できる。
IF部10dは、図示しないネットワーク(図1に示すネットワーク103及び106を含んでもよい)との間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10dは、LAN(Local Area Network)、或いは、光通信(例えばFC(Fibre Channel;ファイバチャネル))等に準拠したアダプタを含んでよい。例えば、プログラム10gは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10cに格納されてもよい。
I/O部10eは、マウス、キーボード、又は操作ボタン等の入力部、並びに、タッチパネルディスプレイ、LCD(Liquid Crystal Display)等のモニタ、プロジェクタ、又はプリンタ等の出力部、の一方又は双方を含んでよい。
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10gが格納されてもよく、読取部10fが記録媒体10hからプログラム10gを読み出して記憶部10cに格納してもよい。
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等が挙げられる。なお、CDとしては、例示的に、CD−ROM、CD−R、CD−RW等が挙げられる。また、DVDとしては、例示的に、DVD−ROM、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等が挙げられる。
上述したコンピュータ10のハードウェア構成は例示である。従って、コンピュータ10内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
なお、一実施形態では、図示しないネットワークによって相互に通信可能に接続された複数のコンピュータ10により構成されるHW資源及びNW資源によって、例えば、クラウドシステムとしてのKVSシステム1が構成されてよい。この場合、KVSシステム1が備える複数のノードの各々は、複数のコンピュータ10により構成されるHW資源及びNW資源を、論理的に(仮想的に)又は物理的に分割してノードに割り当てることにより実現されてよい。
換言すれば、KVSシステム1は、複数のコンピュータ10により提供されるHW資源及びNW資源としての、プロセッサ資源(プロセッサ)、メモリ資源(メモリ)、記憶資源(記憶部)、IF資源(IF部)、を備える1つの情報処理装置であると捉えてもよい。情報処理装置(コンピュータ)としてのKVSシステム1は、スケールアウト処理によって、プロセッサ資源、メモリ資源、記憶資源、及びIF資源を、特定の機能ブロックを実現するためのノードに割り当てたり、或いはノードへの割り当てを解放したりすることができる。
なお、KVSシステム1が備える複数の機能ブロックの各々を、(1以上のノードを備える)1つの装置と捉えてもよく、この場合、KVSシステム1は、複数の装置を備える情報処理システムと捉えられてよい。
また、クラウドシステムとしてのKVSシステム1においては、KVSシステム1としての機能を実現するためのプログラム10gを、複数のノードの各々における実行単位に分割し、分割したプログラムを複数のノードに分散して配置してもよい。なお、上述のように、複数のノード(複数のノード21〜26)は、複数の物理マシン、複数の仮想マシン(VM)、及び、1以上の物理マシン及び1以上の仮想マシンの組み合わせ、のいずれであってもよい。
すなわち、プログラム10gは、複数のノードに分散して配置されたとしても、KVSシステム1の機能を、情報処理装置(コンピュータ)又は情報処理システムに実行させる1つのプログラムと捉えることができる。
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図2、図9〜図12、並びに、図13に示すKVSシステム1の各機能ブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。KVSシステム1の機能ブロックとは、ストアハンドラ11、KVSクラスタ12、UIDマネージャ13、クエリハンドラ14、IDXマネージャ15、インデクサ16、ロードバランサ17及び18、並びに、スケールアウト制御部19である。
また、一実施形態において、ストアハンドラ11がIoTデバイス101からキーバリュー(オリジナルキーバリュー)の格納要求を受け付けるものとしたが、これに限定されるものではない。ストアハンドラ11は、IoTデバイス101以外の他のコンピュータから、種々の形態のデータをKVSクラスタ12に格納する格納要求を受け付けてよい。従って、KVS12aに格納されるバリューは、オリジナルキーバリューに限定されるものではなく、スキーマレスな種々のデータであってよい。
〔3〕付記
以上の一実施形態に関し、さらに以下の付記を開示する。
(付記1)
キーとバリューとを対応付けて格納するキーバリューストアに対するデータの格納要求を受け付け、前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納する格納処理部と、
単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理する管理部と、
前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成する作成部と、を備える
情報処理装置。
(付記2)
前記作成部は、前記検索要求で指定された時刻に対応する識別情報を前記対応情報から抽出し、前記抽出した識別情報に対応するデータを前記キーバリューストアから抽出して、前記抽出した識別情報及び前記抽出したデータに基づき、前記インデックスを作成する、付記1に記載の情報処理装置。
(付記3)
前記作成部は、連続する複数の前記単位時間を含む所定期間を一単位として前記インデックスを作成する、付記1又は付記2に記載の情報処理装置。
(付記4)
前記作成部は、
前記所定期間に含まれる各単位時間に受信したデータに関するインデックスデータが前記所定期間の前記インデックスに含まれるか否かを示す作成管理情報を管理し、
前記検索要求で指定された時刻に対応する単位時間に受信したデータに関するインデックスデータが前記インデックスに含まれない場合に、当該インデックスデータを前記インデックスに追加する、付記3に記載の情報処理装置。
(付記5)
前記格納要求により前記キーバリューストアへの格納を要求されるデータは、キー及びバリューを含み、
前記格納処理部は、前記データに割り当てられた識別情報を前記キーバリューストアのキーとし、前記キー及び前記バリューを含む前記データを前記キーバリューストアのバリューとして、前記識別情報と前記データとを前記キーバリューストアに格納し、
前記対応情報は、前記単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータのキーとを対応付けた情報である、付記1〜4のいずれか1項に記載の情報処理装置。
(付記6)
前記格納処理部、前記キーバリューストア、前記管理部、及び、前記作成部は、それぞれ、1以上のノードにより実行され、
前記情報処理装置の性能を監視する監視部をさらに備え、
前記監視部は、前記監視の結果に基づいて、前記格納処理部を実行する1以上のノード、前記キーバリューストアを実行する1以上のノード、前記管理部を実行する1以上のノード、及び、前記作成部を実行する1以上のノード、のうちの少なくとも1つのノード数を変更する制御を行なう、付記1〜5のいずれか1項に記載の情報処理装置。
(付記7)
前記管理部は、前記管理部を実行する前記1以上のノードの各々に対して、前記監視の結果に基づいて、前記キーバリューストアが格納する複数のデータの内容ごとに、前記対応情報を分散して記憶させる、付記6に記載の情報処理装置。
(付記8)
前記作成部は、前記作成部を実行する前記1以上のノードの各々に対して、前記監視の結果に基づいて、前記キーバリューストアが格納する複数のデータの内容ごとに、前記インデックスを分散して記憶させる、付記6又は付記7に記載の情報処理装置。
(付記9)
コンピュータに、
キーとバリューとを対応付けて格納するキーバリューストアに対するデータの格納要求を受け付け、
前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納し、
単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理し、
前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成する、
処理を実行させる情報処理プログラム。
(付記10)
前記作成は、
前記検索要求で指定された時刻に対応する識別情報を前記対応情報から抽出し、
前記抽出した識別情報に対応するデータを前記キーバリューストアから抽出し、
前記抽出した識別情報及び前記抽出したデータに基づき、前記インデックスを作成する、付記9に記載の情報処理プログラム。
(付記11)
前記作成は、連続する複数の前記単位時間を含む所定期間を一単位として前記インデックスを作成する、付記9又は付記10に記載の情報処理プログラム。
(付記12)
前記コンピュータに、
前記所定期間に含まれる各単位時間に受信したデータに関するインデックスデータが前記所定期間の前記インデックスに含まれるか否かを示す作成管理情報を管理する、
処理を実行させ、
前記作成は、前記検索要求で指定された時刻に対応する単位時間に受信したデータに関するインデックスデータが前記インデックスに含まれない場合に、当該インデックスデータを前記インデックスに追加する、付記11に記載の情報処理プログラム。
(付記13)
前記格納要求により前記キーバリューストアへの格納を要求されるデータは、キー及びバリューを含み、
前記格納は、前記データに割り当てられた識別情報を前記キーバリューストアのキーとし、前記キー及び前記バリューを含む前記データを前記キーバリューストアのバリューとして、前記識別情報と前記データとを前記キーバリューストアに格納し、
前記対応情報は、前記単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータのキーとを対応付けた情報である、付記9〜12のいずれか1項に記載の情報処理プログラム。
(付記14)
前記格納、前記キーバリューストア、前記管理、及び、前記作成は、それぞれ、1以上のノードにより実行され、
前記コンピュータに、
前記コンピュータの性能を監視し、
前記監視の結果に基づいて、前記格納を実行する1以上のノード、前記キーバリューストアを実行する1以上のノード、前記管理を実行する1以上のノード、及び、前記作成を実行する1以上のノード、のうちの少なくとも1つのノード数を変更する制御を行なう、
処理を実行させる、付記9〜13のいずれか1項に記載の情報処理プログラム。
(付記15)
前記コンピュータに、
前記管理を実行する前記1以上のノードの各々に対して、前記監視の結果に基づいて、前記キーバリューストアが格納する複数のデータの内容ごとに、前記対応情報を分散して記憶させる、
処理を実行させる、付記14に記載の情報処理プログラム。
(付記16)
前記コンピュータに、
前記作成を実行する前記1以上のノードの各々に対して、前記監視の結果に基づいて、前記キーバリューストアが格納する複数のデータの内容ごとに、前記インデックスを分散して記憶させる、
処理を実行させる、付記14又は付記15に記載の情報処理プログラム。
(付記17)
キーとバリューとを対応付けて格納するキーバリューストアと、
前記キーバリューストアに対するデータの格納要求を受け付け、前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納する格納処理部と、
単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理する管理部と、
前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成する作成部と、を備える
情報処理システム。
1 KVSシステム
10 コンピュータ
11 ストアハンドラ
11a ストア受付部
11b 格納部
12 KVSクラスタ
12a KVS
13 UIDマネージャ
13a UIDリスト
14 クエリハンドラ
14a クエリ受付部
14b 検索部
15 IDXマネージャ
15a IDX作成状況
15b IDX
16 インデクサ
17、18 ロードバランサ
19 スケールアウト制御部
100 IoTシステム
101 IoTデバイス
102 エッジコンピュータ
103、106 ネットワーク
104 データセンタ
105 サーバ
2、3 管理部
2a ノードリスト
21〜26 ノード
3a インデクサリスト

Claims (9)

  1. キーとバリューとを対応付けて格納するキーバリューストアに対するデータの格納要求を受け付け、前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納する格納処理部と、
    単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理する管理部と、
    前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成する作成部と、を備える
    情報処理装置。
  2. 前記作成部は、前記検索要求で指定された時刻に対応する識別情報を前記対応情報から抽出し、前記抽出した識別情報に対応するデータを前記キーバリューストアから抽出して、前記抽出した識別情報及び前記抽出したデータに基づき、前記インデックスを作成する、請求項1に記載の情報処理装置。
  3. 前記作成部は、連続する複数の前記単位時間を含む所定期間を一単位として前記インデックスを作成する、請求項1又は請求項2に記載の情報処理装置。
  4. 前記作成部は、
    前記所定期間に含まれる各単位時間に受信したデータに関するインデックスデータが前記所定期間の前記インデックスに含まれるか否かを示す作成管理情報を管理し、
    前記検索要求で指定された時刻に対応する単位時間に受信したデータに関するインデックスデータが前記インデックスに含まれない場合に、当該インデックスデータを前記インデックスに追加する、請求項3に記載の情報処理装置。
  5. 前記格納処理部、前記キーバリューストア、前記管理部、及び、前記作成部は、それぞれ、1以上のノードにより実行され、
    前記情報処理装置の性能を監視する監視部をさらに備え、
    前記監視部は、前記監視の結果に基づいて、前記格納処理部を実行する1以上のノード、前記キーバリューストアを実行する1以上のノード、前記管理部を実行する1以上のノード、及び、前記作成部を実行する1以上のノード、のうちの少なくとも1つのノード数を変更する制御を行なう、請求項1〜4のいずれか1項に記載の情報処理装置。
  6. 前記管理部は、前記管理部を実行する前記1以上のノードの各々に対して、前記監視の結果に基づいて、前記キーバリューストアが格納する複数のデータの内容ごとに、前記対応情報を分散して記憶させる、請求項5に記載の情報処理装置。
  7. 前記作成部は、前記作成部を実行する前記1以上のノードの各々に対して、前記監視の結果に基づいて、前記キーバリューストアが格納する複数のデータの内容ごとに、前記インデックスを分散して記憶させる、請求項5又は請求項6に記載の情報処理装置。
  8. コンピュータに、
    キーとバリューとを対応付けて格納するキーバリューストアに対するデータの格納要求を受け付け、
    前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納し、
    単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理し、
    前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成する、
    処理を実行させる情報処理プログラム。
  9. キーとバリューとを対応付けて格納するキーバリューストアと、
    前記キーバリューストアに対するデータの格納要求を受け付け、前記データに割り当てられた識別情報と前記データとを前記キーバリューストアに格納する格納処理部と、
    単位時間に受信したデータに割り当てた識別情報と、当該単位時間に受信したデータの内容とを対応付けた対応情報を管理する管理部と、
    前記キーバリューストアからデータを検索するための検索要求であって、時刻が指定された前記検索要求と、前記対応情報と、前記キーバリューストアが格納するデータと、に基づいて、前記キーバリューストアのインデックスを作成する作成部と、を備える
    情報処理システム。
JP2019012310A 2019-01-28 2019-01-28 情報処理装置、情報処理プログラム、及び情報処理システム Withdrawn JP2020119445A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019012310A JP2020119445A (ja) 2019-01-28 2019-01-28 情報処理装置、情報処理プログラム、及び情報処理システム
US16/737,329 US20200242094A1 (en) 2019-01-28 2020-01-08 Information processing apparatus, computer-readable recording medium having stored therein information processing program, and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019012310A JP2020119445A (ja) 2019-01-28 2019-01-28 情報処理装置、情報処理プログラム、及び情報処理システム

Publications (1)

Publication Number Publication Date
JP2020119445A true JP2020119445A (ja) 2020-08-06

Family

ID=71731174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019012310A Withdrawn JP2020119445A (ja) 2019-01-28 2019-01-28 情報処理装置、情報処理プログラム、及び情報処理システム

Country Status (2)

Country Link
US (1) US20200242094A1 (ja)
JP (1) JP2020119445A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022009850A1 (ja) 2020-07-10 2022-01-13 Agc株式会社 ガラスおよび化学強化ガラス

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022009850A1 (ja) 2020-07-10 2022-01-13 Agc株式会社 ガラスおよび化学強化ガラス

Also Published As

Publication number Publication date
US20200242094A1 (en) 2020-07-30

Similar Documents

Publication Publication Date Title
US8793227B2 (en) Storage system for eliminating duplicated data
CN110019004B (zh) 一种数据处理方法、装置及***
US20130055371A1 (en) Storage control method and information processing apparatus
US20120047107A1 (en) System and method for implementing on demand cloud database
US10592532B2 (en) Database sharding
US8832113B2 (en) Data management apparatus and system
EP3796184A1 (en) Virtual database tables with updatable logical table pointers
CN111597148B (zh) 用于分布式文件***的分布式元数据管理方法
US20180144272A1 (en) Parallel processing apparatus and method of estimating power consumption of jobs
US11636107B2 (en) Database management system, computer, and database management method
CN111857539B (zh) 用于管理存储***的方法、设备和计算机可读介质
US10685031B2 (en) Dynamic hash partitioning for large-scale database management systems
KR20140048396A (ko) 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법
CN113051221A (zh) 数据存储方法、装置、介质、设备及分布式文件***
US10747773B2 (en) Database management system, computer, and database management method
US20180260463A1 (en) Computer system and method of assigning processing
US10437806B2 (en) Database management method and information processing apparatus
US20200242094A1 (en) Information processing apparatus, computer-readable recording medium having stored therein information processing program, and information processing system
JPWO2015015727A1 (ja) ストレージ装置、データアクセス方法およびデータアクセスプログラム
US9870404B2 (en) Computer system, data management method, and recording medium storing program
KR101648401B1 (ko) 데이터 관리 및 분석을 위한 데이터베이스 장치, 스토리지 유닛 및 그 방법
CN111782834A (zh) 图像检索的方法、装置、设备及计算机可读存储介质
KR20160050735A (ko) 대용량 공간 데이터 환경에서 공간분석을 위한 공간질의 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록 매체
KR102024846B1 (ko) 파일 시스템 프로그램 및 이를 이용한 데이터 센터 제어 방법
CN111782588A (zh) 一种文件读取方法、装置、设备和介质

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211007

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20211101