(57)【要約】【課題】データの更新速度を向上させること。【解決手段】識別情報に対応付けられたデータを、前記識別情報順に論理的にソートして第１データベースに格納するように、前記第１データベースを含む第１データベースシステムに指示する最適化処理部と、前記第１データベースから、前記最適化処理部の指示によって論理的にソートされたデータを読み出して、第２データベースに格納するように、前記第２データベースを含む第２データベースシステムに指示する並列格納処理部と、を備えるデータベース連携システム。【選択図】図１
2018180933.tif 000002
【特許請求の範囲】
【請求項１】
識別情報に対応付けられたデータを、前記識別情報順に論理的にソートして第１データベースに格納するように、前記第１データベースを含む第１データベースシステムに指示する最適化処理部と、
前記第１データベースから、前記最適化処理部の指示によって論理的にソートされたデータを読み出して、第２データベースに格納するように、前記第２データベースを含む第２データベースシステムに指示する並列格納処理部と、を備え、
前記第２データベースシステムは、複数のサーバを有し、同じ識別情報に対応付けられたデータを一つのサーバに格納する分散データベースシステムであり、各サーバと識別情報との対応関係を示すリストを参照し、前記並列格納処理部により指示されたデータの格納先のサーバを決定する、
データベース連携システム。
【請求項２】
前記第１データベースは、前記第２データベースよりも多い複数のサーバを有し、同じ識別情報に対応付けられたデータを一つのサーバに格納する分散データベースである、
請求項１記載のデータベース連携システム。
【請求項３】
前記最適化処理部と前記並列格納処理部は、同じ周期で処理を実行する、
請求項１または２記載のデータベース連携システム。
【請求項４】
コンピュータが、
識別情報に対応付けられたデータを、前記識別情報順に論理的にソートして第１データベースに格納するように、前記第１データベースを含む第１データベースシステムに指示する最適化処理と、
前記第１データベースから、前記最適化処理部の指示によって論理的にソートされたデータを読み出して、第２データベースに格納するように、前記第２データベースを含む第２データベースシステムに指示する並列格納処理と、を実行し、
前記第２データベースシステムは、複数のサーバを有し、同じ識別情報に対応付けられたデータを一つのサーバに格納する分散データベースシステムであり、各サーバと識別情報との対応関係を示すリストを参照し、前記並列格納処理部により指示されたデータの格納先のサーバを決定するものである、
データベース連携方法。
【請求項５】
コンピュータに、
識別情報に対応付けられたデータを、前記識別情報順に論理的にソートして第１データベースに格納するように、前記第１データベースを含む第１データベースシステムに指示する最適化処理と、
前記第１データベースから、前記最適化処理部の指示によって論理的にソートされたデータを読み出して、第２データベースに格納するように、前記第２データベースを含む第２データベースシステムに指示する並列格納処理と、を実行させ、
前記第２データベースシステムは、複数のサーバを有し、同じ識別情報に対応付けられたデータを一つのサーバに格納する分散データベースシステムであり、各サーバと識別情報との対応関係を示すリストを参照し、前記並列格納処理部により指示されたデータの格納先のサーバを決定するものである、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース連携システム、データベース連携方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、投稿文に対して設定された画像の情報をバリューとしてキーバリュー型のデータベースに記憶した場合に、画像の情報の集計結果などを容易に検索することを可能としたデータベース管理装置の発明が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１４６０５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、キーバリュー型のデータベースを使用する場合、膨大な数のデータを記憶させようとした場合に所要時間が長くなり過ぎ、例えば一日一回の更新に間に合わないような場面が生じ得る。
【０００５】
本発明は、このような事情を考慮してなされたものであり、データの更新速度を向上させることができるデータベース連携システム、データベース連携方法、およびプログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【０００６】
本発明の一態様は、識別情報に対応付けられたデータを、前記識別情報順に論理的にソートして第１データベースに格納するように、前記第１データベースを含む第１データベースシステムに指示する最適化処理部と、前記第１データベースから、前記最適化処理部の指示によって論理的にソートされたデータを読み出して、第２データベースに格納するように、前記第２データベースを含む第２データベースシステムに指示する並列格納処理部と、を備え、前記第２データベースシステムは、複数のサーバを有し、同じ識別情報に対応付けられたデータを一つのサーバに格納する分散データベースシステムであり、各サーバと識別情報との対応関係を示すリストを参照し、前記並列格納処理部により指示されたデータの格納先のサーバを決定する、データベース連携システムである。
【発明の効果】
【０００７】
本発明の一態様によれば、データの更新速度を向上させることができるデータベース連携システム、データベース連携方法、およびプログラムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】データベース連携システム１００の使用環境の一例を示す図である。
【図２】第１データベースシステム２００の機能について説明するための図である。
【図３】第２データベースシステム３００の機能について説明するための図である。
【図４】データベース連携システム１００によって実行される処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照し、本発明のデータベース連携システム、データベース連携方法、およびプログラムの実施形態について説明する。データベース連携システムは、一以上のプロセッサによって実現される。データベース連携システムは、各種ネットワークサービスにおけるユーザＩＤ（識別情報）に対して種々のデータが対応付けられたデータの組（以下、ユーザデータと称する）を第１データベースに蓄積し、定期的に第２データベースにコピーするシステムである。第２データベースは、第１データベースよりも柔軟な増設が可能なものであり、膨大なデータを格納するのに適していると共に、ユーザデータの利用者にとって参照が容易な形式でデータを保持可能なものである。
【００１０】
図１は、データベース連携システム１００の使用環境の一例を示す図である。この環境において、一以上の端末装置１０と、サービスサーバ２０と、データベース連携システム１００と、第１データベースシステム２００と、第２データベースシステム３００とがネットワークＮＷに接続されている。ネットワークＮＷは、インターネットやプロバイダ、専用回線、ＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）などを含む。なお、図１に示す全ての構成要素の組み合わせが相互に通信可能である必要はなく、ネットワークＮＷは、一部にローカルなネットワークを含んでもよい。
【００１１】
端末装置１０は、スマートフォンやタブレット端末、パーソナルコンピュータなどである。サービスサーバ２０は、ウェブサーバやアプリサーバなど、各種のネットワークサービスを提供するサーバである。端末装置１０では、ブラウザやアプリケーションプログラムなどが起動することでサービスサーバ２０と通信し、各種のサービスを受けることができる。
【００１２】
このサービスにおいて、ユーザＩＤが入力されることで、メンバー限定のサービスが提供される。ユーザＩＤの登録の際には、ユーザの属性情報（年齢、性別、職業、趣味など）が登録される場合がある。また、ユーザがユーザＩＤを入力してサービスを受ける際に、サービス提供ログがサービスサーバ２０によって収集される。データベース連携システム１００は、ユーザＩＤに対応付けられた属性情報やサービス提供ログを、ユーザデータとして一次的に第１データベースシステム２００に格納させ、次いで第２データベースシステム３００にコピーする。また、特定のＣｏｏｋｉｅに対応付けられた情報も同様に、ユーザデータとして扱われてよい。すなわち、特定のＣｏｏｋｉｅ自体がユーザＩＤとして扱われてよい。
【００１３】
データベース連携システム１００は、例えば、最適化処理部１１０と、並列格納処理部１２０とを備える。これらの機能部は、例えば、ＣＰＵ（Central Processing Unit）などのプロセッサがプログラムを実行することにより実現される。
【００１４】
最適化処理部１１０は、ユーザデータを、ユーザＩＤ順に論理的にソートして第１データベース２２０に格納するように、第１データベースシステム２００（第１データベースマネジメントシステム（以下、ＤＢＭＳ）２１０）に指示する。
【００１５】
並列格納処理部１２０は、第１データベース２２０から、最適化処理部１１０の指示によって論理的にソートされたユーザデータを読み出して、第２データベース３２０に格納するように、第２データベースシステム３００（第２ＤＢＭＳ３１０）に指示する。
【００１６】
第１データベースシステム２００は、第１ＤＢＭＳ２１０と、第１データベース２２０とを備える。第１ＤＢＭＳ２１０は、例えば、スキーマ定義が不要な分散ファイルシステムを提供する。第１ＤＢＭＳ２１０は、構造管理やメタデータの保持などを行う“ｎａｍｅｎｏｄｅ”によって管理される。第１ＤＢＭＳ２１０は、Ｈａｄｏｏｐなどのオープンソースによって実現されるものであってよい。第１データベース２２０はｎ個のサーバにより実現される分散データベースである（ｎは任意の自然数）。各サーバは、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの記憶装置を含む。
【００１７】
第２データベースシステム３００は、第２ＤＢＭＳ３１０と、第２データベース３２０とを備える。第２ＤＢＭＳ３１０は、例えば、構造化されたキーバリュー型データストアとしての分散ファイルシステムを提供する。第２ＤＢＭＳ３１０において、キーは複数の値にマッピングされ、これらは列ファミリーとしてグルーピングされる。列ファミリーは事後的に追加可能である。さらに、列は特定のキーにのみ追加されるので、どの列ファミリーにおいても異なるキーは任意の列数を持つことができる。第２ＤＢＭＳは、Ｃａｓｓａｎｄｒａなどのオープンソースによって実現されるものであってよい。第２データベース３２０はｍ個のサーバにより実現される分散データベースである（ｍは任意の自然数、ｎ＞ｍ）。各サーバは、ＨＤＤやフラッシュメモリなどの記憶装置を含む。
【００１８】
なお、第１データベースシステム１００、第２データベースシステム２００共にデータの冗長化がなされているが、これについての説明は省略する。
【００１９】
また、データベース連携システム１００は、第１データベースシステム２００または第２データベースシステム３００のいずれかに統合されてもよい。
【００２０】
図２は、第１データベースシステム２００の機能について説明するための図である。図示するように、第１ＤＢＭＳ２１０は、ユーザデータをキャッシュなどに蓄積しておき、最適化処理部１１０からの指示があったタイミングで、図示する順に処理を実行する。
【００２１】
まず、第１ＤＢＭＳ２１０は、個別処理を行う。個別処理において、第１ＤＢＭＳ２１０は、ユーザデータ毎にバリデーションやフィルタリング処理を行う。
【００２２】
次に、第１ＤＢＭＳ２１０は、最適化処理を行う。最適化処理において、第１ＤＢＭＳ２１０は、ユーザデータをユーザＩＤ順に論理的にソートする。論理的にソートするとは、物理的な格納場所を変えるのではなく、物理アドレスに対応付けられた論理アドレスと、第１ＤＢＭＳ２１０が把握する論理構造との対応関係を並び替えることを意味する。更に、第１ＤＢＭＳ２１０は、第２データベース３２０におけるユーザＩＤとサーバの対応関係に応じて、第２データベース３２０におけるサーバごとにユーザＩＤをグループ化してもよい。
【００２３】
次に、第１ＤＢＭＳ２１０は、ユーザＩＤをハッシュ化し、第１データベース２２０における、ハッシュ値に応じた格納先のサーバにユーザデータを格納する。ユーザデータは、例えば、ユーザＩＤに対して、データと、データが収集された時刻を示すタイムスタンプとが対応付けられた形式で第１データベース２２０に格納される。この結果、同じユーザＩＤに対応付けられたユーザデータは、同じサーバに格納される。なお、図２に示す一連の処理の対象となるユーザデータは、例えば、タイムスタンプが、前回更新したユーザデータに付与されていたタイムスタンプよりも新しい日時を示すユーザデータである。
【００２４】
図３は、第２データベースシステム３００の機能について説明するための図である。図示するように、第２ＤＢＭＳ３１０は、並列格納処理部１２０からの指示があったタイミングで、第２データベース３２０の各サーバにユーザデータを分散させて格納する。
【００２５】
第２ＤＢＭＳ３１０は、第２データベース３２０の各サーバに対応したチャネルを有する並列Ｉ／Ｏ３１２を備える。第２ＤＢＭＳ３１０は、第１データベース２２０からユーザデータを順次読み出して、ユーザデータに含まれるユーザＩＤに対応するサーバの識別情報を、ユーザＩＤ−サーバ対応リスト３１４を参照して取得する。そして、取得したサーバの識別情報に対応する並列Ｉ／Ｏ３１２のチャネルに対して、データの格納を指示する。これによって、ユーザデータが行方向および列方向に容易に参照可能であり、レコードの追加が容易なデータ群が作成される。
【００２６】
ここで、第２ＤＢＭＳ３１０を実現するための一例である、オープンソースのＣａｓｓａｎｄｒａは、レコードの追加は容易であるが、膨大なデータを繰り返し格納する処理が比較的遅いという特性がある。この特性は、サーバに対応したチャネルを探索して切り替える処理に依存すると考えられる。この点、実施形態のデータベース連携システム１００では、予め第２ＤＢＭＳ３１０におけるデータ処理に適した形にユーザデータを纏め上げるため、上記の特性を緩和し、データの更新速度を向上させることができる。例えば、第２ＤＢＭＳ３１０が第１データベース２２０からユーザデータを読み出す際に、一定量のユーザは同じユーザＩＤを有することが予め分かっていれば、その間、並列Ｉ／Ｏ３１２のチャネルを固定してユーザデータをサーバに転送することができるからである。
【００２７】
また、第１データベース２２０は、第２データベース３２０よりも多くのサーバで構成される。従って、第１データベース２２０にユーザデータを格納するために、サーバごとにユーザＩＤ順に論理ソートする処理は、第２データベース３２０に対して同様の処理を行う場合よりも処理負荷が低くなる。このため、最適化処理は、第２データベース３２０ではなく第１データベース２２０に対して行う方が迅速に完了する。
【００２８】
図４は、データベース連携システム１００によって実行される処理の流れの一例を示すフローチャートである。まず、最適化処理部１１０が、ユーザデータの更新タイミングが到来したか否かを判定する（Ｓ１００）。ユーザデータの更新タイミングが到来すると、最適化処理部１１０は、第１ＤＢＭＳ２１０に対して最適化処理を指示する（Ｓ１０２）。
【００２９】
次に、最適化処理部１１０は、第１ＤＢＭＳ２１０から最適化処理の完了通知がなされたか否かを判定する（Ｓ１０４）。完了通知がなされると、最適化処理部１１０は、並列格納処理部１２０に対して処理開始許可を通知する。並列格納処理部１２０は、第２ＤＢＭＳ３１０に対して並列格納処理を指示する（Ｓ１０６）。このようにして、最適化処理部１１０と並列格納処理部１２０は、同じ周期で処理を実行する。
【００３０】
以上説明した本発明のデータベース連携システム、データベース連携方法、およびプログラムの実施形態によれば、ユーザＩＤに対応付けられたデータを、ユーザＩＤ順に論理的にソートして第１データベース２２０に格納するように、第１データベースシステム２００に指示する最適化処理部１１０と、第１データベース２２０から、最適化処理部１１０の指示によって論理的にソートされたデータを読み出して、［複数のサーバを有し、同じユーザＩＤに対応付けられたデータを一つのサーバに格納する分散データベースであり、各サーバに格納されたデータのユーザＩＤのリストを参照し、並列格納処理部１１０により指示されたデータの格納先のサーバを決定する第２データベースシステム３００］に指示する並列格納処理部１２０と、を備えることにより、データの更新速度を向上させることができる。
【００３１】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【００３２】
１００  データベース連携システム
１１０  最適化処理部
１２０  並列格納処理部
２００  第１データベースシステム
２１０  第１ＤＢＭＳ
２２０  第１データベース
３００  第２データベースシステム
３１０  第２ＤＢＭＳ
３２０  第２データベース
【図１】
2018180933.tif 000003
【図２】
2018180933.tif 000004
【図３】
2018180933.tif 000005
【図４】
2018180933.tif 000006