IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌ・ティ・ティ・コムウェア株式会社の特許一覧

特開2022-160839情報処理装置、情報処理方法、およびプログラム
<>
  • 特開-情報処理装置、情報処理方法、およびプログラム 図1
  • 特開-情報処理装置、情報処理方法、およびプログラム 図2
  • 特開-情報処理装置、情報処理方法、およびプログラム 図3
  • 特開-情報処理装置、情報処理方法、およびプログラム 図4
  • 特開-情報処理装置、情報処理方法、およびプログラム 図5
  • 特開-情報処理装置、情報処理方法、およびプログラム 図6
  • 特開-情報処理装置、情報処理方法、およびプログラム 図7
  • 特開-情報処理装置、情報処理方法、およびプログラム 図8
  • 特開-情報処理装置、情報処理方法、およびプログラム 図9
  • 特開-情報処理装置、情報処理方法、およびプログラム 図10
  • 特開-情報処理装置、情報処理方法、およびプログラム 図11
  • 特開-情報処理装置、情報処理方法、およびプログラム 図12
  • 特開-情報処理装置、情報処理方法、およびプログラム 図13
  • 特開-情報処理装置、情報処理方法、およびプログラム 図14
  • 特開-情報処理装置、情報処理方法、およびプログラム 図15
  • 特開-情報処理装置、情報処理方法、およびプログラム 図16
  • 特開-情報処理装置、情報処理方法、およびプログラム 図17
  • 特開-情報処理装置、情報処理方法、およびプログラム 図18
  • 特開-情報処理装置、情報処理方法、およびプログラム 図19
  • 特開-情報処理装置、情報処理方法、およびプログラム 図20
  • 特開-情報処理装置、情報処理方法、およびプログラム 図21
  • 特開-情報処理装置、情報処理方法、およびプログラム 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022160839
(43)【公開日】2022-10-20
(54)【発明の名称】情報処理装置、情報処理方法、およびプログラム
(51)【国際特許分類】
   G06F 16/28 20190101AFI20221013BHJP
   G06F 16/27 20190101ALI20221013BHJP
