(57)【要約】  クライアントが表形式のデータを単一のパラメータとしてサーバに送れるようにすることにより表形式データストリーム（ＴＤＳ）プロトコルを拡張するシステムおよび方法。表値パラメータ（ＴＶＰ）転送構成要素が、クライアントサーバが例えば、サーバ側のプロシージャを起動するときに、データベース表全体を単一のパラメータとして送信するようにすることができる。そのため、ストアードプロシージャに関連付けられた関数用の値を渡すことができ、パラメータ型アプリケーションプログラムインターフェース（ＡＰＩ）が実施できる。
2010531481.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとサーバとの間で要求／応答を転送する表形式データストリーム（ＴＤＳ）プロトコル
前記ＴＤＳの一部としての表値パラメータ（ＴＶＰ）転送構成要素であって、表形式のデータを単一のパラメータとして前記クライアントから前記サーバへ送信するＴＶＰ構成要素
というコンピュータ実行可能構成要素を含むことを特徴とするコンピュータ実装されたシステム。
【請求項２】
前記ＴＤＳプロトコルは、前記表形式のデータを定義する値パラメータをさらに含むことを特徴とする請求項１に記載のコンピュータ実装されたシステム。
【請求項３】
前記ＴＤＳプロトコルは、前記表形式のデータの転送用のパケットとしてモデル化されたバッファをさらに含むことを特徴とする請求項２に記載のコンピュータ実装されたシステム。
【請求項４】
前記表形式のデータの転送用に前記サーバによって呼出し可能なストアードプロシージャをさらに含むことを特徴とする請求項２に記載のコンピュータ実装されたシステム。
【請求項５】
前記ストアードプロシージャに関連した関数用の値を渡すパラメータ型アプリケーションプログラムインターフェース（ＡＰＩ）をさらに含むことを特徴とする請求項４に記載のコンピュータ実装されたシステム。
【請求項６】
関係データベースに関連したデータベース管理システムをさらに含むことを特徴とする請求項４に記載のコンピュータ実装されたシステム。
【請求項７】
前記クライアントはウェブブラウザをさらに含むことを特徴とする請求項４に記載のコンピュータ実装されたシステム。
【請求項８】
前記表形式のデータは表全体を表すことを特徴とする請求項７に記載のコンピュータ実装されたシステム。
【請求項９】
ＳＱＬコマンドを前記クライアントのメッセージバッファに置くためのＯＤＢＣ（Ｏｐｅｎ  Ｄａｔａ  Ｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）ルーチンをさらに含むことを特徴とする請求項７に記載のコンピュータ実装されたシステム。
【請求項１０】
前記ＳＱＬコマンドはユニコードフォーマットであることを特徴とする請求項７に記載のコンピュータ実装されたシステム。
【請求項１１】
データをＴＤＳプロトコルを介してクライアントからサーバに転送するステップ、および
表形式のデータを単一のパラメータとして前記クライアントから前記サーバへ送信するステップ
というコンピュータ実行可能な動作を含むことを特徴とする、コンピュータが実施する方法。
【請求項１２】
データの表全体をカプセル化するステップをさらに含むことを特徴とする請求項１１に記載のコンピュータが実施する方法。
【請求項１３】
ヌル可能な型を示すためのフラグを設定するステップをさらに含むことを特徴とする請求項１１に記載のコンピュータが実施する方法。
【請求項１４】
ヘッダ部によって行または列またはデータ型またはそれらの組み合わせを定義するステップをさらに含むことを特徴とする請求項１１に記載のコンピュータが実施する方法。
【請求項１５】
１バイト識別子の形でトークンを使用するステップをさらに含むことを特徴とする請求項１１に記載のコンピュータが実施する方法。
【請求項１６】
列の順序付けを記載するステップをさらに含むことを特徴とする請求項１５に記載のコンピュータが実施する方法。
【請求項１７】
前記単一のパラメータを単一のエンティティとして扱うステップをさらに含むことを特徴とする請求項１６に記載のコンピュータが実施する方法。
【請求項１８】
分類子を通して前記単一のパラメータの生成を推論するステップをさらに含むことを特徴とする請求項１１に記載のコンピュータが実施する方法。
【請求項１９】
前記単一のパラメータの中で表をＳＱＬサーバに送るステップをさらに含むことを特徴とする請求項１１に記載のコンピュータが実施する方法。
【請求項２０】
クライアントとサーバとの間でデータを交換するための手段と、
前記サーバによって単一のパラメータの形で表を受信するための手段と
を有することを特徴とするコンピュータ実装されたシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表形式データストリームプロトコルによる表値パラメータの転送に関する。
【背景技術】
【０００２】
コンピュータ技術（例えば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能・・・）の進歩は、様々な産業でのコンピュータ用途の拡大に広く寄与しており、コンピュータシステムの構成が劇的に変化するほどである。すべてのユーザが各自の仕事を持ち込む、単一の大型コンピュータが存在する大規模コンピュータセンタの概念は陳腐になった。同様に、データベース管理システム（ＤＢＭＳシステム）は、はるか前に中央集中型メインフレーム環境から非中央集中型または分散環境に移行した。例えば、１つまたは複数のＰＣ「クライアント」システムをネットワークを介して１つまたは複数のサーバベースのデータベースシステム（構造化照会言語−ＳＱＬデータベースサーバ）に接続することができる。コンピュータネットワークの既知の例として、コンピュータが地理的にまとまって近くにある（例えば、同じ建物内にある）ローカルエリアネットワーク（ＬＡＮ）、およびコンピュータがより遠くに離れていて、電話線または無線波で接続されるワイドエリアネットワーク（ＷＡＮ）がある。
【０００３】
多くの場合、ネットワークは、「クライアント／サーバ」ネットワークとして、ネットワーク上のコンピュータが「クライアント」または「サーバ」と分類されるように構成される。サーバは、ストレージ（例えば、ディスクドライブ）、プリンタ、モデムなどの共用リソースの管理専門の強力なコンピュータまたはプロセスである。サーバは多くの場合に専用であるが、それは、サーバは、事実上、サーバのサーバタスク以外に他のタスクは実行しないという意味である。例えば、データベースサーバは、様々なクライアントからのデータベースクエリを処理するなど、データベース情報を管理する。クライアントサーバ構造のクライアント部分は、一般的にはＰＣまたはワークステーションを有し、それらは、サーバを使用して動作を行う。一般的に、クライアントは「クライアントアプリケーション」を実行し、クライアントアプリケーションは、サーバを使用して、特定のデータベース情報を返すなど、いくつかの動作を行う。そのようなネットワーク上で、様々な要求／応答プロトコルが所定のルールセットに従って情報を転送する。
【０００４】
１つのそのような要求／応答プロトコルが表形式データストリーム（ＴＤＳ）プロトコルであり、このプロトコルは、クライアントシステムとサーバシステム間の要求および応答の転送に使用される、メッセージ指向のアプリケーションレベルのプロトコルである。ＴＤＳは、文字（ｃｈａｒ）型、可変長文字（ｖｃｈａｒ）型、バイナリ（ｂｌｏｂ）型、日付時刻型、タイムスタンプ型、ベンダ固有のデータ型など、従来のＳＱＬデータ型のための本来のサポートを含むことができる。ＴＤＳを使用するシステムでは、クライアント（例えば、ユーザまたはアプリケーションプログラム）がサーバ（例えば、データベース）と長寿命の接続を確立することが一般的である。ハンドシェィクが成功し、適切な、サポートされる転送／セッションレベルのプロトコルを介して接続が確立されると、完全なメッセージがクライアントからサーバへ転送され、その後、完全な応答がサーバからクライアントに送られる。
【発明の概要】
【課題を解決するための手段】
【０００５】
以下で、本明細書のいくつかの態様の基本的な理解を促すために、本明細書の簡単な概要を提示する。この概要は、本明細書の包括的な概説ではない。また、本明細書の主要または重要な機能を特定することも、本明細書の範囲を概説することも意図されていない。その唯一の目的は、後で提示される、より詳細な説明の序文として、簡略な形で本明細書のいくつかの概念を提示することである。
【０００６】
本主題の技術革新は、クライアントが表形式のデータを単一のパラメータとしてサーバに送れるようにすることにより（例えば、パラメータの中に表を入れてＳＱＬサーバに送る）表形式データストリーム（ＴＤＳ）プロトコルを拡張している。そのようなＴＤＳプロトコルは表値パラメータ（Ｔａｂｌｅ  Ｖａｌｕｅｄ  Ｐａｒａｍｅｔｅｒ）（ＴＶＰ）転送構成要素を使用し、その構成要素により、クライアントサーバは、例えば、サーバ側のプロシージャを起動するときにデータベース表全体を単一のパラメータとして送信することができる。そのため、ストアードプロシージャに関連付けられた関数用の値を渡すことができ、パラメータ型アプリケーションプログラムインターフェース（ＡＰＩ）を実施できる。その場合、データの表全体をカプセル化できるＴＶＰ型を使用することにより、サーバがクライアントに出力パラメータを送信する、または値を返すこともできる。
【０００７】
したがって、単に個別の値をパラメータとして送信することとは対照的に、表形式の値のセットを単一のパラメータとしてクライアントからサーバに送信できる。それゆえ、クライアントは「Ｎ」個の列と「Ｍ」個の行（Ｍ、Ｎは整数）からのデータを単一のパラメータとしてサーバに送信できる。同様に、そのような単一のパラメータは、サーバ側で単一のエンティティとして扱うことができる。関連の態様において、ＴＶＰ転送構成要素は、単一のパラメータとしてサーバに送信される表形式に関連付けられたメタデータを使用する。そのようなものとして、データ型／ストリング、行数、列数などを指定する構文形式を含むことができる。
【０００８】
本主題の技術革新の方法によると、表の定義に関連付けられたメタデータは、最初に、構文形式の中で、ヌル可能な型などを示すための設定フラグなどを指定できる。その後、表形式のデータフォームが単一パラメータとしてクライアントからサーバに送信できる。次に、サーバは、そのような単一パラメータを単一エンティティとして扱うことができる。すると、関連のクエリがサーバ側で実行できる。
【０００９】
前述および関連の目的の達成に向けて、本技術革新は、それゆえ、これ以降で詳しく説明される機能を有する。以下の説明および添付の図面は、本発明のある例示的な態様を詳しく記載する。ただし、これらの態様は、本発明の原理が利用できる様々な方法のうちのほんの一部を示しているだけである。本発明の他の態様、利点および新規機能は、図面とともに考察すれば、本発明の以下の詳しい説明から明らかになろう。
【図面の簡単な説明】
【００１０】
【図１】表形式の値のセットを単一パラメータとしてクライアントからサーバに送信できる例示的な表形式データストリーム（ＴＤＳ）プロトコルを本主題の技術革新の一態様に従って示した図である。
【図２】表値パラメータ（ＴＶＰ）転送構成要素を本主題の技術革新のＴＤＳプロトコルの一部として示した図である。
【図３】３つのパラメータ用のＴＶＰ形式の特定の例を本明細書の一態様に従って示した図である。
【図４】表形式のデータを単一のパラメータとしてサーバに送る方法を本主題の技術革新の一態様に従って示した図である。
【図５】本主題の技術革新のＴＶＰ転送構成要素によってデータの表をカプセル化する関連の方法を示した図である。
【図６】例示的なバッファヘッダ構成を、クライアントサーバがデータベース表全体を単一のパラメータとして送信できるようにしたＴＶＰ転送構成要素の一部として示した図である。
【図７】ＴＶＰ構成要素に関連した人工知能（ＡＩ）構成要素を本主題の技術革新の特定の態様に従って示した図である。
【図８】拡張ＴＤＳプロトコルを実施する例示的なシステムを本主題の技術革新のさらなる態様に従って示した図である。
【図９】本主題の技術革新の様々な態様を実施するための例示的な環境を示した図である。
【図１０】本主題の技術革新の一態様に従って表形式のデータの転送に使用できるサンプルのコンピューティング環境の概略的なブロック図である。
【発明を実施するための形態】
【００１１】
以下で本主題の技術革新の様々な態様が添付の図面を参照しながら説明されるが、全体にわたって、同様の番号は同様のまたは対応する要素を指す。しかし、図面およびそれらに関連した詳細な説明は、特許請求の範囲に記載される主題を、開示される特定の形式に限定するようには意図されていないことを理解されたい。むしろ、意図するところは、特許請求の範囲で記載される主題の趣旨および範囲内に入るすべての修正、均等物、および代替形態を包含することである。
【００１２】
図１は、拡張表形式データストリーム（ＴＤＳ）プロトコル１２０を本主題の技術革新の一態様に従って使用するシステム１００のブロック図を示している。そのような拡張ＴＤＳプロトコルは、クライアント１３０がデータベース表１３５全体を単一のパラメータ１３１の形でサーバ１４０に送信できるようになっており、その後、ステートメントを実行することができ、結果をクライアント１３０に送り返すことができる。
【００１３】
システム１００はデータストレージシステム１１０に関連付けられており、データストレージシステム１１０は、複合モデルベースのデータベース構造であってよく、その中の項目、副項目、プロパティおよび関係は、データストレージシステム内の情報の表現を複合型のインスタンスとして許容するように定義されている。例えば、データストレージシステム１１０は、リッチな、パーシストされたオブジェクトおよびオブジェクト間のリンクを作成および管理するために基本的なビルディングブロックのセットを使用することができる。項目は、個別にセキュリティの保護、シリアライズ、同期化、コピー、バックアップ／復元などが行える、データストレージシステム１１０内の最小の一貫性の単位と定義することができる。そのような項目は型のインスタンスを含むことができ、その場合、データストレージシステム１１０内の全項目を、項目の単一のグローバルエクステント内に保存できる。さらに、データストレージシステム１１０は、少なくとも１つの項目および／またはコンテナ構造に基づくことが可能で、ファイル内に項目として埋め込まれたリッチメタデータをさらすストレージプラットフォームとして動作できる。データストレージシステム１１０は、上述の機能をサポートするためのデータベース（図示せず）を含むことができ、その場合、任意の適切な特性および／または属性を実装できる。さらに、データストレージシステム１１０は、コンテナ階層構造を使用することができ、その場合、コンテナは、少なくとも１つの他の項目を入れることができる項目である。そのような収納の概念は、関連したクラス内のコンテナＩＤプロパティを用いて実施することができ、その場合、収納場所は、物理的に編成可能な、管理が容易な単位の形でのコンテナであってもよい。さらに、その収納場所は、階層構造内のコンテナのツリーのルートコンテナを表す。図１に示されているように、単に個別の値をパラメータとして送信することとは対照的に、拡張ＴＤＳ  １２０は、表形式の値のセットを単一のパラメータとしてクライアント１３０からサーバ１４０へ送信できるようになっている。それゆえ、クライアント１３０は「Ｎ」個の列と「Ｍ」個の行（Ｍ、Ｎは整数）の形でデータを単一のパラメータとしてサーバ１４０に送信できる。
【００１４】
図２は、表値パラメータ（ＴＶＰ）転送構成要素２２０を本主題の技術革新の一態様に従ってＴＤＳプロトコル２２２の一部として示している。例えば、サーバ側のプロシージャを起動するとき、ＴＶＰ転送構成要素２２０により、クライアント２２１はデータベースの表全体を単一のパラメータとして送信することができ、例えば、ストアードプロシージャに関連付けられた関数用の値を渡すことができる。
【００１５】
一般的には、ストアードプロシージャ２０４、２０６、２０８（１からｍ。ｍは整数）は、データベース内に物理的に保存されているプログラム（またはプロシージャ）である。そのようなプログラムは、通常、独自のデータベース言語で書かれており、ユーザ要求に応答して、データベース２１１のエンジンによって直接実行される。
【００１６】
ストアードプロシージャ２０４、２０６、２０８は、操作を必要とするデータに直接アクセスを有することができ、一般的には、結果をユーザに送り返す必要があるだけで、したがって、大量のデータの送信および返信のオーバーヘッドが軽減される。例えば、ストアードプロシージャ２０４、２０６、２０８の一般的な用途は、データベース構造に統合されたデータの検証（この目的に使用されるストアードプロシージャは、多くの場合、トリガと呼ばれる）、または何らかの大規模あるいは複雑な処理（要約された結果を生成するための大規模データセットの処理など）をカプセル化することを含むことができる。ストアードプロシージャ２０４、２０６、２０８は、データベース２１１が多数の外部プログラムから操作される場合にも使用できる。ＴＶＰ転送構成要素２２０は、パラメータ型アプリケーションプログラムインターフェース（ＡＰＩ）が実施できるようになっており、データの表全体をカプセル化できるＴＶＰ型を使用して、サーバがクライアントに出力パラメータを送信する、または値を返すこともできる。
【００１７】
以下の説明は、本主題の技術革新の一態様によるＴＶＰ転送構成要素２２０の特定の態様を説明している。例えば、以下の表定義を考察すると、
"create table authors(aid int primary key,aname varchar(max))"
顧客は、ストアードプロシージャを「ｔｖｐ＿ａｕｔｈｏｒｓ」表値パラメータで定義することができ、呼び出し側は、０・・Ｎ（Ｎは整数）行の表をパラメータとして渡すことができ、以下を作成者表に挿入しておくことができる。
create procedure proc_insert_authors(@p1 tvp_authors) as
insert into authors select * from @p1
【００１８】
関連のＴＶＰ形式について、図３は、ＴＶＰパラメータとして「Ｐａｒａｍ  ２」（３０４）を含む、着信する３つのパラメータのセットを表す図を示している。そのため、関連の構文は、次のような形式であってよい。
【００１９】
【表１】
2010531481.tif 000003
【００２０】
そのような構文中、例えば、ＤｂＮａｍｅ、ＯｗｎｉｎｇＳｃｈｅｍａおよびＴｙｐｅＮａｍｅは、最大１２８文字を含むことができる（１２８個のＷＣＨＡＲが最大識別名長である）。ＤｂＮａｍｅはゼロ長であってもよく、ＯｗｎｉｎｇＳｃｈｅｍａおよびＴｙｐｅＮａｍｅを指定できることを理解されたい。そのようなＤｂＮａｍｅ、ＯｗｎｉｎｇＳｃｈｅｍａおよびＴｙｐｅＮａｍｅは任意指定のフィールドであり、ゼロ長のストリングを含むことができる。呼び出し側は、一般的には、以下を守るべきである。すなわち、ＴＶＰが、パラメータメタデータがサーバ側で利用できるストアードプロシージャまたは関数へのパラメータである場合、クライアントは、ＴＶＰ＿ＴＹＰＥＮＡＭＥ用にすべてゼロ長のストリングを送ることができる。および／または、ＴＶＰが、アドホックＳＱＬステートメントへのパラメータである場合、パラメータメタデータ情報は一般的にサーバ上のストアードプロシージャまたは関数上で利用可能ではなく、そのような場合、サーバが、例えば、ｓｙｓ．ｔｙｐｅｓからＴＶＰ型を解決できるようにするために、クライアントはＴＶＰで十分な型情報を送る責務を有する。
【００２１】
【表２】
2010531481.tif 000004
【００２２】
【表３】
2010531481.tif 000005
【００２３】
上記の例示構文では、一般的に、１つの新規フラグｆＤｅｆａｕｌｔが追加可能で、ｆＤｅｆａｕｌｔフラグが設定された場合、クライアントドライバは、ＴＶＰ＿ＲＯＷ送信時に列のデータ値の出力をスキップすることができる。さらに、ＣｏｌＮａｍｅはＴＶＰ内で一般的にゼロ長であり、ユーザＵｓｅｒＴｙｐｅは、ＵｓｅｒＴｙｐｅ＝ｘ＿ｕｔｙｐＴｉｍｅＳｔａｍｐ（０ｘ５０）およびＴＹＰＥ＿ＩＮＦＯ  ＴＤＳ型がＢＩＧＢＩＮＡＲＹである場合を除いて無視できる。そのような場合、クライアントは、列はＴＩＭＥＳＴＡＭＰ列であることを示し、そのような特定のＴＩＭＥＳＴＡＭＰの場合、クライアントは、ＴＶＰの拒否を回避するために、その列にデフォルトというフラグを立てることができる。ＴＶＰのＴｖｐＣｏｌｕｍｎＭｅｔａＤａｔａは、通常のＣＯＬＭＥＴＡＤＥＴＡトークンのように、ＴＥＸＴ、ＮＴＥＸＴおよびＩＭＡＧＥ列にはＴａｂｌｅＮａｍｅを含まないことを理解されたい。さらに、ＴＶＰパラメータ全体がデフォルト値である場合、ＴＶＰ＿ＮＵＬＬ＿ＴＯＫＥＮトークンが使用できる（例えば、パラメータがデフォルトでない場合、ＴＶＰ＿ＮＵＬＬ＿ＴＯＫＥＮを使用すると、一般的にサーバによって拒否される）。
【００２４】
ＴＶＰでのフラグの使用
一般的に、入力ＴＶＰの場合、列にｆＤｅｆａｕｌｔフラグが設定されていると、クライアントは、各ＴＶＰ＿ＲＯＷの送信時に関連の列に対して対応するＴｖｐＣｏｌｕｍｎＤａｔａデータを発信しないように求められる。そのようにすると、動作の効率が改善され（例えば、ダミーまたはヌルデータ値の送信が軽減される）、その場合、サーバは、ＴＶＰ表の構築時に、欠落している値をサーバ側で挿入する。
【００２５】
同様に、入力ＴＶＰの場合、ｆＣａｓｅＳｅｎ、ｕｓＵｐｄａｔｅａｂｌｅおよびｆＦｉｘｅｄＬｅｎＣＬＲＴｙｐｅフラグは無視できる。さらに、ｆＣａｓｅＳｅｎを照合から算出することができ、サーバはそのような値を内部的に無視し、そのため、クライアントドライバに関連の計算の負担がかからない。加えて、ｕｓＵｐｄａｔｅａｂｌｅは入力時にサーバによって無視され、ｆＦｉｘｅｄＬｅｎＣＬＲＴｙｐｅフラグはサーバによって使用されない。
【００２６】
出力ＴＶＰの場合、フラグは、典型的なＣｏｌＭｅｔａＤａｔａトークンによって送信される値を結果セットにミラーリングする。
【００２７】
【表４】
2010531481.tif 000006
【００２８】
図４は、表形式のデータを単一のパラメータとしてサーバに送る関連の方法４００を本主題の技術革新の一態様に従って示している。例示の方法は、本明細書では、様々なイベントおよび／または動作を表す一連のブロックとして示され、かつ説明されているが、本主題の技術革新は、そのようなブロックの示された順序付けによって限定されることはない。例えば、一部の動作またはイベントは、本明細書に示された順序付けとは別に、本方式に従い異なる順序で、および／または他の動作またはイベントと同時に発生してよい。加えて、本主題の技術革新による方法を実施するために、示されたブロック、イベントまたは動作のすべてが必要とは限らない。さらに、本技術革新による例示の方法および他の方法は、本明細書に示され、かつ説明される方法と関連して実施されるだけでなく、本明細書に示されていない、または説明されていない他のシステムおよび装置と共同して実施できることが理解されよう。４１０において、例えば、クライアントは、ネットワーク上でログオンデータストリームを送ることによりサーバとの接続を開始する（例えば、ハンドシェィクを開始する）。クライアントからサーバへのそのような通信は複数のコマンドを含むことができ、サーバからの応答は複数の結果セットを返すことができる。開始されたそのような通信では、４２０で、ＴＤＳによってセッション、表示およびアプリケーションサービスの要素が提供される。次に４３０で、サーバはクライアントによる接続要求に応答することができる。続けて４４０で、単に個別の値をパラメータとして送信することとは対照的に、表形式の値のセットを単一のパラメータとしてクライアントからサーバへ送信できる。例えば、クライアントは「Ｎ」個の列と「Ｍ」個の行（Ｍ、Ｎは整数）の形でデータを単一のパラメータとしてサーバに送信できる。
【００２９】
図５は、本主題の技術革新のＴＶＰ転送構成要素によってデータの表をカプセル化する関連の方法５００を示している。最初に５１０で、メタデータ関連の構文形式が定義されるが、上記で詳しく説明されているように、その構文形式は、データ型／ストリング、行数、列数、ヌル可能な型などを示すための設定フラグなどのための構文を指定することを含む。次に５２０で、データの表全体を本主題の技術革新のＴＶＰ転送構成要素によってカプセル化できる。したがって、単に個別の値をパラメータとして送信することとは対照的に、５３０で、表形式の値のセットを、単一のパラメータとしてクライアントからサーバに送信できる。この場合、クライアントは「Ｎ」個の列と「Ｍ」個の行（Ｍ、Ｎは整数）の形のデータを単一パラメータとしてサーバに送信できる。５４０で、サーバは、それ以降、そのような単一のパラメータを単一のエンティティとして扱うことができる。関連のクエリは、その後、サーバ側で実行でき、結果をクライアントに送り返すことができる。
【００３０】
図６は、例示的なバッファヘッダ構成６００を、クライアントサーバがデータベース表全体を単一のパラメータとして送信できるようにしたＴＶＰ転送構成要素６１０の一部として示している。クライアントからサーバへの呼び出しは、サーバに１つまたは複数のパラメータを送信することができ、その場合、所定のヘッダ部分が値の型パラメータ、列、データ型、行、バイナリ形式および関連のバッファを定義することができる。
【００３１】
一般的には、バッファ６００は、１回で書き込まれる、または読み取られる単位であり、メッセージを１つまたは複数のバッファで構成できる「パケット」としてモデル化できる。バッファはバッファヘッダ６０２を含むことができ、その後に、メッセージを含むバッファデータ６０４が続く。さらに、各新規メッセージは新規バッファから始まることができる。
【００３２】
一般的に、クライアントおよびサーバは両方とも、データが満杯のバッファを読み取ろうとし、あとどれだけ多くの（または少ない）データが通信上に存在しているかを観測するためにヘッダを取り出すことができる。基礎となるネットワークインターフェースが、読み取りで指定されたすべてのバイトが読み取られるまでブロッキングを主張する場合、クライアントはヘッダを読み取ることができ、その後、あとどれだけ読み込むかを判定する。例えば、ログイン時、クライアントは、大きいメッセージをより小さい「パケット」に分断するために使用されるサイズを識別できる、要求される「パケット」サイズを指定することができる。さらに、表全体を渡すためにクライアントとサーバ間で渡されるメッセージは、一般的に、２つの型の１つ、すなわち、「トークンストリーム」または「トークンなしストリーム」のいずれかを含むことができる。トークンストリームは、１つまたは複数の「トークン」から成り、各トークンの後に何らかのトークン固有のデータが続く。「トークン」とは、後に続くデータを説明するために使用される１バイトの識別子を表す（例えば、トークンデータ型、トークンデータ長などを含んでいる）。トークンなしストリームは、一般的には単純なメッセージに使用され、メッセージ内のデータのより詳細な説明が必要になる可能性があるメッセージはトークンストリームとして送信される。
【００３３】
ＴＶＰに関連した例示的なトークンは、以下を含むことができる。
【００３４】
【表５】
2010531481.tif 000007
【００３５】
１．ＣｏｌＮｕｍ序数は１・・Ｎ（Ｎは整数）であり、１は、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡ内の１列目である（つまり、序数は１から始まる）。
２．各ＴＶＰ＿ＯＲＤＥＲ＿ＵＮＩＱＵＥトークンは、列のセットの順序付けおよび／または列のセットの一意性を記載できる。
３．順序付けビットが設定された最初の列序数は一次ソート列であり、順序付けビットが設定された２番目の列序数は二次ソート列のようになる。
４．クライアントは、単一のＴＶＰで０または１個のＴＶＰ＿ＯＲＤＥＲ＿ＵＮＩＱＵＥトークンを送信できる。
５．ＴＶＰ＿ＯＲＤＥＲ＿ＵＮＩＱＵＥトークンは、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡの後で、最初のＴＶＰ＿ＲＯＷトークンの前に送信できる。
６．ＴＶＰがサーバに送信されるとき、ＴＶＰ＿ＯＲＤＥＲ＿ＵＮＩＱＵＥトークン内の各ＣｏｌＮｕｍ序数は、クライアントが生成した列を指すことができる。ｆＩｄｅｎｔｉｔｙまたはｆＣｏｍｐｕｔｅｄまたはｆＤｅｆａｕｌｔが設定された列を指す序数は、サーバによって拒否される可能性がある。
【００３６】
【表６】
2010531481.tif 000008
【００３７】
【表７】
2010531481.tif 000009
【００３８】
【表８】
2010531481.tif 000010
【００３９】
１．ＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧは、ＴＤＳクライアントがＴＶＰでデフォルトの順序付けとは異なる列順序付けを送信できるようにするために使用される任意指定のＴＶＰメタデータトークンである。
２．ＣｏｌＮｕｍ序数は１・・Ｎであり、１は、ＴＶＰ内の１列目である（つまり、序数は１から始まる）。これらは、例えば、列が左から右の順に現れるときの列序数を指すためにＴＤＳ  ＯＲＤＥＲトークンで使用されるものと同じ序数である。
３．クライアントは、単一のＴＶＰで０または１個のＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧトークンを送信できる。
４．ＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧトークンは、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡの後で、最初のＴＶＰ＿ＲＯＷトークンの前に送信できる。
【００４０】
【表９】
2010531481.tif 000011
【００４１】
ＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧ
ＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧは、一般的には、ＴＶＰ内で列の順序を変更するために使用される。例えば、ＴＶＰが次のように定義されている場合、
create type myTvp as table(fl int,f2 varchar(max),f3 datetime)
【００４２】
ＴＤＳクライアントは、最適化（大きい値をストリームの最後に置く）としてｆ２フィールドをＴＶＰ内の最後に送信することができる。したがって、クライアントは、ＴＶＰ＿ＲＯＷセクション内で、列ｆ１が最初に送信され、ｆ３が２番目に送信され、ｆ２が３番目に送信されることを表すために、順序１，３，２を有するＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧを送信することができる。
【００４３】
したがって、回線上のＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧトークンは、上記の例の場合、以下を含む可能性がある。
【００４４】
【表１０】
2010531481.tif 000012
【００４５】
重複したＣｏｌＮｕｍ値はエラー条件と見なすことができる。実際のＴＶＰ型での列の序数値は、最初の列の１から始まって、左から右へ列ごとに１を追加して順序付けられる。クライアントは、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡに記載された各列に対して１つのＣｏｌＮｕｍを送信する必要がある（したがって、Ｃｏｕｎｔは、一般的に、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡ内の列の数と一致するはずである）。
【００４６】
【表１１】
2010531481.tif 000013
【００４７】
１．各行は、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡに指定された列ごとに１つのデータ「セル」を有する。入力時、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡにｆＩｄｅｎｔｉｔｙまたはｆＤｅｆａｕｌｔまたはｆＣｏｍｐｕｔｅｄフラグが設定されている列は、冗長なデータの送信を回避するためにスキップされる。
２．列データは、ＴＶＰ＿ＣＯＬＵＭＮ＿ＯＲＤＥＲＩＮＧトークンが与えられていなければ、ＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡに定義された項目の順序と同じ順序で順序付けられる。
【００４８】
【表１２】
2010531481.tif 000014
【００４９】
以下の説明は、特定のＴＶＰに関連した例を本主題の技術革新の一態様に従って提供する。例１は、３列（ｉｎｔ、ｖａｒｃｈａｒ、ｄａｔｅｔｉｍｅ）と４行のサンプルＴＶＰに関する。順序付けは、列序数１  ＡＳＣおよび列序数２  ＤＥＳＣ、ならびにｆ１のｕｎｉｑｕｅ  ｉｎｄｅｘに基づく。したがって、入力ＴＶＰデータは、以下のｓｑｌスクリプトによって返される結果セットに非常に類似することがある。
【００５０】
【表１３】
2010531481.tif 000015
【００５１】
【表１４】
2010531481.tif 000016
【００５２】
【表１５】
2010531481.tif 000017
【００５３】
例２：  デフォルトのＴＶＰサンプル
この例では、デフォルトのＴＶＰが提示されており、デフォルトのＴＶＰでは、クライアントは、ＴＶＰパラメータ値全体がデフォルトであることをサーバに示すことを所望している。
【００５４】
【表１６】
2010531481.tif 000018
【００５５】
例３：  デフォルト列を有する入力ＴＶＰ
この例は、クライアントが、列全体がデフォルトとしてサーバに送信されることを指定する場合に関する。サーバは、ＴＶＰの列にデフォルトが定義されていてもよく、事前に定義されたデフォルトで値をサーバ側でさらに設定することができる。一般的に、クライアントはダミーのヌル値を送信しない（デフォルトとして送信される通常の単一パラメータでは送信される）。例えば、そのような機能は、ＴＶＰパラメータの過負荷の場合、またはｇｅｔｄａｔｅ（）またはｎｅｗｉｄ（）のように、ＴＶＰ列にサーバ算出の値を設定する場合に有用である可能性がある。
【００５６】
したがって、以下が作成され、デフォルト値と共に挿入される。
【００５７】
【表１７】
2010531481.tif 000019
【００５８】
【表１８】
2010531481.tif 000020
【００５９】
図７は、単一のパラメータを使用して表形式のデータをいつ、どこで、どのようにして送信するかをより容易に推論および／または決定するために使用できる人工知能（ＡＩ）構成要素７３０を本主題の技術革新の一態様に従って示している。本明細書で使用された場合、用語「推論」は、概して、イベントおよび／またはデータから取得された観測結果のセットからシステム、環境および／またはユーザの状態について推理または推論するプロセスを指す。推論を用いて具体的な文脈または動作を特定することができ、または、例えば、状態に関する確率分布を生成することができる。推論は、確率的であってよい。すなわち、データおよびイベントの考察に基づいた対象の状態に関する確率分布の計算であってよい。また、推論は、イベントおよび／またはデータのセットからより高位のイベントを構成するために使用される手法を指すこともある。そのような推論を行った結果、イベントが一時的に密接に関係しているかどうか、およびイベントおよびデータが１つまたはいくつかのイベントおよびデータ源に起因しているかに関係なく、観測されたイベントおよび／または保存されたイベントデータのセットから新しいイベントまたは動作が構築される。
【００６０】
ＡＩ構成要素７３０は、本明細書で説明される発明の様々な態様をより容易に実施することに関連して、上述のような様々な、適切なＡＩベースの構想のいずれでも使用できる。例えば、表全体を送信するためにパラメータがどのように作成されるかを明示的または黙示的に学習するプロセスは、自動分類システムおよびプロセスを介してより容易にすることができる。分類は、ユーザが自動的に実行されることを所望する動作を予測または推論するために確率および／または統計ベースの分析を使用できる（例えば、分析ユーティリティおよび経費に含めておく）。例えば、サポートベクトルマシン（ＳＶＭ）分類子を使用できる。他の分類方法は、異なるパターンの独立性を用いる場合、ベイジアンネットワーク、判断ツリー、および確率的分類モデルを含む。また、本明細書で使用される分類は、優先順位のモデルを開発するために利用される統計的回帰も含む。
【００６１】
本明細書から容易に理解できるように、本主題の技術革新は、質問に対してどの回答を返すべきかを所定の基準に従って自動的に決定するために分類子が使用されるように、明示的に（例えば、汎用の訓練用データを介して）および暗示的に（例えば、ユーザの動作を観測する、外部情報を受信することにより）訓練される分類子を使用することができる。例えば、よく理解されているＳＶＭについて言えば、ＳＶＭは、分類子コンストラクターおよび機能選択モジュール内の学習または訓練フェーズを介して構成される。分類子は、入力が属する信頼度に対する入力属性ベクトルｘ＝（ｘｌ，ｘ２，ｘ３，ｘ４，ｘｎ）をクラスにマッピングする関数、すなわち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）である。
【００６２】
図８は、クライアント８２０が表形式のデータを単一のパラメータとしてサーバ８５０に送信できるようにした拡張ＴＤＳプロトコル８３３を実施するシステムを示している。ここで、クライアント８２０で実行されているのは、クライアントプロセスであり、例えば、ウェブブラウザ８１０である。同様に、サーバ８５０で実行されているのは、対応するサーバプロセスであり、例えば、ウェブサーバ８６０である。加えて、ウェブブラウザ８１０に埋め込まれるのは、スクリプトまたはアプリケーション８３０が可能であり、クライアントコンピュータ８２０の実行時環境８４０で実行中は、本発明の様々な態様に従ってフォーマットされたデータパケットをパッケージおよびアンパッケージするためのプロキシ８１５が存在できる。サーバ８５０と通信するのは、データベース管理システム（ＤＢＭＳ）８８０であり、ＤＢＭＳ８８０は、データベースへのアクセスを管理する（図示せず）。ＤＢＭＳ８８０およびデータベース（図示せず）は、サーバ自体の中に、またはリモートデータベースサーバ（図示せず）上にリモートで置くことができる。ウェブサーバ８６０上で実行されるのは、データベースインターフェースアプリケーションプログラミングインターフェース（ＡＰＩ）８７０であり、ＤＢＭＳ８８０へのアクセスを可能にする。クライアントコンピュータ８２０とサーバコンピュータ８５０は、ネットワーク８９０を介して相互に通信できる。クライアントプロセス、例えば、ウェブブラウザ８１０がデータベースからのデータを要求すると、スクリプトまたはアプリケーション８３０がクエリを発行し、クエリはネットワーク（例えば、インターネット）８９０を介してサーバコンピュータ８５０に送信され、そこで、そのクエリはサーバプロセス、例えば、ウェブサーバ８６０によって解釈される。前述したように、サーバ８５０へのクライアント８２０の要求は複数のコマンドを含むことができ、サーバ８５０からの応答は、複数の結果セットを返すことができる。そのような通信では、ＴＤＳによってセッション、表示、およびアプリケーションサービスの要素が提供される。ＴＤＳは、一般的に特定の転送プロバイダを必要としないので、複数の転送プロトコルおよびネットワーク８９０を介して実施できる。そのようなＴＤＳプロトコルは表値パラメータ（ＴＶＰ）転送構成要素８９５を使用し、その構成要素により、クライアント８２０は、例えば、サーバ側のプロシージャを起動するときにデータベース表全体を単一のパラメータとして送信することができる。
【００６３】
返されるクライアントコマンドへの応答は、自己記述的であり、レコード指向である（例えば、データストリームは、返される行の名前、型および任意指定の説明を記載できる）。クライアント側８２０では、データは、ログインレコード、またはサーバ側８５０が受け入れることができる言語で書かれ、後に関連のバイナリデータ（例えば、バルクコピーコマンド用のデータ）が続く構造化照会言語（ＳＱＬ）コマンド、またはアテンション信号であってよい。接続が所望される場合、クライアント８２０は、サーバにログインデータストリームを送信できる。クライアント８２０はサーバ４５０と２つ以上の接続を有することができるが、各接続パスは別々に、かつ同じ方法で確立できる。
【００６４】
サーバ８５０がクライアント８２０からログインレコードを受信すると、サーバ８５０は、クライアントに、その接続要求を受け入れたこと、または拒否したことを通知する。同様に、ＳＱＬコマンドまたはＳＱＬコマンドのバッチを送信するには、そのＳＱＬコマンド（例えば、ユニコードフォーマットで表される）をバッファのデータセクションにコピーして、ＳＱＬサーバ側８２０に送信できる。ＳＱＬバッチは２つ以上のバッファにわたって（スパンして）よい。加えて、様々なＯＤＢＣ（Ｏｐｅｎ  Ｄａｔａ  Ｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）ルーチンが、ＳＱＬコマンドがクライアントメッセージバッファに置かれるように、またはメッセージバッファがサーバに送信されるようにすることができる。
【００６５】
加えて、バイナリデータを有するＳＱＬコマンドの場合、ｉｎｓｅｒｔ  ｂｕｌｋ動作は、後にバイナリデータが続く（例えば、ユニコードフォーマットの）ＳＱＬコマンドの事例を表すことができる。最初に、ｉｎｓｅｒｔ  ｂｕｌｋコマンドは通常の方法でサーバ８５０に送信することがき、サーバ８５０から肯定応答が受信されると、クライアント８２０は、フォーマットされたバイナリデータをサーバ８５０に送信できる。そのような機能は、ＯＤＢＣに含まれるルーチンによって、本主題の技術革新の１つの例示的な態様に従って提供することができる。さらに、クライアント８２０は、最初にｉｎｓｅｒｔ  ｂｕｌｋ  ＳＱＬステートメントを、その後に続けてＣＯＬＭＥＴＡＤＡＴＡトークンをサーバ８５０に送信することができる。ＣＯＬＭＥＴＡＤＡＴＡトークンは、生データおよびその後に続く複数行のバイナリデータを記載している。例えば、データは、ストレージエンジン行フォーマットでフォーマットされておらず、ＣＯＬＭＥＴＡＤＡＴＡトークンによって記載されるフォーマットでフォーマットされている。ストリームは、データがサーバ８５０に送信されていた場合ではなく、サーバ８５０から選択されていた場合と同じである。
【００６６】
さらに、ＴＶＰトークンストリームはＴＶＰ＿ＲＯＷという名前を付けることができ、この名前は、クライアントからサーバへの、またはサーバからクライアントへのＴＶＰ＿ＣＯＬＭＥＴＡＤＡＴＡトークンによって定義できる。そのようなトークンは、トークン値０×０１／１を含むことができ、以下のトークンストリーム固有のルールを有する。
【００６７】
【表１９】
2010531481.tif 000021
【００６８】
用語「例示的」は、本明細書では、例、事例、または例示として役割を果たすことを意味する。本明細書で「例示的」と記載される態様または設計は、必ずしも他の態様または設計より好ましいまたは有利と解釈されるわけではない。同様に、本明細書では、例は明瞭さと理解の目的のみのために提供されており、本主題の技術革新またはその一部をどのようにも限定することは意図されていない。無数の追加または代替例が提示できたであろうが、簡潔にする目的で省略されたことを理解されたい。
【００６９】
本出願で使用された場合、用語「構成要素」、「システム」、「エンジン」は、コンピュータ関連のエンティティ、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかを指すように意図されている。例えば、構成要素は、限定ではないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および／またはコンピュータであってよい。例示のためであるが、サーバで実行されているアプリケーションおよびサーバは両方とも構成要素であってよい。１つまたは複数の構成要素がプロセスおよび／または実行スレッド内に常駐することができ、構成要素は１つのコンピュータ上にのみ置かれていてもよいし、および／または２つ以上のコンピュータ間で分散されてもよい。
【００７０】
さらに、本主題の技術革新のすべてまたは一部は、システム、方法、装置、または開示された技術革新を実施するようにコンピュータを制御するためのソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生成するために標準のプログラミングおよび／または工学的手法を用いる製造物として実装できる。例えば、コンピュータ可読媒体には、限定ではないが、磁気ストレージデバイス（例えば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ・・・）、光ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）・・・）、スマートカード、およびフラッシュメモリデバイス（例えば、カード、スティック、キードライブ・・・）がある。加えて、電子メールの送受信に使用されるもの、またはインターネットあるいはローカルエリアネットワーク（ＬＡＮ）などのネットワークのアクセスで使用されるものなど、コンピュータ可読電子データを運ぶために搬送波が使用できることを理解されたい。当然ながら、当業者は、特許請求の範囲に記載された主題の範囲または趣旨から逸脱することなく、この構成に多くの変更が行えることが理解できよう。
【００７１】
開示された主題の様々な態様の内容を提供するために、図９および図１０ならびに以下の説明は、開示された主題の様々な態様が実施できる適切な環境の簡潔な概略の説明を提供するように意図されている。主題は、１つのコンピュータおよび／または複数のコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能な命令の概略の内容について上述されているが、当業者は、本技術革新は、他のプログラムモジュールと組み合わせても実行できることが理解できよう。一般的に、プログラムモジュールには、ルーチン、プログラム、構成要素、データ構造体などが含まれ、それらは、特定のタスクを実行し、および／または特定の抽象的なデータ型を実施する。さらに、当業者は、この革新的方法は、他のコンピュータシステム構成、例えば、単一プロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピューティングデバイス、メインフレームコンピュータ、およびパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス（例えば、パーソナルデジタルアシスタント（ＰＤＡ）、電話、腕時計・・・）、マイクロプロセッサベースまたはプログラマブルな消費者向けまた産業用電子機器などでも実施できることが理解できよう。例示された態様は、タスクが通信ネットワークを介してリンクされたリモートプロセッシングデバイスによって実行される分散コンピューティング環境でも実行できる。しかし、本技術革新の全態様ではないにしても、一部の態様は、スタンドアロンのコンピュータ上で実行することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモート両方のメモリストレージデバイスに置くことができる。
【００７２】
図９を参照すると、本主題の技術革新の様々な態様を実施するための、コンピュータ９１２を含む例示的な環境９１０が説明されている。コンピュータ９１２は、プロセッシングユニット９１４、システムメモリ９１６、およびシステムバス９１８を備えている。システムバス９１８は、限定ではないが、システムメモリ９１６などのシステム構成要素をプロセッシングユニット９１４に結合する。プロセッシングユニット９１４は、様々な、入手可能なプロセッサのいずれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサ構成もプロセッシングユニット９１４として使用できる。
【００７３】
システムバス９１８は数種類のバス構造のいずれでもよく、そのようなバス構造には、メモリバスまたはメモリコントローラ、ペリフェラルバスまたは外部バス、および／または限定ではないが、１１ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＳＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＶＬＢ（ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）バス、およびＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）など、様々な、入手可能なバス構造のいずれかを使用するローカルバスが含まれる。
【００７４】
システムメモリ９１６は、揮発性メモリ９２０および不揮発性メモリ９２２を備えている。始動中などにコンピュータ９１２内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ９２２に保存される。例示のためであって、限定ではないが、不揮発性メモリ９２２は、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリ９２０には、ランダムアクセスメモリ（ＲＡＭ）が含まれ、これは、外部キャッシュメモリとして作動する。例示のためであって、限定ではないが、ＲＡＭは、同期ＲＡＭ（ＳＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、および直接Ｒａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）など、多くの形で入手可能である。
【００７５】
コンピュータ９１２は、取り外し可能／取り外し不可、揮発性／不揮発性コンピュータストレージ媒体も備えている。図９は、ディスクストレージ９２４を示しているが、そのようなディスクストレージ９２４には、限定ではないが、磁気ディスクドライブ、フロッピィディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−６０ドライブ、フラッシュメモリカード、またはメモリスティックのようなデバイスが含まれる。加えて、ディスクストレージ９２４は、ストレージ媒体を個別に、または限定ではないが、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤ記録可能ドライブ（ＣＤ−Ｒドライブ）、ＣＤ再書き込み可能ドライブ（ＣＤ−ＲＷドライブ）またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含む他のストレージ媒体と組み合わせて備えることができる。ディスクストレージデバイス９２４のシステムバス９１８との接続を容易にするために、一般的に、インターフェース９２６などの取り外し可能または取り外し不可インターフェースが使用される。
【００７６】
図９は、ユーザと、適切な動作環境９１０内で説明されている基本的なコンピュータリソースとの間で仲介機能として動作するソフトウェアを説明していることを理解されたい。そのようなソフトウェアには、オペレーティングシステム９２８が含まれる。オペレーティングシステム９２８は、ディスクストレージ９２４に保存できるが、コンピュータシステム９１２のリソースを制御および割り振るために動作する。システムアプリケーション９３０は、システムメモリ９１６またはディスクストレージ９２４に保存されているプログラムモジュール９３２およびプログラムデータ９３４を介して、オペレーティングシステム９２８によるリソースの管理を利用する。本明細書で説明される様々な構成要素は、様々なオペレーティングシステムまたはオペレーティングシステムの組み合わせを使って実施できることを理解されたい。
【００７７】
ユーザは、入力デバイス９３６からコマンドまたは情報をコンピュータ９１２に入力する。入力デバイス９３６には、限定ではないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどが含まれる。これらおよび他の入力デバイスは、インターフェースポート９３８を経てシステムバス９１８を通じてプロセッシングユニット９１４に接続する。インターフェースポート９３８には、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力デバイス９４０は、入力デバイス９３６と同じタイプのポートのいくつかを使用する。したがって、例えば、ＵＳＢポートは、コンピュータ９１２に入力を提供するため、およびコンピュータ９１２から出力デバイス９４０に情報を出力するために使用できる。出力アダプタ９４２は、モニタ、スピーカおよびプリンタのようないくつかの出力デバイス９４０が、特殊なアダプタを必要とする他の出力デバイス９４０の中にまじって存在することを示すために与えられている。出力アダプタ９４２は、例示のためであって、限定ではないが、出力デバイス９４０とシステムバス９１８間の接続の手段を提供するビデオおよびサウンドカードを含む。リモートコンピュータ９４４などの他のデバイスおよび／またはデバイスのシステムが入力と出力両方の機能を提供することに留意されたい。
【００７８】
コンピュータ９１２は、ネットワークされた環境で、リモートコンピュータ９４４などの１つまたは複数のリモートコンピュータとの論理接続を使用して動作できる。リモートコンピュータ９４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピアデバイスまたは他の一般的なネットワークノードなどであってよく、一般的に、コンピュータ９１２に関連して説明された要素の多くまたは全部を備える。簡潔にする目的で、リモートコンピュータ９４４と共にメモリストレージデバイス９４６のみが示されている。リモートコンピュータ９４４は、ネットワークインターフェース９４８を通じてコンピュータ９１２に論理的に接続され、その後、通信接続９５０を介して物理的に接続される。ネットワークインターフェース９４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）などの通信ネットワークを包含する。ＬＡＮ技術には、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＣＤＤＩ（Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＥＥＥ  ８０２．３、Ｔｏｋｅｎ  Ｒｉｎｇ／ＩＥＥＥ  ８０２．５などが含まれる。ＷＡＮ技術には、限定ではないが、二地点間リンク、サービス統合デジタル網（ＩＳＤＮ）およびその変形などの回線交換ネットワーク、パケット交換ネットワーク、およびデジタル加入者線（ＤＳＬ）がある。
【００７９】
通信接続９５０は、ネットワークインターフェース９４８をバス９１８に接続するために使用されるハードウェア／ソフトウェアを指す。通信接続９５０は、例示の明瞭さのためにコンピュータ９１２の中に示されているが、通信接続９５０はコンピュータ９１２の外部にあってもよい。ネットワークインターフェース９４８との接続に必要なハードウェア／ソフトウェアには、例示の目的でのみであるが、通常の電話級モデム、ケーブルモデムおよびＤＳＬモデムなどのモデム、ＩＳＤＮアダプタ、およびイーサネット（登録商標）カードなどの内部および外部技術が含まれる。
【００８０】
図１０は、本主題の技術革新の拡張ＴＤＳを実施するために使用できるサンプルのコンピューティング環境１０００の概略的なブロック図である。システム１０００は、１つまたは複数のクライアント１０１０を備える。クライアント１０１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）であってよい。システム１０００は、１つまたは複数のサーバ１０３０も備える。サーバ１０３０も、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）であってよい。サーバ１０３０は、例えば、本明細書で説明される構成要素を使用することにより変換を行うためにスレッドを保管することができる。クライアント１０１０とサーバ１０３０間の１つの可能な通信は、２つ以上のコンピュータプロセス間で伝送されるように適合したデータパケットの形であってよい。システム１０００は、クライアント１０１０とサーバ１０３０間の通信を容易にするために使用できる通信フレームワーク１０５０を備える。クライアント１０１０は、クライアント１０１０にローカルな情報を保存するために使用できる１つまたは複数のクライアントデータ収納場所１０６０に動作可能に接続される。同様に、サーバ１０３０は、サーバ１０３０にローカルな情報を保存するために使用できる１つまたは複数のサーバデータ収納場所（複数可）１０４０に動作可能に接続される。
【００８１】
上述されたことは、様々な例示的な態様を含んでいる。当然ながら、これらの態様を説明する目的で構成要素または方法の考え得るすべての組み合わせを記載することは不可能であるが、当業者は、多くのさらなる組み合わせおよび変形が可能なことは理解できるであろう。したがって、本明細書で説明される態様は、添付の特許請求の範囲の趣旨および範囲内にあるすべてのそのような変更、修正、変形を包含することが意図されている。
【００８２】
さらに、用語「含む（ｉｎｃｌｕｄｅ）」が詳細な説明または特許請求の範囲で使用される限りでは、そのような用語は、「備える（ｃｏｍｐｒｉｓｉｎｇ）」が特許請求の範囲で移行語として使用されたときの解釈と同様に包含的であることが意図されている。
【図１】
2010531481.tif 000022
【図２】
2010531481.tif 000023
【図３】
2010531481.tif 000024
【図４】
2010531481.tif 000025
【図５】
2010531481.tif 000026
【図６】
2010531481.tif 000027
【図７】
2010531481.tif 000028
【図８】
2010531481.tif 000029
【図９】
2010531481.tif 000030
【図１０】
2010531481.tif 000031
【国際調査報告】
2010531481.tif 000032
2010531481.tif 000033