(57)【要約】  本発明は、ＢＬＯＢを管理するシステム１０及び方法に関する。このシステムは、ファイルサブシステム２０及びデータベースサブシステム３０を有し、データベースサブシステム３０は、ＢＬＯＢ５０を有するファイル４０のファイル名と、ＢＬＯＢ名との間にある関係を有する。ＢＬＯＢ５０を含んでいるファイル４０の修正があった場合、新しいファイル名を持つ新しいファイルが作成され、新しいファイル名とＢＬＯＢ名との間にある関係が、前記データベースサブシステム３０におけるデータベースのトランザクション内に作成される。データベースのトランザクションのＡＣＩＤ特性をファイルにも適用することにより、システム１０におけるＢＬＯＢの操作は、ＡＣＩＤ要件を満たす一方、ファイルの操作効率は維持されることが保証される。
2008524688.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを作成、記憶、修正及び／又は削除するように構成されるファイルサブシステムを有する、ＢＬＯＢを管理するためのシステムであり、前記ファイルサブシステムにおける特定のファイルに、ＢＬＯＢ名と関連付けられた特定のＢＬＯＢを含むように構成される前記システムにおいて、
−前記システムは、データベースサブシステムをさらに有している、
−前記システムは、前記特定のファイルと関連付けられるファイル名を生成するように構成される、及び
−前記データベースサブシステムは、前記ファイル名と前記ＢＬＯＢ名との間にある関係を作成するように構成される
ことを特徴とするシステム。
【請求項２】
前記データベースサブシステムは、前記ファイル名と前記ＢＬＯＢ名との間にある前記関係を記憶、修正、リネーム及び／又は削除するように構成されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記関係は、前記データベースサブシステムにおけるテーブルに含まれ、前記テーブルは、特定のＢＬＯＢを含んでいる特定のファイル各々に対する、前記ＢＬＯＢ名と前記ファイル名との間にある関係を有するように構成されることを特徴とする請求項１又は２に記載のシステム。
【請求項４】
請求項１、２又は３に記載のシステムにおいて、前記システムの処理を制御するように構成されるコントローラをさらに有することを特徴とするシステム。
【請求項５】
前記ファイル名はＧＵＩＤ及びバージョンインデックスを有することを特徴とする請求項１乃至４の何れか一項に記載のシステム。
【請求項６】
請求項１乃至５の何れか一項に記載のシステムにおいて、前記システムは、特定のＢＬＯＢを修正する際、前記修正された特定のＢＬＯＢを含み、新しいファイル名を持っている新しいファイルを作成し、前記ＢＬＯＢ名を前記データベースサブシステムにある前記新しいファイル名と関連付けるように構成されることを特徴とするシステム。
【請求項７】
前記新しいファイル名は、前記ＧＵＩＤ及び更新されたバージョンインデックスを有することを特徴とする請求項６に記載のシステム。
【請求項８】
ファイルを作成、記憶、修正及び／又は削除するように構成されるファイルサブシステムを有するシステムに、ＢＬＯＢ名を持つ特定のＢＬＯＢを含んでいる特定のファイルを作成する方法において、
−ファイル名を生成するステップ、
−前記システムの一部であるデータベースサブシステムにおいて、前記ファイル名と前記ＢＬＯＢ名との間にある関係を作成するステップ、並びに
−前記ファイルサブシステムにおいて前記特定のファイルを作成し、前記ファイル名を前記特定のファイルに関連付け、及び前記ＢＬＯＢ名と関連付けされた前記特定のＢＬＯＢを前記特定のファイルに書き込むステップ
を有することを特徴とする方法。
【請求項９】
前記関係は、前記データベースサブシステムにおけるテーブルに含まれ、前記テーブルは、特定のＢＬＯＢを含んでいる各特定のファイルに対する、前記ＢＬＯＢ名と前記ファイル名との間にある関係を有するように構成されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記ファイル名を生成するステップは、前記システムの一部であるコントローラにおいて行われることを特徴とする請求項８又は９に記載の方法。
【請求項１１】
前記ファイル名は、ＧＵＩＤ及びバージョンインデックスを有するように生成する請求項８、９又は１０に記載の方法。
【請求項１２】
前記ファイル名を生成するステップは、
−前記特定のＢＬＯＢに対する、ＧＵＩＤ及びバージョンインデックスを生成するステップ、及び
−前記ＧＵＩＤ及び前記バージョンインデックスを結合して、前記特定のＢＬＯＢを有する特定のファイルに対するファイル名にするステップ
を有することを特徴とする請求項８乃至１１の何れか一項に記載の方法。
【請求項１３】
−前記データベースサブシステムにおいて、前記ファイル名と前記ＢＬＯＢ名とを結合するステップを有するデータベースのトランザクションを開始するステップ、
−ファイル名を生成するステップ、前記ファイル名と前記ＢＬＯＢ名とを結合するステップ、及び前記ＢＬＯＢを前記特定のファイルに書き込むステップが成功したかを検査するステップ、並びに
−先行する前記ステップが成功した場合にのみ、前記データベースのトランザクションを確定するステップ
を有することを特徴とする請求項８乃至１４の何れか一項に記載の方法。
【請求項１４】
ファイルを作成、記憶、修正及び／又は削除するように構成されるファイルサブシステムを有するシステムに、ＢＬＯＢ名を持つ特定のＢＬＯＢを含んでいる特定のファイルを修正する方法において、
−前記システムの一部であるデータベースサブシステムにおいて、データベースのトランザクションを開始するステップ、
−前記特定のＢＬＯＢを有する特定のファイルに対する前記ファイル名を取り出すステップ、
−新しいファイル名を作成するステップ、
−前記新しいファイル名と前記ＢＬＯＢ名とを結合するステップ、
−前記特定のＢＬＯＢを修正し、前記修正した特定のＢＬＯＢを前記ファイルサブシステムにある、前記新しいファイル名と関連付けされている新しいファイルに書き込むステップ、
−先行するステップの全てが成功したかを検査するステップ、及び
−前記検査が前記先行するステップが成功したことを示す場合、前記データベースのトランザクションを確定するステップ
をさらに有することを特徴とする方法。
【請求項１５】
前記新しいファイル名は、前記ＧＵＩＤ及び更新されたバージョンインデックスを有することを特徴とする請求項１４に記載の方法。
【請求項１６】
ファイルを作成、記憶、修正及び／又は削除するように構成されるファイルサブシステムを有するシステムにおいて、ＢＬＯＢ名を持つ特定のＢＬＯＢを含んでいる特定のファイルを削除する方法において、データベースサブシステムにおいて前記ＢＬＯＢ名とファイル名との間にある関係が存在し、
−前記データベースサブシステムにおいて、データベースのトランザクションを削除するステップ、
−前記データベースサブシステムにおいて、前記ＢＬＯＢ名と前記ファイル名との間にある前記関係を削除するステップ、
−先行する前記ステップが成功した場合、前記データベースのトランザクションを確定するステップ、及び
−前記先行するステップが成功した場合、前記ファイルサブシステムにおいて、前記特定のＢＬＯＢを含んでいる既存の前記ファイルを削除するステップ
をさらに有することを特徴とする方法。
【請求項１７】
請求項８乃至１６の何れか一項に記載の方法を行うように構成されるコンピュータプログラム。
【請求項１８】
１つ以上の処理ユニットに請求項８乃至１６の何れか一項に記載の方法を行わせるための命令を記憶したコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルを作成、記憶、修正及び／又は削除するファイルサブシステムを有する、ＢＬＯＢ(Binary Large Objects)を管理するためのシステムに関し、前記システムは、前記ファイルサブシステムにおける特定のファイルに、ＢＬＯＢ名と関連付けられる特定のＢＬＯＢを含むように構成される。本発明はさらに、システムにおいて特定のＢＬＯＢを含んでいる特定のファイルをそれぞれ作成、修正及び削除する方法にも関し、このシステムは、ファイルを作成、記憶、修正及び／又は削除するように構成されるファイルサブシステムを有し、前記特定のＢＬＯＢはＢＬＯＢ名を持つ。
【背景技術】
【０００２】
ＢＬＯＢの形式で記憶される大量のデータ、すなわち数百ＭＢのデータを処理することが必要なアプリケーションがある。一般的にそのデータは（医療用）画像、音声、動画及びマルチメディアファイルに関する。１つ以上の上記ＢＬＯＢが修正される場合、よく知られたＡＣＩＤ（原子性、一貫性、独立性、耐久性）要件が満たされなければならない。
原子性：関連するＢＬＯＢの全てにおけるデータの全てが修正されるか、又は変更を行わないかである。前記修正の幾つかだけが施されることが決して起きてはならない。これが補償されない場合、修正したデータと修正されていないデータとの結果生じる混合が利用できない。
一貫性：複数のＢＬＯＢを同時に修正することが可能でなければならない。これが補償されない場合、幾つかのＢＬＯＢは修正され、残りが未だ修正を待つようなことが頻繁に起こり、上記データの混合が利用できない。
独立性：２つのプログラムが同じＢＬＯＢ又はＢＬＯＢが重複する組を同時に修正してはならない。これが補償されない場合、異なる修正により結果生じる混合が利用できない。
耐久性：前記修正が完了したとき、記憶システム又はコンピュータが後に動作を停止した場合、これら修正が失われないように、これら修正は、（単なるキャッシュメモリではなく）ディスク上に記憶されなければならない。これが補償されない場合、ユーザは、これら修正が実際に保存されていない場合、変更が行われたと信じてもよい。
【０００３】
ＣＯＴＳ(common off-the-shelf)ソフトウェア、すなわち標準的なファイルシステム及びデータベースソフトウェアに基づくこの要件を、よく知られたアプリケーションプログラミングインターフェース、例えばデータベース操作用のポジックス(Posix)ファイルシステム機能及びＳＱＬステートメントを使用して満たされることを可能にすべきである。
【０００４】
その上、追加の要件は、ファイルシステムにあるファイルのＩＤが保全されることであり、すなわちＩＤが失われてはならないことである。例えば、ファイルのバックアップが行われた場合、このファイルが修正され、次いでこのバックアップが復元されるべきである。この場合、前記バックアップ及びファイルシステムにあるファイル名を単に見ることにより、バックアップにおいてどのファイルが修正したファイルに関連しているかが可能でなければならない。
【０００５】
例えば、DOS FAT、NTFS、Linux ext2等の標準的なファイルシステムにおいて、"ファイルの作成"、"ファイルのコンテンツの更新"、"ファイルのリネーム"、"ファイルの削除"のような簡単な操作が可能である。これらはＡＣＩＤ要件を満たすには不十分である。例えば、ある構造のNTFS又はLinux ReiserFSのようなジャーナリングファイルシステムは、単一のファイルに対してはＡＣＩＤ要件を満たすが、ファイルの組に対してはＡＣＩＤ要件は満たさない。その上、ファイルシステムが一般的にＢＬＯＢを記憶することが可能であったとしても、ＢＬＯＢに関するトランザクションは一般的に支援されない。ＢＬＯＢをファイルシステムに単に記憶し、このＢＬＯＢに関するトランザクション無しで行うことが示唆されている。
【０００６】
例えばMS SQLサーバ又はオラクルのような標準的なデータベースシステムは、一般的に、ＡＣＩＤ要件を満たすための機能を提供するが、これらシステムは大きなファイルの組において動作するのには最適ではない。標準的なデータベースシステムにおける実施は、大きなデータサイズの問題となることがよく知られている。最も標準的なデータベースは、数十又は数百ＭＢまでのサイズを持つＢＬＯＢを含んでいるトランザクションに幾分の支援を提供するが、これらデータベースは数百ＭＢを含んでいるトランザクションには最適ではない。これは通常、標準的なデータベースがＢＬＯＢを管理することには利用できなくさせる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、ＢＬＯＢを管理するためのシステムを提供することであり、このシステムは上述したＡＣＩＤ要件及びファイルＩＤの保全の要件に準拠すべきである。
【課題を解決するための手段】
【０００８】
本発明は、導入部のシステムは、このシステムがデータベースサブシステムをさらに有すると共に、前記特定のファイルと関連付けられるファイル名を生成するように構成されることを特徴とし、前記データベースサブシステムは前記ファイル名と前記ＢＬＯＢ名との間にある関係を作成するように構成される。
【０００９】
ここで、ファイルサブシステム及びデータベースサブシステムの機能は、ファイルサブシステムの機能が例えばファイルを作成、記憶、修正及び／又は削除するのに使用されることができる一方、データベースサブシステムの機能は、ファイルサブシステムにおけるどのファイルが特定のＢＬＯＢに関係しているかを常に把握しておくのに使用されるように、結合されている。これにより、本発明によるシステムは、データベースのトランザクションをファイルに適用する方法を提案することにより、上述した問題を改善する。
【００１０】
このシステムにおいて、如何なるＢＬＯＢ名及びファイル名も一義的であるべきで、ファイル名と、関連するＢＬＯＢのＢＬＯＢ名との間にある関係は全単射(bijective)であるべきゆえに、如何なる一義的なファイル名もある一義的なＢＬＯＢ名と関連付けされ、如何なるＢＬＯＢ名もある一義的なファイル名と関連付けされる。"ファイル名がＢＬＯＢ名と関連付けされている"及び"ファイル名がＢＬＯＢ名と結合される"と言う表現は、"ファイル名はＢＬＯＢ名と関係している"及び"ファイル名とＢＬＯＢ名との間に関係が存在している"と言う表現と同義であることに注意すべきである。
【００１１】
上述したことにおいて、ファイル名及び／又はＢＬＯＢ名に関する前記関係及び／又は何らかの適当な情報は、前記システムにある適当な構成要素によりアクセス可能であることを理解すべきである。
【００１２】
好ましくは、データベースサブシステムは、前記ファイル名と前記ＢＬＯＢ名との間にある前記関係を記憶、修正、リネーム及び／又は削除するように構成される。これにより、前記データベースサブシステムにおける前記関係は、前記ファイルサブシステムにあるファイルに含まれるＢＬＯＢに対する変更に従って変更されることができる。
【００１３】
前記システムの好ましい実施例において、前記関係は、前記データベースサブシステムにおけるテーブルに含まれ、このテーブルは、ＢＬＯＢを含んでいる各ファイルに対する、前記ＢＬＯＢ名と前記ファイル名との間にある関係を有するように構成される。これにより、ＢＬＯＢ名とファイル名との間にある関係を常に把握する容易に実現可能なやり方が達成される。
【００１４】
好ましくは、前記システムはさらに、このシステムの処理を制御するように構成されるコントローラを有する。このコントローラは、ファイルサブシステム若しくはデータベースサブシステムに組み込まれることも可能であり、又は別個の構成要素とすることも可能である。前記コントローラは、ファイルサブシステム及びデータベースサブシステムにおいて行われる操作の開始を制御する何らかのデータ処理部品とすることもできる。その上、前記コントローラは、コントローラとファイルサブシステム及び／又はデータベースサブシステムとの間における通信若しくは情報の交換、又はファイルサブシステムとデータベースサブシステムとの間における通信若しくは情報の交換を制御するように構成されるべきである。
【００１５】
好ましくは、前記ファイル名はＧＵＩＤ(Globally unique identifier)及びバージョンインデックスを有する。これにより、ＢＬＯＢを修正する際に、バージョンインデックスが動的であり（すなわち変更した）、前記ＧＵＩＤが静的である（すなわち変更されていない）場合、上記ファイル名は、前記ＢＬＯＢを有するファイルのＩＤを保全する方法を提供する一方、ファイルの如何なる修正も常に把握している。これにより、各ファイルのＩＤ及びヒストリーは、ＢＬＯＢが修正／更新されるたびに新しいファイル名が作成されたとしても、前記システム（ファイルサブシステムを用いて）及びバックアップにおいて見ることができる。この特徴は、ＢＬＯＢの各修正に対し、全く新しいファイル名（すなわち、古いファイル名とは同じではない新しいファイル名）を作成することによる欠点を改善し、ファイル名を保全する解決法の利点の大部分を保つ。
【００１６】
さらに好ましい実施例において、前記システムは、特定のＢＬＯＢを修正する際に、この修正された特定のＢＬＯＢを含み、新しいファイル名を持っている新しいファイルを作成し、前記ＢＬＯＢ名をデータベースサブシステムにある前記新しいファイル名と関連付けるように構成される。新しいファイルを作成すること、及びＢＬＯＢ名をデータベースサブシステムにある新しいファイル名と関連付けることの組み合わせは、ＢＬＯＢに対する修正はこれら修正が確定されるまでは行われない（いわゆるデータベース用語で"ロールバック"と呼ばれる）こと、ＢＬＯＢの更新中に前記システムが故障する場合、古いファイル（すなわち修正していないファイル）はファイルサブシステムにあり、ＢＬＯＢは前記古いファイルと関連付けされているか、又は新しいファイル（すなわち修正されたファイル）はファイルサブシステムにあり、ＢＬＯＢは前記新しいファイルと関連付けされているかのどちらかであると言う点で、前記ＢＬＯＢは一致したままでいる。これにより、このシステムはファイル名が修正中に保全されるファイルシステムよりも優れている。
【００１７】
好ましくは、前記新しいファイル名は前記ＧＵＩＤ及び更新されたバージョンインデックスを有する。再び、作成されたファイル名はＢＬＯＢを有するファイルのＩＤを保全する方法を提供する一方、バージョンインデックスが更新されたと言う点で、前記ファイルの如何なる修正も常に把握している。
【００１８】
本発明はさらに、前記システムの特徴に対応する特徴を有し、これにより対応する利点も有する、冒頭の段落に述べたような方法に関する。しかしながら、特定のファイルを作成する方法の好ましい実施例において、ファイル名を生成するステップは、ＢＬＯＢに対するＧＵＩＤ及びバージョンインデックスを生成するステップ、及び前記ＧＵＩＤ及び前記バージョンインデックスを前記ＢＬＯＢを有する特定のファイルに対するファイル名に結合させるステップを有する。これにより、ファイル名を生成する簡単なやり方が達成される。一般的に、ＧＵＩＤはファイル名の修正されていない部分を構成し、バージョンインデックスは特定のファイルが更新／修正／変更するたびに変化する部分を構成する。
【００１９】
本発明による特定のファイルを作成する方法のさらに好ましい実施例において、
−前記データベースサブシステムにおいて前記ファイル名と前記ＢＬＯＢ名とを結合するステップを有するデータベースのトランザクションを開始するステップ、並びに
−ファイル名を生成するステップ、前記ファイル名と前記ＢＬＯＢ名とを結合するステップ、及び前記ＢＬＯＢを前記特定のファイルに書き込むステップが成功したかを検査するステップであり、先行する前記ステップが成功した場合、前記データベースのトランザクションを確定するステップ、
をさらに有する。上述したステップは、先行する段落に記載されたファイル名の生成と一緒に、ファイル名を生成するステップ、前記ファイル名と前記ＢＬＯＢ名とを結合するステップ、及び前記ＢＬＯＢをファイルサブシステムにあるファイルに書き込むステップからなるシステムのトランザクションを形成する。データベースのトランザクションを開始して、成功した場合に単にそのトランザクションを確定させることにより、ＡＣＩＤ要件が満たされたことを保証する。
【００２０】
特定のＢＬＯＢを修正する方法は、
−システムの一部であるデータベースサブシステムにおいて、データベースのトランザクションを開始するステップ、
−前記特定のＢＬＯＢを有する特定のファイルに対するファイル名を取り出すステップ、
−新しいファイル名を作成するステップ、
−前記新しいファイル名と前記ＢＬＯＢ名とを結合するステップ、
−前記特定のＢＬＯＢを修正し、この修正された特定のＢＬＯＢをファイルサブシステムにある、前記新しいファイル名と関連付けされている新しいファイルに書き込むステップ、
−先行するステップの全てが成功したかを検査するステップ、及び
−前記検査が前記先行するステップが成功したことを示す場合、前記データベースのトランザクションを確定させるステップ
を有する。これにより、ＡＣＩＤ要件は、前記システムにおいてＢＬＯＢの更新／修正中に満たされたことが保証される。
【００２１】
前記データベースサブシステムにおけるファイル名に関連するＢＬＯＢファイル名を持つ特定のＢＬＯＢを削除する方法は、データベースサブシステムにおいて前記ＢＬＯＢ名とファイル名との間にある関係が存在し、
−前記データベースサブシステムにおいてデータベースのトランザクションを開始するステップ、
−前記データベースサブシステムにおいて、前記ＢＬＯＢ名と前記ファイル名との間にある前記関係を削除するステップ、
−前記先行するステップが成功した場合、前記データベースのトランザクションを確定するステップ、及び
−前記ファイルサブシステムにおいて、前記先行するステップが成功した場合、前記特定のＢＬＯＢを含んでいる前記既存のファイルを削除するステップ
を有する。上記事例において、システムのトランザクションは、
−前記データベースサブシステムにおいて、ＢＬＯＢ名とファイル名との間にある関係を削除するステップ、及び
−前記関係の削除が成功した場合にのみ、前記ファイルサブシステムにおいて既存のファイルを削除するステップ
から構成される。再び、データベースのトランザクションを開始及び確定させ、前記データベースのトランザクションのステップが成功した場合、単にファイルを削除することにより、ＡＣＩＤ要件が満たされたことが保証される。
【００２２】
本明細書を通して、用語"ＢＬＯＢ"は、そのサイズが原因で、データベースシステムにより効率良く扱うことができない何らかのデータオブジェクトを含むことを意味していることに注意すべきである。ＢＬＯＢのサイズは２、３００ｋＢのデータから数千ＭＢのデータの範囲にある何らかのサイズである。ＢＬＯＢのサイズは一般的に、数十ＭＢのデータから数百ＭＢのデータの範囲にあるが、しかしながらＢＬＯＢのサイズがこの範囲に制限されない。
【００２３】
用語"データベースのトランザクション"は、一連の情報交換、及びシステム内においてデータの保全を保証するためのデータベースサブシステムにおけるユニットとして扱われる関連する作業（例えばデータベースの更新）に及ぶことを意味している。完了すべきデータベースのトランザクション及び確定させるべきデータの変化に対し、データベースのトランザクションは、全部完了させなければならない。データベースサブシステムにおいて、データベースのトランザクションが上手く完了した場合、データベースの変更は確定され、データベースのトランザクションが上手く完了しなかった場合、前記変更はロールバックされる。その上、用語"システムのトランザクション"は、システムにおいて、一般的にデータベースサブシステム及びファイルサブシステムの両方を使用する（しかし必ずではない）ことにより、行われるトランザクションにも及ぶことを意味する。図２から図４に示される方法の各々は、ステップ"開始"から"終了"の間にある方法のステップ全てからなる、上記システムのトランザクションの一例である。
【００２４】
その上、用語"ファイルを管理する"は、例えば新しいファイルを作成、既存のファイルを削除、既存のファイルを更新／修正、及び／又は既存のファイルをリネームのようなファイルに行う何らかの標準的なトランザクション又は操作にも及ぶことを意味している。最後に、用語"ファイル"は、（そのファイルに含まれるＢＬＯＢと同等である）あるＢＬＯＢに対するデータの全てを有するファイルサブシステムにおけるファイルにも及ぶことを意味する。
【００２５】
ファイルサブシステム及びデータベースサブシステムはそれぞれ、ファイル名及びＢＬＯＢ名に関する情報を交換するように夫々構成された何らかの適当な標準的なファイルシステム及びデータベースシステムとすることができる。
【００２６】
ファイルサブシステム及びデータベースサブシステム夫々において、ファイル名及びＢＬＯＢ名の全ては夫々一義的であるべきである。
【発明を実施するための最良の形態】
【００２７】
本発明は好ましい実施例の一例と結び付けると共に、図を参照して以下に十分に説明される。
【００２８】
図１は、本発明によるシステム１０の非常に概略的な表示である。このシステム１０はファイルサブシステム２０、データベースサブシステム３０及びコントローラ７０を有する。ファイルサブシステム２０に複数のファイル４０が示され、各ファイルはファイル名（図示せず）を持っている。図１において、各ファイル４０はＢＬＯＢ５０を有し、これらＢＬＯＢの各々はＢＬＯＢ名（図示せず）を持っている。データベースサブシステム３０は、２つの列を持つテーブル６０を有する。このテーブル６０の一方の列は、ＢＬＯＢ名を含み、もう一方の列はファイル名を含んでいる。
【００２９】
コントローラ７０は、ファイルサブシステム２０及びデータベースサブシステム３０において行われる操作の開始を制御するシステム１０におけるデータ処理部品である。その上、このコントローラ７０は、コントローラ７０と、ファイルサブシステム２０及び／又はデータベースサブシステム３０との間における通信又は情報の交換（傾斜した矢印により示される）を制御するように構成される。
【００３０】
ファイルサブシステム２０とデータベースサブシステム３０との間にある水平の矢印は、起こり得る通信又は情報の交換を示している。従って、ファイルサブシステム２０からデータベースサブシステム３０に向かっている水平の矢印は、ＢＬＯＢを有する何れかのファイルの名前がファイルサブシステム２０からデータベースサブシステム３０に転送されていることを示す一方、データベースサブシステム３０からファイルサブシステム２０に向かっている水平の矢印は、ファイル名及び関連するＢＬＯＢ名がデータベースサブシステム３０からファイルサブシステム２０へ転送されていることを示す。これら情報の交換はコントローラ７０を用いて開始されることができる。
【００３１】
各ファイル４０のファイル名は、ＧＵＩＤとバージョンインデックスとの組み合わせとすることが可能である。ＧＵＩＤはあるコンテクスト内において一義的である識別子である。ここで、このコンテクストは本発明のシステム及び方法により管理される全てのＢＬＯＢを含む。このシステム（及び方法）のある実施例において、データベースに記憶されたＧＵＩＤカウンタが使用され、このＧＵＩＤカウンタは新しいＧＵＩＤが要求されるたびに増加する。このカウンタの新しい値がＧＵＩＤとして使用される。しかしながら、ＧＵＩＤを作成するアルゴリズムはよく知られ、本発明の一部を形成していない。本発明のシステム（及び方法）のある実施例において、データベースに記憶され、新しいバージョンインデックスが要求されるたびに増加するカウンタは、バージョンインデックスを供給するのに使用される。この新しい、増大したカウンタの値が新しいバージョンインデックスとして使用される。代わりに、（例えばＭＤ５のようなハッシュ値を計算するための何らかの適当なよく知られたアルゴリズムを使用して）新しいＢＬＯＢデータから計算されたハッシュ値が新しいバージョンインデックスとして使用されることも考えられる。
【００３２】
ＧＵＩＤ及びバージョンインデックスにより構成されるファイル名の一例は、"１２３＿４５６"であり、"＿"の左にある数字、すなわち"１２３"はＧＵＩＤであり、"＿"の右にある数字、すなわち"４５６"はバージョンインデックスである。ＧＵＩＤとバージョンインデックスとの組み合わせは全単射でなければならないことに注意すべきである。すなわち以下の要件
−異なるファイル名（すなわちＧＵＩＤとバージョンインデックスとが異なる組であること）は常に異なるファイル名とならなければならない、及び
−如何なる所与のファイル名に対しても、ＧＵＩＤ及びバージョンインデックスを取り出すことが可能でなければならない
ことが満たされなければならない。上述したように、全てのＢＬＯＢに対し、データベースサブシステム３０にある単一のテーブル６０を使用することが可能であり、このテーブルは、ＢＬＯＢ名のための列及びファイル名のための列を有する。データベースサブシステム３０におけるテーブル構造は、如何なるテーブル構造とすることもできる。
−ＢＬＯＢを含んでいるファイルのファイル名を前記ＢＬＯＢ名から取り出すことが可能である。このファイル名は、全てのファイルがあるルートフォルダよりも下に記憶されている場合、ＢＬＯＢを含んでいるファイルへのフルパス又は相対パスを含んでもよい。
−データベースにまだ無いＢＬＯＢ名をファイル名と関連付けすることが可能である。
−ＢＬＯＢ名と関連付けしたファイル名を修正することが可能である。
−ＢＬＯＢ名及びファイル名からなる組を削除することが可能である。
−上記操作を少なくとも"読み取り確定(read committed)"のＳＱＬ−９２の分離レベルを用いたトランザクションに結合することが可能である。
【００３３】
図２から図４は、本発明による方法のフローチャートを示し、データベースサブシステム３０に起こる方法のステップは、テキスト"ＤＢＳ"を持つ箱の下に描かれ、ファイルサブシステム２０に起こる方法のステップは、テキスト"ＦＳ"を持つ箱の下に描かれ、コントローラ７０に起こる方法のステップは、テキスト"ＣＴＲＬ"を持つ箱の下に描かれている。
【００３４】
図２は、ＢＬＯＢを含んでいる新しいファイルを作成中の本発明の方法のフローチャートである。
【００３５】
データベースサブシステム３０（図１参照）において行われるフローは、ステップ１１０においてコントローラが起動し、ステップ１２０に続き、新しいデータベースのトランザクションが開始される。このデータベースのトランザクションは、ステップ１３０から１５０において生成されるファイル名と、ＢＬＯＢ名との組み合わせである。ステップ１２０の後、このフローはステップ１３０に続き、ここで新しいＧＵＩＤが生成される。後続するステップ、ステップ１４０において、バージョンインデックスが生成され、後続するステップ、ステップ１５０において、前記ＧＵＩＤ及び前記バージョンインデックスが結合され、ファイル名となる。上述したように、ＧＵＩＤ及びバージョンインデックスにより構成されるファイル名の一例は、"１２３＿４５６"とすることができ、"＿"の左にある数字、すなわち"１２３"はＧＵＩＤであり、"＿"の右にある数字、すなわち"４５６"はバージョンインデックスである。その上、ＧＵＩＤとバージョンインデックスとの組み合わせは、上述したように全単射でなければならない。図２におけるステップ１３０から１５０は、これらステップがコントローラにより行われることを意味している、コントローラＣＴＲＬの下にある列に示されていたとしても、これらステップがデータベースサブシステム３０により行われることが可能であることも考慮される。
【００３６】
次いで、前記フローはステップ６０に続き、これはデータベースサブシステム３０（図１参照）において行われ、ＢＬＯＢのＢＬＯＢ名はステップ１５０において作成されたファイル名と関連付け／結合される。ファイルサブシステム２０（図１参照）において行われる次のステップ、ステップ１７０において、ＢＬＯＢのデータは、ステップ１３０から１５０において作成されたファイル名に関連付けした新しいファイルに書き込まれる。
【００３７】
方法１００は、先行するステップの全てが成功したかを検査する後続するステップ、ステップ１８０を含んでいる。ステップ１８０における検査が先行するステップの全てが成功した結果を持つ場合、ステップ１２０において開始したデータベースのトランザクションがステップ１９０において確定される。これにより、ファイル名を生成する、
このファイル名とＢＬＯＢ名とを組み合わせる、及びＢＬＯＢデータをファイルサブシステムにおけるファイル名を持つファイルに書き込むことであるシステムのトランザクションが確定される。
【００３８】
ステップ１８０における検査がステップ１２０から１７０の何れかの間にエラーが起こったことを示す場合、データベースのトランザクションはロールバックされ、システムのトランザクションの一部として作成された如何なるファイルも削除される。上記ファイルの削除中にエラーが起きたとしても、ファイルサブシステムはデータベースサブシステムと一致したままである、つまり幾つかの不要なファイルが残っているが、システムにあるファイルは依然としてＡＣＩＤ特性を果たし、これら不要なファイルはこのシステムの正しい動作には影響を及ぼさないことに注意すべきである。その上、これら不要なファイルはいつでも削除されることができる。ステップ１９５において前記フローは終了する。
【００３９】
図３は、既存のファイルを更新／修正中の本発明による方法のフローチャートである。ステップ２０１においてこのフローは開始する。次いで、このフローは、ステップ２１０に続き、これはデータベースサブシステム３０（図１参照）において行われ、新しいデータベースのトランザクションが開始される。図３における方法２００の場合、データベースのトランザクションは、新しいファイル名とＢＬＯＢ名とを組み合わせることであり、このデータベースのトランザクションは、新しいファイル名の生成、この新しいファイル名をＢＬＯＢ名に関連付け、この新しいファイル名を用いて修正したデータを新しいファイルに書き込み、を有するシステムのトランザクションの一部であり、これによりＢＬＯＢを含むように構成される既存のファイルの更新／修正を行う。
【００４０】
後続するステップ、ステップ２２０において、ファイル名は、例えばデータベースサブシステム３０にある、ファイル名とＢＬＯＢ名との間にある関係を有するテーブルを調べることによりＢＬＯＢ名から取り出される。このフローはステップ２３０に続き、これはコントローラ７０（図１参照）において行われる。ステップ２３０において、ＧＵＩＤはＢＬＯＢ名と関連付けしたファイル名から取り出される。その後、ステップ２４０において、新しいバージョンインデックスが生成され、次のステップ２５０において、前記ファイル名から取り出されたＧＵＩＤは、ステップ２４０において生成した新しいバージョンインデックスと結合され、新しいファイル名となる。ファイル名"１２３＿４５６"に関して上述した実施例において、"＿"の左にある数字、すなわち"１２３"はＧＵＩＤであり、"＿"の右にある数字、すなわち"４５６"はバージョンインデックスであり、新しいファイル名は"１２３＿４５７"となり、ここで"４５７"は新しいバージョンインデックスである。
【００４１】
データベースサブシステム３０（図１参照）において行われる後続するステップ２６０において、ＢＬＯＢ名はステップ２５０において作成された新しいファイル名と関連付けされる。
【００４２】
その後、ステップ２７０において、ファイルサブシステム２０（図１参照）において、修正／更新されたＢＬＯＢは、新しいファイル名と関連付けしたファイルに書き込まれる。
【００４３】
その後、前記フローはステップ２８０に続き、ここで先行するステップの全てが成功したか検査される。ステップ２８０における検査がステップ２１０から２７０の全てが成功した結果を持つ場合、前記フローはステップ２９０に続き、ここでデータベースのトランザクションが（データベースサブシステム３０において）確定される。これにより、システムのトランザクションが確定され、これは上述したような、新しいファイル名を生成する、この新しいファイル名とＢＬＯＢ名とを組み合わせる、及び修正したＢＬＯＢをファイルサブシステムにおける新しいファイル名を持つ新しいファイルに書き込むことを有する。
【００４４】
しかしながら、ステップ２８０における検査がステップ２１０から２７０の何れかの間においてエラーが起きたことを示す場合、データベースのトランザクションは、ロールバックされ、システムのトランザクションの一部として前記ファイルサブシステムにおいて作成された如何なるファイルも削除されることがある。
【００４５】
このシステムのトランザクションが確定した場合、前記方法は、修正されていないＢＬＯＢを含んでいるファイル、すなわち古いバージョンインデックスを持つファイル名と事前に関連付けられたファイルを削除するステップ（図示せず）を有する。しかしながら、この方法は、ファイル／ＢＬＯＢの古いバージョンを保持する必要がある場合、前記修正されていないＢＬＯＢを含んでいるファイルを保存するステップを含んでもよい。
【００４６】
前記データベースのトランザクションをロールバックする場合、上記ファイルの削除中にエラーが起きたとしても、ファイルサブシステムはデータベースサブシステムと一致したままである。つまり幾つかの不要なファイルが残っているが、システムにあるファイルは依然としてＡＣＩＤ特性を果たし、これら不要なファイルはこのシステムの正しい動作に影響を及ぼさないことに注意すべきである。その上、これら不要なファイルはいつでも削除されることができる。
【００４７】
データベースサブシステムの構造により、新しいファイル名は、（データベースのトランザクションに対する"読み取り確定"の分離レベルにより）データベースのトランザクションが確定されるまで、データベースサブシステムには現れない。これにより、データベースサブシステムの"読み取り確定"の分離レベルは、ファイルサブシステムにおけるファイルに伝わる。
【００４８】
ステップ２９５において前記フローは終了する。
【００４９】
図４は、既存のファイルを削除中の本発明による方法３００のフローチャートである。この既存のファイルは、ファイル名を持つと共に、ＢＬＯＢを含んでいると理解される。ステップ３１０においてこのフローが開始し、データベースサブシステム３０（図１参照）において行われるステップ３２０に続く。ステップ３２０は、新しいデータベースのトランザクションを開始するステップからなる。図４における方法の場合、データベースのトランザクションは、データベースサブシステム３０（図１参照）において、結合したＢＬＯＢ名及びファイル名の削除である。
【００５０】
後続するステップ、ステップ３３０において、ファイル名及びＢＬＯＢ名からなる組は、データベースサブシステム３０（図１参照）において削除される。
【００５１】
後続するステップ、ステップ３４０において、ステップ３２０及び３３が成功したかを検証するための検査が行われる。ステップ３４０における検査が肯定的である場合、前記フローはステップ３５０に続き、ここでステップ３２において開始したデータベースのトランザクションが確定される。
【００５２】
これは、"クリーンアップ"ステップ３６０が続き、ここでＢＬＯＢを含む（及びＢＬＯＢ名と関連付けしたファイル名を持つ）ファイルは、ファイルサブシステム２０（図１参照）において削除される。これにより、システムのトランザクションが確定される。
【００５３】
しかしながら、ステップ３４０における検査が上記データベースのトランザクション中にエラーが起こったことを示す場合、フローはロールバックされ、ステップ３３０及び３６０はスキップされるので、データベースにおけるＢＬＯＢとファイル名との間にある関係、及び実際のファイルは、共に変化しないままであり、データの一致が保証される。ステップ３７０においてこのフローは終了する。
【００５４】
図４における方法の場合、システムのトランザクションは、データベースサブシステムにおいて、ＢＬＯＢ名及びそれに関係するファイル名の削除、並びにファイルサブシステムにおいて、ＢＬＯＢを含むように構成される既存のファイルの削除を含む。
【００５５】
一般的に、既存のファイルをそれぞれ修正／更新及び削除するための方法２００、３００は、（ＢＬＯＢを含んでいる）新しいファイルを作成するための方法１００が前にあることに注意すべきである。
【００５６】
その上、上述した方法１００、２００、３００は、説明したこれら方法のステップに加え、他の方法のステップを含むことも可能であることに注意すべきである。例えば、これら方法は、データベースのトランザクションを開始する単一のステップが前にあり、先行するステップの全てが成功したかの検査、及び全単射の場合に後続するデータベースのトランザクションの確定が続く、ステップ１３０から１７０、ステップ２２０から２７０及び／又はステップ３３０を１回以上簡単に繰り返すことにより、複数のＢＬＯＢの操作を単一のシステムのトランザクション内に含むように拡張されることができる。
【００５７】
上述したシステム及び方法は、変化するファイル名と関連付けした一義的な名前によりＢＬＯＢが特定される構造を使用している。これは、よく知られた技術、いわゆる"間接型"の明細書である。本発明によるシステム及び方法の利点は、データベースサブシステム及びファイルサブシステムの性能を組み合わせることにより達成される。ここに、ＢＬＯＢを標準のデータベースに記憶すること、及びファイルシステムに記憶されたＢＬＯＢを修正することにより発生する性能の問題は解決される。
【図面の簡単な説明】
【００５８】
【図１】本発明によるシステムの概略的な表示。
【図２】新しいファイルを作成中の本発明による方法のフローチャート。
【図３】既存のファイルを更新／修正中の本発明による方法のフローチャート。
【図４】既存のファイルを削除中の本発明による方法のフローチャート。
【図１】
2008524688.tif 000003
【図２】
2008524688.tif 000004
【図３】
2008524688.tif 000005
【図４】
2008524688.tif 000006
【国際調査報告】
2008524688.tif 000007
2008524688.tif 000008
2008524688.tif 000009