(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024160635
(43)【公開日】2024-11-14
(54)【発明の名称】分析装置、分析方法及び分析プログラム
(51)【国際特許分類】
G06F 16/242 20190101AFI20241107BHJP
【FI】
G06F16/242
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023075853
(22)【出願日】2023-05-01
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、内閣府(国立研究開発法人医薬基盤・健康・栄養研究所)、戦略的イノベーション創造プログラム(SIP)第2期「AI(人工知能)ホスピタルによる高度診断・治療システム」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】399035766
【氏名又は名称】エヌ・ティ・ティ・コミュニケーションズ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】田中 哲士
(72)【発明者】
【氏名】櫻井 陽一
(72)【発明者】
【氏名】澤田 匡史
(72)【発明者】
【氏名】山際 龍太
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA03
5B175HA04
(57)【要約】 (修正有)
【課題】秘密計算によるテーブル形式のデータの分析に要するリソースを低減させるとともに、処理時間を短縮させる分析装置、分析方法及び分析プログラムを提供する。
【解決手段】秘密計算システムを含む分析システムにおいて、分析システムに含まれる分析装置13の制御部135は、テーブルの列の値を基に分割した複数のレコード群から、条件を満たすレコード群を秘密計算により抽出する抽出部1351と、抽出されたテーブルを対象に、秘密計算により統計量を計算する計算部1352と、2つのテーブルの列結合を行う列結合部1353と、列結合によって得られた複数のテーブルの行結合を秘密計算により行う行結合部1354と、テーブルを端末装置に出力する出力制御部1355と、を含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
テーブルに含まれる複数のレコードを、前記テーブルの列の値を基に分割した複数のレコード群の中から、条件を満たすレコード群を秘密計算により抽出する抽出部と、
を有することを特徴とする分析装置。
【請求項2】
前記抽出部によって抽出されたテーブルを対象に、統計量を計算する計算部をさらに有することを特徴とする請求項1に記載の分析装置。
【請求項3】
第1のテーブルを分割して得られた第1の複数のレコード群のそれぞれと、第2のテーブルを分割して得られた第2の複数のレコード群のそれぞれと、の列結合を秘密計算により行う列結合部と、
前記列結合部による列結合によって得られた複数のテーブルの行結合を秘密計算により行う行結合部と、
をさらに有することを特徴とする請求項1に記載の分析装置。
【請求項4】
分析装置によって実行される分析方法であって、
テーブルに含まれる複数のレコードを、前記テーブルの列の値を基に分割した複数のレコード群の中から、条件を満たすレコード群を秘密計算により抽出する抽出工程と、
を含むことを特徴とする分析方法。
【請求項5】
テーブルに含まれる複数のレコードを、前記テーブルの列の値を基に分割した複数のレコード群の中から、条件を満たすレコード群を秘密計算により抽出する抽出ステップと、
をコンピュータに実行させることを特徴とする分析プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分析装置、分析方法及び分析プログラムに関する。
【背景技術】
【0002】
従来、データを秘匿したまま統計的な演算を行い、演算の結果得られた統計量をユーザに提供する秘密計算システムが知られている。例えば、秘密計算システムは、重要な個人情報を取り扱う医療分野等におけるデータの分析に利用される場合がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】国際公開第2019/124260号
【特許文献2】特開2020-042128号公報
【特許文献3】特開2014-139640号公報
【非特許文献】
【0004】
【非特許文献1】日本電信電話株式会社,秘密計算のシステムとその原理, [online],[令和4年11月24日検索]、インターネット<URL:https://www.rd.ntt/sil/project/sc/secure_computation.html>
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の技術には、秘密計算によるデータの分析に要するリソース(例えば、メモリ使用量及び処理時間)が大きくなる場合があるという問題がある。
【0006】
テーブルのレコード数が多い場合(例えば、1憶以上)、データの集計、及びテーブルの結合に要するメモリ使用量と処理時間が膨大になる。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するために、本発明の分析装置は、テーブルに含まれる複数のレコードであって、前記テーブルの列の値を基に、複数のレコード群に分割された複数のレコード群の中から、条件を満たすレコード群を秘密計算により抽出する抽出部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、秘密計算によるデータの分析に要するリソースを低減させるとともに、処理時間を短縮させることができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係る分析システムの構成例を示す図である。
【
図2】
図2は、実施形態に係る分析装置の構成例を示す図である。
【
図3】
図3は、実施形態に係るテーブルのパーティショニングを説明する図である。
【
図4】
図4は、実施形態に係るテーブルの抽出を説明する図である。
【
図5】
図5は、実施形態に係るテーブルの抽出を説明する図である。
【
図6】
図6は、実施形態に係るデータ集計の手順を説明する図である。
【
図7】
図7は、実施形態に係るテーブル結合の手順を説明する図である。
【
図8】
図8は、実施形態に係るデータ集計の処理の流れを示すフローチャートである。
【
図9】
図9は、実施形態に係るテーブル結合の処理の流れを示すフローチャートである。
【
図10】
図10は、分析プログラムを実行するコンピュータの一例を示す図である。
【
図11】
図11は、従来のテーブル結合の手順を説明する図である。
【発明を実施するための形態】
【0010】
以下に、本願に係る分析装置、分析方法及び分析プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【0011】
まず、
図1を用いて、分析システムの構成を説明する。分析システムは、秘密計算を利用してデータの分析を行うためのシステムである。
【0012】
図1に示すように、分析システム1は、秘密計算システム10を含む。また、秘密計算システム10は、ネットワークNを介して提供装置20及び提供装置30と接続される。例えば、ネットワークNはインターネットである。また、秘密計算システム10は、端末装置40と接続される。
【0013】
提供装置20及び提供装置30は、データ提供者側の装置である。提供装置20及び提供装置30は、秘密計算システム10にデータを提供(登録)する。
【0014】
提供装置20及び提供装置30によって提供されるデータは、秘匿化されることが望ましい情報(例えば、個人の氏名、住所等の個人情報)を含む。例えば、提供装置20及び提供装置30は、医療機関で利用されるレセプト及びDPC(Diagnosis Procedure Combination)に関するデータを提供する。
【0015】
秘密計算システム10は、データ蓄積部11及びデータ処理部12を有する。データ蓄積部11は、秘密分散によりデータを蓄積する複数の蓄積装置(蓄積装置111、蓄積装置112、蓄積装置113)を含む。また、データ処理部12は、秘密計算によりデータを処理する複数の計算装置(計算装置121、計算装置122、計算装置123)を含む。なお、蓄積装置の数及び計算装置の数は、
図1に示す例に限られない。
【0016】
秘密計算システム10は、非特許文献1(掲載URL:https://www.rd.ntt/sil/project/sc/secure_computation.html)に記載された方法に従って、秘密分散及び秘密計算を実行することができる。
【0017】
まず、秘密計算システム10に提供されたデータは、複数のシェアに分割される(断片化)。そして、複数のシェアのそれぞれは、データ蓄積部11に含まれる複数の蓄積装置に分散して蓄積される。
図1の例では、提供されたデータが3つのシェアに分割される。そして、蓄積装置111、蓄積装置112、蓄積装置113が、それぞれ1つずつシェアを蓄積する。
【0018】
データ処理部12は、データ蓄積部11に蓄積されたシェアに対し、秘密計算を実行する。データ処理部12は、複数の計算装置を使ったマルチパーティ計算により秘密計算を実行する。
図1の例では、データ処理部12は、計算装置121、計算装置122、計算装置123により秘密計算を実行する。
【0019】
データ処理部12は、シェアを復元することなく各種の統計演算を行うことができる。例えば、データ処理部12は、ソート、結合等のテーブルの操作、レコード数の集計、総和、平均、最大値、最小値、標本分散等の統計量の計算、t検定等の統計的検定を行うことができる。さらに、データ処理部12は、回帰分析及び主成分分析といった統計的分析を行うことができる。
【0020】
分析装置13は、データ処理部12を利用してデータの分析を行う。分析装置13は、データ処理部12によって実行された秘密計算の結果に基づき、分析結果をデータ利用者側の端末装置40に提供する。利用者は、端末装置40を介してデータの分析結果を得ることができる。
【0021】
例えば、秘密計算システム10には、個人ごとの属性及び身体に関するデータが提供される場合がある。属性及び身体に関するデータは秘匿化されることが望ましい個人情報である。属性及び身体に関するデータには、例えば年齢、性別、身長、体重等が含まれる。データ蓄積部11は、提供されたデータを断片化したシェアを各蓄積装置に格納する。
【0022】
なお、分割された個々のシェアは、単独では意味のないデータである。そのため、1つのシェアから元のデータを復元することはできない。一方、複数のシェアを揃えることで元のデータを復元することが可能になる。
【0023】
データの利用者は、登録されたデータそのものを閲覧することはできないが、分析装置13及び端末装置40を介して、データの分析結果を閲覧することができる。例えば、データに個人の性別及び体重が含まれている場合、利用者は、各個人の性別及び体重を閲覧することはできないが、データの分析結果である「男性の平均体重」を閲覧することができる。
【0024】
一例として、データ蓄積部11は、Shamirの閾値秘密分散法という手法を使って秘密分散を行うことができる。このとき、データ蓄積部11は、元のデータを切片とする多項式を通る3つの座標をシェアとして各サーバに保管する。また、多項式の傾きはランダムに決定されるため、元のデータが同じであってもシェアが毎回同じであるとは限らない。なお、元のデータは、数値であってもよいし、数値に変換済みのデータであってもよい。
【0025】
秘密計算システム10は、複数のシェアから元のデータを復元することができる。多項式が1次式であれば、秘密計算システム10は、2つの座標(シェアに相当)を結ぶ直線と軸との交点から切片(元のデータに相当)を求めることができる。一方で、1つの座標からは直線が定まらないため、元のデータを復元することはできない。
【0026】
また、前述の通り、データ処理部12は、シェアを復元することなく元のデータに対し秘密計算を実行することができる。例えば、座標で表されたシェア同士を加算した結果は、各シェアの元のデータ同士を加算した結果のシェアに相当する。
【0027】
分析装置13は、端末装置40からの要求に応じて、データ処理部12に秘密計算による処理を実行させる。なお、データ処理部12又は端末装置40が、分析装置13と同等の機能を実現してもよい。例えば、分析システム1は、分析装置13を有さない構成であってもよい。その場合、端末装置40がデータ処理部12と接続され、分析装置13と同等の処理を実行する。さらに、シェアに基づく統計演算は、データ処理部12ではなく端末装置40によって実行されてもよい。
【0028】
第1の実施形態では、分析装置13が秘密計算によりテーブルの結合を行う場合の例を説明する。なお、分析装置13が結合の対象とするテーブルは、例えば複数のテーブルが関連付けられたリレーショナルデータベース(RDB:Relational Database)に含まれるテーブルである。
【0029】
ここで、
図11を用いて、従来の秘密計算におけるテーブル結合を説明する。
図11は、従来のテーブル結合の手順を説明する図である。なお、内部結合は、2つのテーブルから特定の1つ以上の列(以下、結合キー)の値が一致するレコードを抽出し、抽出したレコードを結合する操作である。例えば、内部結合は、SQLにおけるINNER JOINに相当する。
【0030】
図11の例では、従来の分析装置(以降、分析装置13a)は、テーブル51aとテーブル52aを結合する。また、
図11の例では、「ID」列が結合キーである。
【0031】
まず、分析装置13aは、テーブル51aとテーブル52aを以下のように拡張する(ステップS1a)。
【0032】
分析装置13aは、左テーブルであるテーブル51aに「Seqno」列を追加したテーブル61aを生成する。分析装置13aは、「ID」列の値が重複しているレコードに対して、「Seqno」列に異なる番号を付与する。
【0033】
例えば、テーブル51a「ID」列の値が「A0001」であるレコードは2つあるので、分析装置13aは、テーブル61aにおいて、当該2つのレコードのうち1つ目のレコードの「Seqno」列に「0」を付与し、2つ目のレコードの「Seqno」列に「1」を付与する。
【0034】
また、例えば、テーブル51aの「ID」列の値が「A0002」であるレコードは1つのみなので、分析装置13aは、テーブル61aにおいて、当該1つのレコードの「Seqno」列に「0」を付与する。また、例えば、テーブル51aの「ID」列の値が「A0003」であるレコードは1つのみなので、分析装置13aは、テーブル61aにおいて、当該1つのレコードの「Seqno」列に「0」を付与する。
【0035】
分析装置13aは、右テーブルであるテーブル52aに「Seqno」列を追加したテーブル62aを生成する。そして、分析装置13aは、テーブル51aのレコードの最大の重複数に応じて、テーブル62aの各レコードを複製する。分析装置13aは、複製元の各レコードのテーブル62aにおける複製後の数が、テーブル51aの最大の重複数と等しくなるように複製を行う。
【0036】
左テーブルであるテーブル51aの最大重複数は2なので、分析装置13aは、テーブル52aの各レコードを2つに複製する。これは、分析装置13aが、テーブル52aに「Seqno」列を追加しただけの状態のテーブル62aに対して、各レコードと同じレコードを1つ(最大重複数-1)だけ追加することと同意である。
【0037】
分析装置13aは、テーブル61aの場合と同様に、複製したテーブル62aの「ID」列の値が重複しているレコードに対して、「Seqno」列に異なる番号を付与する。例えば、分析装置13aは、テーブル62aの「ID」列が「A0001」であり、「薬品名」列が「カペシタビン」である2つのレコードのうち、1つ目のレコードの「Seqno」列に「0」を付与し、2つ目のレコードの「Seqno」列に「1」を付与する。
【0038】
分析装置13aは、「ID」列と「Seqno」列を結合キーとして、テーブル61aとテーブル62aの内部結合を行う(ステップS2a)。なお、テーブル61aとテーブル62aの内部結合における結合キーは「ID」列と「Seqno」列であるが、テーブル51aとテーブル52aの内部結合の手順全体における結合キーは「ID」列である。
【0039】
このように、従来の技術では、テーブル62aのようなサイズの大きいテーブルが生成され、メモリの使用量が増大する。これに対して、第1の実施形態の分析装置13は、従来技術と比べて、秘密計算によるテーブルの結合におけるメモリの使用量を低減させることができる。
【0040】
図2を用いて、分析装置13の構成を説明する。
図2は、実施形態に係る分析装置の構成例を示す図である。
【0041】
分析装置13の各部について説明する。
図2に示すように、分析装置13は、通信部131、入力部132、出力部133、記憶部134及び制御部135を有する。
【0042】
通信部131は、他の装置の間でデータの通信を行う。例えば、通信部131はNIC(Network Interface Card)である。通信部131は他の装置との間でデータの送受信を行うことができる。
【0043】
入力部132は、データの入力を受け付けるためのインタフェースである。入力部132は、例えばマウス及びキーボード等の入力装置と接続される。
【0044】
出力部133は、データを出力するためのインタフェースである。出力部133は、例えばディスプレイ及びスピーカ等の入力装置と接続される。
【0045】
記憶部134は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部134は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。記憶部134は、分析装置13で実行されるOS(Operating System)及び各種プログラムを記憶する。
【0046】
制御部135は、分析装置13全体を制御する。制御部135は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部135は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。
【0047】
制御部135は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部135は、抽出部1351、計算部1352、列結合部1353、行結合部1354及び出力制御部1355を有する。
【0048】
以下、
図3から
図7を用いて、制御部135の各処理部の機能を説明する。説明のため、各図には各テーブルの内容を自然言語として判読できる状態で示しているが、実際には、各図に示す処理は、判読不可能なシェアの状態(例えば、無意味に見える数値の羅列)で蓄積されたテーブルを対象として、秘密計算により行われる。
【0049】
本実施形態では、分割手段によるテーブルのパーティショニング(分割)が実行済みであるものとする。
図3を用いて、分割部1351によるテーブルのパーティショニングを説明する。
図3は、実施形態に係るテーブルのパーティショニングを説明する図である。分割手段は、例えば秘密計算システム10へのデータの登録時に実行されるスクリプトである。
【0050】
分割手段は、テーブル51に含まれる複数のレコードを、テーブルの列の値を基に、複数のレコード群に分割する。なお、テーブル51は、例えば提供装置20又は提供装置30から提供される。分割手段は、データ登録時において、パーティショニングキーに従い、自動的、もしくは、手動的に登録することでテーブルパーティショニングを実現する。例えば、分割手段は、データ登録時の前処理として、パーティショニングキーによる登録ファイルの分割を行い、分割したファイルのそれぞれを対応するテーブルに登録する。
【0051】
分割手段によれば、分析装置13は、パーティショニングされているテーブルを必要に応じて抽出、結合し、データ利用者からはあたかもテーブルが1つであるかのように見えるような分析を実現することができる。
【0052】
図3の例では、分割手段は、テーブル51の「所属部コード」列の値を基に分割を行う。分割手段は、テーブルに含まれる複数のレコードを、「所属部コード」列の値の先頭の指定された数の文字列が共通する複数のレコード群に分割する。また、分割手段は、レコード群のそれぞれを、レコード群のそれぞれに共通する文字列を含む名称のテーブルとしてデータ蓄積部11に記憶させる。
【0053】
例えば、指定された数が2である場合、分割手段は、テーブル51を、テーブル群52に分割する。テーブル群52に含まれる各テーブルは、レコード群に相当する。各レコード群に含まれるレコードは、「所属部コード」列の先頭の2つの文字列が共通している。
【0054】
また、分割手段は、レコード群のそれぞれに、テーブル51の名称(テーブル名)である「department」の後に、「_」と「所属部コード」列の先頭の2つの文字列を接続したテーブル名を付与する。例えば、テーブル群52に含まれる「所属部コード」列の先頭の2文字が「11」であるレコード群に、「department_11」という名称を付与する。そして、当該レコード群は、「department_11」という名称のテーブルとしてデータ蓄積部11に秘密分散により蓄積される。
【0055】
例えば、指定された数が1である場合、分割手段は、テーブル51を、テーブル群53に分割する。テーブル群53に含まれる各テーブルは、レコード群に相当する。各レコード群に含まれるレコードは、「所属部コード」列の先頭の1つの文字列が共通している。
【0056】
なお、ここでの文字列(string又はtext)は、1つの文字、又は複数の文字(character)を並べたデータである。文字には、数字、アルファベット、記号等が含まれる。
【0057】
抽出部1351は、複数のレコード群の中から、条件を満たすレコード群を秘密計算により抽出する。
図4は、実施形態に係るテーブルの抽出を説明する図である。
図4に示すように、抽出部1351は、入力された接頭辞を基にテーブルを抽出することができる。ここでは、データ蓄積部11には、
図3のテーブル群53が記憶されているものとする。
【0058】
例えば、接頭辞「department」が指定された場合、抽出部1351は、テーブル名が「department」に前方一致するテーブルを抽出する。
図4の例では、抽出部1351は、テーブル名が「department_11」、「department_12」、「department_21」、「department_99」であるテーブルを抽出する。
【0059】
さらに、抽出部1351は、記憶装置に記憶されたテーブルの中から、指定された数の文字列を名称に含むテーブルを抽出することができる。
【0060】
図5に示すように、抽出部1351は、接頭辞とともに、先頭文字列の指定を受け付ける。
図5は、実施形態に係るテーブルの抽出を説明する図である。
【0061】
例えば、接頭辞「department」とともに、先頭文字列「1」が指定された場合、抽出部1351は、テーブル名「department」に「_」と先頭文字列「1」を接続した「department_1」に前方一致するテーブルを抽出する。
図5の例では、抽出部1351は、テーブル名が「department_11」、「department_12」等であるテーブルを抽出する。一方で、
図5の例では、抽出部1351は、テーブル名が「department_21」、「department_99」であるテーブルを抽出しない。
【0062】
計算部1352は、抽出部1351によって抽出されたテーブルを対象に、秘密計算により統計量を計算する。例えば、計算部1352は、抽出部1351によって抽出されたテーブルを対象にデータ集計(条件を満たすレコード数のカウント、特定の列の数値の加算等)を行う。また、計算部1352は、抽出されたテーブルが複数ある場合、統計量の計算を並列に実行することができる。
【0063】
図6は、実施形態に係るデータ集計の手順を説明する図である。
図6に示すように、まず、抽出部1351は、テーブルとして蓄積済みのテーブル群52から、指定された接頭辞及び先頭文字列を基に、テーブル(レコード群)の抽出、すなわちデータ集計の対象テーブルの絞り込みを行う(ステップS11)。ここでは、
図5と同様の接頭辞及び先頭文字列が指定されたものとする。
【0064】
そして、計算部1352は、絞り込まれたテーブルのそれぞれについてデータ集計を行い、並列に中間解を計算する(ステップS12)。例えば、中間解は、各テーブルのレコード数をカウントした数である。計算部1352は、中間解を合わせることで最終的な集計結果を得る。例えば、計算部1352は、各テーブルのレコード数である中間解を足し合わせることにより、総レコード数を計算する。
【0065】
列結合部1353及び行結合部1354は、2つのテーブルの列結合を行う。列結合は、SQLにおけるJOINに相当し、例えばINNNER JOIN、OUTER JOIN、CROSS JOIN等を含む。本実施形態における列結合には、行結合の手順が含まれる。行結合部1354は、当該行結合の手順を実行する。
【0066】
列結合の対象の2つのテーブルを、左テーブル及び右テーブルと呼ぶ。本実施形態では、左テーブル及び右テーブルは、分割手段により分割された状態でデータ蓄積部11に記憶されているものとする。
【0067】
図7は、実施形態に係るテーブル結合の手順を説明する図である。テーブル群52は、左テーブルを分割して得られたテーブル(レコード群)によって構成される。また、テーブル群62は、左テーブルを分割して得られたテーブル(レコード群)によって構成される。
【0068】
列結合部1353は、分割手段がテーブル51を分割して得られたテーブル群52に含まれる複数のテーブルのそれぞれと、分割手段がテーブル61(図示なし)を分割して得られたテーブル群62に含まれる複数のテーブルのそれぞれと、の列結合を秘密計算により行う(ステップS21)。
【0069】
ここで、テーブル群52に含まれるテーブルの数をm、テーブル群62に含まれるテーブルの数をnとすると(ただし、m及びnは1以上の整数)、列結合部1353は、m×n回の列結合を行う。列結合部1353は、m×n回の列結合を並列して行うことができる。
【0070】
ここで、データ処理部12の各計算装置のプロセッサは、複数のコアを持つものとする。列結合部1353は、m×n回の列結合処理を、複数のコアのそれぞれに割り当てて並列で実行させることができる。
【0071】
さらに、行結合部1354は、列結合部1353による列結合によって得られた複数のテーブルの行結合を秘密計算により行う(ステップS22)。
【0072】
例えば、列結合部1353による列結合によって、m×n個のテーブルを含むテーブル群63が得られたものとする。行結合部1354は、テーブル群63から選択した2つのテーブルの組み合わせに対して行結合を行うことにより、テーブル群64を得る。さらに、行結合部1354は、得られたテーブル群に対して再帰的に行結合を行うことで、テーブル群64、テーブル群65を得ることができる。最終的に、行結合部1354は、テーブル群63に含まれていた全てのテーブルと行結合したテーブル66を得る。
【0073】
出力制御部1355は、テーブル66を端末装置40に出力する。また、出力制御部1355は、テーブル66に対してソート及び重複削除といった操作を行った上で、テーブル66を出力してもよい。また、出力制御部1355は、テーブル66を用いてさらに統計的な分析を行った結果を出力してもよい。
【0074】
図8は、実施形態に係るデータ集計の処理の流れを示すフローチャートである。なお、テーブルは、
図3等に示すように、レコード群に分割され、各レコード群にテーブル名が付与された状態で、データ蓄積部11に秘密分散により記憶されているものとする。
【0075】
まず、分析装置13は、接頭辞及び先頭文字列の指定を受け付ける(ステップS101)。次に、分析装置13は、分割済みの複数のテーブルを、接頭辞及び文字列を基に絞り込む(ステップS102)。例えば、分析装置13は、「接頭辞+「_」+先頭文字列」にテーブル名が前方一致するテーブルを抽出することで、テーブルの絞り込みを行う。
【0076】
続いて、分析装置13は、絞り込まれたテーブルを対象に並列にデータ集計を実行する(ステップS103)。そして、分析装置13は、集計結果を出力する(ステップS104)。
【0077】
図9は、実施形態に係るテーブル結合の処理の流れを示すフローチャートである。左テーブルと右テーブルは、
図8の場合と同様に、レコード群に分割され、各レコード群にテーブル名が付与された状態で、データ蓄積部11に秘密分散により記憶されているものとする。
【0078】
まず、分析装置13は、接頭辞及び先頭文字列の指定を受け付ける(ステップS201)。分析装置13は、左テーブルと右テーブルのそれぞれについて、接頭辞及び先頭文字列の指定を受け付ける。
【0079】
次に、分析装置13は、分割済みの複数の左テーブル及び分割済みの複数の右テーブルを、接頭辞及び文字列を基に絞り込む(ステップS202)。例えば、分析装置13は、「接頭辞+「_」+先頭文字列」にテーブル名が前方一致するテーブルを抽出することで、テーブルの絞り込みを行う。
【0080】
続いて、分析装置13は、絞り込まれた複数の左テーブルのそれぞれと絞り込まれた複数の右テーブルのそれぞれとを列結合する(ステップS203)。
【0081】
ここで、分析装置13は、ステップS203の列結合で得られた複数のテーブルを、2つずつ行結合する(ステップS204)。そして、行結合によって得られたテーブルが1つでない場合(ステップS205、No)、ステップS204に戻り、ステップS204の行結合で得られた複数のテーブルを、2つずつ行結合する。
【0082】
分析装置13は、ステップS204の行結合とステップS205の判定を繰り返し行い、行結合によって得られたテーブルが1つになった場合(ステップS205、Yes)、ステップS206に進み、最終的に得られたテーブルを出力する(ステップS206)。
【0083】
[実施形態の効果]
これまで説明してきたように、分析装置13は、抽出部1351を有する。抽出部1351は、テーブルに含まれる複数のレコードを、テーブルの列の値を基に分割した複数のレコード群の中から、条件を満たすレコード群を秘密計算により抽出する。
【0084】
また、計算部1352は、抽出部1351によって抽出されたテーブルを対象に、秘密計算により統計量を計算する。
【0085】
これにより、分析装置13は、データ集計等を行う際に、分割元のテーブルの全データをメモリ上に展開することなく、絞り込み(抽出)済みのデータのみをメモリ上に展開すればよい。その結果、秘密計算によるテーブル形式のデータの分析に要するリソース(メモリ使用量及び処理時間)が低減する。
【0086】
列結合部1353は、第1のテーブルを分割して得られた第1の複数のレコード群のそれぞれと、第2のテーブルを分割して得られた第2の複数のレコード群のそれぞれと、の列結合を秘密計算により行う。行結合部1354は、列結合部1353による列結合によって得られた複数のレコード群の行結合を秘密計算により行う。
【0087】
図11を用いて説明した通り、従来の秘密計算によるテーブルの結合においては、結合対象のテーブルが拡張されるため、メモリの使用量が増大する。一方で、第1の実施形態では、結合対象のテーブルが拡張されることなく秘密計算による結合が行われるため、メモリの使用量が低減する。
【0088】
また、複数の列結合処理及び行結合処理を並列で行うことにより、処理時間が短縮される。
【0089】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU(Central Processing Unit)及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。なお、プログラムは、CPUだけでなく、GPU等の他のプロセッサによって実行されてもよい。
【0090】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0091】
[プログラム]
一実施形態として、分析装置13は、パッケージソフトウェアやオンラインソフトウェアとして上記の分析処理を実行する分析プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の分析プログラムを情報処理装置に実行させることにより、情報処理装置を分析装置13として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0092】
また、分析装置13は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の分析処理に関するサービスを提供する分析サーバ装置として実装することもできる。例えば、分析サーバ装置は、結合対象の2つのテーブルを入力とし、結合したテーブルを出力とする分析サービスを提供するサーバ装置として実装される。
【0093】
図10は、分析プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0094】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0095】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、分析装置13の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、分析装置13における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0096】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0097】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0098】
1 分析システム
10 秘密計算システム
11 データ蓄積部
12 データ処理部
13 分析装置
131 通信部
132 入力部
133 出力部
134 記憶部
135 制御部
1351 抽出部
1352 計算部
1353 列結合部
1354 行結合部
1355 出力制御部