【FI】
G06F16/28
G06F16/27
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021065299
(22)【出願日】2021-04-07
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 〔1〕〔研究会発表〕 開催日 令和3年 3月19日 集会名 ICM研究会 主催 電子情報通信学会_情報通信マネジメント研究会(ICM) <資 料> ウェブサイト(開催スケジュール) プリントアウト <資 料> ウェブサイト(開催プログラム) プリントアウト <資 料> 研究発表会 発表資料 〔2〕〔ウェブサイト〕 ウェブサイトの掲載日 令和3年 3月18日(原稿登録 令和3年2月25日) ウェブサイトのアドレス https://www.ieice.org/ken/program/index.php?tgs_regid=7d6b0b008d22af59df24d6da7905bd3cc7a6737a1ff3a148114a96bb898d7f90&tgid=IEICE-ICM https://www.ieice.org/ken/paper/20210319kC2j/ 電子情報通信学会_情報通信マネジメント研究会(ICM) <資 料> ウェブサイト(研究論文 詳細) プリントアウト <資 料> 掲載発表論文 〔3〕〔セミナー発表〕 開催日 令和2年 12月23日 集会名 Creationline Day 2020 主催 クリエーションライン株式会社 <資 料> ウェブサイト(開催概要) プリントアウト <資 料> 研究発表会 発表資料 〔4〕〔ウェブサイト〕 ウェブサイトの掲載日 令和2年 10月13日 ウェブサイトのアドレス https://www.publickey1.jp/blog/20/rdbpr.html RDBで直面した性能問題、グラフデータベースでなぜ解決できたか? <資 料> ウェブサイト(インタビュー記事) プリントアウト
(71)【出願人】
【識別番号】397065480
【氏名又は名称】エヌ・ティ・ティ・コムウェア株式会社
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100126664
【弁理士】
【氏名又は名称】鈴木 慎吾
(74)【代理人】
【識別番号】100181124
【弁理士】
【氏名又は名称】沖田 壮男
(72)【発明者】
【氏名】杉本 昌司
(72)【発明者】
【氏名】小林 淳司
(72)【発明者】
【氏名】大野木 健太
(72)【発明者】
【氏名】坂梨 郁雄
(72)【発明者】
【氏名】坂井 洸貴
(72)【発明者】
【氏名】上坂 佳
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA09
5B175KA08
5B175KA12
(57)【要約】
【課題】リレーショナルデータベースとグラフデータベースとでリアルタイムに情報を同期すること。
【解決手段】本発明の一態様は、ノードと、ノード間のエッジとを含むグラフデータベースに対し、ノードおよび/またはエッジの更新処理を実行する第1のデータベース処理部と、表形式またはキーバリュー形式のデータベースに対する処理を実行する第2のデータベース処理部と、表形式またはキーバリュー形式のデータベースに対する更新要求を受け付ける受付部と、受付部により更新要求を受け付ける度に、第2のデータベースによる処理結果に基づいてグラフデータベースを更新するクエリを第1のデータベース処理部に供給する同期部と、を備える、情報処理装置である。
【選択図】図5
【特許請求の範囲】
【請求項1】
ノードと、前記ノード間のエッジとを含むグラフデータベースに対し、前記ノードおよび/または前記エッジの更新処理を実行する第1のデータベース処理部と、
表形式またはキーバリュー形式のデータベースに対する処理を実行する第2のデータベース処理部と、
前記表形式またはキーバリュー形式のデータベースに対する更新要求を受け付ける受付部と、
前記受付部により更新要求を受け付ける度に、前記第2のデータベース処理部による処理結果に基づいて前記グラフデータベースを更新するクエリを前記第1のデータベース処理部に供給する同期部と
を備える、情報処理装置。
【請求項2】
前記同期部は、前記表形式またはキーバリュー形式のデータベースと前記グラフデータベースとのマッピング情報を参照して前記第2のデータベース処理部による処理結果を前記第1のデータベース処理部により前記ノードおよび/または前記エッジに対する処理に変換する、請求項1に記載の情報処理装置。
【請求項3】
前記同期部は、前記更新要求に対応した前記第2のデータベース処理部による処理結果に対し、前記ノードのためのクエリおよび前記エッジのためのクエリとをそれぞれ並列して前記第1のデータベース処理部に供給する、請求項1または2に記載の情報処理装置。
【請求項4】
前記第2のデータベース処理部は、ロジカルレプリケーション機能により前記第2のデータベース処理部による処理結果を変換し、変換した更新情報を、前記同期部に供給する、
請求項1から3のうち何れか1項に記載の情報処理装置。
【請求項5】
前記同期部の動作から独立して前記マッピング情報を管理する管理部を更に備える、
請求項2に記載の情報処理装置。
【請求項6】
前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおけるテーブルに対するデータ登録を要求する情報である場合、前記同期部は、前記テーブルに対するデータ登録を要求する前記更新要求に基づいて、当該テーブルに対応する前記ノードおよび/または前記エッジを登録するクエリを生成し、
前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおけるテーブルに対するデータ更新を要求する情報である場合、前記同期部は、前記テーブルに対するデータ更新を要求する前記更新要求に基づいて、当該テーブルに対応する前記ノードおよび/または前記エッジを更新するクエリを生成し、
前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおけるテーブルからのデータ削除を要求する情報である場合、前記同期部は、前記テーブルに対するデータ削除を要求する前記更新要求に基づいて、当該テーブルに対応する前記ノードおよび/または前記エッジを削除するクエリを生成する、
請求項1から5のうち何れか1項に記載の情報処理装置。
【請求項7】
表形式またはキーバリュー形式のデータベースに対する更新要求を受け付けるステップと、
前記更新要求に基づいて、前記表形式またはキーバリュー形式のデータベースに対する処理を実行するステップと、
前記更新要求を受け付ける度に、前記表形式またはキーバリュー形式のデータベースに対する処理結果に基づいて、ノードと、前記ノード間のエッジとを含むグラフデータベースを更新するクエリを生成するステップと、
前記クエリに基づいて、前記グラフデータベースに対して前記ノードおよび/または前記エッジの更新処理を実行するステップと、
を含む、情報処理方法。
【請求項8】
コンピュータに、
表形式またはキーバリュー形式のデータベースに対する更新要求を受け付けるステップと、
前記更新要求に基づいて、前記表形式またはキーバリュー形式のデータベースに対する処理を実行するステップと、
前記更新要求を受け付ける度に、前記表形式またはキーバリュー形式のデータベースに対する処理結果に基づいて、ノードと、前記ノード間のエッジとを含むグラフデータベースを更新するクエリを生成するステップと、
前記クエリに基づいて、前記グラフデータベースに対して前記ノードおよび/または前記エッジの更新処理を実行するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【0002】
従来より、膨大且つ複雑なデータからユーザが所望するデータを検索する技術が望まれている。膨大且つ複雑なデータは、例えば、通信ネットワークの構成を表すデータ(ネットワーク構成情報)である。通信事業者やプロバイダは、市場の要求に応じて多様な新サービスを提供しているが、サービスの多様化に伴って通信ネットワークは大容量化し、ネットワーク構成は多様かつ複雑なものとなっている。通信事業者やプロバイダにとって、サービスを安定して提供することは最重要課題であり、ネットワーク設備、およびネットワーク設備間のつながりを表すネットワーク構成情報の整合性を担保することが通信ネットワークにおける必須の条件である。この条件を満たすために、従来においては、ネットワーク構成情報の整合性を管理することに優れたリレーショナルデータベースを用いることが多かった。
【0003】
従来より、リレーショナルデータベースとは異なる形態のデータベースとして、グラフデータベースが知られている。グラフデータは、ノード情報とエッジ情報とを含むデータベースであり、ノード情報は、ラベル名(ノード名)およびノードのプロパティを含む情報であり、エッジ情報は、グラフノード間の関係(つながり)を特定するための情報である。
【0004】
リレーショナルデータベースおよびグラフデータベースを利用した技術は、例えば、文献1および2に記載された情報処理装置がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2020-161088号公報
【特許文献2】特開2020-161089号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1および2に記載された情報処理装置は、リレーショナルデータベースとグラフデータベースとの双方を用いた処理を実現しているが、リレーショナルデータベースとグラフデータベースとの双方で実質的に同じ情報を管理する必要がある。しかし、特許文献1および2において、リレーショナルデータベースとグラフデータベースとがリアルタイムに同期するための技術は検討されていない。
【0007】
本発明は、上記の課題に鑑みてなされたものであって、リレーショナルデータベースとグラフデータベースとでリアルタイムに情報を同期することができる情報処理装置、情報処理方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
(1)本発明の一態様は、ノードと、前記ノード間のエッジとを含むグラフデータベースに対し、前記ノードおよび/または前記エッジの更新処理を実行する第1のデータベース処理部と、表形式またはキーバリュー形式のデータベースに対する処理を実行する第2のデータベース処理部と、前記表形式またはキーバリュー形式のデータベースに対する更新要求を受け付ける受付部と、前記受付部により更新要求を受け付ける度に、前記第2のデータベース処理部による処理結果に基づいて前記グラフデータベースを更新するクエリを前記第1のデータベース処理部に供給する同期部と、を備える、情報処理装置である。
【0009】
(2)本発明の一態様は、上記の情報処理装置であって、前記同期部は、前記表形式またはキーバリュー形式のデータベースと前記グラフデータベースとのマッピング情報を参照して前記第2のデータベース形式のデータベースと前記グラフデータベースとのマッピング情報を参照して前記第2のデータベースによる処理結果を前記第1のデータベース処理部により前記ノードおよび/または前記エッジに対する処理に変換してよい。
【0010】
(3)本発明の一態様は、上記の情報処理装置であって、前記同期部は、前記更新要求に対応した前記第2のデータベース処理部による処理結果に対し、前記ノードのためのクエリおよび前記エッジのためのクエリとをそれぞれ並列して前記第1のデータベース処理部に供給してよい。
【0011】
(4)本発明の一態様は、上記の情報処理装置であって、前記第2のデータベース処理部は、ロジカルレプリケーション機能により前記第2のデータベース処理部による処理結果を変換し、変換した更新情報を、前記同期部に供給してよい。
【0012】
(5)本発明の一態様は、上記の情報処理装置であって、前記同期部の動作から独立して前記マッピング情報を管理する管理部を更に備えてよい。
【0013】
(6)本発明の一態様は、上記の情報処理装置であって、前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおける親テーブルに対するデータ登録を要求する情報である場合、前記同期部は、前記親テーブルに対するデータ登録を要求する前記更新要求に基づいて前記ノードを登録するクエリを生成し、前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおける親テーブルに対するデータ更新を要求する情報である場合、前記同期部は、前記親テーブルに対するデータ登録を要求する前記更新要求に基づいて前記ノードを更新するクエリを生成し、前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおける子テーブルに対するデータ登録を要求する情報である場合、前記同期部は、前記子テーブルに対するデータ登録を要求する前記更新要求に基づいて前記ノードおよび前記エッジを登録するクエリを生成し、前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおける子テーブルからのデータ削除を要求する情報である場合、前記同期部は、前記子テーブルに対するデータ削除を要求する前記更新要求に基づいて前記ノードおよび前記エッジを削除するクエリを生成し、前記更新要求が、前記表形式またはキーバリュー形式のデータベースにおける中間テーブルに対するデータ登録を要求する情報である場合、前記同期部は、前記中間テーブルに対するデータ登録を要求する前記更新要求に基づいて前記エッジを登録するクエリを生成してよい。
【0014】
(7)本発明の一態様は、表形式またはキーバリュー形式のデータベースに対する更新要求を受け付けるステップと、前記更新要求に基づいて、前記表形式またはキーバリュー形式のデータベースに対する処理を実行するステップと、前記更新要求を受け付ける度に、前記表形式またはキーバリュー形式のデータベースに対する処理結果に基づいて、ノードと、前記ノード間のエッジとを含むグラフデータベースを更新するクエリを生成するステップと、前記クエリに基づいて、前記グラフデータベースに対して前記ノードおよび/または前記エッジの更新処理を実行するステップと、を含む、情報処理方法である。
【0015】
(8)本発明の一態様は、コンピュータに、表形式またはキーバリュー形式のデータベースに対する更新要求を受け付けるステップと、前記更新要求に基づいて、前記表形式またはキーバリュー形式のデータベースに対する処理を実行するステップと、前記更新要求を受け付ける度に、前記表形式またはキーバリュー形式のデータベースに対する処理結果に基づいて、ノードと、前記ノード間のエッジとを含むグラフデータベースを更新するクエリを生成するステップと、前記クエリに基づいて、前記グラフデータベースに対して前記ノードおよび/または前記エッジの更新処理を実行するステップと、を実行させるプログラムである。
【発明の効果】
【0016】
本発明の一態様によれば、リレーショナルデータベースとグラフデータベースとでリアルタイムに情報を同期することができる。
【図面の簡単な説明】
【0017】
図1】本発明を適用した実施形態に係る情報処理システムの一例を示すブロック図である。
図2】本発明を適用した実施形態に係る情報処理システムの処理対象の一例を示す図である。
図3】本発明を適用した実施形態におけるRDBとグラフDBとを示す図である。
図4】RDBおよびグラフDBの更新処理を説明するためのブロック図である。
図5】本発明を適用した実施形態におけるRDB処理部、リアルタイム同期部、およびグラフDB処理部のブロック図である。
図6】本発明を適用した実施形態におけるRDB処理部のブロック図である。
図7】本発明を適用した実施形態におけるマッピングパターンと、RDBのテーブル種類と、グラフDBへの反映処理との関係を示す図である。
図8】本発明を適用した実施形態におけるRDBからグラフDBへの同期処理の一例を示す図である。
図9】本発明を適用した実施形態におけるRDBの親テーブルへのデータ登録をグラフDBに反映する処理の一例を示す図である。
図10】本発明を適用した実施形態におけるRDBの親テーブルへのデータ更新をグラフDBに反映する処理の一例を示す図である。
図11】本発明を適用した実施形態におけるRDBの子テーブルへのデータ登録をグラフDBに反映する処理の一例を示す図である。
図12】本発明を適用した実施形態におけるRDBの子テーブルからのデータ削除をグラフDBに反映する処理の一例を示す図である。
図13】本発明を適用した実施形態におけるRDBの中間テーブルへのデータ登録をグラフDBに反映する処理の一例を示す図である。
図14】親テーブルに対するデータ登録をグラフDBに反映させる速度を測定する処理を説明するための図である。
図15】RDBにおける親テーブルの登録データ件数とグラフDBへの反映時間との関係を示すグラフである。
図16】RDBにおける親テーブルの登録データ件数とグラフDBへの反映時間との関係を示す表である。
図17】子テーブルに対するデータ登録をグラフDBに反映させる速度を測定する処理を説明するための図である。
図18】RDBにおける子テーブルの登録データ件数とグラフDBへの反映時間との関係を示すグラフである。
図19】RDBにおける子テーブルの登録データ件数とグラフDBへの反映時間との関係を示す表である。
図20】RDBにおけるお気に入りショップテーブル(中間テーブル)からグラフDBにおけるユーザからショップへのエッジを登録する処理を説明するための図である。
図21】RDBにおける中間テーブルの登録データ件数とグラフDBへの反映時間との関係を示すグラフである。
図22】RDBにおける中間テーブルの登録データ件数とグラフDBへの反映時間との関係を示す表である。
【発明を実施するための形態】
【0018】
以下、本発明を適用した情報処理装置、情報処理方法、およびプログラムを、図面を参照して説明する。
【0019】
(概要)
図1は、本発明を適用した実施形態に係る情報処理システムの一例を示すブロック図であり、図2は、情報処理システムの処理対象となる要素の関係の一例を示す図であり、図3は、本発明を適用した実施形態におけるRDBとグラフDBの一例を示す図である。
本発明を適用した実施形態の情報処理システムは、例えば、お気に入りのショップ情報を登録、更新、および削除する処理を行う。情報処理システムの処理対象は、例えば、ユーザ、エリア、ショップなどの要素を含む。各要素は、各情報の使用者により追加されたり、設定変更されたり、削除されたりする。なお、要素には、他のものが含まれてよい。
【0020】
情報処理システムは、リレーショナルデータベース(Relational Database)およびグラフデータベースを構築する。以下、リレーショナルデータベースをRDBと記載し、グラフデータベースをグラフDBと記載する。実施形態の情報処理システムは、例えば、RDBおよびグラフDBの少なくとも一方のデータベースを用いて、ユーザが所望する情報を検索し、検索結果をユーザに提示する。実施形態の情報処理システムは、RDBに対する更新要求を受け付けたことに応じたRDBによる処理結果に基づいて、グラフDBを更新することで、RDBとグラフDBとをリアルタイムに同期する。
【0021】
(情報処理システムの構成)
情報処理システムは、図1に示すように、例えば、情報処理装置100と、RDB記憶装置200と、グラフDB記憶装置300と、ユーザ端末装置400とを備える。情報処理装置100、RDB記憶装置200、グラフDB記憶装置300、およびユーザ端末装置400は、NIC(Network Interface Card)や無線通信モジュールなどの通信インターフェース(不図示)を有する。
【0022】
情報処理装置100は、例えば、RDB処理部110と、グラフDB処理部120と、リアルタイム同期部130と、制御部140とを備える。RDB処理部110、グラフDB処理部120、リアルタイム同期部130、および制御部140といった機能部は、例えばCPU(Central Processing Unit)等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
【0023】
RDB処理部110は、RDB記憶装置200におけるRDBに関する処理を行う。RDBに関する処理には、例えば、RDBデータとしてのレコードの登録、レコードの更新、レコードの削除などの処理が含まれる。RDBに関する処理には、検索時に、RDB記憶装置200からRDBデータを読み出す処理が含まれる。
【0024】
グラフDB処理部120は、例えば、ノード管理部120aおよびエッジ管理部120bを含む。グラフDB処理部120は、グラフDB記憶装置300に記憶されたグラフデータに基づいてグラフDBに関する処理を実行する。グラフDBに関する処理には、例えば、グラフデータとしてのグラフノードの追加処理や、エッジの追加処理が含まれる。グラフDBに関する処理には、RDBに対する操作時に、RDBの更新結果に基づいてグラフDBを更新する同期処理が含まれる。グラフDBを更新する処理には、例えば、グラフDB記憶装置300からグラフデータを読み出し、グラフデータを登録、更新および削除する処理が含まれる。グラフDBに関する処理には、検索時に、グラフDB記憶装置300からグラフデータを読み出す処理が含まれる。
【0025】
リアルタイム同期部130は、RDBの操作時に、RDBの更新結果に基づいてグラフDBを更新する同期処理を行う。
【0026】
制御部140は、情報処理装置100における各部を統合的に制御する。制御部140は、ユーザ端末装置400から登録、更新、削除のクエリを受け付けて登録、更新、削除を実行させる処理や、RDBに対する操作時にRDBとグラフDBとを同期させる処理や、ユーザ端末装置400から検索クエリを受け付けて検索を実行させる処理や、ユーザ端末装置400に検索結果を送信する処理などを行う。
【0027】
RDB記憶装置200およびグラフDB記憶装置300は、例えば、HDD(Hard Disc Drive)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶装置により実現される。RDB記憶装置200およびグラフDB記憶装置300は、例えば、SAN(Storage Area Network)やNAS(Network Attached Storage)により実現されてよい。
【0028】
RDB記憶装置200は、RDBを構築するためのRDBデータを記憶する。なお、RDBは、表形式またはキーバリュー形式のデータベースの一例であって、本実施形態は、RDB以外の表形式またはキーバリュー形式のデータベースであっても適用可能である。
【0029】
グラフDB記憶装置300は、グラフDBを構築するためのグラフデータを記憶する。グラフデータには、ノード情報とエッジ情報とが含まれる。ノード情報は、ラベル名(ノード名)およびノードのプロパティを含む情報である。グラフノードのプロパティは、グラフノードを特定する情報である。グラフノードを特定する情報は、例えば、ショップの名前、種類、場所(住所)などである。エッジ情報は、グラフノード間の関係を特定するための情報である。すなわち、エッジ情報は、グラフノード間のつながりを特定する情報である。エッジのプロパティは、例えば、関係の度合い、重みなどである。
【0030】
なお、本実施形態においては、グラフデータベースにおけるノードをグラフノードとも記載する。また、本実施形態では、エッジ情報は、例えば、単に「エッジ」、「リレーション」、「リレーションシップ」などの当該技術分野において使用されている用語に読み替えてよい。
【0031】
ユーザ端末装置400は、例えば、表示部、操作部、およびCPU等を備えたパーソナルコンピュータやスマートフォン等の携帯型コンピュータである。ユーザ端末装置400は、ユーザの操作を受け付け、ユーザの操作に基づくRDBの更新要求を情報処理装置100に送信する。RDBの更新要求は、例えば、お気に入りのショップを指定する処理であるが、これに限定されず、新たなユーザ、ショップまたはエリアを登録する処理であってもよく、お気に入りのエリアや他のユーザを指定する処理や、要素を更新または削除することを指定する処理であってよい。ユーザ端末装置400は、更新要求に対する応答として処理結果を取得し、処理結果を表示する。ユーザ端末装置400は、ユーザの操作を受け付け、ユーザの操作に基づく検索クエリを指定した検索要求を情報処理装置100に送信する。ユーザ端末装置400は、検索要求に対する応答として検索結果を取得し、検索結果を表示する。
【0032】
(データベースの説明)
以下、グラフDBおよびRDBについて説明する。図2に示した処理対象要素は、ユーザ情報と、エリア情報と、ショップ情報とを含む。ユーザ情報は、ショップ情報に関連付けられる。ショップ情報は、エリア情報に関連付けられる。ユーザ情報と、エリア情報と、ショップ情報は、例えば、RDBにおけるレコードを含むテーブルデータである。テーブルは、例えば図3の上図に示すように、ユーザテーブル、お気に入りテーブル、ショップテーブル、およびエリアテーブルを含む。これらのテーブルは、例えば図3の下図に示すように、グラフDBにおけるユーザノード、ショップノード、およびエリアノードと、エッジとで表現される。テーブル間の関係は、グラフDBにおけるエッジとして表現される。なお、RDBとグラフDBとの関係の詳細は、後述する。
【0033】
(データベース処理)
図4は、RDBおよびグラフDBに対する処理を説明するためのブロック図である。
情報処理装置100は、制御部140により実現されるAPI(Application Programming Interface)処理部150を備える。API処理部150は、ユーザ端末装置400からRDBの更新要求、および当該更新要求に対応した情報を受け付け、RDB記憶装置200に更新要求に対応した情報を登録する。RDB記憶装置200に登録された情報は、表形式またはキーバリュー形式のマスターデータとして登録される。リアルタイム同期部130は、RDB記憶装置200に登録されたマスターデータを変換し、グラフDB記憶装置300は、変換されたマスターデータを、ノードおよびエッジを含むグラフデータとして登録する。これにより、RDBで保持する情報を、グラフDBに登録する。すなわち、情報処理装置100は、同じ情報を、グラフDBにはノードとエッジの形式で登録し、RDBには、キーバリュー形式で登録する。この結果、異なる形式で冗長的に情報を保存しておく。
【0034】
図5は、本発明を適用した実施形態におけるRDB処理部、リアルタイム同期部、およびグラフDB処理部のブロック図である。RDB処理部110は、例えば、RDB記憶装置200と、ロジカルレプリケーション機能部112とを備える。ロジカルレプリケーション機能部112は、RDB記憶装置200に記憶されているマスターデータを、論理的なレベルのデータ(以下、論理データと記載する)に変換(デコード)する。ロジカルレプリケーション機能部112は、例えば、RDB処理部110に対してRDBに対する操作を示す情報が供給されたことに応じて動作する。例えばロジカルレプリケーション機能部112は、“INSERT_A”、“INSERT_B”、“INSERT_C”、“INSERT_D”、“INSERT_E”、および“COMMIT”と表現された命令が供給された場合、当該操作に対応した命令ごとに変換処理を行うことで各命令に対応した論理データを生成し、変更データ蓄積スロット112aに格納する。ロジカルレプリケーション機能部112は、変更データ蓄積スロット112aに格納した論理データを、リアルタイム同期部130に供給する。なお、以下の説明において、ユーザの操作に基づいて変更されたRDBのデータを変更データとも記載する。
【0035】
リアルタイム同期部130は、例えば、変更データ受信部132と、形式変換部134と、複数のクエリ生成部136とを備える。変更データ受信部132および形式変換部134は、RDBに対する操作ごとに供給された変更データごとに処理を行う。変更データ受信部132は、ロジカルレプリケーション機能部112から変更データを受信する。形式変換部134は、表形式またはキーバリュー形式の変更データを、ノードおよびエッジを含む形式のグラフデータに変換する。形式変換部134は、マッピング情報記憶装置138に記憶されたマッピング情報を参照して変換処理を行う。マッピング情報は、RDBからグラフDBへ形式を変換するための定義に基づいた対応関係(マッピング)を表す情報である。マッピング情報記憶装置138は、リアルタイム同期部130の処理とは独立してマッピング情報を管理する管理部としても機能する。クエリ生成部136は、変更データから変換されたノードに対応したクエリ、または変更データから変換されたエッジに対応したクエリを生成する。ノードに対応したクエリは、グラフDBにノードを登録、更新または削除を要求する命令に相当する。エッジに対応したクエリは、グラフDBにエッジを登録、更新または削除を要求する命令に相当する。複数のクエリ生成部136のうちの一つのクエリ生成部136は一つのノードに対応したクエリを生成し、他のクエリ生成部136は一つのエッジに対応したクエリを生成する。複数のクエリ生成部136は、ノードに対応したクエリとエッジに対応したクエリを並列して生成し、複数のクエリを並列してグラフDB処理部120に供給する。
【0036】
ノード管理部120aは、クエリ生成部136からノードに対応したクエリを受け付け、当該クエリに従ってノードの登録、更新、または削除を行う。エッジ管理部120bは、クエリ生成部136からエッジに対応したクエリを受け付け、当該クエリに従ってエッジの登録、更新、または削除を行う。これにより、グラフDB処理部120は、ユーザのRDBに対する操作ごとに、ノードの登録、更新、または削除とエッジの登録、更新、または削除とを並行して行う。
【0037】
図6は、本発明を適用した実施形態におけるRDB処理部のブロック図である。RDB処理部110は、出力プラグイン112bおよび変更データ蓄積スロット112aを備える。出力プラグイン112bは、RDB記憶装置200から出力されたトランザクションログを変換するソフトウェアにより実現される。出力プラグイン112bは、RDB記憶装置200から読み出されたトランザクションログ200Bを所定の形式(json形式)の論理データ(変更データ)に変換して変更データ蓄積スロット112aに供給する。トランザクションログ200Bは、例えばRDB記憶装置200に記憶されたデータのうち、ユーザの操作に基づいて変更されたデータを抽出したログデータである。
【0038】
なお、既存のロジカルレプリケーション機能は、RDBに含まれるログを抽出して他のRDBに供給するために利用されることが多い。実施形態のロジカルレプリケーション機能部112は、当該RDB同士で利用されるレプリケーションを利用し、RDB記憶装置200から出力されたトランザクションログ200Bを出力プラグイン112bにより所定の形式(json形式)の論理データ(変更データ)に変換し、変更データ蓄積スロット112aからリアルタイムに変更データを変更データ受信部132に供給することができる。
【0039】
図7は、本発明を適用した実施形態におけるマッピングパターンと、RDBのテーブル種類と、グラフDBへの反映処理との関係を示す図である。形式変換部134は、例えば図7に示したマッピングパターンに従って変換処理を行う。形式変換部134は、ユーザの操作に基づいて変更されたテーブルの種類が親テーブルである場合に、当該変更されたテーブルに対応するノードのみを作成する。親テーブルは、他のテーブルと関連を持たないテーブルである。形式変換部134は、ユーザの操作に基づいて変更されたテーブルの種類が子テーブルである場合に、当該変更されたテーブルに対応するノードおよびエッジを作成する。子テーブルは、他のテーブルと関連を持つテーブルである。形式変換部134は、ユーザの操作に基づいて変更されたテーブルの種類が中間テーブルである場合に、当該変更されたテーブルに対応するエッジのみを作成する。中間テーブルは、多対多の関係となるテーブル間に位置するテーブルである。
【0040】
図8は、本発明を適用した実施形態におけるRDBからグラフDBへの同期処理の一例を示す図である。形式変換部134は、ユーザの操作によりRDBに親テーブルであるユーザテーブルにデータが登録された場合、マッピングパターン1に従って、グラフDBにユーザノードを追加する。ユーザノードのプロパティは、RDBの含まれるレコード「ユーザID、および名前」に対応した情報として設定される。同様に、親テーブルであるエリアテーブルがRDBに登録された場合、マッピングパターン1に従って、グラフDBにエリアノードを追加する。
【0041】
形式変換部134は、ユーザの操作によりRDBに子テーブルであるショップテーブルにデータが登録された場合、マッピングパターン2に従って、グラフDBにショップノードを追加すると共に、当該ショップノードとエリアノードとを繋ぐエッジを追加する。実施形態のエッジはプロパティを持たせていないが、これに限定されず、エリアIDなどのエッジを特定する情報をプロパティとして持たせてもよい。
【0042】
形式変換部134は、ユーザの操作によりRDBに中間テーブルであるお気に入りショップテーブルが登録された場合、マッピングパターン3に従って、ユーザノードとショップノードとを繋ぐエッジを追加する。エッジは、例えば、プロパティとしてユーザIDおよびショップIDを持つ。
【0043】
図9は、本発明を適用した実施形態におけるRDBの親テーブルへのデータ登録をグラフDBに反映する処理の一例を示す図である。例えば、ユーザの操作によってRDB記憶装置200におけるユーザテーブル(テーブル名:users)にユーザID「2」のユーザ名「Suzuki」を追加する要求を受け付けた場合、RDB処理部110は、RDBにおけるユーザテーブルにユーザID「2」のユーザ名「Suzuki」を追加する。ロジカルレプリケーション機能部112は、RDBへのデータ登録に基づく変更データを所定の形式にデコードし、変更データ蓄積スロット112aを介してリアルタイム同期部130に供給する。
【0044】
リアルタイム同期部130は、例えば図9中の「変更データ」のように表現された変更データを受け付ける。リアルタイム同期部130は、変更データを受信すると親テーブル用のマッピング情報を参照し、グラフDBに変更データを反映するためのクエリを生成する。具体的に、リアルタイム同期部130は、RDBにおいてデータ登録されたテーブルに対応したラベル、およびRDBにおいてデータ登録されたユーザIDおよびユーザ名に対応したユーザIDおよびユーザ名を持つノードを登録するためのノード登録クエリを生成する。ノード登録クエリは、例えば図9中の「ノード登録クエリ」のように表現される。リアルタイム同期部130は、生成したノード登録クエリをグラフDB記憶装置300に出力する。これにより、グラフDB記憶装置300は、ノード登録クエリを実行することで、「Users」のラベルを持ち、ユーザID「2」のユーザ名が「Suzuki」であるノードを生成する。このように、情報処理装置100は、ユーザの操作によってRDBにおけるテーブルへのデータ登録要求を受け付けたことに応じて、ユーザの操作ごとにRDBへのデータ登録、変更データの変換、およびグラフDBへのノードの登録といった一連の処理をリアルタイムに実行することができる。
【0045】
図10は、本発明を適用した実施形態におけるRDBの親テーブルへのデータ更新をグラフDBに反映する処理の一例を示す図である。例えば、ユーザの操作によってRDB記憶装置200におけるユーザテーブル(テーブル名:users)におけるユーザID「1」のユーザ名「Tanaka」を「Sato」に更新する要求を受け付けた場合、RDB処理部110は、RDBにおけるユーザテーブルのユーザID「1」のユーザ名を「Sato」に更新する。ロジカルレプリケーション機能部112は、RDBのデータ更新に基づく変更データを所定の形式にデコードし、変更データ蓄積スロット112aを介してリアルタイム同期部130に供給する。なお、ユーザの操作がRDBへのデータ更新である場合、更新されたレコードの主キーの値もリアルタイム同期部130に送信する。
【0046】
リアルタイム同期部130は、例えば図10中の「変更データ」のように表現された変更データを受け付ける。リアルタイム同期部130は、変更データを受信すると親テーブル用のマッピング情報を参照し、グラフDBに変更データを反映するためのクエリを生成する。具体的に、リアルタイム同期部130は、RDBにおいてデータ更新されたテーブルに対応したラベル、およびRDBにおいてデータ更新されたレコードのユーザIDを持つノードを更新するためのノード更新クエリを生成する。ノード更新クエリは、例えば図10中の「ノード更新クエリ」のように表現される。リアルタイム同期部130は、生成したノード更新クエリをグラフDB記憶装置300に出力する。これにより、グラフDB記憶装置300は、ノード更新クエリを実行することで、「Users」のラベル、およびユーザIDが1に対応したユーザ名を「Sato」にすることでノードを更新する。このように、情報処理装置100は、ユーザの操作によってRDBにおけるテーブルへのデータ更新要求を受け付けたことに応じて、ユーザの操作ごとにRDBへのデータ更新、変更データの変換、およびグラフDBへのノードの更新といった一連の処理をリアルタイムに実行することができる。なお、実施形態では、RDBの親テーブルへのデータ更新をグラフDBに反映する処理の一例を説明したが、RDBの子テーブルや中間テーブルへのデータ更新をグラフDBに反映する処理は、子テーブルに対応するノードやエッジ、中間テーブルに対応するエッジに対して更新する処理を行えばよい。
【0047】
図11は、本発明を適用した実施形態におけるRDBの子テーブルへのデータ登録をグラフDBに反映する処理の一例を示す図である。例えば、ユーザの操作によってRDB記憶装置200におけるショップテーブル(テーブル名:shop)におけるショップID「2」のショップ名「shopB」およびエリアID「2」を追加する要求を受け付けた場合、RDB処理部110は、RDBにおけるショップテーブルのショップID「2」のショップ名「shopB」およびエリアID「2」を追加する。ショップテーブルのエリアIDは、エリアテーブルのエリアIDに紐付けられている。ロジカルレプリケーション機能部112は、RDBへのデータ登録に基づく変更データを所定の形式にデコードし、変更データ蓄積スロット112aを介してリアルタイム同期部130に供給する。
【0048】
リアルタイム同期部130は、例えば図11中の「変更データ」のように表現された変更データを受け付ける。リアルタイム同期部130は、変更データを受信すると、子テーブル用のマッピング情報を参照し、グラフDBに変更データを反映するためのノード登録クエリを生成し、これに並行して、ショップテーブル(子テーブル)に対応したノードからエリアテーブル(親テーブル)に対応したノードを繋ぐエッジ用のマッピング情報を参照してエッジ登録クエリを生成する。具体的に、リアルタイム同期部130は、RDBにおいてデータ登録されたテーブルに対応したラベル、およびRDBにおいてデータ登録されたショップIDおよびショップ名に対応したショップIDおよびショップ名を持つノードを登録するためのノード登録クエリを生成し、これに並行して、始点ノードをショップノードとし終点ノードをエリアノードとするエッジ登録クエリを生成する。ノード登録クエリは、例えば図11中の「ノード登録クエリ」のようになり、エッジ登録クエリは、例えば図11中の「エッジ登録クエリ」のように表現される。リアルタイム同期部130は、生成したノード登録クエリおよびエッジ登録クエリをグラフDB記憶装置300に出力する。これにより、グラフDB記憶装置300は、ノード登録クエリを実行することで、「shop」のラベルを持ち、ショップID「2」、ショップ名「shopB」、およびエリアID「2」のプロパティを持つショップノードを、グラフDBに登録する。これに並行してグラフDB記憶装置300は、エッジ登録クエリを実行することで、ショップノードとエリアノードとを繋ぐエッジを生成する。このように、情報処理装置100は、ユーザの操作によってRDBにおける子テーブルへのデータ登録要求を受け付けたことに応じて、ユーザの操作ごとにRDBへのデータ登録、変更データの変換、およびグラフDBへのノード登録およびエッジ登録といった一連の処理をリアルタイムに実行することができる。
【0049】
図12は、本発明を適用した実施形態におけるRDBの子テーブルからのデータ削除をグラフDBに反映する処理の一例を示す図である。例えば、ユーザの操作によってRDB記憶装置200におけるショップテーブル(テーブル名:shop)におけるショップID「2」を削除する要求を受け付けた場合、RDB処理部110は、RDBにおけるユーザテーブルのショップID「2」を削除する。ロジカルレプリケーション機能部112は、RDBへのデータ削除に基づく変更データを所定の形式にデコードし、変更データ蓄積スロット112aを介してリアルタイム同期部130に供給する。なお、ユーザの操作がRDBへのデータ削除である場合、削除されたレコードの主キーのみをリアルタイム同期部130に送信する。
【0050】
リアルタイム同期部130は、例えば図12中の「変更データ」のように表現され、当該変更データを受け付ける。リアルタイム同期部130は、変更データを受信すると子テーブル用のマッピング情報を参照し、グラフDBからノードおよびエッジを削除するための削除クエリを生成する。具体的に、リアルタイム同期部130は、RDBにおいてデータ削除されたテーブルに対応したラベル、およびRDBにおいてデータ削除されたレコードのショップIDを持つノードを削除するための削除クエリを生成する。削除クエリは、例えば図12中の「削除クエリ」のように表現される。リアルタイム同期部130は、生成した削除クエリをグラフDB記憶装置300に出力する。これにより、グラフDB記憶装置300は、削除クエリを実行することで、RDBにおいて削除されたデータに対応するノード、および当該ノードに接続されたエッジを削除する。このように、情報処理装置100は、ユーザの操作によってRDBにおけるテーブルへのデータ削除要求を受け付けたことに応じて、ユーザの操作ごとにRDBへのデータ削除、変更データの変換、およびグラフDBにおけるノードおよびエッジの削除といった一連の処理をリアルタイムに実行することができる。なお、実施形態では、RDBの子テーブルからのデータ削除をグラフDBに反映する処理の一例を説明したが、RDBの親テーブルや中間テーブルへのデータ削除をグラフDBに反映する処理は、親テーブルに対応するノード、中間テーブルに対応するエッジに対して削除する処理を行えばよい。
【0051】
図13は、本発明を適用した実施形態における中間テーブルへのデータ登録をグラフDBに反映する処理の一例を示す図である。例えば、ユーザの操作によってRDB記憶装置200におけるお気に入りショップテーブル(テーブル名:favorite_shop)におけるユーザID「1」のショップID「2」を追加する要求を受け付けた場合、RDB処理部110は、ユーザID「1」およびショップID「2」をお気に入りショップテーブルに追加する。お気に入りショップテーブルにおけるユーザID「1」はユーザテーブルに紐付けられ、お気に入りショップテーブルにおけるショップID「2」はショップテーブルに対応付けられる。ロジカルレプリケーション機能部112は、中間テーブルへのデータ登録に基づく変更データを所定の形式にデコードし、変更データ蓄積スロット112aを介してリアルタイム同期部130に供給する。
【0052】
リアルタイム同期部130は、例えば図13中の「変更データ」のように表現された、当該変更データを受け付ける。リアルタイム同期部130は、変更データを受信すると中間テーブル用のマッピング情報を参照し、始点ノード(ラベル名:Users)から終点ノード(ラベル名:Shop)に繋がるエッジを登録するためのエッジ登録クエリを生成する。エッジ登録クエリは、例えば図13中の「エッジ登録クエリ」のように表現される。リアルタイム同期部130は、生成したエッジ登録クエリをグラフDB記憶装置300に出力する。これにより、グラフDB記憶装置300は、エッジ登録クエリを実行することで、ラベル名がUsersのユーザID「1」のノードからラベル名がshopのショップID「2」のノードへの方向を持つエッジを登録する。このように、情報処理装置100は、ユーザの操作によってRDBにおける中間テーブルへのデータ登録要求を受け付けたことに応じて、ユーザの操作ごとにRDBへのデータ登録、変更データの変換、およびグラフDBにおけるエッジの登録といった一連の処理をリアルタイムに実行することができる。
【0053】
以下、リアルタイムにRDBとグラフDBとを同期させたときの速度について説明する。
【0054】
図14は、RDBにおける親テーブルに対するデータ登録をグラフDBに反映させる速度を測定する処理を説明するための図であり、図15は、RDBにおける親テーブルの登録データ件数とグラフDBへの反映時間との関係を示すグラフであり、図16は、RDBにおける親テーブルの登録データ件数とグラフDBへの反映時間との関係を示す表である。図14に示すようにRDBのエリアテーブル(親テーブル)に対してエリアデータを1レコードから2560レコードまで順次増加していって最後にコミットし、RDBに登録したエリアデータごとにグラフDBにエリアノードを登録し、全てのエリアデータに対応したエリアノードが登録されるまでの時間を測定した。その結果、RDBに対する登録データ件数に対する反映時間は図15および図16のようになった。
【0055】
図17は、RDBにおける子テーブルに対するデータ登録をグラフDBに反映させる速度を測定する処理を説明するための図であり、図18は、RDBにおける子テーブルの登録データ件数とグラフDBへの反映時間との関係を示すグラフであり、図19は、RDBにおける子テーブルの登録データ件数とグラフDBへの反映時間との関係を示す表である。図17に示すように、RDBのエリアデータおよびグラフDBのエリアノードが既に存在している状態で、RDBのショップテーブル(子テーブル)に対してショップデータを1レコードから2560レコードまで順次増加していって最後にコミットし、RDBに登録したショップデータごとに、グラフDBにショップノードおよびショップノードからエリアノードに繋がるエッジを登録し、全てのショップデータに対応したショップノードおよびエッジが登録されるまでの時間を測定した。その結果、RDBに対する登録データ件数に対する反映時間は図18および図19のようになった。
【0056】
図20は、RDBにおける中間テーブルに対するデータ登録をグラフDBに反映させる速度を測定する処理を説明するための図であり、図21は、RDBにおける中間テーブルの登録データ件数とグラフDBへの反映時間との関係を示すグラフであり、図22は、RDBにおける中間テーブルの登録データ件数とグラフDBへの反映時間との関係を示す表である。図20に示すように、RDBのショップデータおよびグラフDBのショップノード、RDBのエリアデータおよびグラフDBのエリアノード、RDBのユーザデータおよびグラフDBのユーザノードが既に存在している状態で、お気に入りのショップテーブル(中間テーブル)に対して1レコードから2560レコードまで順次増加していって最後にコミットし、RDBに登録したお気に入りショップデータごとに、グラフDBにユーザノードとショップノードとを繋がるエッジが登録し、全てのお気に入りショップに対応したエッジが登録されるまでの時間を測定した。その結果、RDBに対する登録データ件数に対する反映時間は図21および図22のようになった。
【0057】
以上のように説明したリアルタイムにRDBとグラフDBとを同期させたときの速度は、すべてのパターンにおいて、RDBへの登録データ件数が1280件までであれば1秒以内にRDBからグラフDBにデータを反映(同期)することができる。また、すべてのパターンにおいて、RDBへの登録データ件数が2560件であっても1秒程度でRDBからグラフDBにデータを反映(同期)することができる。また、データ反映速度はデータ量の増加に比例して遅くなる傾向となっているが、その傾向は緩やかであることがわかる。さらに、RDBへの登録データ件数が少ない場合、RDBからグラフDBへの反映処理以外の影響が大きくなるため反映速度が安定していないと考えられる。
【0058】
(実施形態の効果)
以上説明した実施形態の情報処理装置100は、ノードと、ノード間のエッジとを含むグラフデータベースに対し、ノードおよび/またはエッジの更新処理を実行するグラフDB処理部120(第1のデータベース処理部)と、リレーショナルデータベース(表形式またはキーバリュー形式のデータベース)に対する処理を実行するRDB処理部110(第2のデータベース処理部)と、リレーショナルデータベースに対する更新要求を受け付ける制御部140(受付部)と、受付部により更新要求を受け付ける度に、前記第2のデータベースによる処理結果に基づいて前記グラフデータベースを更新するクエリを前記第1のデータベース処理部に供給するリアルタイム同期部130(同期部)と、を備える、情報処理装置を実現することができる。実施形態の情報処理装置100によれば、受付部により更新要求を受け付ける度に、リレーショナルデータベースとグラフデータベースとでリアルタイムに情報を同期することができる。
【0059】
なお、RDBにデータを書き込む機能(アプリケーション)が同時にグラフDBにデータを書き込むという方式も考えられる。しかし、仮にグラフDBのダウン等によりグラフDBにデータ書き込みができない場合、トランザクションが完結しないことになり、それにより、情報処理装置100に関連する業務に多大な影響を及ぼすことになる。これに対し、実施形態の情報処理装置100によれば、グラフDBへの書き込みを、RDBのデータ書き込み機能とは独立させることにより安定したシステムを提供することができる。また、RDBへの書き込みのみでトランザクションを完結することで、グラフDBへの書き込み成功を待つことなく、素早いレスポンスをユーザに返すことができる。さらに、RDBを利用しているシステムは多数あるが、当該システムにグラフDBを追加したい場合、グラフDBへの書き込み機能をRDBに対して独立させているので、既存のRDB書き込み機能を改造することなく、リアルタイム同期部130を追加するだけでRDBとグラフDBのハイブリッドシステムを簡単に構築することができる。
【0060】
さらに、実施形態の情報処理装置100によれば、リアルタイム同期部130により、受付部により更新要求を受け付ける度に、リレーショナルデータベースとグラフデータベースとのマッピング情報を参照してRDB処理部110による処理結果をグラフDB処理部120によりノードおよび/またはエッジに対する処理に変換することができる。
【0061】
さらに、実施形態の情報処理装置100によれば、リアルタイム同期部130により、更新要求に対応した更新情報に対し、ノードおよびエッジのためのクエリとをそれぞれ並列してグラフDB処理部120に供給することができ、グラフDB処理部120によるノードに関する処理およびエッジに関する処理とをそれぞれ並列で実行させることができる。実施形態の情報処理装置100において、RDBに対するデータ操作(登録、更新、削除)に対して、グラフDBによりノードだけでなくエッジも操作する必要がある。RDBで大量のデータが操作された場合、操作されたデータの1つずつシリアルで処理した場合には処理が遅延するため、マルチスレッドによる並列処理によりグラフDBに書き込むことができる。
【0062】
さらに、実施形態の情報処理装置100によれば、RDB処理部110により、ロジカルレプリケーション機能により更新情報を変換し、変換した更新情報を、リアルタイム同期部130に供給することができ、ロジカルレプリケーション機能をRDBからグラフDBへの情報の出力に利用することができる。実施形態の情報処理装置100によれば、RDBに書き込まれたデータを定期的に取得するのではなく、RDBのレプリケーションを行う場合に利用する変更データ蓄積スロットから変更データを即座に取得することによりRDBとグラフDBとのリアルタイム同期を実現することができる。すなわち、リアルタイム同期部130によれば、変更データ蓄積スロットに1レコードずつ順に格納される変更データをメッセージ通信により順番通りに受信し、グラフDBに供給するクエリを生成する処理をすることができる。
【0063】
さらに、実施形態の情報処理装置100によれば、リアルタイム同期部130の動作から独立してマッピング情報を管理する管理部を更に備えるので、RDBのデータをどのようにマッピングしてグラフDBに反映させるかという定義情報を外部ファイルとして保持する。これにより、情報処理装置100によれば、リアルタイム同期部130におけるプログラムを変更することなく、マッピングファイルを変更するだけで柔軟にグラフDBにRDBのデータを同期させることができる。
【0064】
さらに、実施形態の情報処理装置100によれば、更新要求が、リレーショナルデータベースにおける親テーブルに対するデータ登録を要求する情報である場合、リアルタイム同期部130により、親テーブルに対するデータ登録を要求する更新要求に基づいてノードを登録するクエリを生成し、更新要求が、リレーショナルデータベースにおける親テーブルに対するデータ更新を要求する情報である場合、リアルタイム同期部130により、親テーブルに対するデータ更新を要求する更新要求に基づいてノードを更新するクエリを生成し、更新要求が、リレーショナルデータベースにおける子テーブルに対するデータ登録を要求する情報である場合、リアルタイム同期部130により、子テーブルに対するデータ登録を要求する更新要求に基づいてノードおよびエッジを登録するクエリを生成し、更新要求が、リレーショナルデータベースにおける子テーブルからのデータ削除を要求する情報である場合、リアルタイム同期部130により、子テーブルに対するデータ削除を要求する更新要求に基づいてノードおよびエッジを削除するクエリを生成し、更新要求が、リレーショナルデータベースにおける中間テーブルに対するデータ登録を要求する情報である場合、リアルタイム同期部130により、中間テーブルに対するデータ登録を要求する更新要求に基づいてエッジを登録するクエリを生成する。これにより、情報処理装置100によれば、RDBにおけるテーブルに応じて異なる動作を実行して、RDBの更新をグラフDBに反映させることができる。
【0065】
なお、各実施形態および変形例について説明したが、一例であってこれらに限られず、例えば、各実施形態や各変形例のうちのいずれかや、各実施形態の一部や各変形例の一部を、他の1または複数の実施形態や他の1または複数の変形例と組み合わせて本発明の一態様を実現させてもよい。
【0066】
なお、本実施形態における情報処理装置100の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムを、コンピュータシステムに読み込ませ、実行することにより、情報処理装置100に係る上述した種々の処理を行ってもよい。
【0067】
なお、ここでいう「コンピュータシステム」とは、OSや周辺機器などのハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリなどの書き込み可能な不揮発性メモリ、CD-ROMなどの可搬媒体、コンピュータシステムに内蔵されるハードディスクなどの記憶装置のことをいう。
【0068】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネットなどのネットワークや電話回線などの通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic
Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置などに格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。
【0069】
ここで、プログラムを伝送する「伝送媒体」は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0070】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。
【符号の説明】
【0071】
100 情報処理装置
110 RDB処理部
112 ロジカルレプリケーション機能部
112a 変更データ蓄積スロット
112b 出力プラグイン
120 グラフDB処理部
120a ノード管理部
120b エッジ管理部
130 リアルタイム同期部
132 変更データ受信部
134 形式変換部
136 クエリ生成部
140 制御部
150 API処理部
200 RDB記憶装置
300 グラフDB記憶装置
400 ユーザ端末装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22