(57)【要約】【課題】データベースからの時間順の検索結果出力をソート処理なく高速で処理し、カメラ等の小規模機器における検索処理の操作性を向上させる。【解決手段】行データを一意に特定する内部ＩＤを必ず時間順とし、更に、各インデクスにおいて同一値となる行の格納順を内部ＩＤの順とすることにより、インデクスからの時間順序に沿った行データ取得が可能となるので、検索結果を最終的に時間順ソートする処理を不要にでき、小規模機器においても少ないリソースで時間順の検索結果出力を可能とし、ひいては、小規模機器においてもコストパフォーマンスの高いデータ処理機器を実現できるようにする。【選択図】図２
2012243213.tif 000002
【特許請求の範囲】
【請求項１】
内部ＩＤによって一意に特定可能な行データが構成されるとともに、前記内部ＩＤと前記行データの内部に保持される登録時間のペアが全順序関係を成すように構成されたデータベースで検索を行うデータ処理方法であって、
前記行データを前記内部ＩＤの順に取得する行データ取得工程と、
前記取得された行データがユーザ指定の検索条件を満たすか否かを判定する検索条件判定工程と、
前記検索条件判定工程で条件を満たすと判定されたときに行データを出力する行データ出力工程とを備え、登録時間順に検索結果出力することを特徴とするデータ処理方法。
【請求項２】
前記データベースからの行データのエクスポート時に、前記内部ＩＤを含めて行データをエクスポート先に出力するエクスポート工程と、
前記エクスポートされた行データのデータベースへのインポート時に、インポート元の行データの内部ＩＤ及び登録時間を取得する内部ＩＤ取得工程と、
前記取得された内部ＩＤがインポート先データベースの内部ＩＤに衝突しないかを判定する内部ＩＤ衝突判定工程と、
前記取得された内部ＩＤと撮影時間のペアがインポート先データベースの内部ＩＤと登録時間の組と全順序関係を維持できるかを判定する全順序関係判定工程と、
前記内部ＩＤ衝突判定工程で衝突がないと判定され、かつ、前記全順序関係判定工程で全順序関係が維持されると判定された場合に、該行データをインポートするインポート工程とを備えることを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記内部ＩＤとして、登録時間、または登録時間の定数倍、または登録順序情報のいずれかを使用することを特徴とする請求項１または２に記載のデータ処理方法。
【請求項４】
前記全順序関係判定工程で全順序関係が維持されないと判定された場合に、前記インポート工程は、全順序関係を維持できるように、インポート行データの内部ＩＤ、またはインポート先データベースの行データの内部ＩＤを変更してから行データをインポートすることを特徴とする請求項２に記載のデータ処理方法。
【請求項５】
内部ＩＤによって一意に特定可能な行データが構成されるとともに、前記内部ＩＤと前記行データの内部に保持される登録時間のペアが全順序関係を成すように構成されたデータベースで検索を行うデータ処理装置であって、
前記行データを前記内部ＩＤの順に取得する行データ取得手段と、
前記取得された行データがユーザ指定の検索条件を満たすか否かを判定する検索条件判定手段と、
前記検索条件判定手段で条件を満たすと判定されたときに行データを出力する行データ出力手段とを備え、登録時間順に検索結果出力することを特徴とするデータ処理装置。
【請求項６】
内部ＩＤによって一意に特定可能な行データを保持したデータベースであって、前記内部ＩＤと前記行データの内部に保持される登録時間のペアが全順序関係を成し、前記行データを前記内部ＩＤの順に取得する行データ取得工程と、
前記取得された行データがユーザ指定の検索条件を満たすか否かを判定する検索条件判定工程と、
前記検索条件判定工程で条件を満たすと判定されたときに行データを出力する行データ出力工程とをコンピュータに実行させ、登録時間順に検索結果出力することを特徴とするデータ処理プログラム。
【請求項７】
請求項６に記載のデータ処理プログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理方法およびデータ処理装置に関し、特に、データベースで検索を行うために用いて好適な技術に関する。
【背景技術】
【０００２】
近年、ストレージや記録メディアの大容量化が進み、カメラ等の小型機器においても検索などの処理負荷の重いデータ処理が行われるようになりつつある。データ処理負荷の増大に対応して、従来、大規模サーバなどの分野においては、データベースマネジメントシステム（ＤＢＭＳ）が開発され、ＤＢＭＳを利用したアプリケーションシステム構築推進によって、システムの開発効率向上に寄与してきた。そこで、小型機器においてもＤＢＭＳを活用しようと、組込み機器に見合ったＤＢＭＳ（組込みデータベース）が提案され利用されるようになってきている。
【０００３】
一般に、機器の用途では、検索結果の並び（出力順）を所定の順番、例えばデータの登録時間順（カメラであれば撮影順、ＴＶであれば録画順、複写機であればジョブ発生順）で求める場合が多い。通常、データベースは、この所定の順番に対応するために、（１）まず検査結果集合を抽出する。（２）次に、その集合を指定順にソート、の２段階で処理するため、ソート処理が必ず発生してしまう。ソート処理は、サーバのように大きなリソースを持つ機器の場合は問題にならないが、カメラのように低リソースの機器にとっては負荷が重く深刻な問題となる。
【０００４】
このようなデータベースにおけるソート処理軽減の工夫はこれまでにも提案がなされている。例えば、特許文献１においては、検索条件とインデクスの構造を比較して、インデクス経由のレコード読み出しがソート処理と同じ効果が得られるかを判断し、同じならインデクス経由でレコードを読み出して、ソート処理を省略して検索する技術を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−２５５１７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述の特許文献１による対策は、ソートキーの順序に格納されたインデクスがたまたま存在するか否かを利用するというものであり、存在した場合のみ効果が得られるに過ぎない手法である。これに対して、低リソースの機器、例えばカメラにおいては確実に効果が得られる工夫が求められる。
【０００７】
実際には、カメラの場合は検索結果を撮影時間順にソートすることがほとんどであり、時間順ソートが高速なら充分実用的であり、任意の並び順出力を高速化する必要はない。
本発明は前述の問題点に鑑み、カメラのような低リソース機器においても、検索結果の時間順ソートを少ない負荷で高速に処理できるデータベースを実現して、機器上検索の操作性を向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ処理方法は、内部ＩＤによって一意に特定可能な行データが構成されるとともに、前記内部ＩＤと前記行データの内部に保持される登録時間のペアが全順序関係を成すように構成されたデータベースで検索を行うデータ処理方法であって、前記行データを前記内部ＩＤの順に取得する行データ取得工程と、前記取得された行データがユーザ指定の検索条件を満たすか否かを判定する検索条件判定工程と、前記検索条件判定工程で条件を満たすと判定されたときに行データを出力する行データ出力工程とを備え、登録時間順に検索結果出力することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、検索結果を時間順に出力する場合に、検索結果集合抽出後の最終的な時間順ソート処理を省略できるため、低リソース機器においても高速に時間順検索結果を出力することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態を示し、データ処理装置の全体構成を示すブロック図である。
【図２】データ処理装置における検索の処理例を示した図である。
【図３】データ処理装置におけるデータベースの格納構造を示した図である。
【図４】データ処理装置のエクスポート／インポートの処理の例を示した図である。
【図５】全順序関係に応じたインポート処理方法を説明した図である。
【図６】装置全体の処理手順の一例を示すフローチャートである。
【図７】検索処理の処理手順の一例を示すフローチャートである。
【図８】インポート処理の手順の一例を示すフローチャートである。
【図９】内部ＩＤ再調整処理の処理手順の一例を示すフローチャートである。
【図１０】第２の実施形態のデータ処理装置の全体構成を示すブロック図である。
【図１１】第３の実施形態を示し、内部ＩＤの実現例を示した図である。
【発明を実施するための形態】
【００１１】
（第１の実施形態）
以下、図面を参照しながら本発明の好適な実施形態を詳細に説明する。
図１は、第１の実施形態のデータ処理装置１００の構成を示すブロック図である。
図１に示した構成において、ＣＰＵ１０１はマイクロプロセッサであり、検索処理、エクスポート処理、インポート処理、撮影処理、画面遷移処理等のための演算、論理判断等を行い、バスを介してバスに接続された各構成要素を制御する。
【００１２】
ＢＵＳ１０６は、マイクロプロセッサＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）１０１の制御対象である各構成要素を指示するアドレス信号、コントロール信号を転送する。また、各構成要素間のデータ転送を行う。入力部１０２はボタン、タッチパネル、キーボード等であり、オペレータが各種の指示を行う。表示部１０３は液晶ディスプレイ等である。
【００１３】
撮像部１０４は撮像センサ等であり、映像を読み取って電子データに変換する装置である。通信部１０５はデータ交換コントローラである。無線ＬＡＮ、接続ケーブル等を介して外部とのデータ交換を行う装置である。インポート処理でインポートされるデータ、エクスポート処理でエクスポートされるデータはこの通信部１０５を介して外部の機器とやり取りされる。
【００１４】
ＲＯＭ１０７は読出専用の不揮発性メモリである。ＣＰＵ１０１によるブートプログラム、及び各種処理で使用する初期データ等を記憶する。ブートプログラムはシステム起動時に初期データをＲＡＭ１０８にロードし、ＣＰＵ１０１に制御プログラムを実行させる。制御プログラムについては、後にフローチャートを参照して詳述する。
【００１５】
ＲＡＭ１０８は読み書き可能なランダムアクセスメモリであって、各構成要素からの各種データの一次記憶に用いる。データを処理するためのスタック、必要データを一時記憶する各種ワーク領域、表示に必要な表示データを一時記憶するバッファ等、処理中に値変更が行われる各種データが格納される。インポート処理でインポートされるデータもこのＲＡＭ１０８に一次記憶されて処理される。
【００１６】
ＤＩＳＫ１０９は大規模記憶装置であり、大量のデータを変更可能に記憶するためのものである。ハードディスクあるいはフラッシュメモリ等で構成される。本実施形態のデータ処理装置１００で使用する行データ、インデクス等が格納され、必要に応じて内容が修正される。
【００１７】
前述した各構成要素からなる第１の実施形態のデータ処理装置１００においては、入力部１０２等を介して入力される各種イベントに応じて作動するものである。入力部１０２等からインタラプト信号がＣＰＵ１０１に送られ、それに伴ってイベントが発生し、イベントに応じてＣＰＵ１０１がＲＯＭ１０７またはＲＡＭ１０８内に記憶される各種命令を読み出し、その実行によって各種の制御が行われる。
【００１８】
図２は、第１の実施形態が対象とする検索の処理例を示した図である。なお、検索のユーザ指定は、ユーザがタッチパネル等を指示して行い、受け付けられた検索指示はアプリケーションによって解釈され、ＤＢ操作言語（ＳＱＬ文等）で記述された検索クエリの形式でＤＢＭＳに渡されることになる。
【００１９】
図２（ａ）は、検索クエリ（ＳＱＬ文）の例を示す図である。ある写真集合を属性で検索できるように管理するデータベース（ＰｈｏｔｏＡｌｂｕｍ）の中から被写体（Ｐｅｒｓｏｎ）が‘Ｋａｔｅ’の写真を検索し、撮影時間（Ｔｉｍｅ）順にソートして出力することを指定している。なお、第１の実施形態においては、カメラを想定しており、撮影時間はデータの登録時間を意味し、撮影時間順は登録時間順を意味する。
【００２０】
図２（ｂ）は、図２（ａ）の検索クエリに対する検索処理を示している。多数の写真を集めて管理している写真集合２０１がある。まず、最初のステップ（ステップ１）において写真集合２０１から検索条件を満たす写真を抽出して検索結果集合となる写真リスト２０２を作成する。次のステップ（ステップ２）において、この写真リスト２０３中の写真を検索クエリで指定する撮影時間順にソートし、ソートされた写真リスト２０３を作成する。この場合、ステップ２のソート処理はシステムに対して相応の負荷をかけることになる。もし、ステップ１の段階で、最終的に得られる写真リスト２０３の順に写真を抽出できれば、ステップ２の処理を省略できる。
【００２１】
図２（ｃ）はそのソート処理が省略できる場合の検索処理例を示している。今度は、写真集合２０４から検索クエリに見合う写真を抽出する際、（１）〜（４）に示すように、最終的な出力順である撮影時間の順番に写真を抽出し、その順で写真リスト２０５を作成していく。このようにすると、最終的なソート処理を省略することができるので、処理負荷を減少させることができる。
【００２２】
図３は、第１の実施形態におけるデータベースの格納構造を示した図である。基本的にはいわゆるＢ−Ｔｒｅｅ（木構造）の構造である。
図３（ａ）は、行データの格納構造を示している。行データは、行を一意に特定可能な内部ＩＤ（ＲｏｗＩＤと呼ぶ）をキーとして、Ｂ−Ｔｒｅｅの形式で格納される。なお、内部ＩＤは行データを一意に特定するためのＩＤで、重複してはいけないという制約がある。
【００２３】
そのため、通例、個々のデータベースごとに異なる体系を持ち、内部で閉じたＩＤとして使用される。データベースの格納単位はノード３０１であり、複数のノードから構成される。各ノードはキー３０２と枝３０３からなり、最も上位のノード（ルートノード）から、キーの大小関係を判断して枝をたどることによって目的ノードまでたどることができる。最下層のノード（リーフノード）には複数の行データ３０４がＲｏｗＩＤの順に格納される。行データは行を特定するためのＲｏｗＩＤ３０５、撮影時間情報３０６、及びその他の列３０７から構成される。ここで、ＲｏｗＩＤを時間（撮影時間情報）順としているので、格納順が時間順になっている。
【００２４】
インデクスは、属性に従って行データを検索したい場合に、検索を高速化するために用意されるものである。高速検索が必要な属性ごとにインデクスを作成することになる。図３（ｂ）はインデクスの格納構造の一例である。人名（Ｐｅｒｓｏｎ）のインデクスを示している。ＰｅｒｓｏｎをキーとしたＢ−Ｔｒｅｅの構造となっている。行データの格納構造と基本的に同一となるが、最下端のリーフノードに行データの代わりにキーであるＰｅｒｓｏｎ（３０８）とＲｏｗＩＤ（３０９）のペアが格納される点が異なっている。各ペアはＰｅｒｓｏｎの値が同じ場合、ＲｏｗＩＤの順、すなわち時間（撮影時間情報）順に格納される。このようにインデクスを介して検索した場合も、時間順に行データを取得できることになる。
【００２５】
図４は、第１の実施形態におけるエクスポート／インポート処理の例を示した図である。エクスポート時は、機器１（４０１）において内部のデータベースＤＢ１から部分データベースＤＢ２（４０２）がエクスポートされ、外部に出力される。このとき、本来は内部のＩＤ情報であるＲｏｗＩＤ情報を含めて出力される。以降、データベースＤＢ１をエクスポート元データベース、ＤＢ２をエクスポート先データベースと呼ぶ。エクスポートされたデータベースＤＢ２は、機器２（４０３）に転送され、機器２内の一時記憶領域に格納される。あるいは、一旦、ＳＤカード等の外部メディアに吐き出され、その外部メディアが機器２に装着されることによりデータ転送される。
【００２６】
次に、インポート時は、該転送されたデータベースＤＢ２が、機器２（４０３）において、内部のデータベースＤＢ３にインポートされる。以降、ＤＢ２をインポート元データベース、ＤＢ３をインポート先データベースと呼ぶ。このとき、ＲｏｗＩＤの値と時間情報がインポート先データベースＤＢ３の内部で先後関係が矛盾しないようにＲｏｗＩＤの値が調整されてインポートされる。例えば、インポート元データベースＤＢ２でのＲｏｗＩＤ＝５０の行データがＲｏｗＩＤ＝１に変更されてインポートされている。
【００２７】
図５は、第１の実施形態において、全順序関係に応じたインポート処理方法を説明した図である。
図５（ａ）は、インポートされるべきデータ（インポート行データ）の例を示した図である。図４で説明したように、別のデータベースからエクスポートされて生成された行データである。行データは、ＲｏｗＩＤ（５０１）、撮影時間情報（５０２）、その他の情報（５０３）の列からなる。ＲｏｗＩＤ（５０１）は、図４の説明でも述べたように、本来は内部のみで使用されるＩＤであるので、通例はエクスポートされないデータであるが、第１の実施形態においてはエクスポートされて存在する。
【００２８】
図５（ｂ）は、全順序関係が維持できる場合のインポート例を示す図である。インポート前のＤＢを５０４で示し、インポート後のＤＢを５０５で示している。インポート後のＤＢ５０５において、太枠部分は図５（ａ）がインポートされた行データである。（ＲｏｗＩＤ、撮影時間）のペアがＤＢ内でインポート先のＤＢ内においても全順序関係を成しているので、ＲｏｗＩＤが変更されずにそのままの値でインポートされていることが分かる。
【００２９】
図５（ｃ）は、全順序関係が維持できない場合のインポート例である。同様に、インポート前のＤＢを５０６で示し、インポート後のＤＢを５０７で示している。やはり同様に、インポート後のＤＢ５０７において、太枠部分の行データがインポートされた行データであるが、今度は、ＲｏｗＩＤの値が変更されていることが分かる。
【００３０】
すなわち、ＲｏｗＩＤが元のままでは（ＲｏｗＩＤ、撮影時間）のペアが、直前、あるいは直後の撮影時間の行と全順序関係を成さないので、全順序関係が成り立つようにＲｏｗＩＤの値が調整されてインポートされたのである。５０８の行データは、直前の撮影時間の行（ＲｏｗＩＤ＝１０）と直後の撮影時間の行（ＲｏｗＩＤ＝２０）の間になるようにＲｏｗＩＤの値が調整（ＲｏｗＩＤ＝１５）されてインポートされている。
【００３１】
５０９の行データは、直前の撮影時間の行が複数（ＲｏｗＩＤ＝３０と４０）存在するが、このうち最大の値（ＲｏｗＩＤ＝４０）と直後の撮影時間の行（ＲｏｗＩＤ＝５０）の間に調整（ＲｏｗＩＤ＝４５）されてインポートされている。５０１０の行データは、直前の撮影時間の行（ＲｏｗＩＤ＝７０）と直後の撮影時間の行（ＲｏｗＩＤ＝７１）の間が存在せず、新たな中間のＲｏｗＩＤが設定できないので、インポート先データベースの周辺のＲｏｗＩＤが不連続値となるように変更されている。すなわち、ＲｏｗＩＤ＝７１の行は８０に、７２の行は９０に変更された。その後、直前と直後の中間値（ＲｏｗＩＤ＝７５）が求められ、インポートされている。
【００３２】
前述の動作をフローチャートに従って説明する。
図６は、第１の実施形態におけるデータ処理装置１００の動作を示すフローチャートである。より具体的には、ＣＰＵ１０１の処理手順を示すフローチャートである。Ｓ６０１はシステムの初期化処理であり、各種パラメータの初期化や初期画面の表示等を行う処理である。
【００３３】
Ｓ６０２は、タッチパネル等の入力部１０２から何らかのイベントが発生するのをＣＰＵ１０１において待つ処理である。イベントが発生すると、Ｓ６０３においてＣＰＵ１０１がこのイベントを判別し、イベントの種類に応じて各種の処理に分岐する。図６においては、各種イベントに対応した分岐先の複数の処理をＳ６０４という形でまとめて表現している。
【００３４】
図７で詳述する検索処理、図８で詳述するインポート処理はこの分岐先の一部となる。他の処理としては、詳細は記述しないが、エクスポート処理、撮影処理、写真閲覧処理、通信処理、電源ＯＦＦ処理などの処理がある。
Ｓ６０５は上記の各処理の処理結果や処理終了を通知し、画面を各処理の指示に従って表示する処理である。エラーがあった場合のエラー表示、正常な処理が行われた場合の画面表示への反映など通常広く行われる処理である。
【００３５】
図７は、図６のＳ６０４の一部である検索処理を詳細化したフローチャートである。
Ｓ７０１において、初期設定が必要な変数、テーブルを初期化し、検索条件に応じた処理インデクスを選定する。例えば、「ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  ＰｈｏｔｏＡｌｂｕｍ  ＷＨＥＲＥ  Ｐｅｒｓｏｎ  ＝  ‘Ｋａｔｅ’  ＡＮＤ  Ｐｌａｃｅ  ＝  ‘Ｔｏｋｙｏ’  ＯＲＤＥＲ    ＢＹ  Ｔｉｍｅ」というクエリに対して、Ｐｅｒｓｏｎのインデクスを選定する。
【００３６】
Ｓ７０２において、検索条件から検索範囲を設定し、その範囲の先頭にポインタを初期設定する。例えば、ＰｅｒｓｏｎインデクスのＢ−Ｔｒｅｅを辿って行き、Ｋａｔｅの始まりの位置にポインタを設定する。
Ｓ７０３において、ポインタに従ってＲｏｗＩＤの値を取得し、今度は行データのＢ−Ｔｒｅｅを辿り、行データを取得する。既に説明したＢ−Ｔｒｅｅのデータ構造に従って必ずＲｏｗＩＤの順、すなわち撮影時間順に行データ取得処理が行われることになる。
【００３７】
Ｓ７０４において、取得された行データが検索条件を満たすか否かをチェックする。例えば、先の例では、Ｐｌａｃｅ＝‘Ｔｏｋｙｏ’を満たすか否かをチェックする検索条件判定を行う。Ｓ７０５において、検索条件判定処理を行い、検索条件を満たしている場合にはＳ７０６に進み、満たさない場合はＳ７０７にスキップする。
【００３８】
Ｓ７０６においては、検索条件を満たしているので行データ出力処理を行う。これによって検索結果出力が行われることになる。
Ｓ７０７において、ポインタが検索範囲の終了位置に来ているか否かを判定し、終了位置のときは、これ以上の処理は不要なのでリターンし、終了でないときは、Ｓ７０８に分岐する。ステップＳ７０８においては、検索範囲内の次の行データをポイントするためにポインタを更新し、Ｓ７０３にループする。
【００３９】
図８は、Ｓ６０４の一部であるインポート処理を詳細化したフローチャートである。
Ｓ８０１において、インポートされる行データの集合を取得する。インポートされる行データは、例えば、機器内のＲＡＭ１０８内に一時記憶されている。Ｓ８０２において、インポートされる行データを１件取得する。その行の内部ＩＤ取得、撮影時間取得を行い、ＲｏｗＩＤをＲ、撮影時間をＴとする。
【００４０】
Ｓ８０３において、行データが取得できたか否かを判定し、取得できなかったときは、処理終了でリターンし、取得できたときはＳ８０４に進む。Ｓ８０４において、インポート先データベースにＲと同値のＲｏｗＩＤの行があるか否かをチェックする。すなわち、内部ＩＤ衝突チェックを行う。
【００４１】
Ｓ８０５においては、ＩＤ衝突の有無を判定する、内部ＩＤ衝突判定を行う。同値のＲｏｗＩＤがある場合、すなわち、ＲｏｗＩＤが衝突しているときはＳ８１１に分岐するが、衝突していないときはＳ８０６に分岐する。Ｓ８０６において、インポート先データベースからＲより小さくてＲに最も近いＲｏｗＩＤを取得し、その値をＲ１とする。
【００４２】
Ｓ８０７において、Ｒ１の行の撮影時間を取得しＴ１とする。Ｓ８０８において、インポート先データベースからＲより大きくてＲに最も近いＲｏｗＩＤを取得し、その値をＲ２とする。Ｓ８０９において、Ｒ２の行の撮影時間を取得しＴ２とする。
【００４３】
Ｓ８１０において、Ｔ１＜Ｔ＜Ｔ２を満たすか否かを判定する。すなわち、全順序関係判定を行い、全順序関係を成していないときはＳ８１５に分岐し、全順序関係を成しているときはＳ８１６に分岐する。Ｓ８１５において、全順序関係が成り立たない場合の処理を行う。すなわち、インポートされる行データを引数として、図９に詳述する内部ＩＤ再調整処理を呼ぶことによって、インポート先データベースあるいはインポートされる行データのＲｏｗＩＤを調整する。Ｓ８１６において、行データをインポートし、Ｓ８１７に移行する。
【００４４】
一方、Ｓ８０５において、ＲｏｗＩＤが衝突しているときはＳ８１１に分岐し、Ｓ８１１において、衝突している２つの行データの全列が同一であるか否かを判定する。同一の行データなら、そもそもインポート処理する必要がないのでＳ８１７に分岐して次の行データの処理に移る。同一でなければＳ８１２に進む。
【００４５】
Ｓ８１２において、同期が必要な行データ（同期データ）であるか否かをチェックする。チェック方法は、行データの指すコンテンツが一致する場合に同期が必要と判断する。別のチェック方法としては、予めコンテンツを一意に特定するＩＤ情報を定めておき、その情報を行データの列に保持しておき、その情報の一致で判断する、などの方法が考えられる。
【００４６】
Ｓ８１３において、同期データか否かを判定する。同期データでなければＳ８１５に分岐し、同期データのときはＳ８１４に進む。Ｓ８１４において、同期処理を行う。同期処理は、２つの行データのうち、新しい行を選択して更新する処理である。あるいは、列単位で新しいデータに更新する場合もある。その場合、差分を抽出してどちらが最新か否かを判定し、更新することになる。あるいは、どのデータを選ぶかはユーザに選択させる処理を行う場合もある。その後、Ｓ８１７に移行する。Ｓ８１７においては、次の行データをポイントするためにポインタを更新し、Ｓ８０３にループする。
【００４７】
図９は、Ｓ８１５の内部ＩＤ再調整処理を詳細化したフローチャートである。
Ｓ９０１において、インポートされる行データの撮影時間を取得しＴとする。Ｓ９０２において、インポート先データベースに存在してＴより小さくてＴに最も近い撮影時間を取得し、Ｔ１とする。Ｓ９０３において、Ｔ１を撮影時間としてもつ（複数の）行のうち最大のＲｏｗＩＤをＲ１とする。
【００４８】
Ｓ９０４において、インポート先データベースに存在してＴより大きくてＴに最も近い撮影時間を取得し、Ｔ２とする。Ｓ９０５において、Ｔ２を撮影時間として持つ（複数の）行のうち最小のＲｏｗＩＤをＲ２とする。Ｓ９０６において、Ｒ１＜Ｒ＜Ｒ２を満たすＲを取得する。
【００４９】
Ｓ９０７において、Ｒが存在するか否かを判定する。存在しない場合（すなわち、Ｒ１とＲ２が連番である場合）、Ｓ９０８に分岐する。Ｓ９０８において、インポートされる行データのＲｏｗＩＤのうち、Ｒ１あるいはＲ２付近のＲｏｗＩＤの値が連番とならないように（すなわち、不連続の値となるように）リナンバーする。このリナンバーはインポート先データベース全体に対して実施することもできるが、Ｒ１、Ｒ２付近について局所的にリナンバーしてもよい。その後Ｓ９０６にループする。Ｓ９０７において、Ｒの値が存在した場合（すなわち、Ｒ１とＲ２が連続値でなかった場合）は、Ｓ９０９に分岐し、インポートされる行データのＲｏｗＩＤをＲに変更してリターンする。なお、本発明は前述の実施形態に限定されるのではなく、本発明の趣旨を逸脱しない限りにおいて適宜変更が可能である。
【００５０】
（第２の実施形態）
これまで述べた実施形態においては、カメラ等のデバイス上でエクスポート処理、インポート処理等を実行することを想定して説明していた。ところが、カメラで撮影した写真等のデータはＰＣ等で集中管理し、必要なデータをデバイスに配信してデバイス上で閲覧等するという使い方も存在する。このような場合、リソースの少ないカメラ上で複雑なインポート処理を行う必要性は少なく、ＰＣ上でカメラのためのインポート処理を行う方が妥当である。第２の実施形態は、このようにＰＣ上でインポート処理を実現する場合の動作を説明する。
【００５１】
図１０は、第２の実施形態に係るシステムの全体構成の例を示した図である。
図１０（ａ）は全体構成であり、図１で示した全体構成とよく似た構成となっている。異なる点のみを説明する。
ＣＰＵ１００１、入力部１００２、表示部１００３、通信部１００４、ＢＵＳ１００６、ＲＯＭ１００７、ＲＡＭ１００８、ＤＩＳＫ１００９等の構成及び役割はほぼ同じである。
【００５２】
本実施形態においては、ＰＣであるため、図１の撮像部１０４は存在しない。通信部１００４を介してデバイス１００５（例えばカメラ）と接続され、デバイス上のデータベース（デバイスＤＢ１）が参照できる。ＲＡＭ１００８にはワーク領域として抽出データ領域が使用され、ＤＩＳＫ１００９には全体ＤＢ、デバイスＤＢ２が格納される。
【００５３】
全体ＤＢには複数のデバイスから入手されたデータ（写真等）が集中管理される。デバイスＤＢは、デバイスにデータをインポートする際に使用するワーク領域である。インポートの際には、デバイス上のデータベース（デバイスＤＢ１）がデバイスＤＢ２に一旦コピーされる。
【００５４】
全体ＤＢに記憶されたデータのうち、デバイスにインポートしたいデータは、一旦、抽出データ領域に抽出され、このようにコピーされたデバイスＤＢ２にインポート処理される。インポート処理が終了後、このデバイスＤＢ２はデバイス上のデバイスＤＢ１に書き戻され、最終的にデバイスが使用可能になる。
【００５５】
図１０（ｂ）は、全体ＤＢの論理構造（表形式）を示した図である。物理構造は、図３で説明したＢ−Ｔｒｅｅの構造である。データベースを処理する場合に使用される本来のＲｏｗＩＤとして、１０１０の列が存在する。それとは別に、全体ＤＢは各デバイスがＤＢを使用していたときのＲｏｗＩＤ情報を全て保管しておく。
【００５６】
この場合、それを示したのが１０１１、１０１２であり、２つのデバイスの情報を保持する。例えば、デバイスＤＢ１用のＲｏｗＩＤは１０１０の列に格納するとする。撮影時刻の情報は１０１３の列に格納され、その他の列の情報は１０１４でまとめて示した。このように全体ＤＢの情報は、各デバイスが保有していた情報の全てを合わせて保有することになる。
【００５７】
デバイスにインポートする際には、まず、インポートが必要なデータを抽出する必要があり、抽出データ領域（１０１５）に抽出したデータが作成される。この抽出の際には、ターゲットとなるデバイスが特定され、そのデバイス用のＲｏｗＩＤ情報のみが抽出されている。デバイスＤＢ２の構成を１０１６で示し、抽出されたデータはここにインポートされる。
【００５８】
このように構成することで、複数のデバイスに対応したＲｏｗＩＤをＰＣにおいて保持できるので、ＲｏｗＩＤの調整処理が起動される可能性が少なくなり、システムのパフォーマンスを改善することができる。
【００５９】
（第３の実施形態）
これまで述べた実施形態においては、内部ＩＤは時間に沿った値として特に詳しく定義して説明していなかった。実際には、機器や機能の事情に応じて、図１１に示すような、様々な形態の内部ＩＤが考えられる。
【００６０】
図１１（ａ）は、データの登録順序情報を使用する場合の例を説明した図である。データが登録される順序を１１０１で示し、データが登録された時間（登録時間）を１１０２で示す。登録時間１１０２の前後関係に応じて登録順序情報が与えられることになる。この方式によれば、内部ＩＤが発番される機構を単純化でき、システムを低リソースで実現することができる。
【００６１】
図１１（ｂ）は、内部ＩＤとしてデータの登録時刻を採用した場合を説明した図である。登録時刻を１１０３で示しており、ＹＹＹＹは年、ＭＭは月、ＤＤは日、ｈｈは時、ｍｍは分、ｓｓは秒を示す。これに対し、内部ＩＤ（ＲｏｗＩＤ）の計算式の例を１１０４で示している。ここでは、シンプルに月の日数を３１日に固定した起算日からの秒数を計算する式としたが、もっと緻密な計算式、例えば、月の大小、うるう年、などを考慮した計算式も容易に与えることができる。この形態は、発番の仕掛けが簡単であり、複数の機器間で順序の整合性をとりやすいという利点がある。ただし、同時刻に多数のデータ登録が行われた場合（例えば、カメラで連写が行われた場合など）、内部ＩＤの衝突の可能性が高くなってしまう。
【００６２】
図１１（ｃ）は、これに対して衝突の可能性をより低くした方式である。前述した登録時刻の定数倍を内部ＩＤとして使用する。登録時刻が１１０３で与えられた場合、同様に１１０５の式で内部ＩＤ（ＲｏｗＩＤ）を与える。ここで、Ｃは定数を意味し、例えばＣ＝１０などの値で使用する。これによって、内部ＩＤ衝突の確率を大幅に低減することができる。
前述した実施形態以外にも、本発明の趣旨を逸脱しない限りにおいて、構成を適宜変更することが可能である。
【００６３】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するデータ処理プログラム（コンピュータプログラム）を、ネットワーク又は各種のコンピュータ読み取り可能な記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６４】
１００  データ処理装置、１０１  ＣＰＵ、１０２  入力部、１０３  表示部、１０４
撮像部、１０５  通信部、１０６  通信部、１０７  ＲＯＭ、１０８  ＲＡＭ、１０９  
【図１】
2012243213.tif 000003
【図２】
2012243213.tif 000004
【図３】
2012243213.tif 000005
【図４】
2012243213.tif 000006
【図５】
2012243213.tif 000007
【図６】
2012243213.tif 000008
【図７】
2012243213.tif 000009
【図８】
2012243213.tif 000010
【図９】
2012243213.tif 000011
【図１０】
2012243213.tif 000012
【図１１】
2012243213.tif 000013