(57)【要約】  本システム及び方法では、複数の機器、サーバ及びシステム間でデータを管理するため、ユーザが所有するアセットのメタデータをシステム内の各ノード乃至機器から取得し、ユーザ毎に且つそのメタデータに基づき、そのユーザが所有するアセットについての論理統合型総目録を作成する。その目録を管理するため、ユーザ所有仮想コレクションに属するアセットを網羅するデータを含むファイル乃至データベース、即ちマニフェストを使用する。
2009544070.tif 000002
【特許請求の範囲】
【請求項１】
そのマニフェストの各エントリがユーザ所有アセットに係るメタデータ並びに各ユーザ所有アセットの序列及び所在を表すこととなるようマニフェストを作成し、複数のノード間で同一のマニフェストを保持することにより、ユーザ所有アセットをネットワーク上で管理するシステム。
【請求項２】
請求項１記載のシステムであって、上記複数のノードが通信ネットワーク経由で接続されたノードを含むシステム。
【請求項３】
請求項１記載のシステムであって、各ノードが家庭内機器、オンラインフォトサービス又は携帯機器を含むシステム。
【請求項４】
請求項３記載のシステムであって、ノード内の家庭内機器がテレビジョン受像器、パーソナルコンピュータ、プリンタ又はメディアボックスであるシステム。
【請求項５】
請求項１記載のシステムであって、ユーザ所有アセットが静止画、動画、音声又はマルチメディアプレゼンテーションであるシステム。
【請求項６】
第１ノード第２ノード間に通信用の接続を確立するステップと、
第２ノード上のマニフェストのバージョンベクトルを第２ノードから送信するステップと、
第２ノードがマニフェストのアップデート分を送信するステップと、
第１ノード上のマニフェストを第２ノードから送信されたアップデート分に基づきアップデートするステップと、
を有し、ネットワーク上に存する複数のノードのマニフェストであって各エントリがユーザ所有アセットに係るメタデータ並びに各アセットの序列及び所在を表すよう作成されたものを、アップデートする方法。
【請求項７】
請求項６記載の方法であって、上記複数のノードが通信ネットワーク経由で接続されたノードを含む方法。
【請求項８】
請求項６記載の方法であって、各ノードが家庭内機器、オンラインフォトサービス又は携帯機器を含む方法。
【請求項９】
請求項８記載の方法であって、ノード内の家庭内機器がテレビジョン受像器、パーソナルコンピュータ、プリンタ又はメディアボックスである方法。
【請求項１０】
請求項６記載の方法であって、ユーザ所有アセットが静止画、動画、音声又はマルチメディアプレゼンテーションである方法。
【請求項１１】
請求項６記載の方法であって、第１，第２各ノード上のマニフェストが更にエントリ別バージョンベクトルを含み、第１ノード上のマニフェストのアップデートに第２ノードから受信したアップデート分のうちどれを使用すべきかを、それらエントリ別バージョンベクトルに基づき判別する方法。
【請求項１２】
請求項６記載の方法であって、各ノードで保持されるマニフェストを構成する個々のエントリが、そのアセットに係る１個又は複数個のメタデータ構成要素を含み、各エントリにエントリ別バージョンベクトルが付随し、第１ノード上のマニフェストのアップデートに第２ノードから受信したアップデート分のうちどれを使用すべきかを、それらエントリ別バージョンベクトルに基づき判別する方法。
【請求項１３】
請求項６記載の方法であって、第２ノードから受信したバージョンベクトルを第１ノード上のバージョンベクトルと比較することによって、第１ノード上のマニフェストについてそのアップデートの要否を判別する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００６年７月１２日付米国暫定特許出願第６０／８３０２４１号に基づく利益を享受する出願である。本発明は、複数個の機器、サーバ及びシステムに跨るデータ管理アーキテクチャ、サービス及び方法に関する。本発明は、特に、あらゆるシステムノード乃至機器からメタデータを取得し、それらに基づきユーザ所有アセットの論理統合型総目録(logically unified and aggregated view)を提供する技術に関する。
【背景技術】
【０００２】
本願でいうアセット(digital asset)とは、静止画、動画、音声等のディジタルファイルのうち、個人的に楽しめるよう作成されておりパーソナルコンピュータ（ＰＣ）にダウンロードして保存することができるもののことである。ユーザは、通常、そのアセットを再生、聴取、視聴等したいときにそれらのアセットにアクセスする。また、アセットの提供や利用に関わる機器及びインターネットサービスは数多くある。例えばＰＤＡ（携帯情報端末）、ディジタルカメラ、ＰＣ、メディアサーバ、メディア端末、メディア提供サイト等である。
【０００３】
【特許文献１】米国特許出願公開第２００５／００５５３５２号明細書
【特許文献２】米国特許出願公開第２００６／０１０７２９７号明細書
【非特許文献１】"Replication: Optimistic Approaches", Yashushi Saito and Marc Shapiro, Internet Systems and Storage Laboratory, HP Laboratories Palo Alto, HPL-2002-33, February 8, 2002
【非特許文献２】"Optimistic Replication Algorithms", Yashushi Saito, August 17,2000
【非特許文献３】"Timestamps in Message-Passing Systems That Preserve the Partial Ordering", Colin J. Fidge, Department of Computer Science, Australian National University, Canberra, ACT, Australian Computer Science Communications, Vol. 10, No. 1, pp. 56-66, February 1988
【非特許文献４】"Virtual Time and Global States of Distributed Systems", Friedemann Mattern, Department of Computer Science, University of Kaiserslautern, D6750, Kaiserslautern, German
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、それらの機器乃至サービスプロバイダで作成・提供されるアセットコレクション間の結合は疎結合であり、現今の同期手法では高々二機器間例えばＰＣ・メディア端末間でしか同期させ得ない。特に問題なのは、特定のアセットにアクセスできない機器乃至サービスがあることや、アセット間同期をとるのに複数個所に同時ログインする必要があることや、アセット間同期を保てないと序列(organization)の乱れやデータ損失が生じることである。分散データシステムや特殊同期プログラムの分野では解決策が検討されているが確たる成功には至っていない。
【課題を解決するための手段】
【０００５】
上述した諸問題又はその一部を解決するため、本発明の一実施形態では、１個又は複数個のノードに散在するユーザ所有アセット（共有アセットを含む）を網羅するよう総目録(aggregated view)を作成することにより、それらのアセット全てにそのユーザがアクセスできるようにする。また、本実施形態では、この総目録即ちユーザ所有アセット（共有アセットを含む）の仮想コレクション(virtual collection)を維持するのにマニフェストを使用する。マニフェストとはアセットについてのデータを含むファイル乃至データベースであり、そのユーザが所有する仮想コレクション内の全アセットを網羅するよう作成・維持される。そして、仮想コレクションを維持するシステムとしては、仮想コレクションの作成、維持等に関わる幾つかの手順を組み合わせたアーキテクチャを使用する。
【０００６】
本発明の他の実施形態では、仮想コレクション維持用のデータ担体、アセット識別手法及び序列化手法、特に配下機器数及びアセット数が多いユーザメディアエコシステムで優れたパフォーマンスを発揮するものを提供する。そのため、データベース複製の分野でよく知られているバージョンベクトルをユニークなやり方で仮想コレクション管理に応用する。
【０００７】
本発明の更に他の実施形態では、ユーザの仮想コレクションに対する機器乃至コレクションの追加及び除去を簡便且つ効率的に行えるシステム乃至アーキテクチャを提供する。本実施形態によれば、消えてしまったデータの復元や多機器分散的な自動冗長化を優れた形態で実行して信頼性及び有用性を高めることができ、複数の機器に散在格納されているアセットを自動アーカイブ化することができ、ＣＤ、ＤＶＤ等の名称及びコンテンツを追跡・把握することができ、更には差分アップデートを自動実行することもできる。
【発明を実施するための最良の形態】
【０００８】
以下、その好適な実施形態を参照しつつ本発明について詳細に説明する。なお、これから説明する実施形態を変形乃至改良したものも本発明の技術的範囲に含まれうるので了解されたい。
【０００９】
［定義］
本願にて「アセット」とは、静止画（写真等）、動画（映画等）、音声又はマルチメディアプレゼンテーションを表すディジタルファイルのことである。その規格フォーマットはアセット種類毎に様々にある。
【００１０】
「所有者」とはアセットを所有する人物、即ちそのアセットを序列化及び管理する権限を有する人物のことである。従って所有者は他人に自分のアセット（オブジェクト）を見せることや改変を行わせることができる。但し、その場合でも、そのアセットに対する管理例えばアクセス制御は所有者だけが行うことができる。
【００１１】
「コレクション」とはその所有者が利用できるアセット例えば画像の全体集合のことである。
【００１２】
「個人的コレクション」とは“所有者”即ち“管理者”がいるアセットの集合のことである。その一部を他者と“共有”することもできる。共有されているアセットは各所有者の“拡張コレクション”の一部となるが、そうなった後もその所有者の個人的コレクションの一部であることに変わりはない。
【００１３】
「拡張コレクション」とはある人物からアクセス可能な範囲内にあるアセットの全体集合のことである。拡張コレクションには、その人物が専ら所有しているアセットだけでなく、例えば他の人物又は集団と“共用”しているアセット等も含まれる。
【００１４】
コレクションの「管理」とは、そのコレクションの所有者即ち管理者が、自らの好みに合うよう自コレクション内アセットの論理目録を序列化乃至調整することや、“共有”目的による他人のアクセスを許諾することや、そのアクセスのレベルを設定することである。
【００１５】
「ＧＡＭ」とはグローバルアセット管理のことである。
【００１６】
「レンディション」とは、見た目の同一性が保たれるよう作成されユーザ向けに提示される内部表現、例えば低解像度機器でもその概略がわかるように質を落として画像を表現したもののことである。この仕組みはシステム構成上都合がよい。
【００１７】
［概観］
まず、ディジタル写真の普及及び大衆化は、ユーザによってディジタル撮影される写真及び動画の本数の増大やその形態の多様化をもたらしている。また、そのために開発された様々な機器、システム、ネットワーク、サービス等によって、ユーザメディアエコシステムと呼ばれるシステムが形成されている。
【００１８】
図１に例示する通り、ユーザメディアエコシステム１０は三種類の主要ハブ乃至ノード、即ちユーザ家庭内メディア環境２０、オンラインフォトサービスサイト３０及び携帯機器４０から構成される。そのうちユーザ家庭内メディア環境２０は、テレビジョン受像器（ＴＶ）２１、ノートＰＣ２２、プリンタ２３、在宅執務用ＰＣ２４、メディアボックス２５等、家庭でよく見られるメディア録再機器と、それらの間を接続するホームネットワークとにより構成される。ネットワーク形成を担うのはメディアボックス２５であり、このボックス２５に通例通りＴＶ２１を接続すればケーブルＴＶチャネルを、またＰＣ２４やＰＣ２２に接続すればそれらに格納されている媒体即ちアセットを、家庭内のＴＶ２１で視聴することができる。
【００１９】
ユーザメディアエコシステム１０を構成する二種類目の主要ノードはインターネット経由でアクセスされるオンラインフォトサービスサイト３０である。ユーザは、ユーザ家庭内メディア環境２０をインターネットにブロードバンド接続又はダイアルアップ接続しておき、サイト３０のうちいずれかをＰＣ操作で選んでそこにアクセスする。アクセス先サイト３０では、ユーザ側から任意にアップロードされるアセットを、自サイトのサーバに保存し、ユーザからの指示に応じ印刷出力し、或いは他ユーザとのインターネット経由データ共有に供する。
【００２０】
ユーザメディアエコシステム１０を構成する三種類目の主要ノードはディジタルカメラ４１、カメラ付携帯電話４２等といった機器に代表される携帯機器４０である。この種の機器４０を使えば、ユーザは、自分の好きな場所で写真を撮ったり眺めたりすることができる。カメラ付携帯電話４２のように通信機能があるものなら、ユーザ家庭内メディア環境２０内機器やオンラインフォトサービスサイト３０にリモート接続することもできる。例えば携帯電話４２・サイト３０間をリモート接続するには、その携帯電話４２を無線経由で携帯電話サービスに接続し、そのサービス経由でデータを転送してもらえばよい。
【００２１】
このユーザメディアエコシステム１０には、ユーザがアセットの格納及びアクセスに使用できる機器が複数個ある。本発明で実現されるのはこうした分散システムの自動化である。自動化とは、自コレクション内アセットに対しユーザがいつでもまたシステム内のどのノードからでもアクセス、視聴、改変及び利用を行えるようにすること、とりわけそのアセットの所在ノード及び検索・発見手法を具体的に知らなくてもそれを行えるようにすることである。本願では、このシステム即ちコンピュータ、宅内機器、携帯機器、オンラインサービス等、１個又は複数個の機器乃至サービス上に所在しているユーザ所有アセット（静止画や動画等）を管理するシステムのことを、グローバルアセット管理システム即ちＧＡＭシステムと呼んでいる。本発明に係るＧＡＭシステムは、ユーザが自分のものだと思っている全アセットのメタデータからなる論理統合型総目録即ち「仮想コレクション」を形成する方式で実施するのが望ましいが、仮想コレクションが非常に大規模になりそうな場合等には、全アセットではなく一部のアセットのメタデータで仮想コレクションを形成する方式で実施してもよい。
【００２２】
自動化分散システムたるＧＡＭシステムの下では、ユーザは、自分の仮想コレクションの配下にあるアセットに対し、いつでもまたシステム内のどのノードからでもアクセス、視聴、改変及び利用を行うことができる。そのアセットの所在ノード及び検索・発見手法を具体的に知っている必要はない。これを実現するには基本的にアクセス、集成及び維持の三能力が求められる。「アクセス」とはリモートノード上に存するアセット及びそれに付随するメタデータに到達する能力のことであり、「集成」とはシステム内に散在する諸アセットを網羅しアセットの物理的分布に関わりなくコレクション全体の“仮想的な”目録を作成する能力のことであり、「維持」とは接続の変更やノードの接続／遮断を反映しつつこの仮想的な目録を記憶に保つ能力のことである。
【００２３】
図２に、ＧＡＭシステムの一例たるＧＡＭフォトシステム１００のアーキテクチャを示す。図中、オンラインフォトサービスサイト１１０のノードではアセットコレクションデータベース１１１、アセットレポジトリ１１２及び一組のＧＡＭサービス１１３が稼働している。データベース１１１は一種のデータ担体であり、ユーザを一群のアセット例えば画像に導くのに必要な全情報が蓄積されている。ただ、画像それ自体はデータベース１１１上にはなく、レポジトリ１１２内や各機器内のアセットキャッシュ１３１上に格納されている。データベース１１１に蓄積されているのは、ユーザプロファイル情報、どのレポジトリのどこにアセットがあるかを示すマップ、アセットを各種コンテナで表すユーザ向け目録等である。また、レポジトリ１１２はアセット例えば画像を長期に“保存”できるストレージ例えば物理メモリであり、それらの画像はいずれもデータベース１１１から参照を受ける。こうしたレポジトリ１１２では単純なファイルシステムを採用できるが、標準的なＯＳレベル機構等でアクセスできるなら他形式の外部データストレージを使用してもよい。そして、キャッシュ１３１は、ＧＡＭ接続サービスによって選択的に要求されたアセットを一時記憶する部材であり、これにより待ち時間が短縮されまた普通は各機器へのアクセスが容易になる。なお、キャッシュ１３１内のアセット例えば画像はデータベース１１１による追跡、把握の対象外である。
【００２４】
各ローカルノードでは、コレクションのディレクトリがこうした単純なファイルシステムを用いそのデータベース上に形成される。このコレクションについての知識それ自体もまたアセットの一種であり、マニフェストとしてノード間でやりとりされる。マニフェストの記述には、コレクションの内容を序列化するコンテナオブジェクト（アルバム、イベント等）が用いられる。各コンテナオブジェクトによって個別のアセット（静止画、動画等）が参照されるので、アプリケーションは、そのコンテナオブジェクトのコンテンツたるアセットを操作、例えば検索、コピー等することができる。また、各マニフェストの符号化には、ＭＰＶ、ＤＩＤＬ−Ｌｉｔｅ等のオープンスタンダードが用いられる。これは、このスタンダードでアセットを作成及び送受信できる機器の種類が多いためである。図５にマニフェストファイルのＸＭＬコード例を示す。
【００２５】
なお、別の実施形態としては、マニフェストを複数個のパーティションの寄せ集めとし個々のノードにパーティションを持たせる（即ち１個のマニフェストで一括してカバーするのではない）形態もありうる。そのノードがネットワークに接続されているときだけそのノード向けにパーティションを提供すればよいので、各ノードが他ノードによるマニフェストを自コレクションに集成即ち維持する必要はない。
【００２６】
更に、ユーザコミュニティをサポートするため“共有グループ“なる扱いをすることもできる。共有グループは仮想的に一人の人間として扱える。例えばアセットアクセス許諾は、共有グループに対しても個々の人間に対してと同じ要領で行える。
【００２７】
また、あるノードはほとんど常時接続だが（オンライン）他のノードはそれほどには接続しない（ニアライン）、というように、接続頻度はノード毎に違う。システムで追跡しているアセットのうち何個かが、アーカイブ等のようなオフラインの場所乃至メディアに取り込まれることすらある。ＧＡＭシステムならば、どの場合でも仮想コレクションに対し存分にアクセスすることができる。
【００２８】
更に、ユーザは、アセットのコレクションを視聴できれば満足するわけではなく、その改変、再序列化、更には他者との共有化等の操作を様々な接続状態で行いたいと望むかもしれない。所望のアセット又はアセット群のアーカイブをリムーバブルメディア上へのコピー操作で作成することや、そのアセットへの参照を恒久記録内に残すことを、望むかもしれない。ユーザのなかには、ロケーショントランスパレントであればよい（システムのどこにアセットがあるかがすっきりとわかればよい）とする者もあれば、バックアップや最新情報へのアップデート等を目的としたノード間アセット移動によりアセットの所在を自分で把握したいと望む者もあろう。これらのことから、ＧＡＭシステムでは、各アセットが改変を受けたか否かを追跡的に調べ、全システムに対し改変の事実を遺漏なく且つインテリジェントに知らせるようにしている。
【００２９】
例えばＧＡＭシステムの主要サービスの一つであるＧＡＭ接続サービスは、ＧＡＭシステムの稼働環境を監視し、稼働しているノードを認識し、また他ノードとの間でデータの共有化を図る役割を有している。アセット管理用データベースのアップデート情報を共有することや、画像その他のアセットを移動させること等、ＧＡＭシステムにおけるアセット共有形態をサポートするのに必要な種々のバックエンドサービスも、このＧＡＭ接続サービスの役割である。そして、個々のノードの特性及び能力を機器捜索中の仲間に知らせるサービスも、ＧＡＭ接続サービスの役割である。
【００３０】
次に、ＧＡＭシステムを構成する諸要素についてより詳細に説明する。まず、ＧＡＭシステムに不可欠な機能の一つはノード間マニフェスト交換である。これは、調和サービスによって他ノード上のマニフェストを取得し、それを利用して他ノード上のアセット用ディレクトリにアクセスできるようにする機能である。また、ノード間マニフェスト交換を好適に実行するため、マニフェスト内メタデータをオープンスタンダードに従い符号化する。各アプリケーションは、他ノード上のアセットを自ノードに取り込むことなく、例えば家庭内他ノード上の仮想コレクションの部分目録を利用例えば提示することができる。
【００３１】
また、ＧＡＭシステムでは、全ノードに亘りアセットを網羅する共有ディレクトリ記述即ち総目録を作成する。これは共有ディレクトリ記述であるので、マニフェストと同じくファイル化することも、またアプリケーション用のデータベースに格納することもできる。加えて、ＧＡＭシステム内の各ノードは、家庭環境等の様々な場所で生じる修正、改変に対し自ノード上の仮想コレクションを調和させ、その修正、改変の影響を記憶即ち保持する。
【００３２】
図３に、概念アーキテクチャレベルにて、ＧＡＭシステム構成要素及びそれらの間で交わされる一連のメッセージを示す。図示した構成要素及びメッセージは、マニフェスト間調和によって家庭等に散在するアセットの統合型総目録を作成及び保持するためのものである。なかでも調和サービス３２０は、他ノード上における仮想コレクション３５０の内容をマニフェスト交換で取得し、そのマニフェスト３６０を部分目録の内容としてアプリケーション３４０の利用に供する。また、調和サービス３２０には、そのマニフェスト３６０のバージョンを解釈及び分析する論理も組み込まれている。即ち、起動直後やスケジュール上で実行時期が到来したとき他ノードに対して調和を呼びかける（ポーリングを実行する）ことにより、アプリケーション３４０によって参照される目録即ち仮想コレクション３５０を、例えば家庭内他ノード上のそれに同期させる機能を有している。例えば調和を呼びかける側のノードは、他ノードに対しマニフェスト要求を送信し（メッセージ３０１〜３０３）、そのノードからマニフェストを受信して復号し、復号したマニフェストと自ノード上のマニフェストとの違いを調べ、データアクセスサービスを稼働させて自ノード上の仮想コレクションのバージョンを適宜アップデートする。調和の呼びかけを受ける側のノードは、自ノードに対するマニフェスト要求を受信すると、自ノード上の仮想コレクションにアクセスし、そのマニフェストを符号化して送信する（メッセージ３７２）ことによって、そのマニフェスト要求に応答する。なお、他ノードから調和の呼びかけを受けつつ他ノードに調和を呼びかけることもある。
【００３３】
また、自ノード上の仮想コレクションにローカルな修正、改変を反映させる際にはアプリケーションがデータアブストラクションレイヤを呼び出し、調和サービスが受信したマニフェストに基づき他ノード上での修正、改変を反映させる際にもそのデータアブストラクションレイヤを呼び出す。即ち、各ノードは、仮想コレクション配下のメタデータを、データアクセスサービスにより提供される一組のアクセッサを使って読み出し（メッセージ３７３及び３７４）、また同じくデータアクセスサービスにより提供される一組のミューテイタを使って修正、改変する（メッセージ３０５、３０７、３７５及び３７４）。仮想コレクションが自ノード内のアプリケーションデータベース上にあるなら、そのアプリケーションはそのデータベースに直接アクセスしてローカルな修正、改変を反映させることもできる。
【００３４】
更に、ＧＡＭシステム構成ノード間情報交換を効率化するには、そのアルゴリズムとしてバージョンベクトル利用型のアルゴリズムを使用する。即ち、仮想コレクション配下アセット数の増加につれ交換対象たるマニフェストのサイズが増すので、マニフェストまるごと送信だと家庭内ネットワークの帯域幅条件に抵触して顕著なパフォーマンス低下が生じてしまう。そこで、家庭ドメイン等に新規加入したノードにはマニフェストをまるごと送り込むが、既存のノードにはマニフェストまるごとではなく仮想コレクション内の修正、改変部分の情報のみを送り込む、というアルゴリズムを提供する。このアルゴリズムでは、バージョンベクトルを利用し散在ノード間でアセットのメタデータを複製、同期させる。
【００３５】
本アルゴリズムでは、他ノード上における仮想コレクションの変化を知るため、調和サービスがノードバージョンベクトルをやりとりする。例えば調和呼びかけ側ノードの調和サービスは、スケジュールに従い他ノードにバージョンベクトル要求を送信し、そのノードのノードバージョンベクトルを受信して復号し、復号したノードバージョンベクトルと自ノード上の諸オブジェクトバージョンベクトルとの違いを（他ノードに対しアップデート版のメタデータを要求することによって）調べ、その結果に従いデータアクセスサービスを稼働させることによって、自ノード上の仮想コレクションを適宜アップデートする。
【００３６】
調和の呼びかけを受ける側のノードは、自ノードに対するバージョンベクトル要求を受信したとき、自ノード上の仮想コレクションにアクセスして自ノードのノードバージョンベクトルを調べ、それを符号化して送信することによってバージョンベクトル要求に応答する。なお、他ノードからバージョンベクトル要求を受信しつつ他ノードにバージョンベクトル要求を送信して自ノード上の目録をアップデートすることもある。
【００３７】
更に、データアクセスサービスは、仮想コレクションの内容に修正、改変が施されるとオブジェクトバージョンベクトルをアップデートする。即ち、データアクセスサービスは、仮想コレクションを構成するオブジェクトのうちそのメタデータが修正、改変されたものに係るバージョンベクトルをアップデートし、その仮想コレクション内修正・改変オブジェクトの付加情報として保存する。
【００３８】
従って、ユーザは、いつでもまたどのノードでも、コレクションの全体即ちグローバルコレクションを一覧することができる。また、このバージョンベクトル利用型アルゴリズムは楽観的な複製アルゴリズムであり、ノードｉ，ｊのデータベースＤi，Ｄj間に一時的に違いが生じることを許容している。そのため、ノードｉ，ｊ間で、ユーザに示される目録が食い違うこともある。しかし、それら２ノードｉ，ｊ間が接続されている状態が十分に長い時間に亘り続けば、またその間に新たなアップデートが発生しなければ、データベースＤi，Ｄjはいずれ同じ内容に収束する。
【００３９】
なお、本アルゴリズムで使用するバージョンベクトルのうちノードバージョンベクトルは、個々の瞬間におけるデータベースの状態を１個のバージョンベクトルで表現したもの、即ちデータベース別のバージョンベクトルである。こうしたノードバージョンベクトルを利用することによって、自ノードを他ノードと同期させる必要があるか否かを各ノードで簡便且つ迅速に判別することができる。また、オブジェクトバージョンベクトルは個々のオブジェクトに関連づけられたバージョンベクトルである。これらのバージョンベクトルの実体はタイムスタンプ又はそのアレイであり、タイムスタンプは正の整数値である。この整数値即ちノードの論理時刻は、そのノードが自ノード内のデータベースをアップデートするたびに自ノード内の論理タイマをインクリメントすることによって、生成されたものである。
【００４０】
次に、下記諸点を前提として本アルゴリズムにつき説明する。
【００４１】
１．各ノードｎi内にデータベースＤiがあり、また各ノードｎiにノードバージョンベクトルＶＶiが対応付けられていること。
【００４２】
２．各ノードｎi内のデータベースＤiによって、そのノードｎiにわかる限りで、各オブジェクトｏｂｊの最新状態を保持させること。具体的には、データベースＤiが、四成分量｛ｉｄ（ｏｂｊ），ｖａｌｕｅ（ｏｂｊ），ｖｖ，ｔｓ｝で表されるオブジェクトｏｂｊからなること。但し、ｉｄ（ｏｂｊ）は各オブジェクトに対しユニークに割り振られたグローバルな識別子、ｖａｌｕｅ（ｏｂｊ）はそのオブジェクトの値、ｖｖはそのオブジェクトに係るオブジェクトバージョンベクトル、ｔｓはそのオブジェクトの値が最後にアップデートされ又はそのノードｉのデータベースＤiに追加された論理時刻におけるＶＶi［ｉ］の値である。
【００４３】
３．ＶＶi［ｋ］（但しｋ＝ｉ）で表される論理時刻が、ノードｉにおける現在の論理時刻であること。なお、ＶＶi［ｉ］は、ノードｉが自ノード内のデータベースＤiを修正、改変するたびにそれに先立ちインクリメントされる。
【００４４】
４．ＶＶi［ｋ］（但しｋ≠ｉ）で表される論理時刻が、ノードｉがノードｋから受信した情報についてのタイムスタンプのなかで最も最近のもののそれであること。なお、ノードｉ，ｋ間同期による直接受信だけでなく他ノード間同期を介した間接受信も含める。
【００４５】
５．同じ長さを有する２個のノードバージョンベクトルｖ1，ｖ2があるとき、１≦ｉ≦ｌｅｎｇｔｈ（ｖ1）を満たす全てのｉについて、ｖ1［ｉ］＜ｖ2［ｉ］ならｖ1＜ｖ2が成り立ち、ｖ1［ｉ］≧ｖ2［ｉ］なら成り立たないこと。１≦ｉ≦ｌｅｎｇｔｈ（ｖ1）を満たす全てのｉについて、ｖ1［ｉ］＞ｖ2［ｉ］ならｖ1＞ｖ2が成り立ち、ｖ1［ｉ］≦ｖ2［ｉ］なら成り立たないこと。１≦ｉ≦ｌｅｎｇｔｈ（ｖ1）を満たす全てのｉについて、ｖ1［ｉ］＝ｖ2［ｉ］ならｖ1＝ｖ2が成り立ち、ｖ1［ｉ］≠ｖ2［ｉ］なら成り立たないこと。これらを満たさない２個のノードバージョンベクトルは両立し得ない。言い換えれば、あるノードバージョンベクトル（第１ベクトル）の各要素が別のノードバージョンベクトル（第２ベクトル）の対応する要素未満の値ならば第１ベクトルが第２ベクトルより短小になるということ、並びに第１ベクトルが第２ベクトルより短いという条件を完全に成り立たせるには第１ベクトルの要素のうち少なくとも１個が第２ベクトルの対応する要素より小さいという条件を完全に成り立たせなければならないということ。２個のノードバージョンベクトルが両立し得ない値になるのは、対応するオブジェクトが同時期にアップデートされた結果その値に不整合（コンフリクト）が生じたときであり、それを解決するのにユーザの介入が必要になることもありうる。
【００４６】
６．オブジェクトバージョンベクトルとオブジェクトとの対応関係が下記アルゴリズムに記載の要領で維持されること。即ちそのオブジェクトが直近にアップデートされた論理時刻が保存されること。
【００４７】
７．各ノードｎiがノード集合Ｓiを構成すること。即ち、現存ノードｎiの集合をシステム構成部分として扱い同期の対象にすること。
【００４８】
このアルゴリズムに従い同期処理を実行する場合、まずノードｉにて次の処理
【数１】
2009544070.tif 000003
を実行する。
【００４９】
この処理では、ＶＶi［ｄ］＜ＶＶd［ｄ］が成り立ったときに、前回ノードｉ，ｄ間で通信が行われた後ノードｄが自ノード内のデータベースＤdを修正、改変したと見なしている。これが生じるのは、ノードｄが、独自に１個又は複数個のオブジェクトをアップデートした場合や別のノードからアップデートを受信した場合である。また、この処理を相互排他（ｍｕｔｅｘ）ブロック内で実行するのは、同期手順実行中にローカルなアップデートが生じることや、また他ノードからの同期要求に応答しているノードが他ノードに同期を呼びかけることを、防ぐためである。
【００５０】
ｒｅｑｕｅｓｔＵｐｄａｔｅｓメソッドでは次の処理
【数２】
2009544070.tif 000004
を実行する。
【００５１】
即ち、ｒｅｑｕｅｓｔＵｐｄａｔｅｓメソッドではまず、タイムスタンプＶＶd［ｉ］に係る時刻以後に発生した全アップデート分を欲する旨の要求を他ノードｄに送信し、ノードｄからアップデート分を１個ずつ受信する。全アップデート分を受信し終えたら、自ノードバージョンベクトルの各要素をノードｄのバージョンベクトルの対応要素と比較し、いずれか大きい方を以て自ノード側要素をアップデートする。このアップデートを実行することによって、ノードｉは、自ノードｉで未受信の新規アップデート分だけを他の諸ノードから受信できる状態になる。但し、アップデート分を受信する処理でタイムアップが生じた場合、このノードｉのノードバージョンベクトルはアップデートされない。
【００５２】
他方、ｓｅｎｄＲｅｑｕｅｓｔメソッドにより生成された要求を受信した側のノード（ｒｅｃｉｐｉｅｎｔ）では、次の処理
【数３】
2009544070.tif 000005
を実行する。
【００５３】
即ち、要求受信側ノードは、次の処理
【数４】
2009544070.tif 000006
に係るｓｅｎｄＵｐｄａｔｅｓメソッドを実行する。
【００５４】
ｓｅｎｄＵｐｄａｔｅｓメソッドでは、従前のアップデート分を送信しながら自ノードにおけるアップデート発生分を処理する、という厄介な問題を回避するため、送信対象オブジェクトをｍｕｔｅｘブロック内で選択している。選択されるオブジェクトは、アップデート要求元ノード（ｒｅｑｕｅｓｔｏｒ）との最近の通信以後に改変、修正された可能性があるオブジェクトである。即ち、要求側ノードのバージョンベクトルの要素に比しそのタイムスタンプｏｂｊ．ｔｓが小さいオブジェクトを選び出す。ｏｂｊ．ｔｓ値を利用するのは、他ノードに送信した方がよいオブジェクト即ち候補オブジェクトを効率よく選び出すためである。タイムスタンプであるｏｂｊ．ｔｓ値は単純なスカラー値であるので、バージョンベクトル全体を比較するのに比べかなり効率的に、候補オブジェクトを選定することができる。
【００５５】
その後、このアップデート送信元ノードは要求元ノードへの送信を実行する。送信されるのはそのバージョンベクトルの値が要求元ノード側の対応するそれより大きなオブジェクトだけであるので、要求元ノードが既に他ノードから受信済のデータがアップデート送信元ノードから送られることはない。また、アップデート分のオブジェクトをタイムスタンプ順にソートして送信するので、通信処理が終了する前に一方又は双方のノードがクラッシュした場合でも、そのノードを再起動させればアップデート分の損失なしにアップデートを行うことができる。これは、要求受信側ノードがアップデート送信元ノードとして送信するオブジェクトが、要求受信側ノードがこれまでに受信したアップデート分のなかで最新のものになるからである。
【００５６】
また、アップデート分のオブジェクトは一旦バファリングされｓｅｎｄＵｐｄａｔｅメソッドによりひとまとまりに送信される。これはパフォーマンスを高めるためである。アップデート分を全て送信し終えたら、アップデート送信元ノードは更に最新のノードバージョンベクトルを送信する。このベクトルの中身は、初期要求に応じそのノードから既に送信済のノードバージョンベクトルに比べ、新しくなっていることがある。
【００５７】
翻って、そのアップデート分を受信する側のノードでは、実行中のｇｅｔＵｐｄａｔｅメソッド
【数５】
2009544070.tif 000007
内でｒｅｃｅｉｖｅＵｐｄａｔｅメソッドを呼び出し、送信されてくるアップデート分を次から次へと受信する。
【００５８】
アップデート分を受信したら、まず自ノードにおける修正乃至改変とコンフリクトしていないか調べる。その際には、受信したオブジェクトバージョンベクトルと、自ノード上の対応するオブジェクトバージョンベクトルとを比べる。前者が後者より大きい（即ち新しい）場合には、自ノードオブジェクトを受信オブジェクトによってアップデートするためｄｏＵｐｄａｔｅＯｂｊｅｃｔメソッドを実行する。但し、既にその内容でのアップデートが済んでいる諸ノードに対する不要なオブジェクト送信を避けるため、ｄｏＵｐｄａｔｅＯｂｊｅｃｔメソッドを呼び出す際にその２個目のパラメタにｆａｌｓｅ（偽）をセットすることにより、オブジェクトバージョンベクトルの値は変えないでおく。逆に、受信したオブジェクトバージョンベクトルの値が自ノード上の対応するオブジェクトバージョンベクトル以下である場合は、受信したオブジェクトのコピーでアップデートせずに自ノード上の対応するオブジェクトを使用し続けるようにする。アップデート送信元ノードはその種のオブジェクトを送信しないので通常ならこの種の状況は発生しないが、アップデート処理中断を経たノードが他ノードにアップデート分を要求する際に発生する可能性がある。そして、オブジェクトバージョンベクトル間の比較が成り立たない場合即ちそれらの値の間にコンフリクトが発生している場合には、コンフリクトリゾルバを用いてそのコンフリクトを解消する必要がある。次に示すｒｅｓｏｌｖｅＣｏｎｆｌｉｃｔ関数
【数６】
2009544070.tif 000008
は、自動的に又はユーザとのやりとりを通じてそのコンフリクトを解消する関数である。
【００５９】
この関数では、まずそのコンフリクトを解消可能か否かを調べる。解消可能であれば、対をなす２個のオブジェクトバージョンベクトルのうち大きな方をそのオブジェクトのオブジェクトバージョンベクトルとする。この場合、コンフリクト解消結果を他ノードへも広める必要があるので、自ノード上の対応するオブジェクトバージョンベクトルもインクリメントさせる。
【００６０】
オブジェクトを実際にアップデートするのは次のｄｏＵｐｄａｔｅＯｂｊｅｃｔメソッド
【数７】
2009544070.tif 000009
である。
【００６１】
このメソッドが実行されると自ノード側のタイムスタンプＶＶi［ｉ］は必ずインクリメントされ、そのオブジェクトのタイムスタンプにも必ずその値がセットされる。また、オブジェクトバージョンベクトルをアップデートするか否かはｕｐｄａｔｅＯｂｊＶＶフラグの値で決まる。他ノードから受信したオブジェクトの値に従い単純にデータベースをアップデートする場合でも、オブジェクトバージョンベクトルはアップデートせずに元の値のままにする。そうしないと、そのオブジェクトの送信元たる他ノードを含む他の諸ノードに対しこのオブジェクトが広まり、そのオブジェクトがローカルに修正、改変されたものと見なされてしまうからである。但し、コンフリクト解消のために呼び出された場合はオブジェクトバージョンベクトルもアップデートする。
【００６２】
そして、自ノードにおけるローカルなアップデートは、次のメソッド
【数８】
2009544070.tif 000010
で処理する。
【００６３】
以上述べた通り、本アルゴリズムは本質的に一方向性のアルゴリズムとして設計されている。即ち、２ノード間を完全に同期させるため、本アルゴリズムを各ノードで個別実行させるように設計されている。従って、一時期切り離されていたノードをネットワークに再接続した場合、そのノードは、他の全てのノードとのやりとりを通じ自ノードに未反映のアップデート分を取得しなければならない。ただ、私的画像管理等のようにノードの個数がさほど多くない用途ならば、これはさほど問題にならない。
【００６４】
また、本アルゴリズムを実行できないシステム状態下でユーザが同一アセットに対し別々のノードで修正乃至改変を施した場合、コンフリクトになる可能性がある。そうしたコンフリクトでも本アルゴリズムの実行で検知することができる。更に、アセット１個当たり１個のバージョンベクトルを配するのではなく、各アセットのメタデータフィールド１個当たり１個のバージョンベクトルを配することもできる。システム側でメタデータレベルのバージョン追跡が実行されていれば、ユーザは、同一アセットに係る別々のメタデータ構成要素を、コンフリクトなしでアップデートすることができる。
【００６５】
そして、バージョンベクトルは、メッセージ伝達システムやデータベース複製システムでは広範に利用されているが、これまでにピアトゥピアファイル共有に広く適用されたことはない。特に、本アルゴリズムでは、バージョンベクトルを使用することによって、末端のユーザが自分のアセットに対しロケーショントランスパレントな（どこにあるのかすっきりわかる）形態にてアクセスできるようにしている。ユーザは、自宅のメディアサーバ経由でも、自分の無線カメラ等の携帯機器経由でも、或いはオンラインサービス経由でも、自分のアセットにアクセスしこれを管理することができる。ユーザがアクセスするレンディションが常にそのアセットの高解像度レンディションになるとは限らないが、本アルゴリズム下では、ユーザは自コレクションのブラウズ、操作、序列化等といった一般的操作を実行することができ、また各アセットの（システム構築者やユーザが複製対象に選定した）低解像度レンディションを一覧することもできる。
【００６６】
図４に、ＧＡＭシステム構成要素及びそれらの間で交わされる一連のメッセージのうち、アセット操作及びノード間移動（即ち検索処理）を実行するためのものを示す。
【００６７】
まず、ユーザの家庭等にあるノード上で実行されるアプリケーションは、そのアセットに係るファイルがどのノード上にあろうとも、そのアセットを検索、アップデート、保存及びコピーできねばならない。そのため、アセットアクセスサービス４４０は、アプリケーション４６０からの要求に応じアセットに関する次のような処理を実行する。即ち、編集又は印刷の対象となるアセットを検索し（メッセージ４０１）、編集されたアセットをアップデートして保存し、追加又は編集したセットを格納又はコピー保存し、ユーザが使用するアプリケーション上でデータアクセスサービスを稼働させる手順を制御し（メッセージ４０７〜４０９）、仮想コレクションにおける諸レンディションのアセットの所在を調べ、そしてレポジトリサービス４３０を介して仮想コレクション４７０外アセットのレンディションの所在を把握する。また、レポジトリサービス４３０は、ストレージサーバ上にあるアセットの目録へのアクセスを可能にするほか、他ノード上にあるアセットに関する情報も提供する。当該情報を提供するには、その他ノードがリモートからの要求に応じてアセットのファイルを送り返してくれなければならない。即ち、アセット管理開始側ノードのレポジトリサービス４３０は、アセット管理に関する要求（メッセージ４０２）を受け取ったとき、そのうち幾つかの要求（検索、アップデート乃至保存）については自ノード上で満足させ、他の要求（検索乃至コピー）については例えば家庭内にある他ノードにアクセスして満足させる（メッセージ４０４〜４０６）。
【００６８】
また、レポジトリサービスは、他ノードからアセットのファイルを受信したとき、それを保存する一方自ノードの仮想コレクションをアップデートする（メッセージ４０３，４０９）。
【００６９】
他方、アセット管理に関する要求を受信した方のノードでは、それに応じてアセットを探し（メッセージ４０５，４９４，４９６）、見つかったファイルを要求元ノードに送信する（メッセージ４９２〜４９３）。従って、レポジトリサービスは、アーカイブ化、バックアップ、リストア等に際し、ノード内アセット移動やノード間アセット移動の実行に役立つ。
【００７０】
こうしたアセット移動や前掲の調和に際しては他ノードへの要求送信及び当該他ノードからの回答受信が必要になるが、メッセージアブストラクションレイヤが介在するので、調和サービス及びレポジトリサービスではそうした通信の細部を把握する必要がない。ノード間通信に使用する送信フォーマット及びプロトコル（ソケット、ＦＴＰ、ウェブサービス等）へのバインディングも、メッセージアブストラクションレイヤで適合させることができる。メッセージサービスは、送信側ノード側に立つときはアセットを他ノードとやりとりしたいとの要求を送信し、アセットの要求を受ける受信側ノード側に立つときはその種のメッセージを受信する。
【００７１】
また、各ノードは自ノードのプロパティを知っているが、自ドメイン内他ノードのそれは知らないことがあるので、自ドメイン内他ノードを動的に探してノードプロファイルの送信を要求する。接続サービスはプロファイルを通じそのノードについての情報を認識する。ノードプロファイルはメタデータのエントリの一つであり、要求に応じ送信される情報である。ノードプロファイルは、そのノードだけがアプリオリに知っている静的なプロパティを定義している。ノードプロパティに含まれるのは、例えばサービス及び能力についての情報（例えばマニフェスト付ストレージノードである等の情報）や、そのノードと連絡を付ける手段についての情報（例えばプロトコルや証明書についての情報）である。
【００７２】
更に、グローバルユーザアカウント、諸ユーザ及びグループに対するアセットアクセス優先度制御、ノード間移動時交換情報保護等を伴うセキュリティエリアを、ＧＡＭシステム内に幾つか設けてもよい。
【００７３】
そして、アーカイブ化機能及びバックアップ／リストア機能をイベントサービスによって提供してもよい。これらは、データベースやディジタルアセットのコピーを作成する機能であり、システム障害への予備的対策になるだけでなく、記憶／記録空間の解放等につながることもある。
【００７４】
アーカイブ化とは、アセットをオフラインストレージ等といった比較的信頼の置ける媒体上にコピー又は移動すること、特にいつでもまたいつまでもそれを視聴できるようにしておくことである。アーカイブ化したアセットはユーザによるマニュアル操作等特定の操作乃至指令で随時呼び出すことができる。アーカイブの所在はアセット管理用のデータベースで把握できる。対応するアセットに改変、修正等が施された後もアーカイブ内のアセットについての情報は保持される。ノード間を跨ったアーカイブ化も可能である。そして、ユーザは、アプリケーション上で明示的に指示することにより、アーカイブ内のアセットをシステム内に移動させることもできる。
【００７５】
これに対しバックアップとは、システム障害発生後に自分のコレクションを復元することができるよう、任意時点でノードの“スナップショット”を撮ること、即ちユーザ所有コレクションのうちそのノード内のデータベースやレポジトリ上にある部分に係るデータをコピーしておくことである。アーカイブ内ではアセットのコンテキストが原状通り保たれるがバックアップセット内ではそうでないので、通常の動作でバックアップセット内アセットにアクセスすることはできない。また、ユーザ所有コレクションに属するアセットは様々なノードに散在しているので、それらを一個所にまとめてバックアップするのは難しい。従ってバックアップは個々のノード内で行った方がよいが、全アセットを記憶させうる程にリソースが豊富なノードがあるのであれば、そのノードにアセットが“自動コピー”されるようシステムをセッティングすることもできる。この自動コピーモードでは、ユーザ所有コレクション全体をそのノードにまとめてバックアップすることができる。更に、ＧＡＭシステムやバックアップ装置がサポートしている標準的な序列化方式に則り、バックアップ範囲を指定することや、一括バックアップか差分バックアップかを指定することや、バックアップ周期を指定することもできる。ＧＡＭシステムのデータベースには、アセット（アセット自体やデータベース上のデータ）がバックアップされた日時を記録しておく。バックアップが行われていれば、所要ノード上のＧＡＭ情報にバックアップセットをコピー、上書きすることによって、そのノードをバックアップ時そのままの状態に戻すことができる。
【００７６】
なお、本発明は本願で図示説明した実施形態には限定されない。別紙特許請求の範囲による定義からわかる通り、本発明の技術的範囲内で更なる変形乃至改良をこらすことが可能である。
【図面の簡単な説明】
【００７７】
【図１】ユーザメディアエコシステムを示す図である。
【図２】システムアーキテクチャを示す図である。
【図３】仮想コレクション調和用コンポーネントを示す図である。
【図４】アセットレポジトリ管理用コンポーネントを示す図である。
【図５】ＸＭＬで記述したマニフェストを示す図である。
【符号の説明】
【００７８】
１０  ユーザメディアエコシステム、２０  ユーザ家庭内メディア環境、２１  ＴＶ（テレビジョン受像器）、２２  ノートＰＣ（パーソナルコンピュータ）、２３  プリンタ、２４  在宅執務用ＰＣ、２５  メディアボックス、３０，１１０  オンラインフォトサービスサイト、４０  携帯機器、４１  ディジタルカメラ、４２  カメラ付携帯電話、１００  ＧＡＭ（グローバルアセット管理）フォトシステム、１１１  アセットコレクションデータベース、１１２  アセットレポジトリ、１１３  ＧＡＭサービス、１２０  宅内システム、１３０  ユーザ携帯機器、１３１  アセットキャッシュ、１４０  小売りサービス、１５０  バックオフィスサポート、１６０  基本サービス、１７０  付加サービス、１８０  メタデータ交換方式、３００，４００  第１ノード、３０１，３７６  目録調和要求、３０２，４０４，４９２  ノードチェック、３０３  マニフェスト要求、３０４  マニフェスト受信、３０５，３７５  目録修正要求、３０６  データアクセス要求、３０７，３７４  仮想コレクションアップデート、３１０，４２０  接続サービス、３２０  調和サービス、３３０，４５０  データアクセスサービス、３４０，４６０  家庭用アプリケーション、３５０，４７０  仮想コレクション、３６０  コレクションのマニフェスト、３７０，４９０  第２ノード、３７１  接続サービス要求、３７２  マニフェスト生成送信、３７３  目録取得要求、４０１  検索要求、４０２  アセット取得要求、４０３  ファイル格納、４０５  ファイル要求、４０６  アセットファイル受信、４０７  情報格納要求、４０８，４９４，４９５  情報取得要求、４０９  仮想コレクションアクセス／アップデート、４１０  ファイルストレージ、４１５  アセットのファイル、４３０  レポジトリサービス、４４０  アセットアクセスサービス、４９１  ファイル取得、４９３  アセットファイル送信、４９６  仮想コレクション読出、４９７  アセットアクセス要求。
【図１】
2009544070.tif 000011
【図２】
2009544070.tif 000012
【図３】
2009544070.tif 000013
【図４】
2009544070.tif 000014
【図５】
2009544070.tif 000015
【国際調査報告】
2009544070.tif 000016
2009544070.tif 000017