(57)【要約】【課題】データベースのｋ−匿名化処理を高速化する。【解決手段】ｋ−匿名データベース制御サーバは、元データファイルを入力し、ｋ−匿名データファイルを出力するｋ−匿名データベース制御サーバであって、他の項目と組み合わせることにより個人を特定できる項目を曖昧化した準識別子の組合せ及びこの組合せの各々を識別するための匿名IDを格納する準識別子マスタファイル、及び、元データファイルのデータの各々に関して、準識別子マスタファイルを参照して、準識別子に対応する項目の内容を準識別子に置換し、置換した準識別子の組合せを識別する匿名IDを新匿名IDとして設定したデータを格納した中間データファイルを生成し、中間データファイルのデータの各々に関して、新匿名IDを参照して、ｋ−匿名性を確保できないデータを中間データファイルから削除したｋ−匿名データファイルを生成するｋ−匿名データファイル生成部を有する。【選択図】図１
2014164477.tif 000002
【特許請求の範囲】
【請求項１】
元データファイルを入力し、ｋ−匿名データファイルを出力するｋ−匿名データベース制御サーバであって、
他の項目と組み合わせることにより個人を特定できる項目を曖昧化した準識別子の組合せ及び前記組合せの各々を識別するための匿名ＩＤを格納する準識別子マスタファイル、及び、
前記元データファイルの第１のデータの各々に関して、前記準識別子マスタファイルを参照して前記第１のデータの各々の前記項目の内容を前記準識別子に置換し、置換した前記準識別子の組合せを識別する前記匿名ＩＤを新匿名ＩＤとして設定した第２のデータを格納した中間データファイルを生成し、前記中間データファイルの前記第２のデータの各々に関して、前記新匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成するｋ−匿名データファイル生成部を有することを特徴とするｋ−匿名データベース制御サーバ。
【請求項２】
前記元データファイルの更新に応答して、前記中間データファイルの前記第２のデータの各々に関して、前記新匿名ＩＤを旧匿名ＩＤとして設定し、前記元データファイルの更新された前記第１のデータに関して、前記準識別子マスタファイルを参照して、更新された前記第１のデータの更新内容に応じて、更新された前記第１のデータの前記項目の内容を前記準識別子に置換し、置換した前記準識別子の組合せを識別する前記匿名ＩＤを前記新匿名ＩＤとして設定して更新された前記第２のデータを前記中間データファイルに格納し、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記新匿名ＩＤ及び前記旧匿名ＩＤの少なくとも一方を参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成するｋ−匿名データファイル更新部をさらに有することを特徴とする請求項１記載のｋ−匿名データベース制御サーバ。
【請求項３】
前記ｋ−匿名データファイル更新部は、更新された前記第１のデータの更新内容が前記元データファイルへの新たな前記第１のデータの追加であるとき、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記新匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項２記載のｋ−匿名データベース制御サーバ。
【請求項４】
前記ｋ−匿名データファイル更新部は、更新された前記第１のデータの更新内容が前記元データファイルからの前記第１のデータの削除であるとき、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記旧匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項２記載のｋ−匿名データベース制御サーバ。
【請求項５】
前記ｋ−匿名データファイル更新部は、更新された前記第１のデータの更新内容が前記元データファイルからの前記第１のデータの変更であるとき、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記新匿名ＩＤ及び前記旧匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項２記載のｋ−匿名データベース制御サーバ。
【請求項６】
ｋ−匿名性を確保できない前記第２のデータは、前記中間データファイルの前記第２のデータの各々に関して、更新した前記第２のデータの前記新匿名ＩＤ及び/又は前記旧匿名ＩＤと等しい前記新匿名ＩＤの前記第２のデータの数が、予め定めた値であるｋ未満の前記第２のデータであることを特徴とする請求項２〜５のいずれか１項に記載のｋ−匿名データベース制御サーバ。
【請求項７】
ｋ−匿名性を確保できない前記第２のデータは、互いに等しい前記新匿名ＩＤが設定された前記第２のデータの数が、予め設定された値であるｋ未満の前記第２のデータであることを特徴とする請求項１記載のｋ−匿名データベース制御サーバ。
【請求項８】
元データファイルを入力し、ｋ−匿名データファイルを出力するｋ−匿名データベース制御サーバの制御方法であって、前記ｋ−匿名データベース制御サーバは、
他の項目と組み合わせることにより個人を特定できる項目を曖昧化した準識別子の組合せ及び前記組合せの各々を識別するための匿名ＩＤを格納する準識別子マスタファイルを有し、
前記元データファイルの第１のデータの各々に関して、前記準識別子マスタファイルを参照して前記第１のデータの各々の前記項目の内容を前記準識別子に置換し、置換した前記準識別子の組合せを識別する前記匿名ＩＤを新匿名ＩＤとして設定した第２のデータを格納した中間データファイルを生成し、前記中間データファイルの前記第２のデータの各々に関して、前記新匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とするｋ−匿名データベース制御方法。
【請求項９】
前記ｋ−匿名データベース制御サーバは、前記元データファイルの更新に応答して、前記中間データファイルの前記第２のデータの各々に関して、前記新匿名ＩＤを旧匿名ＩＤとして設定し、前記元データファイルの更新された前記第１のデータに関して、前記準識別子マスタファイルを参照して、更新された前記第１のデータの更新内容に応じて、更新された前記第１のデータの前記項目の内容を前記準識別子に置換し、置換した前記準識別子の組合せを識別する前記匿名ＩＤを前記新匿名ＩＤとして設定して更新された前記第２のデータを前記中間データファイルに格納し、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記新匿名ＩＤ及び前記旧匿名ＩＤの少なくとも一方を参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項８記載のｋ−匿名データベース制御方法。
【請求項１０】
前記ｋ−匿名データベース制御サーバは、更新された前記第１のデータの更新内容が前記元データファイルへの新たな前記第１のデータの追加であるとき、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記新匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項９記載のｋ−匿名データベース制御方法。
【請求項１１】
前記ｋ−匿名データベース制御サーバは、更新された前記第１のデータの更新内容が前記元データファイルからの前記第１のデータの削除であるとき、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記旧匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項９記載のｋ−匿名データベース制御方法。
【請求項１２】
前記ｋ−匿名データベース制御サーバは、更新された前記第１のデータの更新内容が前記元データファイルからの前記第１のデータの変更であるとき、前記中間データファイルの前記第２のデータの各々に関して、更新された前記第２のデータの前記新匿名ＩＤ及び前記旧匿名ＩＤを参照して、ｋ−匿名性を確保できない前記第２のデータを前記中間データファイルから削除した前記ｋ−匿名データファイルを生成することを特徴とする請求項９記載のｋ−匿名データベース制御方法。
【請求項１３】
ｋ−匿名性を確保できない前記第２のデータは、前記中間データファイルの前記第２のデータの各々に関して、更新した前記第２のデータの前記新匿名ＩＤ及び/又は前記旧匿名ＩＤと等しい前記新匿名ＩＤの前記第２のデータの数が、予め定めた値であるｋ未満の前記第２のデータであることを特徴とする請求項９〜１２のいずれか１項に記載のｋ−匿名データベース制御方法。
【請求項１４】
ｋ−匿名性を確保できない前記第２のデータは、互いに等しい前記新匿名ＩＤが設定された前記第２のデータの数が、予め設定された値であるｋ未満の前記第２のデータであることを特徴とする請求項８記載のｋ−匿名データベース制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース制御装置及び制御方法に関し、特にｋ−匿名データベース制御装置及び制御方法に関する。
【背景技術】
【０００２】
個人を対象としたサービス業を主とする事業者が、個人情報を含む情報を取得し、取得した情報の共有化や二次利用などは、個人情報保護に反する場合がある。そこで、非特許文献１に記載されるように、個人情報を含む情報の取り扱いが個人情報保護に反しない方法が提案されている。
【０００３】
特に、個人情報保護の指標の一つとしてｋ−匿名性が提案されている（非特許文献１）。個人情報を統合化したデータから特定できる、同じ属性を持つ個人が少なくともｋ人であるというものである。この指標を満足するデータベースをｋ−匿名データベースと呼ぶ。個人情報は、氏名などのように個人を特定できる項目である識別子、年齢や住所などように他の項目と組み合わせることにより個人を特定できる項目である準識別子、および個人を特定できるとは考えられない項目に分けられる。ｋ−匿名データベースでは、識別子を含まず（識別子の切り落とし）、準識別子はあいまい化される。他の準識別子と組み合わせても、同じ属性の個人がｋ人以上いるように、準識別子があいまい化される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】情報大航海ロジェクト「パーソナル情報保護・解析基盤」http://www.meti.go.jp/policy/it_policy/daikoukai/igvp/cp2_jp/common/024/010/post−61.html  （2013.2.5）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般にデータベースは、個人情報を１レコードのデータとして格納している場合、人数の増減に対してはレコードの追加・削除、個人情報の変更に対してはレコードを変更内容によって更新すればよい。
【０００６】
しかしながら、ｋ−匿名データベースでは、ｋ−匿名化していない元のデータベースのデータ（レコード）の追加・削除、および更新に加えて、ｋ−匿名化のために識別子の切り落としや準識別子のあいまい化が必要となる。特に、ｋ−匿名性を保証するための準識別子のあいまい化は、追加、削除、および更新するレコードを含むｋ−匿名データベース全体のデータに係る処理が必要になるので、データの追加・削除、または更新された元のデータベースからｋ−匿名データベースを、新たにバッチ処理により構築することが、一般的である。
【０００７】
そこで、特に元のデータベースのデータ数（レコード数）が膨大な場合、更にデータ（レコード）の追加・削除、および更新の頻度が高い場合に、ｋ−匿名化処理の高速化が求められる。ｋ−匿名化処理の高速化のためには、高速に更新を実行するために予め備えることと、更新処理そのものの高速化の少なくとも一方が必要である。
【課題を解決するための手段】
【０００８】
開示するｋ−匿名データベース制御サーバは、元データファイルを入力し、ｋ−匿名データファイルを出力するｋ−匿名データベース制御サーバであって、他の項目と組み合わせることにより個人を特定できる項目を曖昧化した準識別子の組合せ及びこの組合せの各々を識別するための匿名IDを格納する準識別子マスタファイルを有する。元データファイルのデータの各々に関して、準識別子マスタファイルを参照して、準識別子に対応する項目の内容を準識別子に置換し、置換した準識別子の組合せを識別する匿名IDを新匿名IDとして設定したデータを格納した中間データファイルを生成し、中間データファイルのデータの各々に関して、新匿名IDを参照して、ｋ−匿名性を確保できないデータを中間データファイルから削除したｋ−匿名データファイルを生成するｋ−匿名データファイル生成部を有する。
【０００９】
ｋ−匿名データベース制御サーバの他の態様は、元データファイルの更新に応答して、中間データファイルのデータの各々に関して、新匿名IDを旧匿名IDとして設定し、元データファイルの更新されたデータに関して、準識別子マスタファイルを参照して、更新されたデータの更新内容に応じて、更新されたデータの準識別子に対応する項目の内容を準識別子に置換し、置換した準識別子の組合せを識別する匿名IDを新匿名IDとして設定して更新されたデータを中間データファイルに格納し、中間データファイルのデータの各々に関して、更新されたデータの新匿名ID及び旧匿名IDの少なくとも一方を参照して、ｋ−匿名性を確保できないデータを中間データファイルから削除したｋ−匿名データファイルを生成する。
【発明の効果】
【００１０】
本発明によれば、高速に更新を実行するために予め備えることとして、高速にｋ−匿名化処理するための中間データファイルを設けることができる。他にデータベースのデータの更新に伴うｋ−匿名化処理が高速化できる。
【図面の簡単な説明】
【００１１】
【図１】ｋ−匿名データベースシステムの構成例である。
【図２】識別子マスタファイルの例である。
【図３】準識別子マスタファイルの例である。
【図４】生成部の処理フローチャートである。
【図５】生成部の処理を説明するための元データファイルの例である。
【図６】生成部の処理を説明するための中間データファイルの例である。
【図７】生成部の処理を説明するためのｋ−匿名データファイルの例である。
【図８】更新部の処理フローチャートである。
【図９】追加処理のフローチャートである。
【図１０】追加処理を説明するための元データファイルの例である。
【図１１】追加処理を説明するための中間データファイルの例である。
【図１２】追加処理を説明するためのｋ−匿名データファイルの例である。
【図１３】削除処理のフローチャートである。
【図１４】削除処理を説明するための元データファイルの例である。
【図１５】削除処理を説明するための中間データファイルの例である。
【図１６】削除処理を説明するためのｋ−匿名データファイルの例である。
【図１７】変更処理のフローチャートである。
【図１８】変更処理を説明するための元データファイルの例である。
【図１９】変更処理を説明するための中間データファイルの例である。
【図２０】変更処理を説明するためのｋ−匿名データファイルの例である。
【発明を実施するための形態】
【００１２】
図１に、ｋ−匿名データベースシステムの構成例を示す。ｋ−匿名データベースシステムにおけるｋ−匿名データベース制御サーバ（以下、制御サーバ）10は、ｋ−匿名データベースの元にするデータベースである元データファイル40を入力し、ｋ−匿名データベースとしてのｋ−匿名データファイル70を出力する。元データファイル40は、個人情報を含むデータベースを有する元データファイル提供サーバ11から制御サーバ10に提供される。制御サーバ10が出力するｋ−匿名データファイル70は、ｋ−匿名データベースとしてｋ−匿名データベースサービスサーバ12によってユーザに公開される。制御サーバ10は、中間データファイル50をもつ。
【００１３】
元データファイル40、中間データファイル50及びｋ−匿名データファイル70はディスク装置などの記憶装置に格納される。これらのファイルは、データ保護（個人情報保護）の観点から、物理的にまたは論理的に互いに異なる記憶装置に格納されることが望ましい。
【００１４】
制御サーバ10は、ｋ−匿名データファイル生成部（以下、生成部）100及びｋ−匿名データファイル更新部（以下、更新部）200の処理を実行するＣＰＵ20、並びに識別子マスタファイル31、準識別子マスタファイル32、更新日時33及びワーキング領域34を有するメモリ30を含んでいる。ワーキング領域34は、後述するように、生成部100及び更新部200が、ＷＫＡ、ＷＫＢ，ＷＫＣに分けて作業領域として用いる。
【００１５】
ｋ−匿名データベースのｋの値は、同じ属性を持つ個人が少なくともｋ人であるという意味であるので、ｋ−匿名データベースサービスサーバ12のユーザによるデータの使い勝手の観点からは小さな値が望まれるが、ｋ−匿名データベースから個人情報を特定し難くする観点からは大きな値が望まれる。ここでは、説明を簡単にするために、ｋの値を2とする。後述する識別子、準識別子およびｋの値の決定は、元データファイル40に対応してｋ−匿名データファイル70を生成するための、個人情報保護を考慮した考え方に依存するものであり、ここでは言及しない。
【００１６】
図２に、識別子マスタファイル31の例を示す。識別子マスタファイル31は、氏名などのように個人を特定できる項目である識別子を格納し、ここでは、後述する元データファイル40のデータ（データレコード）を特定する項目である元IDと元データファイル40の項目として含まれる名前を格納している。識別子マスタファイル31は、前述の個人情報保護の考え方に基づいて予め作られる。
【００１７】
図３に、準識別子マスタファイル32の例を示す。準識別子マスタファイル32は、年齢や住所などように他の項目と組み合わせることにより個人を特定できる項目を曖昧化した準識別子の組合せを格納する。ここでは、後述する元データファイル40の項目である年齢を曖昧化した年代34および住所を曖昧化した地域35の組合せの一つ一つに、匿名ID36と呼ぶIDを格納している。すなわち、匿名IDは、他の項目と組み合わせることにより個人を特定できる項目を曖昧化した準識別子の組合せの各々を識別する識別子である。図３に示す例では、25〜29歳の年代34の、地域35としてＰ市Ｓ町に住む個人を表す匿名ID36が「5」である。
【００１８】
図３は、２項目の準識別子の組合せを示す２次元テーブルで表しているが、準識別子の項目数に応じて、準識別子マスタファイル32の構成として望ましい形式が選択される。準識別子マスタファイル32は、前述の個人情報保護の考え方に基づいて予め作られる。
【００１９】
準識別子の曖昧化について簡単に説明する。たとえば、他の項目と組み合わせることにより個人を特定できる、年齢を年代34とすることにより、一般に年代34には多くの個人が含まれるので、個人を特定し難くなる。同様に、町名や番地を含む住所を、番地を削除した町名を地域35とすることにより、地域35には多くの個人の住所が含まれるので、個人を特定し難くなる。これが、準識別子の曖昧化の例である。
【００２０】
準識別子マスタファイル32は、他の観点に立つと、元データファイル40の各データを準識別子の組合せによって分類したカテゴリーの一覧表である。したがって、準識別子マスタファイル32の匿名ID36は、各カテゴリーに付した識別子（記号、番号など）である。ここでは、ｋ匿名性に関する識別子との混同を避けるために匿名IDと呼ぶ。
【００２１】
図４に、生成部100の処理フローチャートを示す。生成部100の処理は、元データファイル40からｋ−匿名データファイル70を生成する処理である。生成部100の処理の説明のために、図５に示す元データファイル40、図６に示す中間データファイル50及び図７に示すｋ−匿名データファイル70の例を用いる。
【００２２】
図５に示す元データファイル40は、データの項目として元ID41、名前42、年齢43、住所44、支払方法45および金額46を含み、元ID41が「1」〜「10」のデータが格納されている。図６に示す中間データファイル50は、識別子51、準識別子54、その他57、及び管理ID60を格納する。識別子51には、元ID52、名前53がある。準識別子54には、年代55、地域56がある。その他57には、支払方法58、金額59がある。管理ID60には、旧匿名ID61、新匿名ID62および公開フラグ63がある。
【００２３】
生成部100は、たとえば、元データファイル提供サーバ11から元データファイル40を提供する旨のメッセージを受けた制御サーバ10によって起動される。生成部100の実行開始は、他の方法として、制御サーバ10による元データファイル40へのアクセス可能の検知に基づいても良く、多様である。
【００２４】
生成部100は、元データファイル40から中間データファイル50を生成する（ステップ101）。元データファイル40の各データに関して、中間データファイル50の（1）識別子51、（2）準識別子54、および（3）その他を生成する。（1）〜（3）の生成を個別に説明する。
【００２５】
（1）識別子マスタファイル31を参照して、識別子である、元データファイル40の元ID41および名前42を、中間データファイル50の識別子51の元ID52および名前53として格納する。これらの識別子の複写は説明を分かりやすくするためである。後述するように、中間データファイル50からｋ−匿名データファイル70を生成する段階で、これらの識別子を削除するので、これらの識別子を複写する必要が無い。各データを識別するために、以下の説明では元ID41や元ID52を用いるが、識別子を複写しない場合は、これらに代えて、ファイルのレコード番号などのデータを特定できる情報を用いればよい。
【００２６】
（2）準識別子マスタファイル32を参照して、元データファイル40の年齢43および住所44を、中間データファイル50の準識別子54の年代55および地域56として格納する。たとえば、元ID41が「1」、名前42が「ＡＡ」の、年齢43の「33歳」、住所44の「Ｐ市Ｓ町1−2−3」は、準識別子マスタファイル32では、各々年代34として「40−44」、地域35として「Ｐ市Ｓ町」であるので、それぞれを準識別子54の年代55および地域56に置換して、中間データファイル50に格納する。
【００２７】
（3）元データファイル40の、識別子および準識別子以外の支払方法45および金額46を、中間データファイル50のその他57の支払方法58および金額59に格納する。元データファイル40の各項目の、識別子マスタファイル31及び準識別子マスタファイル32に定義されていない項目を中間データファイル50のその他57の項目とする。したがって、元データファイル40の各項目は、識別子および準識別子のいずれかに分けられ、その他57に対応する項目が無い場合もある。この場合は（3）の処理は実行されない。
【００２８】
生成部100は、準識別子マスタファイル32を参照して、中間データファイル50の各データの準識別子54と対応する匿名ID36を、そのデータの管理ID60の新匿名ID62として格納する（ステップ102）。たとえば、中間データファイル50の元ID52が「1」のデータの準識別子54は、年代55が「30−34」であり、地域56が「Ｐ市Ｓ町」であるので、準識別子マスタファイル32を参照すると、匿名ID36として「7」が得られるので、この「7」を元ID52が「1」のデータの新匿名ID62として格納する。旧匿名ID61には何も格納せずに、ブランク又はＮＵＬＬとする。
【００２９】
生成部100は、中間データファイル50の各データの公開フラグ63に0を格納する(ステップ103)。公開フラグ63は、対応するデータのｋ−匿名データとしての、公開可（フラグ＝1）又は公開不可（非公開：フラグ＝0）を示す。公開可は、ｋ−匿名性が確保されているとして公開可能なデータを示す。逆に、非公開は、ｋ−匿名性が確保されていないので、公開不可能なデータを示す。
【００３０】
生成部100は、匿名IDの初期値を作業領域ＷＫＡに設定する(ステップ104)。匿名IDの初期値とは、準識別子マスタファイル32の匿名ID36の最小値又は最大値である。ここでは、最小値として説明する。作業領域ＷＫＡは、準識別子マスタファイル32に定義されているすべての匿名ID36に関してステップ105〜ステップ110を実行するためのインデックスである。
【００３１】
生成部100は、作業領域ＷＫＢおよびＷＫＣをクリアする(ステップ105)。ＷＫＣは、カウンタとして用いる。
【００３２】
生成部100は、中間データファイル50の各データに関して、ＷＫＡの匿名IDに等しい新匿名ID62のデータの元ID52をＷＫＢに格納し、ＷＫＣの内容に1を加算する（ステップ106）。中間データファイル50の各データ（図６の場合、10人分のデータ）に関して、本ステップを終了すると、ＷＫＣの値（カウンタ値）に相当する数の元ID52がＷＫＢに格納されている。
【００３３】
生成部100は、ＷＫＣの値（カウンタ値）がｋ以上であるかを判定し（ステップ107）、ｋ以上である場合は、同じ新匿名ID62のデータがｋ以上であり、ｋ‐匿名性を確保できることを意味するので、ＷＫＢに格納しているデータの元ID52に対応する公開フラグ63に１（公開）を格納する（ステップ108）。ステップ107の判定でｋ未満の場合は、ｋ‐匿名性を確保できないことを意味するので、ステップ108をスキップし（公開フラグ63は0）、ステップ109に移る。
【００３４】
生成部100は、ＷＫＡの匿名IDの値を更新する（ステップ109）。ステップ104で最小値を格納したので、1を加算する。
【００３５】
生成部100は、ＷＫＡに格納されている匿名IDの値が、準識別子マスタファイル32の匿名ID36の最大値を超えているかにより終了を判定し（ステップ110）、超えていなければ、ステップ105に戻り、ステップ105〜ステップ110のループ処理を繰り返す。
【００３６】
ステップ105〜ステップ110のループ処理を繰り返し、中間データファイル50の各データに関してｋ‐匿名性を確保できるならば、換言すると同じ新匿名ID62のデータの数がｋ以上であるならば、それらに対応する公開フラグを1とするので、ｋ−匿名データベースのデータとして公開する。
【００３７】
生成部100は、現在時刻を更新日時33に格納する（ステップ111）。ここでは、ｋ−匿名データファイル70を生成した時刻として更新日時33を格納するが、更新日時33を、元データファイル40を参照した時刻とする場合は、ステップ101の前に実行すればよい。
【００３８】
生成部100は、中間データファイル50から非公開のデータ（図６の公開フラグが0のデータ）並びに識別子51及び管理ID60（図６の識別子51及び管理ID60の各列）を削除した、ｋ−匿名データファイル70を生成する（ステップ112）。図７に示すｋ−匿名データファイル70を、図６に示す中間データファイル50と比較すると、公開フラグが0であるデータ（元ID52が5、6のデータ）の行と、識別子51及び管理ID60の各列が削除されている。前述のように、中間データファイル50に識別子51を格納しない場合は、識別子51の削除は不要である。
【００３９】
生成部100は、ｋ−匿名データベースサービスサーバ12にｋ−匿名データファイル70へのアクセスを許可する（ステップ113）。アクセスされた許可されたｋ−匿名データファイル70は、ｋ−匿名データベースサービスサーバ12によって、ｋ−匿名データベースとしてユーザにサービスされる。
【００４０】
以上のように生成部100は、元データファイル40のデータの各々に関して、準識別子マスタファイル32を参照してデータの各々の準識別子に対応する項目の内容を準識別子54に置換し、置換した準識別子54の組合せを識別する匿名ID36を新匿名ID62として設定したデータを格納した中間データファイル50を生成し、中間データファイル50のデータの各々に関して、新匿名ID62を参照して、ｋ−匿名性を確保できないデータを中間データファイル50から削除したｋ−匿名データファイル70を生成する。
【００４１】
以上説明した生成部100の処理により、次に説明する更新部200の処理を高速に実行するために予め備えることとして、中間データファイルを設けることができる。
【００４２】
図８に、更新部200の処理フローチャートを示す。更新部200の処理は、元データファイル40に含まれる更新データをｋ−匿名データファイル70に反映する処理である。元データファイル40に含まれるデータの更新は、新たなデータの追加、格納されているデータの削除、及び格納されているデータの変更である。
【００４３】
更新部200は、生成部100と同様に、たとえば、元データファイル提供サーバ11から更新したデータを特定する情報（たとえば、元ID）を含んだ、元データファイル40を更新した旨のメッセージを受けた制御サーバ10によって起動される。更新部200の実行開始は、他の方法として、制御サーバ10が元データファイルの更新ログをモニターし、元データファイル40の更新の検知に基づいても良く、多様である。以下、更新部200の処理を、生成部100と異なる処理を中心として説明する。
【００４４】
更新部200は、中間データファイル50の各データの新匿名ID62を旧匿名ID61に複写する（ステップ201）。
【００４５】
更新部200は、元データファイル40のデータの更新は、追加、削除、及び変更のいずれであるかを判定する（ステップ202）。追加、削除、及び変更のいずれかの更新を示す情報及び更新されたデータを示す情報（たとえば、元ID41）は、前述のように、元データファイル提供サーバ11からの更新した旨のメッセージに含まれていてもよいし、元データファイル40のデータの更新に伴うログ情報を更新部200が参照して、取得できるようにしても良い。
【００４６】
更新部200は、追加、削除、及び変更のいずれかに応じて、更新されたデータを示す情報（たとえば、元ID41）を、たとえば引数として、追加処理（ステップ300）、削除処理（ステップ400）、及び変更処理（ステップ500）のいずれかを実行する。追加処理、削除処理、及び変更処理については後述する。
【００４７】
更新部200は、ｋ−匿名データベースサービスサーバ12によって、ユーザにサービスされているｋ−匿名データファイル70へのｋ−匿名データベースサービスサーバ12からのアクセスを禁止する（ステップ203）。アクセスの禁止は、更新部200とｋ−匿名データベースサービスサーバ12からのアクセスの競合を避けるためである。
【００４８】
更新部200は、現在時刻を更新日時33に格納し（ステップ204）、中間データファイル50から非公開のデータ（行）並びに識別子51及び管理ID60（列）を削除した、ｋ−匿名データファイル70を生成し（ステップ205）、ｋ−匿名データベースサービスサーバ12にｋ−匿名データファイル70へのアクセスを許可する（ステップ206）。ステップ204〜206は、生成部100のステップ111〜113と同様であり、更新日時33の意味も同様である。
【００４９】
更新部200の処理を、元データファイル40に更新データは一つであることを前提に説明した。元データファイル40に同時に複数の更新データがある場合は、図８の更新部200の処理を更新データの数に応じて繰り返せばよい。
【００５０】
図９に、追加処理（ステップ300）のフローチャートを示す。追加処理は、元データファイル40への追加データに応じて、ｋ−匿名データファイル70を更新する処理である。追加処理の説明のために、図１０に示す元データファイル40、図１１に示す中間データファイル50及び図１２に示すｋ−匿名データファイル70の例を用いる。図１０に示す元データファイル40には、図５に示す元データファイル40に元ID41が「11」のデータが追加されている。
【００５１】
追加処理は、図１０に示す元データファイル40への追加データ（元ID41が「11」のデータ）を中間データファイル50に追加する（ステップ301）。ステップ301は、生成部100のステップ101と同様であるが、対象とするデータが追加データである。
【００５２】
追加処理は、準識別子マスタファイル32を参照して、中間データファイル50の追加データ（元ID52が「11」のデータ）の準識別子54と対応する匿名ID36である「8」を、追加データの新匿名ID62として格納し（ステップ302）、中間データファイル50の追加データの公開フラグ63に0を格納する(ステップ303)。ステップ302およびステップ303の処理は、生成部100のステップ102及びステップ103と同様であるが、生成部100が中間データファイル50の各データを対象としているのに対して、追加処理は追加データを対象としている。
【００５３】
追加処理は、追加データの新匿名ID62「8」をＷＫＡに設定し、ＷＫＢおよびＷＫＣをクリアする(ステップ304)。ＷＫＡは、後述から明らかになるように更新する必要が無いので、追加データの新匿名ID62「8」をＷＫＡに代えて用いてもよい。すなわち、ＷＫＡを使用しなくてもよい。
【００５４】
追加処理は、中間データファイル50の各データに関して、ＷＫＡの新匿名ID「8」に等しい新匿名ID62のデータの元ID52をＷＫＢに格納し、ＷＫＣの内容に1を加算する（ステップ305）。図１１の中間データファイル50についてこのステップを終えると、ＷＫＢには、元ID52の値として「5」と「11」が格納され、ＷＫＣにはカウント値として「2」が格納されている。
【００５５】
追加処理は、ＷＫＣの値（カウンタ値）がｋ以上であるかを判定し（ステップ306）、ｋ以上である場合は、新匿名ID62「8」のデータがｋ以上であり、ｋ‐匿名性を確保できることを意味するので、ＷＫＢに格納しているデータの元ID52に対応する公開フラグ63に１を格納する（ステップ307）。ｋ＝2としているので、元ID52が「5」と「11」の公開フラグ63に１を格納する（図１１では、0→1と表記）。
【００５６】
追加処理は、ステップ306でＷＫＣの値（カウンタ値）がｋ以上でない場合を含めて処理を終了し、図８のステップ203に戻る。
【００５７】
図８のステップ203以降の処理を実行すると、図１２に示すｋ−匿名データファイル70が生成され、ｋ−匿名データベースサービスサーバ12によって、ユーザに提供される。図１１に示す中間データファイル50からの、図１２に示すｋ−匿名データファイル70の生成は、前述のステップ205と同様の処理によるものである。
【００５８】
以上の例は、追加データによりｋ−匿名データファイル70が更新されているが、追加データが中間データファイル50へ追加されるが、追加データの新匿名IDに等しい新匿名IDの他のデータが存在しない場合などは、追加データが非公開になるので、ｋ−匿名データファイル70は実質的に更新されない。
【００５９】
以上の説明から明らかなように、追加処理は追加データを対象とした処理であり、言い換えると追加データの新匿名ID62を対象とした処理であるので、生成部100のＷＫＡに格納した匿名IDを更新に伴うステップ105〜ステップ110のループ処理を実行しなくて良い。たとえば、新匿名ID62の数がたとえば１０であるならば、生成部100は１０回ループする必要があるが、追加処理では１回の処理でよい。すなわち、新匿名ID62の数が多ければ多いほど、中間データファイル50を用いた追加処理は、中間データファイル50を用いずに常に新規にｋ−匿名データファイル70を生成する場合に比べて、高速処理（処理時間が短い）が実現できる。
【００６０】
図１３に、削除処理（ステップ400）のフローチャートを示す。削除処理は、元データファイル40の削除データに応じて、ｋ−匿名データファイル70を更新する処理である。削除処理の説明のために、図１４に示す元データファイル40、図１５に示す中間データファイル50及び図１６に示すｋ−匿名データファイル70の例を用いる。図１４に示す元データファイル40は、図６に示す元データファイル40から元ID41が「3」のデータが削除されている。図１４では、削除データを明示するために、元ID41が「3」の行を残してあるが、図８の更新処理200から削除処理（ステップ400）が呼び出される場合、引数などとして元ID41が「3」が引き継がれるので、元ID41が「3」の行は削除されていても良い。
【００６１】
削除処理は、削除データの旧匿名ID61「4」をＷＫＡに設定し、ＷＫＢおよびＷＫＣをクリアする(ステップ401)。更新部200のステップ201で、新匿名ID62が旧匿名ID61に複写されているので、削除データの旧匿名ID61「4」は、図６の中間データファイル50に示すように、削除データの削除前の新匿名ID「4」である。
【００６２】
削除処理は、図１４に示す元データファイル40から削除されたデータ（元ID41が「3」のデータ）を中間データファイル50から削除する（ステップ402）。図１５の中間データファイル50では、分りやすくするために、元ID52と旧匿名ID61を残し、他の項目を削除して表記してある。
【００６３】
削除処理は、中間データファイル50の各データに関して、ＷＫＡの旧匿名ID「4」に等しい新匿名ID62のデータの元ID52をＷＫＢに格納し、ＷＫＣの内容に1を加算する（ステップ403）。図１５の中間データファイル50についてこのステップを終えると、ＷＫＢには、元ID52が「8」が格納され、ＷＫＣにはカウント値として「1」が格納されている。
【００６４】
削除処理は、ＷＫＣの値（カウンタ値）がｋ以上であるかを判定し（ステップ404）、ｋ以上でない場合は、新匿名ID62が「4」のデータがｋ未満であり、ｋ‐匿名性を確保できないことを意味するので、ＷＫＢに格納しているデータの元ID52に対応する公開フラグ63に0を格納する（ステップ405）。ｋ＝2としているので、元ID52が「8」の公開フラグ63に0を格納する（図１５では、1→0と表記）。
【００６５】
削除処理は、ステップ404でＷＫＣの値（カウンタ値）がｋ以上の場合を含めて処理を終了し、図８のステップ203に戻る。
【００６６】
図８のステップ203以降の処理を実行すると、図１６に示すｋ−匿名データファイル70が生成され、ｋ−匿名データベースサービスサーバ12によって、ユーザに提供される。図１５に示す中間データファイル50からの、図１６に示すｋ−匿名データファイル70の生成は、前述のステップ205と同様の処理によるものである。
【００６７】
以上の例は、削除データによりｋ−匿名データファイル70が更新されているが、削除データが中間データファイル50から削除されるが、削除データの新匿名IDに等しい新匿名IDの他のデータが存在しなかった場合などは、削除データが非公開であったので、ｋ−匿名データファイル70は実質的に更新されない。
【００６８】
以上の説明から明らかなように、削除処理は削除データを対象とした処理であり、言い換えると削除データの旧匿名ID61を対象とした処理であるので、生成部100のＷＫＡに格納した匿名IDを更新に伴うステップ105〜ステップ110のループ処理を実行しなくて良い。すなわち、中間データファイル50を用いた削除処理は、中間データファイル50を用いずに、データの削除に伴い新規にｋ−匿名データファイル70を生成する場合に比べて、高速処理（処理時間が短い）が実現できる。
【００６９】
図１７に、変更処理（ステップ500）のフローチャートを示す。変更処理は、元データファイル40の変更後データに応じた、ｋ−匿名データファイル70のｋ−匿名データを変更する処理である。変更処理は、以下の説明からも明らかなように、変更データの変更前データの削除処理と変更後データの追加処理の組合せであると考えればよい。以下、変更後データを変更データと呼ぶ。変更処理の説明のために、図１８に示す元データファイル40、図１９に示す中間データファイル50及び図２０に示すｋ−匿名データファイル70の例を用いる。図１８に示す元データファイル40には、図６に示す元データファイル40に元ID41が「7」のデータが変更されている。具体的には、元ID41が「7」の住所44が「Ｐ市Ｓ町7−8−9」から、図１８に示す元データファイル40では、元ID41が「7」の住所44が「Ｑ市Ｔ町11−12−13」に変更されている。
【００７０】
変更処理は、図１８に示す元データファイル40の変更データ（元ID41が「7」のデータ）に対応して図１９に示す中間データファイル50のデータを変更する（ステップ501）。変更した中間データファイル50のデータも変更データと呼ぶ。ステップ501は、生成部100のステップ101と同様であるが、対象とするデータが変更データである。
【００７１】
変更処理は、準識別子マスタファイル32を参照して、中間データファイル50の変更データ（元ID52が「7」のデータ）の準識別子54と対応する匿名ID36である「8」を、変更データの新匿名ID62として格納し（ステップ502）、中間データファイル50の変更データの公開フラグ63に0を格納する(ステップ503)。ステップ502およびステップ503の処理は、生成部100のステップ102及びステップ103と同様であるが、生成部100が中間データファイル50の各データを対象としているのに対して、変更処理は変更データを対象としている。
【００７２】
変更処理は、変更データの新匿名ID62「8」をＷＫＡに設定し、ＷＫＢおよびＷＫＣをクリアする(ステップ504)。ＷＫＡは、後述から明らかになるように更新する必要が無いので、変更データの新匿名ID62「8」をＷＫＡに代えて用いてもよい。
【００７３】
変更処理は、中間データファイル50の各データに関して、ＷＫＡの新匿名ID「8」に等しい新匿名ID62のデータの元ID52をＷＫＢに格納し、ＷＫＣの内容に1を加算する（ステップ505）。図１９の中間データファイル50についてこのステップを終えると、ＷＫＢには、元ID52の値として「5」と「7」が格納され、ＷＫＣにはカウント値として「2」が格納されている。
【００７４】
変更処理は、ＷＫＣの値（カウンタ値）がｋ以上であるかを判定し（ステップ506）、ｋ以上である場合は、新匿名ID62「8」のデータがｋ以上であり、ｋ‐匿名性を確保できることを意味するので、ＷＫＢに格納しているデータの元ID52に対応する公開フラグ63に１を格納する（ステップ307）。ｋ＝2としているので、元ID52が「5」と「7」の公開フラグ63に１を格納する（図１８では、0→1と表記）。ステップ503で、元ID52が「7」の公開フラグ63に0を格納しているので、図１８では、元ID52が「7」の公開フラグ63を0→1と表記している。
【００７５】
変更処理は、変更データの旧匿名ID61「7」をＷＫＡに設定し、ＷＫＢおよびＷＫＣをクリアする(ステップ508)。更新部200のステップ201で、新匿名ID62が旧匿名ID61に複写されているので、変更データの旧匿名ID61「7」は、図１９の中間データファイル50に示すように、変更前データの新匿名ID「7」である。
【００７６】
変更処理は、中間データファイル50の各データに関して、ＷＫＡの旧匿名ID「7」に等しい新匿名ID62のデータの元ID52をＷＫＢに格納し、ＷＫＣの内容に1を加算する（ステップ509）。図１９の中間データファイル50についてこのステップを終えると、ＷＫＢには、元ID52が「1」が格納され、ＷＫＣにはカウント値として「1」が格納されている。
【００７７】
変更処理は、ＷＫＣの値（カウンタ値）がｋ以上であるかを判定し（ステップ510）、ｋ以上でない場合は、新匿名ID62が「7」のデータがｋ未満であり、ｋ‐匿名性を確保できないことを意味するので、ＷＫＢに格納しているデータの元ID52に対応する公開フラグ63に0を格納する（ステップ511）。ｋ＝2としているので、元ID52が「1」の公開フラグ63に0を格納する（図１９では、1→0と表記）。
【００７８】
変更処理は、ステップ510でＷＫＣの値（カウンタ値）がｋ以上の場合を含めて処理を終了し、図８のステップ203に戻る。
【００７９】
図８のステップ203以降の処理を実行すると、図２０に示すｋ−匿名データファイル70が生成され、ｋ−匿名データベースサービスサーバ12によって、ユーザに提供される。図１９に示す中間データファイル50からの、図２０に示すｋ−匿名データファイル70の生成は、前述のステップ205と同様の処理によるものである。
【００８０】
以上の説明から明らかなように、変更処理のステップ501〜ステップ507は、図９に示した追加処理のステップ301〜ステップ307と同様であり、ステップ508〜ステップ511は、図１３に示した削除処理のステップ402を除いた各ステップと同様であり、変更データの変更前データの削除処理と変更後データの追加処理の組合せである。したがって、追加処理や削除処理に関して説明したように、変更処理においても変更データを対象とした処理であり、言い換えると変更データの新匿名ID62および旧匿名ID61を対象とした処理であるので、生成部100のＷＫＡに格納した匿名IDを更新に伴うステップ105〜ステップ110のループ処理を実行しなくて良い。すなわち、中間データファイル50を用いた変更処理は、中間データファイル50を用いずに、データの変更に伴い新規にｋ−匿名データファイル70を生成する場合に比べて、高速処理（処理時間が短い）が実現できる。
【００８１】
以上のように更新部200は、元データファイル40の更新に応答して、中間データファイル50のデータの各々に関して、新匿名ID62を旧匿名ID61として設定し、元データファイル40の更新されたデータに関して、準識別子マスタファイル32を参照して、更新されたデータの更新内容（追加、削除、変更）に応じて、元データファイル40の更新されたデータの準識別子に対応する項目の内容を準識別子54に置換し、置換した準識別子54の組合せを識別する匿名ID36を新匿名ID62として設定して更新されたデータを中間データファイル50に格納し、中間データファイル50の更新されたデータの新匿名ID62及び旧匿名ID61の少なくとも一方を参照して、中間データファイル50のデータの各々に関して、ｋ−匿名性を確保できないデータを中間データファイル50から削除したｋ−匿名データファイル70を生成する。
【００８２】
本実施形態によれば、高速に更新を実行するために予め備えることとして、高速にｋ−匿名化処理するための中間データファイルを設けることができる。他にデータベースのデータの更新に伴うｋ−匿名化処理が高速化できる。
【符号の説明】
【００８３】
10：ｋ−匿名データベース制御サーバ、11：元データファイル提供サーバ、12：ｋ−匿名データベースサービスサーバ、20：ＣＰＵ、30：メモリ、31：識別子マスタファイル、32：準識別子マスタファイル、33：更新日時、34：ワーキング領域、40：元データファイル、50：中間データファイル、70：ｋ−匿名データファイル、100：ｋ−匿名データファイル生成部、200：ｋ−匿名データファイル更新部。
【図１】
2014164477.tif 000003
【図２】
2014164477.tif 000004
【図３】
2014164477.tif 000005
【図４】
2014164477.tif 000006
【図５】
2014164477.tif 000007
【図６】
2014164477.tif 000008
【図７】
2014164477.tif 000009
【図８】
2014164477.tif 000010
【図９】
2014164477.tif 000011
【図１０】
2014164477.tif 000012
【図１１】
2014164477.tif 000013
【図１２】
2014164477.tif 000014
【図１３】
2014164477.tif 000015
【図１４】
2014164477.tif 000016
【図１５】
2014164477.tif 000017
【図１６】
2014164477.tif 000018
【図１７】
2014164477.tif 000019
【図１８】
2014164477.tif 000020
【図１９】
2014164477.tif 000021
【図２０】
2014164477.tif 000022