(57)【要約】      （修正有）【課題】キー毎にデータを重複して保持すること、およびインデックスシステムを構築することなく、複数の異なるキーでデータにアクセスできるようにする。【解決手段】複数の記憶装置にデータを分散して管理するデータ管理装置１１であって、キーの種別毎に、各キーの格納先の記憶装置が設定された格納先解決情報記憶部１１３と、副キー用の格納先解決情報を参照して決定した記憶装置に、副キーと、当該副キーに対応付けられたデータへアクセスするためのポインタとを格納するとともに、主キー用の格納先解決情報を参照して決定した記憶装置に、主キーと、当該主キーに対応付けられたデータとを格納する登録手段と、を備える。【選択図】図１
2014153760.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置にデータを分散して管理するデータ管理装置であって、
キーの種別毎に、各キーの格納先の記憶装置が設定された格納先解決情報を記憶する記憶手段と、
副キー用の格納先解決情報を参照して決定した記憶装置に、副キーと、当該副キーに対応付けられたデータへアクセスするためのポインタとを格納するとともに、主キー用の格納先解決情報を参照して決定した記憶装置に、主キーと、当該主キーに対応付けられたデータとを格納する登録手段と、を備えること
を特徴とするデータ管理装置。
【請求項２】
請求項１記載のデータ管理装置であって、
副キーが指定された検索要求を受け付け、副キー用の格納先解決情報を参照して当該副キーが格納された記憶装置にアクセスして当該副キーに対応するポインタを取得し、取得したポインタを用いて当該副キーに対応付けられたデータが格納された記憶装置にアクセスし、データを読み出す検索手段、をさらに備えること
を特徴とするデータ管理装置。
【請求項３】
複数の記憶装置にデータを分散して管理するデータ管理プログラムであって、
コンピュータに、
副キーの格納先の記憶装置が設定された副キー用の格納先解決情報を参照して決定した記憶装置に、副キーと、当該副キーに対応付けられたデータへアクセスするためのポインタとを格納するステップと、
主キーの格納先の記憶装置が設定された主キー用の格納先解決情報を参照して決定した記憶装置に、主キーと、当該主キーに対応付けられたデータとを格納するステップと、
を実行させるためのデータ管理プログラム。
【請求項４】
請求項３記載のデータ管理プログラムであって、
副キーが指定された検索要求を受け付け、副キー用の格納先解決情報を参照して当該副キーが格納された記憶装置にアクセスして当該副キーに対応するポインタを取得するステップと、
取得したポインタを用いて当該副キーに対応付けられたデータが格納された記憶装置にアクセスし、データを読み出すステップと、
をさらに実行させるためのデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＫＶＳ（Key-Value Store）を用いてデータを複数の記憶装置に分散して管理するデータ管理装置およびデータ管理プログラムに関する。
【背景技術】
【０００２】
大規模通信サービスなどのシステムにおいては、データ操作のターンアラウンドタイム（ＴＡＴ）に対する要件が非常に厳しく、データ更新にリアルタイム性が求められる。
【０００３】
また、大規模データの高速処理を実現するために、分散ＫＶＳ（Key-Value Store）システムでデータベースを構築すること行われている。分散ＫＶＳは、キーと値（バリュー）で一組のペアとし、複数のストレージに分散して格納する。分散ＫＶＳについては、例えば、非特許文献１に記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「Range-Key Skip Graph による範囲検索可能な大規模分散キーバリューストアの実現」、情報処理学会研究報告、IPSJ SIG Notes 2010-DPS-144(9)、1-8、2010年9月10日
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＫＶＳシステムでデータベースを構築する場合、データ検索速度を高速化する目的から、基本的に、データに対して１つのキーを用いてアクセスする。しかしながら、例えば、大規模通信サービスにおいて、１つの加入者データ（サービスオーダーデータ）に対して、ある時は電話番号でアクセスし、ある時はSIP-URIでアクセスする、というように異なるキーでアクセスするケースが存在する。
【０００６】
１つのデータに対して複数の異なるキーでアクセスする場合は、キー毎にデータを重複して保持するか、別途インデックスシステムを構築する必要がある。キー毎にデータを重複して保持した場合、記憶容量を多量に必要とするとともに、データ更新時の整合性確保とターンアラウンドタイムが悪化する、という課題が生じる。また、別途インデックスシステムを構築する場合、インデックスシステム自体の規模が大きくなり分散収容する必要性が生じ、保守管理稼働が増加するという課題が生じる。
【０００７】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、キー毎にデータを重複して保持すること、およびインデックスシステムを構築することなく、複数の異なるキーでデータにアクセス可能なデータ管理装置およびデータ管理プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明は、複数の記憶装置にデータを分散して管理するデータ管理装置であって、キーの種別毎に、各キーの格納先の記憶装置が設定された格納先解決情報を記憶する記憶手段と、副キー用の格納先解決情報を参照して決定した記憶装置に、副キーと、当該副キーに対応付けられたデータへアクセスするためのポインタとを格納するとともに、主キー用の格納先解決情報を参照して決定した記憶装置に、主キーと、当該主キーに対応付けられたデータとを格納する登録手段と、を備える。
【０００９】
本発明は、複数の記憶装置にデータを分散して管理するデータ管理プログラムであって、コンピュータに、副キーの格納先の記憶装置が設定された副キー用の格納先解決情報を参照して決定した記憶装置に、副キーと、当該副キーに対応付けられたデータへアクセスするためのポインタとを格納するステップと、主キーの格納先の記憶装置が設定された主キー用の格納先解決情報を参照して決定した記憶装置に、主キーと、当該主キーに対応付けられたデータとを格納するステップと、を実行させる。
【発明の効果】
【００１０】
本発明によれば、キー毎にデータを重複して保持すること、およびインデックスシステムを構築することなく、複数の異なるキーでデータにアクセス可能なデータ管理装置およびデータ管理プログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るデータ管理システムの構成図である。
【図２】ＤＢサーバ（＃１）の機能を示すブロック図である。
【図３】登録処理を説明するための説明図である。
【図４】検索処理を説明するための説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１３】
図１は、本実施形態におけるデータ管理システム１の構成を示す全体構成図である。本実施形態のデータ管理システム１は、分散ＫＶＳを用いて大量のデータを複数のＤＢサーバ（記憶装置）に分散して格納（収容）し、管理する分散ＤＢシステムである。
【００１４】
図１に示すデータ管理システム１は、複数のＤＢサーバ１１、１２を備え、キーを用いてデータを振り分け、各ＤＢサーバ１１、１２に分散してデータを格納する。データ管理システム１の外部からは、データがどのＤＢサーバ１１、１２に格納されているかは分からない。
【００１５】
クライアント２は、ネットワークを介してデータ管理システム１にアクセスし、キーを指定してデータ管理システム１のいずれかのＤＢサーバ１１、１２に格納されたデータについて検索・更新、また、データの登録・追加などのデータ操作を行う。
【００１６】
本実施形態では、ＤＢサーバ（＃１）１１が、クライアント２からの要求を受け付けるレシーバ（制御装置）としての機能を有するとともに、データを格納するストレージ（記憶装置）としての機能も合わせもつものとする。
【００１７】
図２は、ＤＢサーバ（＃１）１１（データ管理装置）の構成を示すブロック図である。図示するＤＢサーバ（＃１）１１は、登録部１１１と、検索部１１２と、格納先解決情報記憶部１１３と、ストレージ部１１４とを備える。
【００１８】
格納先解決情報記憶部１１３は、キーの種別毎に、各キーの格納先のＤＢサーバ１１、１２が設定された格納先解決情報を記憶する。本実施形態では、各データ（実データ）には、複数の種別のキーが対応付けられ、１つのデータに対して複数の異なるキーでアクセスできるようにしている。
【００１９】
図１に示す格納先解決情報記憶部１１３では、種別１と種別２の２つの種別の格納先解決情報が記憶されているものとする。図示する例では、種別１のキーには電話番号帯を用い、種別２のキーには契約ＩＤ帯を用いるものとする。また、本実施形態では、種別１のキーを主キーとし、種別２のキーを副キーとして、以下に説明する。なお、副キーの数は、１つに限定されるものではなく複数あってもよい。複数の種別の副キーを備える場合は、副キーの種別毎に格納先解決情報が格納先解決情報記憶部１１３に記憶される。
【００２０】
また、格納先解決情報記憶部１１３は、図２に示すように、ＤＢサーバ（＃１）１１が備えることとしてもよく、あるいは、ＤＢサーバ（＃１）１１がアクセス可能な他の装置が備えることとしてもよい。
【００２１】
登録部１１１は、格納先解決情報記憶部１１３の副キー（キー種別２）の格納先解決情報を参照して、副キーを格納するＤＢサーバを決定し、決定したＤＢサーバに副キーと、当該副キーに対応付けられたデータへアクセスするためのポインタとを格納する。また、登録部１１１は、格納先解決情報記憶部１１３の主キー（キー種別１）の格納先解決情報を参照して、主キーを格納するＤＢサーバを決定し、決定したＤＢサーバに、主キーと、当該主キーに対応付けられたデータとを格納する。
【００２２】
検索部１１２は、いずれかの種別の副キーが指定された検索要求を受け付け、当該副キーの格納先解決情報を参照して当該副キーが格納されたＤＢサーバ１１、１２にアクセスして当該副キーに対応するポインタを取得し、取得したポインタを用いて当該副キーに対応付けられたデータが格納されたＤＢサーバ１１、１２にアクセスし、データを読み出す。
【００２３】
ストレージ部１１４には、格納先解決情報によりキー分散されたデータおよびキーが格納される。本実施形態では、主キーの格納先には、主キーとともにデータを格納し、副キーの格納先には、副キーとともにデータへのポインタを格納する。
【００２４】
なお、ＤＢサーバ（＃１）１１以外の他のＤＢサーバ（＃２）〜（＃４）１２は、少なくともＤＢサーバ（＃１）１１のストレージ部１１４と同様のストレージ部を備える。
【００２５】
上記説明したＤＢサーバ（＃１）１１は、例えば、ＣＰＵと、メモリと、ＨＤＤ等の外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵがメモリ上にロードされたＤＢサーバ（＃１）１１用のプログラム（データ管理プログラム）を実行することにより、ＤＢサーバ（＃１）１１の各機能が実現される。また、ＤＢサーバ（＃１）１１用のプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【００２６】
次に、本実施形態の処理について説明する。
【００２７】
図３は、ＤＢサーバへの登録・更新処理を説明するための説明図である。
【００２８】
クライアント２は、データの登録要求をデータ管理システム１に送信する（Ｓ１１）。この登録要求には、主キーと、副キーと、実際に格納するデータ（実データ）とが含まれている。
【００２９】
ＤＢサーバ（＃１）の登録部１１１は、登録要求を受信すると、当該登録要求で指定された副キーを格納するＤＢサーバを、格納先解決情報記憶部１１３を参照して決定する（Ｓ１２）。具体的には、当該副キー用の格納先解決情報１１３Ａから当該副キー（図示する例では、A0001zzz）に対応する格納先のＤＢサーバ（図示する例では、ＤＢサーバ（＃２））を決定する。そして、登録部１１１は、決定したＤＢサーバにアクセスし、当該副キーと、キー種別と、ポインタとを含むレコードを格納する（Ｓ１２）。
【００３０】
キー種別は、対象のキーが主キーであるのか、副キーであるかの種別を示すものであって、Ｓ１２ではキー種別に副キーを設定する。ポインタは、データへアクセスするためのポインタである。本実施形態では、ポインタに、登録要求で指定された主キー（図示する例では、0502222xxxx）を用いるものとする。なお、ポインタは、データにアクセスできるものであればなんでもよく、主キー以外にも、ＤＢサーバのアドレスや、データ管理システム１全体でユニークなＩＤなどを用いることとしてもよい。
【００３１】
そして、登録部１１１は、Ｓ１１の登録要求で指定されたデータを主キーとともに格納するＤＢサーバを、格納先解決情報記憶部１１３を参照して決定する（Ｓ１３）。具体的には、当該主キー用の格納先解決情報１１３Ｂから当該主キー（図示する例では、0502222xxxx ）に対応する格納先のＤＢサーバ（図示する例では、ＤＢサーバ（＃３））を決定する。そして、登録部１１１は、決定したＤＢサーバにアクセスし、当該主キーと、キー種別と、データ（図示する例では、yyyy）とを格納する（Ｓ１３）。Ｓ１３ではキー種別に主キーを設定する。
【００３２】
以上の登録処理により、副キーと対応付けたポインタを複数のＤＢサーバに分散して格納するとともに、主キーと対応付けたデータを複数のＤＢサーバに分散して格納することができる。
【００３３】
なお、Ｓ１１で受信した要求が、主キーと副キーのバインド要求（副キーを主キーに紐付ける要求）の場合であって、主キーとデータとがすでにＤＢサーバに登録されている場合は、登録部１１１は、Ｓ１２の処理のみを行うものとする。バインド要求にも、登録要求と同様に、主キーと、副キーと、データとが含まれるものとする。
【００３４】
図４は、データの検索処理を説明するための説明図である。
【００３５】
クライアント２は、データの検索要求をデータ管理システム１に送信する（Ｓ２１）。ここでは、副キーを指定した検索要求であるものとする。なお、検索要求で指定されたキーが副キーか、主キーであるかのキー種別の判別は、例えば、クライアント２から送信される検索要求にキー種別が指定されている、または検索要求を受信した検索部１１２がキーの番号体系・構成などのキーの解析を行うなど、何らかの方法で判別する。
【００３６】
ＤＢサーバ（＃１）の検索部１１２は、検索要求を受信すると、当該検索要求で指定された副キーを格納したＤＢサーバを、格納先解決情報記憶部１１３を参照して取得する（Ｓ２２）。具体的には、当該副キー用の格納先解決情報１１３Ａから指定された副キー（図示する例では、A0001zzz）に対応する副キーの格納先のＤＢサーバ（図示する例では、ＤＢサーバ（＃２））を取得する。そして、検索部１１２は、取得したＤＢサーバにアクセスし、当該副キーに対応するキー種別が副キーか否かをチェックし、キー種別が副キーの場合、ポインタ（図示する例では、0502222xxxx ）を読み出す（Ｓ２２）。
【００３７】
そして、検索部１１２は、読み出したポインタを用いて、データが格納されているＤＢサーバを特定する（Ｓ２２）。本実施形態では、ポインタに主キーを使用しているため、格納先解決情報記憶部１１３の主キー用の格納先解決情報１１３Ｂを参照し、取得した主キー（図示する例では、0502222xxxx）に対応するデータの格納先のＤＢサーバ（図示する例では、ＤＢサーバ（＃３））を取得する。
【００３８】
そして、検索部１１２は、取得したＤＢサーバにアクセスし、当該主キーに対応するキー種別が主キーか否かをチェックし、キー種別が主キーの場合、当該主キーに対応付けて格納されているデータ（図示する例では、yyyy）を読み出し、Ｓ２１の検索要求元のクライアント２に送信する（Ｓ２３）。
【００３９】
なお、Ｓ２１で検索部１１２が受信した検索要求が、主キーを指定した検索要求の場合、格納先解決情報記憶部１１３の主キー用の格納先解決情報１１３Ｂを参照し、取得した主キーに対応するデータの格納先のＤＢサーバを取得し、取得したＤＢサーバにアクセスする。そして、登録部１１２は、当該主キーに対応するキー種別が主キーか否かをチェックし、キー種別が主キーの場合、当該主キーに対応付けて格納されているデータを読み出し、検索要求元のクライアント２に送信する。
【００４０】
以上説明したように、本実施形態では、主キーにより個々のデータを分散収容するとともに、副キーによる分散収容も可能とし、主キーについてはデータ（実データ）とともに格納し、副キーについては、データへ格納先を示すポインタをとともに格納する。
【００４１】
これにより、本実施形態では、１つのデータに対して複数のキーでアクセスすることが可能となる。例えば、大規模通信サービスが提供されているシステムにおいて、加入者データを本実施形態のデータ管理システムで保持する場合に、主キー以外でも効率的に加入者データを検索することができる。
【００４２】
また、データ自体は１つの箇所に格納するため、データを重複して保持する必要がない。これにより、データの重複による記憶容量の増大を回避するとともに、データ更新時の整合性が崩れることがなく、ターンアラウンドタイムの悪化を防止することもできる。また、キーの分散収容を行うのみで、別途インデックスシステムを構築する必要が無く、データ更新時にインデックス再構築に伴うターンアラウンドタイムの遅延も発生しない。
【００４３】
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【符号の説明】
【００４４】
１    ：データ管理システム
１１  ：ＤＢサーバ（＃１）
１１１：登録部
１１２：検索部
１１３：格納先情報記憶部
１１４：ストレージ部
１２  ：ＤＢサーバ（＃２）〜（＃４）
２    ：クライアント
【図１】
2014153760.tif 000003
【図２】
2014153760.tif 000004
【図３】
2014153760.tif 000005
【図４】
2014153760.tif 000006