(57)【特許請求の範囲】
【請求項１】
ユーザ機器からネットワークを介してデータベースサーバコンピュータがデータに対する要求を受信することと、
前記データベースサーバコンピュータが、前記要求されたデータのデータサイズ及びデータ型を判定することと、
前記データベースサーバコンピュータが、前記データサイズ及びデータ型に基づいて、前記要求に応答するための候補となる複数のデータ配信プロトコルから、前記データサイズ及びデータ型を有するデータを配信するために指定されたデータ配信プロトコルを識別することと、
前記識別されたデータ配信プロトコルを用いて、前記要求に応答して前記データを前記ユーザ機器に配信することと、
を含み、
前記データ配信プロトコルを識別することが、
前記データサイズが事前指定された閾値に適合するかどうかを判定することと、次いで
前記データサイズが前記閾値に適合しない場合に第１のデータ配信プロトコルを識別すること、又は
前記データサイズが前記閾値に適合する場合に第２のデータ配信プロトコルを識別すること、
を含み、
前記データを配信することが、
前記第１のデータ配信プロトコルが識別された場合に第１の接続を介して前記データを配信すること、又は
前記第２のデータ配信プロトコルが識別された場合に第２の接続を介して前記データを配信すること、
を含み、
前記第１の接続が、前記ユーザ機器と前記データベースサーバコンピュータとの間のデータベース接続であり、
前記第２の接続が前記ユーザ機器とＨＴＴＰサーバとの間のハイパーテキスト転送プロトコル（ＨＴＴＰ）接続である
ことを特徴とする方法。
【請求項２】
前記データ型を判定することが、前記要求されたデータがマルチメディアデータ又はデータオブジェクトに対して指定されたデータベーステーブル列用のデータ型であるコンテナデータ型を有することを判定する
ことを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記データサイズが前記閾値に適合する場合に、
前記データベースサーバコンピュータから前記ユーザ機器に前記ＨＴＴＰサーバのアドレスを送信することを含む
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記ＨＴＴＰ接続を介して前記データを配信することが、
ＨＴＴＰストリーミングプロトコルを使用して、前記データを前記ユーザ機器に配信することを含む
ことを特徴とする請求項１に記載の方法。
【請求項５】
１つ以上のコンピュータに動作を実行させるように構成されたコンピュータプログラムであって、前記動作は、
ユーザ機器からネットワークを介してデータベースサーバコンピュータがデータに対する要求を受信することと、
前記データベースサーバコンピュータが、前記要求されたデータのデータサイズ及びデータ型を判定することと、
前記データベースサーバコンピュータが、前記データサイズ及びデータ型に基づいて、前記要求に応答するための候補となる複数のデータ配信プロトコルから、前記データサイズ及びデータ型を有するデータを配信するために指定されたデータ配信プロトコルを識別することと、
前記識別されたデータ配信プロトコルを用いて、前記要求に応答して前記データを前記ユーザ機器に配信することと、
を含み、
前記データ配信プロトコルを識別することが、
前記データサイズが事前指定された閾値に適合するかどうかを判定することと、次いで
前記データサイズが前記閾値に適合しない場合に、第１のデータ配信プロトコルを識別すること、又は
前記データサイズが前記閾値に適合する場合に、第２のデータ配信プロトコルを識別すること、
を含み、
前記データを配信することが
前記第１のデータ配信プロトコルが識別された場合に、第１の接続を介して前記データを配信すること、又は
前記第２のデータ配信プロトコルが識別された場合に、第２の接続を介して前記データを配信すること、
を含み、
前記第１の接続が、前記ユーザ機器と前記データベースサーバコンピュータとの間のデータベース接続であり、
前記第２の接続が、前記ユーザ機器とＨＴＴＰサーバとの間のハイパーテキスト転送プロトコル（ＨＴＴＰ）接続である
ことを特徴とするコンピュータプログラム。
【請求項６】
前記データ型を判定することは、前記要求されたデータがコンテナデータ型を有することを判定することを含み、前記コンテナデータ型は、マルチメディアデータ又はデータオブジェクトに対して指定されたデータベーステーブル列用のデータ型である
ことを特徴とする請求項５に記載のコンピュータプログラム。
【請求項７】
前記動作が、前記データサイズが前記閾値に適合する場合に、
前記データベースサーバコンピュータから前記ユーザ機器に前記ＨＴＴＰサーバのアドレスを送信することを含む
ことを特徴とする請求項５に記載のコンピュータプログラム。
【請求項８】
前記ＨＴＴＰ接続を介して前記データを配信することが
ＨＴＴＰストリーミングプロトコルを使用して、前記データを前記ユーザ機器に配信することを含む
ことを特徴とする請求項５に記載のコンピュータプログラム。
【請求項９】
ユーザ機器からネットワークを介してデータベースサーバコンピュータがデータに対する要求を受信することと、
前記データベースサーバコンピュータが、前記要求されたデータのデータサイズ及びデータ型を判定することと、
前記データベースサーバコンピュータが、前記データサイズ及びデータ型に基づいて、前記要求に応答するための候補となる複数のデータ配信プロトコルから、前記データサイズ及びデータ型を有するデータを配信するために指定されたデータ配信プロトコルを識別することと、
前記識別されたデータ配信プロトコルを用いて、前記要求に応答して前記データを前記ユーザ機器に配信することと、
を含む動作を実行するように構成された、１つ以上のコンピュータを備え、
前記データ配信プロトコルを識別することが、
前記データサイズが事前指定された閾値に適合するかどうかを判定することと、次いで
前記データサイズが前記閾値に適合しない場合に、第１のデータ配信プロトコルを識別すること、又は
前記データサイズが前記閾値に適合する場合に、第２のデータ配信プロトコルを識別すること、
を含み、
前記データを配信することが
前記第１のデータ配信プロトコルが識別された場合に、第１の接続を介して前記データを配信すること、又は
前記第２のデータ配信プロトコルが識別された場合に、第２の接続を介して前記データを配信すること、
を含み、
前記第１の接続が、前記ユーザ機器と前記データベースサーバコンピュータとの間のデータベース接続であり、
前記第２の接続が、前記ユーザ機器とＨＴＴＰサーバとの間のハイパーテキスト転送プロトコル（ＨＴＴＰ）接続である
ことを特徴とするシステム。
【請求項１０】
前記データ型を判定することは、前記要求されたデータがマルチメディアデータ又はデータオブジェクトに対して指定されたデータベーステーブル列用のデータ型であるコンテナデータ型を有することを判定することを含む
ことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記動作は、前記データサイズが前記閾値に適合する場合に、
前記データベースサーバコンピュータから前記ユーザ機器に前記ＨＴＴＰサーバのアドレスを送信することを含む
ことを特徴とする請求項９に記載のシステム。
【請求項１２】
前記ＨＴＴＰ接続を介して前記データを配信することが
ＨＴＴＰストリーミングプロトコルを使用して、前記データを前記ユーザ機器に配信することを含む
ことを特徴とする請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全般的にはデータベース支援型ウェブアプリケーションに関する。
【背景技術】
【０００２】
データベースサーバは、データベース内に記憶されているデータを、データベースサーバから遠隔の位置にあるクライアントに提供できる。データベースは、しばしばテーブルとして知られるリレーションの集合を含み得る。データベース内のテーブルは、縦方向の列及び横方向の行を使用して編成される一連のデータ項目又は値を含む。各列は、列内に記憶できるデータのカテゴリを定義するデータ型を有し得る。データ列の型はデータベーススキーマ内に指定でき、その型はリレーショナルデータベース内のデータの表現方法又はアクセス方法を定義するデータモデルであり得る。現代のリレーショナルデータベースにおいて、データフィールドは、他のデータフィールドのデータ項目のサイズと比べてサイズの大きいデータを記憶できるデータ型を有し得る。例えば、マルチメディアデータ（例えば、ムービークリップ）が、リレーショナルデータベース内に記憶され得る。
【発明の概要】
【０００３】
データ特性に基づいたインテリジェントデータ配信及び記憶のための方法、プログラム製品、及びシステムが開示されている。データベースサーバは、ユーザ機器から、データに対する要求を受信し得る。データベースサーバは、要求されたデータのデータサイズ及びデータ型を判定し得る。データベースサーバは、データサイズ及びデータ型に基づき、要求に応答するための候補となる複数のデータ配信プロトコルから、データサイズ及びデータ型を有するデータを配信するために指定されたデータ配信プロトコルを識別し得る。データベースサーバは、識別されたデータ配信プロトコルを用いて、要求に応答してデータをユーザ機器に配信し得る。
【０００４】
本明細書に記載されている技術を利用することで、下記の利点が達成され得る。本技術を利用することによって、データベースサーバにマルチメディアデータをバッファリング済みストリームとして、このデータベースサーバとは別個のＨＴＴＰサーバから配信させることができる。本技術は、巨大なメディアデータをユーザ機器に配信する際のデータベースサーバに対する負荷を軽減することができる。本技術は、データベース接続の帯域幅を節約することによって、他の在来型データベース要求を取り扱えるようにする。
【０００５】
本技術は、データのインクリメンタル配信を可能にする。データがメディアファイル（例えば、オーディオ又はビデオ）を含む場合、そのデータがユーザ機器に到着したときに、ユーザ機器にてユーザはインクリメンタルにデータを再生又は視聴することができる。ユーザ機器は、或るメディアファイルが完全に配信されるのを待ってから次のメディアファイルを配信するのではなく、データベースクエリに応答して、複数のメディアファイルを即座にかつ同時並行的に得ているように見えることが可能である。
【０００６】
インテリジェントデータ配信及び記憶の、１つ以上の実装の詳細は、添付の図面及び下記の説明に記載されている。インテリジェントデータ配信及び記憶の、他の特徴、態様及び利点は、説明、図面及び特許請求の範囲から明らかとなる。
【図面の簡単な説明】
【０００７】
【図１】インテリジェントデータ配信技術を実装した例示的なシステムを示すブロック図である。
【図２】インテリジェントデータ配信に用いられる例示的なコンテナ技術の図である。
【図３】インテリジェントデータ配信に用いられる例示的なフィルタ技術を示すブロック図である。
【図４】フィルタパラメータの例示的な構造を示すブロック図である。
【図５】インテリジェントデータ配信を受信するデータベースクライアント上に実装された例示的なユーザインタフェースの図である。
【図６】インテリジェントデータ配信技術を実装したシステム上で実行される例示的なプロセスを示す流れ図である。
【図７】図１〜図６の諸機能及び動作を実装するための例示的なシステムアーキテクチャのブロック図である。  それぞれの図面において類似の参照記号は、類似の要素を示す。
【発明を実施するための形態】
【０００８】
概説
図１は、インテリジェントデータ配信技術を実装した例示的なシステムを示すブロック図である。データベースサーバ１０２では、データの型又はサイズなどの特性に基づき、異なる様式でかつ異なる接続を介してデータをクライアント１０４に配信させることができる。
【０００９】
データベースサーバ１０２は、データベース接続１０８を介してクライアント１０４からの要求１０６を受信できる。データベース接続１０８は、データベース要求及び応答を含む通信を支援する、クライアント１０４とデータベースサーバ１０２との間の接続であり得る。要求１０６はデータベース要求（例えば、データベースクエリ）であり得る。要求１０６は、データベース１１０内に記憶されているデータ、又はデータベース１１０内で参照されるデータに対する要求を含み得る。データベース１１０は、リレーショナルデータベース、オブジェクト指向データベース、又はアドホックデータベースとして編成されたデータの集合であり得る。
【００１０】
データベース１１０内のデータは、列及び行を有するテーブルとして編成され得る。各データ列はデータ型を有し得る。データ型としては、例えば、整数データ型、テキストデータ型、又はコンテナデータ型を挙げることができる。コンテナデータ型に関しては、後ほど図２を参照しながら更に詳細に説明する。データ型によっては、（例えばテキストデータ型又はコンテナデータ型の場合）データサイズが他のデータ（例えば、ブールデータ型を有するデータ）と比べて大きい場合がある。例えば、コンテナデータ型を有するデータ項目はファイルサイズが１ギガバイト（１ＧＢ）を超えるデジタルムービーであり得るのに対し、ブールデータ型を有するデータ項目はサイズが１バイトであり得る。
【００１１】
データベース１１０は、サイズの大きいデータ項目が他のデータ項目とは別個に記憶されるように構成できる。例えば、サイズの大きいコンテンツ１１２がコンテンツデポ１１４に記憶されるように、データベース１１０を構成することも可能である。コンテンツデポ１１４は、通信ネットワークを介してデータベースサーバに接続された記憶装置であり得る。コンテンツ１１２への参照は、データベース１１０の他のデータと共に記憶することが可能である。コンテンツ１１２の管理及びアクセスは、データベース１１０を介して為される。コンテンツ１１２の位置は、データベース１１０によって制御される。
【００１２】
テキスト型を有するデータ（テキストデータ）に対する要求、及びコンテナ型を有するデータ（コンテナデータ）に対する要求が、データベース要求１０６に含まれているかを、データベースサーバ１０２は判定し得る。次いで、データベースサーバ１０２は、テキストデータに加えて、データベース要求１０６に応答して返されるコンテナデータがコンテンツ１１２を含んでいるかを判定し得る。
【００１３】
データベースサーバ１０２は、データベース接続１０８を介してデータベース応答１１６をクライアント１０４に送信する。データベース応答１１６は、データベース要求１０６にて要求されたテキストデータを含む場合がある。データベース応答１１６は、コンテンツ１１２を含まない代わりにコンテンツ１１２への参照、及びウェブサーバ１１８への参照を含み得る。ウェブサーバ１１８は、データベース１１０とは別個にコンテンツ１１２をアクセスするように構成されたサーバであり得る。例えば、ウェブサーバ１１８は、データベースサーバ１０２とは別個のハイパーテキスト転送プロトコル（ＨＴＴＰ）サーバであり得る。
【００１４】
クライアント１０４は、データベース応答１１６を受信すると、データベース応答１１６内がコンテナデータへの参照を含んでいるかを判定できる。クライアント１０４はコンテンツフェッチャー１２０にこの参照を送信できる。コンテンツフェッチャー１２０は、データベース応答１１６において参照されるコンテンツを取得するように構成された、クライアント１０４のソフトウェア又はハードウェアコンポーネントである。
【００１５】
コンテンツフェッチャー１２０は、この参照を受信すると、データベース応答１１６における参照に従ってウェブサーバ１１８への接続１２２を自動的に開くことができる。コンテンツフェッチャー１２０は、接続１２２をユーザの介入なしに開くことができる。接続１２２はデータベース接続１０８とは別個のネットワーク接続であり得る。コンテンツフェッチャー１２０は、接続１２２を介してユーザの介入なしに要求をウェブサーバ１１８に送信でき、ウェブサーバ１１８はデータベース接続プロトコルとは別のプロトコル（例えば、ＨＴＴＰストリーミングプロトコル）を使用して、コンテンツ１１２を返すことができる。本システムでは、コンテンツ１１２を他のデータベースコンテンツとは別個に送信することにより、大型メディアデータをクライアント１０４に配信する際にデータベースサーバ１０２にかかる負荷を軽減し、クライアントにおいてユーザが、先に全コンテンツが配信されるのを待たずに実質的に即座にデータベースクエリの結果を視聴できるようにしている。コンテンツフェッチャー１２０の動作は自動的であり、ユーザには意識されずに行える。
【００１６】
例示的なコンテナフィールド
インテリジェントデータ配信に用いられる例示的なコンテナ技術は、図２に図示してある。コンテナデータ型を使用すると、一部のデータ（例えば、マルチメディアデータ）を他のデータベースデータとは別個に記憶することが可能になり、それ故、他のデータベースデータを配信するための接続とは別個の接続を介してクライアントに配信できるようになる。
【００１７】
リレーショナルデータベースのデータはデータベース１１０内に記憶され得る（図１）。データベース１１０は、データ記憶用の１つ以上のデータベースファイルを含み得る。幾つかの実装において、データベース１１０は、リレーショナルデータベースの全データを収容する単一のデータベースファイルを含み得る。
【００１８】
リレーショナルデータベースは１つ以上のテーブルを含むことが可能であり、その１つはテーブル２０２ａであり得る。データベース１１０内に記憶されているリレーショナルデータベースのテーブル２０２ａの拡大図を、テーブル２０２ｂに示す。テーブル２０２ｂは、１つ以上の列、例えば、列２０４ａ及び２０４ｂを含み得る。列２０４ａ及び２０４ｂの各々は、コンテナデータ型を有し得る。テーブル２０２ｂは、１つ以上の行、例えば、行２０６ａ、２０６ｂ及び２０６ｃを含み得る。これらの行はそれぞれ、その列に対応する１つ以上のデータフィールドを含み得る。例えば、行２０６ｂはコンテナデータフィールド２０８を含み得る一方、行２０６ｃはコンテナデータフィールド２１０を含み得る。
【００１９】
コンテナデータフィールド２０８及び２１０の実際のコンテンツはそれぞれ、データベースファイル２１２及び２１４内に記憶され得る。本システムでは、データベースファイル２１２及び２１４のそれぞれに名前を割り当てることができる。データベースファイル２１２及び２１４の各々の名前は、リレーショナルデータベース内で一意となるように構成できる。
【００２０】
データベースファイル２１２及び２１４は、データベース１１０から遠隔に位置し得るだけでなく、本システムのクライアントコンピュータからも遠隔に位置し得る。本システムでは、１つ以上のデータベースファイル２１２及び２１４を、データベース１１０が記憶されている同じディレクトリ又はファイルシステム（データベース１１０が記憶されているディレクトリのサブディレクトリを含む）に記憶できる。加えて又は代わりに、本システムでは、１つ以上のデータベースファイル２１２及び２１４を、データベース１１０が記憶されているディレクトリ又はファイルシステムとは異なるディレクトリ又はファイルシステム内に記憶できる。ファイルシステムは、オペレーティングシステムを介して記憶、操作、及び検索するためにコンピュータファイルを編成するためのシステムを含み得る。ディレクトリは、１つ以上のファイル又はディレクトリを記憶できるファイルシステム内部の仮想グルーピングを含み得る。
【００２１】
コンテナデータフィールド２０８及び２１０の各々は、データベースファイル２１２及び２１４のそれぞれに関連し得る。リレーション（例えば、リレーション２１６及び２１８）は、コンテナデータフィールド２０８及び２１０に関連付けられたリモートコンテナを用いて実装することが可能である。リモートコンテナは、データベースファイル２１２又は２１４への参照（例えば、パス）を記憶できる。幾つかの実装において、パスはベースディレクトリ及び相対パスを含み得る。ベースディレクトリは、データベースファイル２１２及び２１４の最上位ディレクトリであり得る。本システムは、複数のベースディレクトリを保持し得る。各々のベースディレクトリは、別々の記憶装置又はマウント済みボリューム上に位置し得る。ベースディレクトリのサブディレクトリは、相対パスで指定できる。
【００２２】
例えば、本システムでは、パス「Ｃ：￥ＤＢＤＩＲ￥［ａ＿ｄａｔｅ］￥ＰＤＦ￥ｆｉｌｅ＿１．ｐｄｆ」を使用することによって、データベースファイル２１２を記憶できる。ここで、「Ｃ：￥ＤＢＤＩＲ」はベースディレクトリ、「￥［ａ＿ｄａｔｅ］￥ＰＤＦ￥」は相対パスであり、「ｆｉｌｅ＿１．ｐｄｆ」は一意の名前である。データベースファイル２１２（「ｆｉｌｅ＿１．ｐｄｆ」）は、第１の記憶装置２２６上に記憶され得る。同様に、本システムでは、パス「Ｃ：￥ＤＢＤＩＲ￥Ｍｕｌｔｉｍｅｄｉａ￥ｆｉｌｅ＿２．ｊｐｇ」を使用することによって、データベースファイル２１４を記憶でき、かつこのデータベースファイル２１４内にマルチメディアコンテンツを含めることができる。データベースファイル２１４は、第２の記憶装置２２８上に記憶され得る。記憶装置２２８は、ベースディレクトリ「Ｃ：￥ＤＢＤＩＲ￥」の配下において「Ｍｕｌｔｉｍｅｄｉａ」という名前を使用した（点線矢印２２０で指し示された）マウント済みボリュームであり得る。ベースディレクトリ（１つ又は複数）は、データベース管理者が必要に応じてリモートコンテナを検査し、リモートコンテナへのアクセスを制限し、更にはリモートコンテナを再マッピングするための、中心的な場所（例えば「Ｃ：￥ＤＢＤＩＲ￥」）を提供し得る。幾つかの実装においては、コンテナデータフィールド２０８及び２１０にそれぞれリモートコンテナへの参照を記憶でき、このリモートコンテナは今度はデータベースファイル２１２又は２１４へのパスを記憶できる。
【００２３】
コンテナデータ型を有するデータは、外部データへの単純参照（例えば、ＵＲＬ）とは別物である。コンテナデータ型のデータは、他のデータベースデータとは別個に記憶されるが、データベースを介して管理及びアクセスが為されるデータベースデータの一部である。例えば、次に示す構造化クエリ言語（ＳＱＬ）クエリの挿入ステートメント例に応答してデータベースファイル２１２を記憶するための場所及びパスは、データベース１１０によって判定され得る。
【００２４】
ＩＮＳＥＲＴ  ＩＮＴＯ  ｔａｂｌｅ＿ｎａｍｅ（列１）
ＶＡＬＵＥＳ（“ｍｙ＿ｆｉｌｅ．ｐｄｆ”）；                      （１）
「列１」がコンテナデータ型を有することがデータベース１１０によって判定された場合、このデータベースは、文字列「ｍｙ＿ｆｉｌｅ．ｐｄｆ」をデータベース内に挿入するよりむしろ、ファイル「ｆｉｌｅ＿１．ｐｄｆ」をデータベースファイル２１２として本システムにアップロードしてからアップロード済みファイルにシステム名（例えば「ｍｙ＿ｆｉｌｅ．ｐｄｆ」）を付けることができる。
【００２５】
加えて、リモートコンテナは、データベースファイル２１２及び２１４の各アクセス制限２２２及び２２４の管理に使用できる情報を記憶することが可能である。情報は、データベースファイル２１２及び２１４を暗号化、復号化するための１つ以上の鍵を含み得る。例えば、データベースファイル２１２のコンテンツを読み取るにはデータベースファイル２１２を復号化するための鍵が必要とされるよう、データベースファイル２１２を暗号化することも可能である。この鍵は、コンテナデータフィールド２０８に関連付けられたリモートコンテナ内に記憶され得る。本システムでは、データベースファイル２１２のコンテンツにアクセスできるユーザを、コンテナデータフィールド２０８へのアクセスを許可されたユーザだけに制限できる。コンテンツは、リレーショナルデータベース又はリレーショナルデータベースを使用したアプリケーションプログラムを介して提供され得る。したがって、データベースファイル２１２に対するユーザのアクセス権限は、記憶装置２２６に対するユーザのアクセス権限に非依存であり得る。例えば、記憶装置２２６に対するアクセス権限のないユーザでも、記憶装置２２６上に記憶されたデータベースファイル２１２のコンテンツにアクセスすることが可能である。
【００２６】
例示的なデータフィルタ
図３は、インテリジェントデータ配信に用いられる例示的なフィルタ技術を示すブロック図である。フィルタ技術を利用することによって、データベースサーバ１０２は、どのような場合にあるプロトコルを用いた要求に応答してデータベースデータをクライアントに送信すべきか、及びどのような場合に別のプロトコルを用いた要求に応答してデータへの参照をクライアントに送信すべきかを判定できる。
【００２７】
データベースサーバ１０２は、フィルタ３０２を含み得る。フィルタ３０２は、データベース要求に応答して取得されたデータの特性に基づいてデータベース要求に対し別々の応答を与えるように構成された、データベースサーバ１０２のハードウェア又はソフトウェアコンポーネントであり得る。データベース１１０は、在来型データ及びコンテナデータを記憶できる。在来型データとしては、数値型（例えば、整数、符号なし整数、又は浮動小数点数）、ブール型、テキスト型（例えば、固定長又は可変長文字列）、日付／時刻型、又は識別子（ＩＤ）型を有するデータを挙げることができる。コンテナデータとしては、マルチメディア（例えば、オーディオ又はビデオストリーム）型、データオブジェクト（例えば、オブジェクのリンク及び埋め込み（ＯＬＥ）オブジェクト）型、又はファイル（例えば、ＯｐｅｎＤｏｃｕｍｅｎｔ（商標）（ＯＤＴ）、ポータブルドキュメントフォーマット（ＰＤＦ））型を有するデータを挙げることができる。
【００２８】
データがコンテナデータである場合、コンテンツ項目３０４及びコンテンツ項目３０６を含むコンテナデータの実際のコンテンツ（例えば、マルチメディアファイルのコンテンツ）は、コンテンツデポ１１４において在来型データとは別個に記憶され得る。幾つかの実装において、コンテンツ項目３０４及びコンテンツ項目３０６はデータベースサーバ１０２とは別個に記憶され得る。データベース１１０は、コンテンツ項目３０４への参照３０８及びコンテンツ項目３０６への参照３１０を記憶することも可能である。
【００２９】
データベース１１０が要求に応答してデータを返すと、フィルタ３０２はフィルタパラメータ３１２に基づいて、データ又はデータへの参照のどちらを返すべきかを判定できる。フィルタパラメータ３１２はデータの特性及び対応するプロトコルを指定することが可能であり、指定された特性を有するデータがあれば、そのデータが対応するプロトコルに従って配信されるようになる。例えば、フィルタパラメータ３１２は、データがコンテナデータ型を有し、かつデータのコンテンツのサイズがｘキロバイト（ＫＢ）であれば、そのデータがＨＴＴＰストリーミングプロトコルを使用して配信されるように、指定することができる。フィルタパラメータ３１２は、コンテンツデポ１１４への参照３１４及びウェブサーバ１１８への参照３１６を含んでもよい。フィルタパラメータ３１２に関しては、後ほど図４を参照しながら更に詳細に説明する。
【００３０】
フィルタ３０２は、フィルタパラメータ３１２及びデータベース１１０から返されたデータに基づき、例えば、コンテンツ項目３０４が第１のプロトコルを使用してクライアントに配信され、かつコンテンツ項目３０６が第１のプロトコルとは別の第２のプロトコルを使用して配信されることを判定できる。フィルタ３０２は、実際のコンテンツ項目３０４及び３０６でなく参照情報をクライアントに供給できる。この参照情報は、例えば、ウェブサーバ１１８及びコンテンツデポ１１４への参照（例えば、ホスト名又はインターネットプロトコル（ＩＰ）アドレス）、並びにウェブサーバ１１８若しくはコンテンツデポ１１４又はその両方への接続に用いられるプロトコルを含み得る。
【００３１】
図４は、フィルタパラメータ３１２の例示的な構造を示すブロック図である。フィルタパラメータ３１２は、データベース識別子４０２を含み得る。データベースサーバは１つ以上のデータベースのホストになり得る。共通のフィルタが１つ以上のデータベースのそれぞれに適用され得る。互いに異なる２つのデータベースは、別個のフィルタパラメータを有し得る。データベース識別子４０２は、フィルタパラメータ３１２を適用する対象のデータベースを指定できる。同様に、幾つかの実装においては、フィルタパラメータ３１２は、フィルタパラメータ３１２をユーザ固有にすることの可能なユーザ識別子を含んでもよい。
【００３２】
フィルタパラメータ３１２は、フィルタ条件４０４を含み得る。フィルタ条件４０４は、データの特性が１つ以上の基準に適合した場合に、指定されたプロトコルを用いてデータが配信されるように指定することが可能である。例えば、フィルタ条件４０４は、データがコンテナデータ型を有するか又はデータコンテンツが指定された形式（例えば、ＰＤＦ）である場合にＨＴＴＰストリーミングプロトコルを使用してデータを配信するように指定したデータ型条件４０６を含み得る。フィルタ条件４０４は、データのサイズが閾値（例えば、ｘ  ＫＢ）に適合する場合にＨＴＴＰストリーミングプロトコルを使用してデータを配信するように指定したデータサイズ条件４０８を含んでもよい。同様に、フィルタ条件４０４は、日付／時刻条件（例えば、過去ｎ時間以内にデータが挿入されたならばプロトコルＸを使用する）、トリガ条件（例えば、Ａ＞ＢであるならばプロトコルＹを使用する）、又はスクリプト条件（例えば、スクリプトが実行されたならばプロトコルＺを使用するなど）を含むこともできる。いずれの基準にも適合しない場合、データは既定のプロトコル（例えば、既存のデータベース接続を介して）を使用して配信できる。
【００３３】
フィルタはホストパラメータ４１０を含むことも可能である。ホストパラメータ４１０は、宛先サーバに関する情報を含んでもよい。クライアントはこの情報を用いることで、宛先サーバを識別し接続できる。例えば、ホストパラメータ４１０は、ウェブサーバのＩＰアドレス、ホスト名、若しくはユニフォームリソースロケータ（ＵＲＬ）、ウェブサーバへの接続用のポート番号、又はパスワードのうちの１つ以上を指定するウェブサーバ指定４１２を含み得る。ホストパラメータ４１０は、コンテンツ項目の場所を指定するコンテンツデポ指定４１４を含み得る。クライアントは、その場所をＵＲＬエンコードし、エンコードされた場所を要求の一部としてウェブサーバに送信できる。
【００３４】
例示的なユーザインタフェース
図５は、インテリジェントデータ配信を受信するデータベースクライアント上に実装された例示的なユーザインタフェース５００である。ユーザインタフェース５００は、データベースアプリケーションプログラムのグラフィカルユーザインタフェースであり得る。この例では、データベースアプリケーションプログラムがムービーデータベースに接続している。
【００３５】
ユーザインタフェース５００は、制御セクション５０２及びリストビューセクション５０４を含み得る。制御セクション５０２は、データベースアプリケーションプログラムがクエリを作成し、クライアント機器から遠隔の位置にあるデータベースサーバにサブミットすることができるように、ユーザ入力を受信するように構成できる。データベースアプリケーションプログラムによって作成された例示的なクエリは、以下に示すようなＳＱＬクエリであり得る。
【００３６】
ＳＥＬＥＣＴ  ｔｉｔｌｅ，ｇｅｎｒｅ，ｓｏｕｒｃｅ，ｃｏｎｔｅｎｔ  ＦＲＯＭ  ｍｏｖｉｅ＿ｔａｂｌｅ；                （２）
リストビューセクション５０４は、クエリに応答して例示的なムービーデータベースから取得されたデータが表示されるように構成することが可能である。ここに示した例では、リストビューセクション５０４に、テキスト表示セクション５０６及びテキスト表示セクション５１０が表示されている。テキスト表示セクション５０６及び５１０は、データベース内のデータベーステーブル「ｍｏｖｉｅ＿ｔａｂｌｅ」から取得された題名、ジャンル及び提供元が表示されるように構成されている。
【００３７】
リストビューセクション５０４は、メディア表示領域５０８及びメディア表示領域５１２を含み得る。メディア表示領域５０８及び５１２は、データベース内のデータベーステーブル「ｍｏｖｉｅ＿ｔａｂｌｅ」から取得されたマルチメディアコンテンツが表示されるように構成されている。この例では、データベーステーブル「ｍｏｖｉｅ＿ｔａｂｌｅ」内のデータ列「ｃｏｎｔｅｎｔ」がコンテナデータ型を有する。したがって、ドキュメンタリ「ザ・プルーフ」及びホームビデオ「バースデイ・パーティ」のムービーファイルは、「ｍｏｖｉｅ＿ｔａｂｌｅ」の題名、ジャンル及び提供元データとは別個に記憶される。クライアント機器にサービスを提供するデータベースサーバは、下記のように指定されたフィルタパラメータを有するフィルタを備え得る。
【００３８】
１．（ａ）コンテナデータ型を有し（２）５１２ＫＢを超えるデータは、ＨＴＴＰ接続を介したＨＴＴＰストリーミングプロトコルを使用して配信され、
２．他のデータは既存のデータベース接続を介して配信される。
【００３９】
データベース内のデータによれば、ドキュメンタリ「ザ・プルーフ」は５１２ＫＢを超えるのに対し、ホームビデオ「バースデイ・パーティ」はそれ以下である。したがって、クライアント機器は、既存の接続を介して「バースデイ・パーティ」のムービーファイルを受信し、新規のＨＴＴＰ接続を自動的にかつ透過的に開き、「ザ・プルーフ」のムービーファイルを取得する。２つのマルチメディアファイルは別個の接続を介して取得され、同時並行的に取得することが可能である。結果として、メディア表示領域５０８及び５１２内のコンテンツは同時並行的に表示できる。これにより、ユーザは「バースデイ・パーティ」の視聴する前に「ザ・プルーフ」のダウンロード完了を待たなければいけないのではなく、両方のムービーを同時に視聴することができる。
【００４０】
例示的なデータ配信プロセス
図６は、インテリジェントデータ配信が実装されたシステム上で実行される例示的なプロセス６００の流れ図である。本システムは、データベースサーバ（例えば、図１のデータベースサーバ１０２）を含み得る。データベースサーバは、ユーザ機器（例えば、図１のクライアント１０４）からデータに対する要求を受信できる（６０２）。要求はデータベースクエリ（例えば、上記のＳＱＬクエリ（２））を含み得る。
【００４１】
本システムは要求されたデータの特性を判定し得る（６０４）。特性は、要求されたデータのデータサイズ、又は要求されたデータのデータ型を含み得る。データ型を判定することは、要求されたデータがコンテナデータ型を有するかを判定することを含み得る。コンテナデータ型は、マルチメディアデータ又はデータオブジェクトに対して指定されたデータベーステーブル列用のデータ型であり得る。
【００４２】
本システムは、データの特性（例えば、データサイズ又はデータ型）に基づいて、データ配信プロトコルを識別できる（６０６）。データ配信プロトコルは、（例えば、図３及び図４のフィルタパラメータ３１２に指定されたように）候補となる複数のデータ配信プロトコルから識別され得る。データ配信プロトコルは、特性（例えば、データサイズ又はデータ型）を有するデータを配信するために指定されたデータプロトコルであり得る。
【００４３】
幾つかの実装において、プロトコルを識別することは、データサイズが事前指定された閾値に適合するかどうかを判定することを含み得る。データサイズが閾値に適合しない場合、本システムは第１のデータ配信プロトコル（例えば、事前指定されたの既定のデータ配信プロトコル）を識別できる。データサイズが閾値に適合した場合、本システムは第２のデータ配信プロトコル（例えば、ＨＴＴＰストリーミングプロトコル）を識別できる。後者の場合、本システムはデータベースサーバからユーザ機器にＨＴＴＰサーバのアドレスを送信できる。
【００４４】
本システムでは、段階６０６において識別されたデータ配信プロトコルを用いて、要求に応答してデータをユーザ機器に配信できる（６０８）。データを配信することは、第１のデータ配信プロトコルが識別された場合に第１の接続を介してデータを配信すること、又は第２のデータ配信プロトコルが識別された場合に第２の接続を介してデータを配信することを含み得る。第１の接続は、ユーザ機器とデータベースサーバとの間のデータベース接続であり得る。第２の接続は、ユーザ機器とＨＴＴＰサーバとの間のＨＴＴＰ接続であり得る。データを配信することは、ユーザ機器とＨＴＴＰサーバとの間のＨＴＴＰ接続を介して、ＨＴＴＰストリーミングプロトコルを使用してデータをユーザ機器に配信することを含み得る。
【００４５】
例示的なシステムアーキテクチャ
図７は、図１〜図６の諸機能及び動作を実装するための例示的なシステムアーキテクチャ７００のブロック図である。これよりもコンポーネント数が多いか又は少ないアーキテクチャを含む、他のアーキテクチャも可能である。幾つかの実装において、アーキテクチャ７００は、１つ以上のプロセッサ７０２（例えば、デュアルコアＩｎｔｅｌ（登録商標）Ｘｅｏｎ（登録商標）プロセッサ）、１つ以上の出力装置７０４（例えば、ＬＣＤ）、１つ以上のネットワークインタフェース７０６、１つ以上の入力装置７０８（例えば、マウス、キーボード、タッチセンシティブディスプレイ）、及び１つ以上のコンピュータ可読媒体７１２（例えば、ＲＡＭ、ＲＯＭ、ＳＤＲＡＭ、ハードディスク、光学ディスク、フラッシュメモリなど）を備える。これらのコンポーネントは、コンポーネント間のデータ及び制御信号の転送を促すための各種ハードウェア及びソフトウェアを利用できる１つ以上の通信チャネル７１０（例えば、バス）を経由して、通信及びデータをやり取りできる。
【００４６】
「コンピュータ可読媒体」という用語は、プロセッサ７０２に実行させる命令を与えることに関与する任意の媒体を指し、限定はされないが、不揮発性媒体（例えば、光学ディスク又は磁気ディスク）、揮発性媒体（例えば、メモリ）、及び伝送媒体が挙げられる。伝送媒体としては、限定はされないが、同軸ケーブル、銅線及び光ファイバーが挙げられる。
【００４７】
コンピュータ可読媒体７１２は、オペレーティングシステム７１４（例えば、Ｍａｃ  ＯＳ（登録商標）サーバ、Ｗｉｎｄｏｗｓ（登録商標）ＮＴサーバ）、ネットワーク通信モジュール７１６、データベース管理プログラム７２０、フィルタプログラム７３０、及びフィルタパラメータ７４０を更に含み得る。オペレーティングシステム７１４は、マルチユーザ、マルチプロセッシング、マルチタスク、マルチススレッド、リアルタイムなどであり得る。オペレーティングシステム７１４が実行する基本タスクとしては、機器７０６，７０８からの入力を認識して機器７０６，７０８への出力を供給すること；コンピュータ可読媒体７１２（例えばメモリ又は記憶装置）上のファイル及びディレクトリを追跡、管理すること；周辺装置を制御すること；並びに１つ以上の通信チャネル７１０上のトラフィックを管理することが挙げられるが、これらに限定されるものではない。ネットワーク通信モジュール７１６は、ネットワーク接続を確立し維持するための各種コンポーネント（例えば、ＴＣＰ／ＩＰ、ＨＴＴＰなどの通信プロトコルを実装するためのソフトウェア）を含む。
【００４８】
データベース管理プログラム７２０は、実行されたときにプロセッサ７０２に、図１に関して上述したようなデータベースサーバ１０２の動作を実行させるコンピュータ命令を含み得る。データベース管理プログラム７２０は、ファイルシステム上の１つ以上のデータベースへのインタフェースを含み得る。データベースは、階層型フォルダ構造（即ち、ファイルシステム内のディレクトリにマッピングするフォルダ）の配下に編成され得る。フィルタプログラム７３０は、実行されたときに、図３に関して上述したような動作フィルタ３０２をプロセッサ７０２に実行させるコンピュータ命令を含み得る。フィルタパラメータ７４０は、図３及び図４に関して上述した１つ以上のフィルタパラメータ３１２を含み得る。
【００４９】
アーキテクチャ７００は、並列処理若しくはピアツーピアインフラ構造にて、又は１つ以上のプロセッサが搭載された単一機器上に、実装され得る。ソフトウェアは、複数のソフトウェアコンポーネントを含む場合もあれば、又は単一のコードである場合もある。
【００５０】
記載されている諸機能は、プログラマブルシステム上で実行可能な１つ以上のコンピュータプログラム内に実装するのが有効であり得る。このプログラマブルシステムは、データ及び命令をそこから受信したり、データ及び命令をそこへ送信したりするデータ記憶装置システムと接続された、少なくとも１つのプログラマブルプロセッサ、少なくとも１つの入力装置、並びに少なくとも１つの出力装置を含む。コンピュータプログラムとは、コンピュータにおいて或るアクティビティを実行するか又は或る結果をもたらすことを目的に直接的又は間接的に使用できる一連の命令である。コンピュータプログラムは、コンパイル言語又はインタプリタ言語を含む任意の形式のプログラミング言語（例えば、Ｏｂｊｅｃｔｉｖｅ−Ｃ、Ｊａｖａ）で記述でき、スタンドアロンプログラムとしての形式、又はモジュール、コンポーネント、サブルーチン、ブラウザベースのウェブアプリケーション、若しくはコンピューティング環境での使用に適した他のユニットとしての形式を含めた任意の形式で配備できる。
【００５１】
命令プログラムを実行するための好適なプロセッサとしては、例えば、汎用及び特定用途向けマイクロプロセッサの両方、そして、任意の種類のコンピュータの単独プロセッサ、又はマルチプロセッサ若しくはマルチコアの一つが挙げられる。プロセッサは一般的に、読み出し専用メモリ若しくはランダムアクセスメモリ、又はその両方から命令及びデータを受信する。コンピュータの必須要素は、命令を実行するプロセッサ、並びに命令及びデータを記憶する１つ以上のメモリである。一般的に、コンピュータはまた、データファイルを記憶するための１つ以上の大容量記憶装置を備えるか、又はそれらの大容量記憶装置と通信するように動作可能に接続される。そのような装置としては、内蔵ハードディスク及びリムーバブルディスクなどの磁気ディスク；光磁気ディスク；並びに光学ディスクが挙げられる。コンピュータプログラム命令及びデータを有形的に具象化するのに適した記憶装置には、例えば、半導体メモリ装置（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ及びメモリフラッシュメモリ装置）；磁気ディスク（例えば、内蔵ハードディスク及びリムーバブルディスク）；光磁気ディスク；並びにＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含むあらゆる形式の不揮発性メモリ、媒体及びメモリ装置が包含される。プロセッサ及びメモリは、ＡＳＩＣ（特定用途向け集積回路）で補助することも、又はＡＳＩＣ内に組み込むことも可能である。
【００５２】
ユーザとの対話型操作が行えるよう、ユーザに情報を表示するためのディスプレイ装置、例えば、ＣＲＴ（陰極線管）又はＬＣＤ（液晶ディスプレイ）モニター、並びにユーザがコンピュータへの入力を行えるようにする手段となるキーボード及びポインティング装置（例えば、マウス又はトラックボール）が備えられたコンピュータ上に、諸機能を実装できる。
【００５３】
バックエンドコンポーネント（例えば、データサーバ）を含むか、又はミドルウェアコンポーネント（例えば、アプリケーションサーバ若しくはインターネットサーバ）を含むか、又はフロントエンドコンポーネント（例えば、グラフィカルユーザインタフェース若しくはインターネットブラウザ又はこれらの任意の組み合わせを有するクライアントコンピュータ）を含むコンピュータシステム上に、諸機能は実装できる。本システムのコンポーネントは、任意の形態で、又はデジタルデータ通信（例えば、通信ネットワーク）の媒体を介して接続できる。通信ネットワークの例としては、例えば、ＬＡＮ、ＷＡＮ、並びにインターネットを構成するコンピュータ及びネットワークが挙げられる。
【００５４】
コンピュータシステムは、クライアント及びサーバを備え得る。クライアント及びサーバは、相互に遠く離れているのが一般的であり、典型的には通信ネットワークを介して相互作用する。クライアント及びサーバの関係は各々のコンピュータ上で実行されていてかつ相互にクライアント／サーバ関係を有するコンピュータプログラムに基づいて生じる。幾つかの実施形態において、サーバは（ＨＴＭＬページなどの）データを（例えば、クライアント機器と対話型操作を行うユーザにデータを表示し、そのユーザからのユーザ入力を受信するための）クライアント機器に転送する。クライアント機器において生成されたデータ（例えば、ユーザの対話型操作の結果）は、サーバにおいてクライアント機器から受信され得る。
【００５５】
１つ以上のコンピュータを備えるシステムは、本システム上にインストールされているソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせを介して特定のアクションが実行されるように構成することが可能であり、その構成によって、稼働中に本システムにそれらのアクションが実行させる。１つ以上のコンピュータプログラムに命令を含めることによって特定のアクションが実行されるように構成でき、その命令がデータ処理装置によって実行されたときにこの装置にそれらのアクションが実行させる。
【００５６】
本明細書には多くの具体的実装の詳細が記載されているが、これらの詳細は、任意の発明又は請求され得る内容の範囲に対する制限として解釈すべきではない。寧ろ、特定の発明における特定の態様に固有な特徴の説明として解釈すべきである。別個の実施形態のコンテキストで本明細書に記載されている特定の特徴どうしを組み合わせて、単一の実施形態に実装することもできる。その逆に、単一の実施形態の文脈で記載されている様々な特徴をそれぞれ別個に複数の実施形態にしたり、又は任意の好適な部分的組み合わせにして実装することもできる。更に、特徴が特定の組み合わせで作用するものとして上に記載されている場合もあれば、更には当初からにもそのようなものとして主張されている場合もあるが、幾つかの実例においては、主張された組み合わせの１つ以上の特徴をその組み合わせから削除することもできる。また、主張された組み合わせを部分的組み合わせ又は部分的組み合わせの変形態様へ指向することもできる。
【００５７】
同様に、図面においては動作が特定の順序で示してあるが、これは、望ましい結果を達成するために、そのような動作を示してある特定の順序で若しくは逐次的な順序で実行するか、又は例示されている全ての動作を実行することが必要なものとして理解すべきではない。特定の状況において、多重タスク処理及び並列処理が、有利な場合がある。なお、上に記載されている実施形態における様々なシステムコンポーネントの分離は、あらゆる実施形態においてそのような分離が要求されるものとして理解すべきではなく、記載されているプログラムコンポーネント及びシステムを通常はまとめて単一のソフトウェア製品に一体化してもよいし、又は複数のソフトウェア製品にパッケージ化してもよいものとして理解すべきである。
【００５８】
故に、主題に係る特定の実施形態について説明してきた。他の実施形態は、下掲の特許請求の範囲内に含まれる。場合によっては、特許請求の範囲に記載されているアクションを別の順序で実行することも可能であり、その場合でも依然として望ましい結果が達成され得る。加えて、添付図面に描かれているプロセスは望ましい結果が達成するために必ずしも、示してある特定の順序又は逐次的な順序で為される必要はない。特定の実装においては、多重タスク処理及び並列処理が有利な場合がある。
【００５９】
本発明における幾つかの実装について説明してきた。にもかかわらず、本発明の趣旨及び範囲から逸脱することなしに様々な修正が為され得ることが、理解されよう。例えば、殆どの例はＨＴＴＰストリーミングプロトコルを参照して説明してあるが、記載されている技術は任意のデータ交換プロトコルに適用され得る。
【図１】
0005932055.tif 000002
【図２】
0005932055.tif 000003
【図３】
0005932055.tif 000004
【図４】
0005932055.tif 000005
【図５】
0005932055.tif 000006
【図６】
0005932055.tif 000007
【図７】
0005932055.tif 000008