JP2001514422A - 分散型コンピュータシステム - Google Patents

分散型コンピュータシステム

Info

Publication number
JP2001514422A
JP2001514422A JP2000508165A JP2000508165A JP2001514422A JP 2001514422 A JP2001514422 A JP 2001514422A JP 2000508165 A JP2000508165 A JP 2000508165A JP 2000508165 A JP2000508165 A JP 2000508165A JP 2001514422 A JP2001514422 A JP 2001514422A
Authority
JP
Japan
Prior art keywords
computer system
denizun
ode
user
providing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000508165A
Other languages
English (en)
Inventor
ジェームズ クローソン
Original Assignee
ジプソフト インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ジプソフト インコーポレイテッド filed Critical ジプソフト インコーポレイテッド
Publication of JP2001514422A publication Critical patent/JP2001514422A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4875Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with migration policy, e.g. auction, contract negotiation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 新規なコンピュータアーキテクチャによる資源を活用する方法とシステムが提供されており、それには、デニズンプロセス(100)のための動作環境およびロケーション間の移動のためのデニズン(100)用の道が含まれている。デニズンプロセス(100)は、命令(300)を受け取り、受け取った命令(302、304)の視点から動作環境の異なるロケーションを評価し、その評価(306)に基づいてロケーションを選択し、自ら選択したロケーションに移動し(314)、そして選択したロケーション(316)で受け取った一部を実行することができる。ウィルスの分散と帯域幅の必要を避けるため、デニズン(100)は、宛先ロケーションのライブラリに格納されているコードを使うことにより、デニズン(100)を構築するための特定の情報で移動できる。デニズン(100)は、自ら再構築およびアーカイブ(318)、自らのエラーを検出すること、さらに自らのアーカイブさらたコピーで自らを置き換える試みやライブラリコンポーネントから自らを再構築する試みも可能である。さらに、デニズン(100)は、動的なロードディングとアンロードディングコードで自ら、修正もできる。デニズン(100)は、柔軟に、プロセッサを割り当てることができる。なぜならば、各デニズン(100)は個々に、どこで実行すべきかを、決めることができるからである。新規なアーキテクチャを使う適用分野には、データベース管理や普通言語の翻訳が含まれる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムアーキテクチャ、特に、自己再生、自己アー
カイブの作成、自己修復を行うモバイルデニズンプロセスのための動作環境を提
供する、分散型システムコンピュータアーキテクチャに関するものである。
【0002】 (発明の技術背景) 分散型コンピュータの一般的効果は、よく知られている。コンピュータの能力
は低価格でより広く利用できるようになったので、多くの問題に対する最も効果
的なアプローチとして、1つの大規模システム内で一体として数多く接続された
プロセッサを含めることができる。
【0003】 例えば小売高と在庫目録の追跡といった、いくつかのコンピュータ上の問題は
、本来分散されている。分散型システム内の1つのプロセッサの故障によって発
生した問題が、すべての仕事に影響を及ぼして停止させるといったことには至ら
ないので、分散型コンピュータの仕事量も信頼性の改善を図ることができる。
【0004】 多くのツールは、分散型コンピュータシステムを構築するために利用できる。
共用メモリ、リモートプロシージャコール、「ブラックボード」、イベント駆動
型モジュール、およびその他のメカニズムは、1つ又は複数のコンピュータの別
々のメモリ領域の内で、協調方式で動作するプロセッサ間の通信が可能である。
【0005】 これらのメカニズムは、ネットワークプロトコル、ドメインネームシステム、
分散オペレーティングシステム、および分散ファイルシステムなどと組み合わさ
れることによって、別々のコンピュータで動作するプロセス間の通信と、このよ
うなプロセスによる資源の効果的な利用とが可能になる。
【0006】 インターネット、ローカルエリアネットワーク、メトロポリタンエリアネット
ワーク、ワイドエリアネットワーク、ワイヤレスネットワーク、衛星通信ネット
ワーク、光通信ネットワーク、および他の接続されたおよび/または接続可能な
コンピュータの集合体は、処理能力、メモリ、ディスク空間、およびインタープ
ロセス通信の施設を含むような他の資源を提供する。
【0007】 多くの秘密キー、公開キー、および他の暗号手法のホストは、インタープロセ
ス通信の安全性を向上させるために利用できる。Java、Ada、C++、ア
センブリ、および他のプログラミング言語または開発環境は、割込み処理ルーチ
ンの生成、検査、改善、そして並行プロセス、スレッド、多重処理システム、例
外ハンドラ、および他の並行および/または分散プログラミング構成体をサポー
トする。
【0008】 結果として、分散型コンピュータへの多くの異なるアプローチが試みられ、さ
らには提案されたりしている。各分散型コンピュータシステムは、実装されてい
るか否かにかかわらず、無限の宇宙の可能性から選択された1つのアプローチと
するような多数の設計の選択肢を取り入れている。最も大切な設計の選択の中に
は、互いの間とユーザとの間を分散されたプロセスがどのように通信するか、機
密保護の制約条件をどのように規定し実施するか、どのように、いつプロセッサ
とプロセスが統合されたり、分離されたりすべきか、どのようにプロセス間の責
任を区切るか、新しいデータや命令を反映するための更新をどのようにプロセス
が行うか、およびどのようにプロセスがエラーを検知し、処理すべきかが含まれ
る。
【0009】 これらの広範囲にわたる設計の各問題は、付加的なより特定の問題になる。例
えば、通常プロセスに合うプロセッサをどのように決めるかには、(他の考慮事
項の中で)プロセッサアロケーションアルゴリズムの選択が伴う。Andrew
S.Tanenbaum著「Distributed Operating
Systems」ISBN 0−13−219908−4(1995)の本文で
説明されているように、この選択には、順番に決定対試行錯誤アルゴリズム、集
中的対分散的アルゴリズム、最適対副最適アルゴリズム、ローカル対グローバル
アルゴリズム、および送り手起動対受け手起動アルゴリズムなどの間の重要な選
択を含んでいる。
【0010】 機密保護、エラー管理、通信、更新伝播、および他の広範囲の設計の問題を、
たいへん深く考慮する場合、多くの付加的でさらに特定の疑問のホストも浮上す
る。メモリは共用すべきか。そうならば、「同一」データの異なるコピーの整合
性はどのように維持されるべきか。どのような種類のエラーがプロセスによって
検知され得るか、どのように各タイプのエラーを処理すべきか。与えられたプロ
セスは、それ自体で何をすべきか、そして他のプロセスに何を行うように要請す
べきか。どのようなフォーマットで命令やデータを格納すべきか。
【0011】 与えられたプロセスは、そのプロセスもその上で動作しているコンピュータの
特定のハードウェアおよびオペーレーティングシステムとどれくらい緊密に結合
すべきか。プログラムを1つの完了した独立ブロックとして実行のためにメモリ
へロードすべきか、またはコンポーネントを必要な場合にのみロードすべきか、
バージョン管理をどのように行うか。
【0012】 設計タスクは、特定の方法で1つの設計の問題に答えると、他の問題の重要性
が変化したり、または新しい問題が浮上することによって、より困難になってい
る。例えば、1つのプロセスが、起動後にディスクアクセスを避けるために使わ
れているハードウェアから十分独立している場合、そのプロセスは、ディスク無
しのコンピュータとローカルディスクを有するコンピュータとの両方で動作する
ことができる。プロセスが動作する間、使用するディスク記憶フォーマットは明
らかに無関係になり、重大なエラーから回復するためのオプションは、ローカル
ディスクにチェックポイントが記録されている場合のものとは異なる。
【0013】 分散システムアーキテクチャは、非常に異なる方法で設計の問題に答える場合
、設計の問題のなかには、大部分のシステムで同じまたは同様の方法で答える傾
向がある。例えば、大抵のシステムには、他のプロセスを利用できるプロセッサ
とマッチさせる役目を果たす専門化したプロセスを含んでいる。この「プロセス
マネージャ」は、「スケジューラ」、「ロードバランサ」、「トランスファマネ
ージャ」、「ユーセイジテーブルコーディネータ」、「プロセスキューマネージ
ャ」、および「プロセッサアロケータ」としても知られている。
【0014】 最善のプロセッサの割り当てに関する決定は、プロセッサマネージャにより行
われ、時々、その割り当てたプロセッサで動作するプロセスからの入力は少しの
または全くないプロセッサマネージャで行われる。システムの中には、分散シス
テム全体に対して1つではなく、プロセッサ毎に、またはコンピュータ毎に1つ
のプロセスマネージャを含んでいるものもあるが、与えられたシステム内のすべ
てのプロセスマネージャは、通常プロセスをプロセッサにマッチさせるために1
つのアルゴリズムを使う。
【0015】 同様に、最も知られている分散システムにおいても、検知できるエラーのタイ
プは(a)入力エラー(b)無くなったまたは利用できない資源に限られる。例
えば、ファイル、ソケット、またはユーザからのデータ入力は、所定の範囲外の
値に対して検査でき、またデータの別のコピーに対して検査することができる。
ネットワークパケットまたはJavaアプレットのコンテンツは、チェックサム
を計算し、以前に計算されたチェックサムと比較することによって確認されるこ
とになる。その比較からエラーが検知される場合、パケットの再送信やアプレッ
トの再ロードの要求が可能になり、またはユーザに異なるコンテンツの供給を要
請することもできるようになる。
【0016】 資源のエラーに関して、プロセスは、ダイナミックリンクライブラリファイル
または要求されているテキストファイルなどのファイルが予期されたロケーショ
ンで発見できず、他のロケーションを検索する。プロセスは、電話回線、ネット
ワークソケット、メモリ、ディスク空間、または他の要求された資源が利用でき
ず、ユーザに警告を発したり、または障害を起こしたりする前にその資源を入手
しようと数回試みるかどうかも判断する。
【0017】 しかし、入力または無くなった資源のエラー以外のエラーは、重要な情報の破
損または紛失が起こるまでは、検知されないままとなる。特に、プロセスは、動
作中には、通常それ自体の内部構造の破損を検知せず、このようなエラーにスム
ーズに反応するのではなく、大抵のプロセスは突然、動作不能になる。プロセス
の中には、例外ハンドラを使い深刻なエラーが発生した後にその衝撃を規制する
ものもあるが、破損した構成を使うまでは、破損を検知することができない。
【0018】 大抵のコンピュータプログラムは、分散処理が可能かどうかにかかわらず、時
々更新する必要がある。プログラムのアーキテクチャに依存して、更新作業は、
時間がかかり、エラーを起こし易く、および/または柔軟性がないものである。
多くのプログラムは、ユーザに大量のコードの独立言語の集合体として提供され
る。
【0019】 時の経過とともに、これらのコードのモノリシックな集合体は、ワープロや表
計算ソフトなどのポピュラーなアプリケーションに対して、非常に大量なものに
成長する。このようなモノリシックなプログラムを更新することには、新しいバ
ージョンと異なるかどうかにかかわらず、現存するすべてのコードを削除して、
プログラムの新しいバージョンをインストールすることがしばしば含まれる。あ
る場合、オブジェクトコード「パッチ」が、代わりに使われ、置き換えられるコ
ードの量がより少なくなるが、パッチは、普通プログラムの局部的変更にのみ使
われ、基本的または全体的な変更のためには、使われていない。
【0020】 プログラムの中には、モノリシックさを減少させ、イベントハンドラループお
よび動的にロードされたコンポーネントのコレクションなどのメインルーチンに
分割しているものもある。その場合、更新には、1つまたは複数の関係する小さ
なコンポーネントを単に置き換えることだけが含まれている。コンポーネント間
で機能性を分割することも、2つ以上の異なるプログラムが同じコンポーネント
を使えるようになる点で優れている。例えば、電子メールプログラムおよびワー
プロは、同じスペルチェックコードを使うことができるはずである。しかし、一
度ロードされてしまうと、そのようなコンポーネントは、それを利用するすべて
のプログラムの実行(およびその後でも存続していること)が終了するまで、一
般的にメモリに留まる。こうして、ダイナミックリンクライブラリが使われる場
合でさえ、プログラムの動作への更新は、しばしばプログラムが現在の作業を終
了し、動作を止めた後にのみ行うことができる。
【0021】 特殊なプログラムの中には、動作中に「学習」することによって、更新の必要
を少なくしているものもある。例えば、ニューラルネットワークプログラムは、
ニューラルネットの内のノード間の接続に割り当てた相対的ニューラルの重みを
変化することができ、それによって、特定の種類の入力に対するプログラムの反
応を変化させることができる。同様に、「遺伝的」アルゴリズムと呼ばれるアル
ゴリズムは、順列および最適化測定を使ってプログラムの継承世代を調整し、結
局、ある特定の状態に最適化した最初のプログラムよりも良いプログラムを作る
【0022】 しかし、遺伝的な最適化の測定またはニューロンの重み必要の調整のためのコ
ードは、変更が必要とされ、例えば「学習」するプログラムでさえ、動作中に従
来の技術を使い更新される。このように、難解なプログラミングは、ニューラル
ネットワークに受け入れられる入力タイプに、変更する必要があるかもしれない
。さらに、ニューラルネットワークもすぐに時刻の追跡または他のシステム資源
などのコンピュータシステム機能を発揮しない。
【0023】 実行中に、破損した構成を使う前にそれ自体の内部構成の破損をプロセスが検
知することを可能にし、プロセスがそのようなエラーにスムーズに反応すること
を可能にする分散コンピュータのための改善されたシステムおよび方法を提供す
ることは、当技術分野で進歩的なことである。
【0024】 現方式に比べ、柔軟性に富み、個々のプロセスの必要により適合させたプロセ
ッサ割当て方式を提供する、分散コンピュータのためのシステムおよび方法を提
供することも、当技術分野で進歩的なことである。
【0025】 パッチを使うより高性能で、すべてのモノリシックプログラムを置き換えるよ
りもより効率的で、さらにニューラルネットおよび遺伝的なプログラミングの「
学習」方法で利用できる、限定された動作の変更に比べ柔軟性に富む、分散コン
ピュータプロセスを更新するためのシステムおよび方法を提供することは、当技
術分野でさらに進歩的なことである。
【0026】 上記システムおよび方法は、現存のネットワークおよびそのプロトコルと互換
性があり、好ましい現存するプログラミング言語の特徴および機密保護の方法を
利用する方法で実装できるとすれば、さらなる進歩的なことである。
【0027】 以下に示すように、分散型コンピュータシステムおよび方法のためのアーキテ
クチャが開示され、特許の請求の範囲が記載されている。
【0028】 (発明の簡単な概要) 本発明に係るコンピュータアーキテクチャによるコンピュータシステム資源を
利用する1つの方法は、コンピュータシステム資源が少なくとも2つのロケーシ
ョンを有し、各ロケーションが、命令を実行するためのプロセッサへのアクセス
を提供すると共に、プロセッサにアクセス可能な命令を格納するメモリを提供す
るものとする。
【0029】 本発明に係る上記方法は、デニズンプロセスのための動作環境の取得によって
開始される。動作環境には、少なくとも2つのロケーション、該ロケーションの
間を移動するデニズン用の経路も含まれる。
【0030】 そして、上記方法は、命令を受け取り、受け取った命令に照らして、動作環境
内の異なるロケーションを評価し、その評価に基づいてロケーションを選択し、
選択したロケーションに自ら移動し、選択したロケーションにおいて該受け取っ
た命令の少なくとも一部を実行することを可能とするような、少なくとも1つの
ユーザデニズンを提供することにある。
【0031】 ユーザデニズンの1つの実施形態には、構成部分、起点部分、および実行可能
部分を有している。他のコンテンツの中で、構成部分はルーティング情報を含み
、起点部分は暗号化証明書を含み、実行可能部分はコードおよびデータを含んで
いる。ユーザデニズンは、これらの部分の少なくとも1つを再生成できる。ユー
ザデニズンも、自身で再生成およびアーカイブし、自身のエラーを検知し、さら
には、アーカイブされたバージョンに自ら置き換え、又は、例えばクラスおよび
クラスのために継承および拡張情報を定義するテンプレートのようなライブラリ
コンポーネントから再構築を行う試みが可能である。
【0032】 ユーザデニズンは、1つまたは複数の命令実行の結果に応じて、動的にコード
をロードおよびアンロードしたり、またはカスタムコードを作成およびコンパイ
ルすることによって、自身で修正することが可能である。修正は、戻り伝播、動
的再コンパイル、および新しく進歩したアルゴリズムを使うことで成し遂げられ
る。デニズンは、実行エラーの衝撃を限定するために内部的に例外も処理するこ
とが可能である。
【0033】 動作環境は、例えば、該動作環境の異なるロケーションに関する情報を収集し
、該情報をユーザデニズンに提供するようなもの、ユーザデニズンによって動作
環境内における特定のロケーションへのアクセスを制御できるようなもの、動作
環境内におけるロケーション間のデニズンの動きを追跡できるようなもの、動作
環境内で発生する多くの行動を保持するもの、動作環境内のデニズンの対話式管
理をサポートするもののような管理デニズンや、デニズンをアーカイブおよび再
格納し、ライブラリにアクセスするためのアーカイブポッドデニズンや、さらに
は、スレッド使用を追跡し、例えば異なるエンティティによって所有されるよう
な、異なる動作環境間を監視するためのコネクションポッドデニズンを含んでい
る。
【0034】 本発明の一実施の形態として、本発明に係るエコシステムコンピュータアーキ
テクチャを実行するコンピュータシステムは、各ロケーションがプロセッサおよ
びメモリへのアクセスを提供する少なくとも2つのロケーションと、該ロケーシ
ョン間をデニズンが移動するための移動手段と、命令を受け取り、受け取った命
令に照らして、動作環境内の異なるロケーションを評価し、その評価に基づいて
ロケーションを選択し、選択したロケーションに自身で移動し、選択したロケー
ションにおいて該受け取った命令の少なくとも一部を実行することが可能な少な
くとも1つのデニズンとを有するデニズン用の動作環境を含む。
【0035】 該ロケーションは、コンピュータネットワーク内の異なるコンピュータ上にあ
る。ロケーションの中にはJavaバーチャルマシン、または一部または全てが
Javaで書かれたデニズンを実行するためのネイティブJavaオペレーティ
ングシステム(多分特別なチップ上)へのアクセスを提供する。
【0036】 移動手段は、分離した装置上でのロケーション間の転送のためのTCP/IP
、または他のネットワーク接続を含み、さらには、1つの装置内でのロケーショ
ン間の転送のためのルーチンをコピーする共用メモリ、またはメモリも含む。移
動手段は、ウィルスの分散を避け、デニズンの実行可能部分を特定のロケーショ
ンに適合させるため、さらに帯域幅の必要性を少なくするために、宛先ロケーシ
ョンのライブラリに格納されている識別コードによって、デニズンを構築する情
報を指定するための手段を含むことが好ましい。
【0037】 本発明は、デニズンプロセスが実行中に破損した構成を利用する前にチェック
サムエラーを検知し、または例外状態を把握することによって、デニズンプロセ
スが自身の内部構成の破損を検知できる分散コンピュータのための改善されたシ
ステムおよび方法を提供するものである。
【0038】 該デニズンプロセスは、エラーの衝撃を収容し、エラーにもかかわらず続行す
るために、自身で再構築を行うことによって、および/または再構築が不可能な
場合は、後の診断のために自身をアーカイブすることによって、このようなエラ
ーにスムーズに反応する。
【0039】 さらに、デニズンは、プロセッサ割当て方式を用いて、現存の方式よりも柔軟
性に富み、個々のプロセスの必要により適合する。なぜならば、各デニズンは、
各々で実行すべき場所を決定することができる。デニズンを更新するために使わ
れる動的修正(多分、実行ブロックの実行中ロードおよびアンロードを含む)は
、パッチを使うより高性能で、モノリシックプログラム全てを置き換えるより効
率的で、および限られた動作の変更よりも柔軟性に富み、従来のニューラルネッ
トおよび遺伝的プログラミング方法を通して利用できる。
【0040】 デニズンは、現存のネットワークとそのプロトコルと互換性があり、Java
例外処理などの好ましい現存するプログラミング言語の特徴を利用し、さらに暗
号化のような機密保護手法も利用するやり方で実装することもできる。
【0041】 本発明の他の特徴および利点は、以下の説明から、その内容が明らかにされる
【0042】 (好ましい実施例の詳細な説明) 本発明は、分散型コンピュータシステムアーキテクチャに関する。また、本発
明は、コンピュータシステム、コンピュータメソッド、および/または個々のコ
ンピュータデバイスにおいて使用される。さらに、本発明は、独立型のコンピュ
ータ、ネットワークで接続されたコンピュータ、又はその両方で使用される。
【0043】 該コンピュータは、ワークステーション、デスクトップコンピュータ、ラップ
トップコンピュータ、モバイルコンピュータ、サーバ、クライアント、ピア、ユ
ニプロセッサすなわちマルチプロセッサマシン、組込みシステム、および/また
は他のコンピュータであり得る。好ましいネットワークには、ローカルエリアネ
ットワーク、メトロポリタンエリアネットワーク、広域エリアネットワーク、イ
ンターネットまたはそれらのあらゆる組み合わせが含まれる。
【0044】 本明細書で使う「インターネット」には、専用インターネット、セキュアイン
ターネット、付加価値通信網、仮想専用ネットワーク、World Wide
Web、またはイントラネットなどのインターネットの一部を含んでいる。
【0045】 コンピュータアーキテクチャのためのエコシステムモデル コンピュータサイエンスおよび生物学は、達成努力の面から概して非常に異な
る分野として見られてきたが、生物学上のシステムおよび方法の中にはコンピュ
ータメタファとして役立つことが証明されてきたものもある。良いメタファ(m
etaphor)は、異なる無味乾燥した論議を明らかにするための、単なる過
度な単純化または表面的な試みではなく、技術的なシステムまたはプロセスの重
要な側面を要約する。コンピュータサイエンスは、しばしば非常に詳細で中身の
濃い分野であるため、良く選んだメタファを使うことは、発明者や他の人々が詳
細を組み立てたり、新しい可能性を提案する上で役立つ。おそらく、良い生物学
上のコンピュータメタファの最も著名な例は、生物の遺伝を「進化した」コンピ
ュータプログラムのモデルとして使う遺伝的アルゴリズム、および頭脳生理学を
「訓練中」のコンピュータのモデルとして使うニューラルネットアルゴリズムで
ある。
【0046】 図1に示すように、本発明では、オーシャン生態学を分散コンピュータのため
のメタファをガイドするものとして使う。コンピュータプロセス100は、多様
なロケーション104にあるコンピュータ資源であり、それはオーシャン102
に居住する生物として見なされる。ネットワーク内の与えられたマシンには、1
つまたは複数のロケーション104を含んでいるかもしれない。オーシャン10
2は、1つまたは複数のマシン上に居住することができる。同様に、ロケーショ
ン104すべても1つの動作環境102に属するものと見なすこともできるし、
または別々の接続可能なオーシャン102にグループ化することもできる。
【0047】 「デニズン」プロセス100は、「Organic Data Elemen
ts」または「ODE」としても知られているが、それには生きている生物に類
似した能力がある。例えば、デニズンは、経路106に沿って、動作環境102
に相当する計算上の「オーシャン」の内のロケーション104間を、移動するこ
とができる。デニズン100は、それ自体のコピーを作ることもできる。すなわ
ち、内部構成への損害を検知し、時々、損害を修復することでそれ自体で「いや
し」を行い、さらにニューラルネットアルゴリズムや他の技術を使い「学習」す
ることもできる。これらの各能力が、詳細に論じられる。
【0048】 もちろん、デニズンプロセス100が、本当に生きているわけではなく、コン
ピュータシステム102は、文字通り情報およびコンピュータ資源のオーシャン
ではない。オーシャン生態学メタファは本発明の技術を理解するのに役に立つも
のだが、メタファは単にメタファであり、それ固有の限界がある。
【0049】 デニズンの構成 デニズンプロセス100の1つの実施形態の内部構成を、図1に関連した続き
の図2に示す。
【0050】 各デニズン100は、少なくとも、構成部分202、起点部分204、および
実行可能部分206を含む。
【0051】 構成部分202の1つのセクションには、動作環境102内において、デニズ
ン100が現在のロケーション104へ移動する経路106、および/または、
、他のロケーション104へ移動する実行可能な経路106を反映する、ルーテ
ィング情報208を含んでいる。
【0052】 構成部分202には、1つまたは複数の「ポッド」がデニズン100に属して
いるかどうかを識別する、ポッド識別子210を含めることができる。ポッドに
関しては、以下の部分で詳細に論じられる。さらに、構成部分202は、現在の
周囲の動作環境102を他の動作環境から区別する、オーシャン識別子212を
含む。構成部分202は、例えばJavaバーチャルマシンフラグなどの実行状
態情報214も含めることができる。
【0053】 起点部分204は、動作環境102へのアクセスを制御し、さらに「ユーザ」
デニズン100上で機密保護規制を実施する管理デニズン810(図8)への実
行の前に、提供可能な暗号化証書216を含む。ユーザデニズンは、主に機密保
護、ロケーションの追跡、資源の追跡、および他の内部管理目標を果たす管理デ
ニズン800に対して、直接特定のユーザにより、または特定のユーザの代わり
に直接、起動されるデニズン100である。
【0054】 証書216に含まれる好ましい情報としては、作成者の名前、ホームオーシャ
ンルーティング情報、グループ情報、デニズン全体のコンテンツおよび/または
部分202と204上のチェックサム(周期冗長コードなど)、実行可能クラス
情報、およびODEタイプ(管理/ユーザ、機密保護など)がある。作成者の名
前は標準的な郵便のアドレスと似た形式で、またはログインまたはユーザID、
あるいは名前を区別するX.500ディレクトリサービスを使いより複雑にする
こともできる。
【0055】 同様にグループ情報も部門名のように、テキストにすることができる。または
、UNIXの許可へのオーナ/グループ/ワールドアプローチのように、オペレ
ーティングシステムやファイルシステムセンス内でグループ化することもできる
。クラス、それはJavaまたはC++のクラスやサブクラスのことであるが、
それについては以下の部分でさらに論じられる。
【0056】 証書216を使う1つの方法は、以下の通りである。証書216は、機密保護
ODE810で登録される。最初のODEの証書216は、第2のODEが最初
のODEに対してトランザクションを行う前に、第2のODEによって、または
その代わりに検査される。第2のODEの証書216も最初のODEによって、
またはその代わりに検査される。承認された証書は、ODE間での各トランザク
ションに対して独特のトランザクション証書を生成するために使われる。承認済
みの証書を収納したり、さらにそれに基づき承認済みの証書を識別したりするこ
とに加えて、トランザクション証書は、トランザクションに伴う要求または動作
を識別する。基本となる承認済みの証書の1つは、トランザクション証書のため
の秘密解読キーとして使うことができる。
【0057】 トランザクション証書は、トランザクションに含まれるODE間の合意事項と
しての役割を果たす。そのトランザクション証書に記載の要求された情報または
命令のみをトランザクションの間に実行することができ、それによってトランザ
クション証書を機能的に、従来の機密保護実行命令と似たものすることができる
。その戻ってきた結果は、必ずしも、トランザクション証書に格納する必要はな
いが、要求のリターンステータスはそこに格納することが好ましい。
【0058】 一度トランザクションが完了し、ステータスが記録されることを承認した「署
名入りの」証書を各ODEを所有すると、各ODEは、そのトランザクションが
完了したものと見なす。各ODEは証書を、トランザクションおよびユーザ/シ
ステムのセッティングのタイプに基づいて、格納(アーカイブ)したり、または
それを削除したりする。このアーカイブは、トランザクション処理に対してロー
ルバック能力を提供する。
【0059】 ODE100の起点部分204には、オーナまたは作成者情報、グループ識別
情報、読み/書き/修正、または他の許可、および証書216に包含可能な情報
と似たまたは同一の他の情報などの、オーナ情報218も含めることができる。
しかし、オーナ情報218は暗号化されていない、そのためこれは認証を必要と
しないコメントまたは情報を収容するためにも使うことができる。
【0060】 実行可能部分206には、全く無いかまたはそれより多いブロック220を含
んでいる。それは、またデータイベント経路220としても知られている。命令
を受け取ること、コードをロードすること、例外処理のセットアップをすること
、ポセイドンデニズン820と通信をすること、アーカイブすること、移動する
こと、さらに他の基本的なデニズン100の機能のためのデフォルトのブロック
220は、1つのクラスまたは、大部分のまたはすべてのデニズン100内に存
在する他のコード228内で提供される。制御ブロックは、各ブロック220(
示しているフィールド222、224、226の形式の内の)に、または実行可
能部分206(図示せず)の内側でかつブロック220の外に、あるいはその両
方に配置することができる。
【0061】 各ブロック220の制御ブロックには、長さフィールド222、タイプフィー
ルド224、およびチェックサム226が含まれている。各ブロック220もコ
ード228の全く無いかまたはそれより多いバイトも収容する。長さフィールド
222は、バイトまたは他の便利なユニットでブロック220の長さを指定する
。一方、最初の3個のフィールド222、224、226の長さは、固定され、
暗黙的であることができる。このような場合、長さフィールド222はコード2
28の長さを指定する。
【0062】 タイプフィールド224は、コードフィールド228内のコードのタイプを指
定する。コードのふさわしいタイプには、マシン指定実行可能命令およびデータ
、Javaバイトコードなどのマシン独立命令およびデータ、HTML命令およ
びピクセルファイルなどのマーク付け言語命令およびデータ、データベース命令
およびデータ、さらに他のタイプのコンピュータコードが含まれる。コード22
8には、特定のプラットフォーム上で実行するためのコードフラグメントを組み
立てまたは生成する、C++クラスまたは他のクラスなどのクラスを含めること
ができる。さらにまたはその代わりに、コード228は、実行可能または翻訳可
能な(本来のまたは仮想のマシン)コードのフラグメントを含むことができる。
コード228および/またはブロック220が入手できるODEライブラリで、
クラスおよびサブクラスの数が、コードフラグメントを組み立てて特定の機能を
成し遂げるようにするクラスに関連している。
【0063】 サブクラス内では、多くのコードフラグメントの要求があるかもしれない。こ
れらのコードフラグメントは、すべてのクラスで共用することができるが、その
クラスやサブクラス独特のものであることもできる。ユーザがODE100を介
してウェブページを編集し、ActiveXコントロールをそのページに加える
場合、ActiveXコントロールを表示できるコードフラグメントは、ウェブ
ページが格納されているデータ経路220を収容するODE100によって、要
求が行われ、ロードする必要がある。ODE100がコードフラグメントを収容
するオーシャン102にあるかぎり、そのフラグメントの1つのコピーだけがオ
ーシャン102で必要とされる。しかし、ODE100がコードフラグメントを
収容していない新しいオーシャン102へ、またはオーシャン102を有しない
マシン上へ移動することを選ぶ場合そのフラグメントは、データ経路220に埋
め込まれるようにすることができる。フラグメントは、暗号化されたソースコー
ドとして埋め込まれ、そしてそのマシンへのODEの移動の一部として宛先マシ
ンでコンパイルされることが好ましい。コンパイルされたまたはソースコードも
、新しいマシン上の新しいODEライブラリに加えることができる。
【0064】 一実施の形態では、各データイベント経路220には、32ビットデータ経路
番号、32ビットデータ経路タイプ番号、および制御ブロックが含まれている。
以下の情報が各ブロック220用に、データ経路220に格納されている。すな
わち、長さ16文字までのオプショナルブロック名、長さ4ビットのデータタイ
プ番号、ODE100のロケーション104を識別する32ビットのマシンロケ
ーション識別子、コード228用の開始アドレスおよび終了アドレス(アドレス
の長さはプロセッサ次第だが、一般的には32または64ビット)、チェックサ
ム226、およびコード228(可変長)である。マシンロケーション識別子は
、各マシン(またはロケーション104)にオーシャン102の一部になる場合
、与えられている。
【0065】 一実施の形態では、すべてのODE100は、許可されている制約によるが、
ユーザがODE100と直接対話できるように、それ自体にインターフェイスを
有する。システムのクラッシュまたはエラーが発生し、そしてただ1つのODE
100だけが機能できる状態である場合、このODE100のオーナまたはユー
ザは、システム資源にアクセスして、オーシャン102および他のODEのデー
タを修復するために、ODE100とグラフィカルに(または、コマンドライン
インタープリタテキストオンリーシステムでは非グラフィカルに)対話すること
ができる。
【0066】 ODE構成はいくつかの利点を有する。最初に、ODE100は、データイベ
ント経路220用の制御ブロックをロードし、そして制御ブロック内の情報を使
い、望む実行可能なブロック220にのみ、その情報のためのメモリを検索する
必要なしに、それをロードすることができる。
【0067】 ODE100が、ダイレクトメモリアクセスを可能にするCまたはC++など
の言語で書かれた場合、メモリまたはストレージのロケーション情報は、実(物
理または論理)アドレスであり得、さらにダイレクトメモリアクセスが不可能な
Javaなどの言語では、ロケーションの要求をすることができる。この組み合
わせで、ODE100はシステム102内のどのマシン上のストレージからでも
ブロック220をロードすることができる。この機能は、SMPシステムの共用
メモリに似ている。しかし、SMP、MPP、NUMAアーキテクチャメモリア
クセスで必要とされるような、追加のプログラミングは必要ではない。ODE1
00が単に要求を行うと、マシン上のオペレーティングシステムは、メモリのブ
ロックを検索し、ODE100にメモリのコンテンツを提供する。
【0068】 この取り決めの別の利点は、ODE100はマシンからマシンへ移動すること
ができるが、要求されたブロック220のコンテンツは移動する必要がないこと
である。同じODE100内、または異なる複数のODE内の3個のブロック2
20がコードフラグメント228または他の一片の情報を要求する場合、情報を
複製する代わりに、各ブロック220は同一のメモリロケーションへ要求するこ
とができる。このようなわけで、ODEおよびシステム102は余分な情報を格
納する必要がない。
【0069】 このアプローチの欠点は、2つのODEが同時に同一のマシン上の同一のメモ
リロケーションへ書き込まないようにするために、共用メモリの書込みがセマフ
ォ同士で調和していなければならないことである。セマフォの代わりに、所有権
とアクセス権を使うことでこの欠点を解決することができる。ただ1つのODE
100だけが、与えられた一片のメモリまたは与えられた一片のデータを所有す
ることができる。メモリ内のそのロケーションを所有するただ1つのODE10
0だけが、そこに収納されているデータ修復することができる。そのデータにア
クセスすることを望む他のODEは、データを所有するODE100からの許可
を要求する必要がある。ODE100が許可を与える場合、それは要求している
ODE100に情報の場所を通知し、さらにその情報にアクセスする許可を有す
るODEの記録も、格納することになる。所有しているODE100が移動する
場合、それと一緒にデータも移動する、あるいは所有しているODEが何らかの
理由(効率性、アーカイブすること、または予測されたシステムダウンタイムな
ど)でデータを移動することを選ぶ場合、その時所有しているODEは、データ
の新しいロケーションのそのデータにアクセスするすべてのODEに通知する。
【0070】 新しいODE構成および関連した方法の他の利点は、次の通りである。すなわ
ち、実際に必要とされるコード228だけを含むことによって、ツールおよびビ
ューアのサイズを小さくし、そして非連続のコードのロードを可能にする動的コ
ードフラグメントアクセス(従来のモノリシックな特徴がパックされたアプリケ
ーションにより取られていたアプローチに対するものとして)、より小型のデー
タベース(なぜならば、与えられたタスクに関係のないデータのロードをより少
なくする)、データベースの要求用の動的インデックスの生成、そしてODEを
移動させる時に(ライブラリに関連して論じられているように)必要とされるネ
ットワーク帯域幅をより少なくすることである。
【0071】 本発明の新しいアーキテクチャは、動的インデックスの生成をサポートする。
例えば、ユーザが名前、年齢、および体重に対する医療記録が収納されたデータ
ベースを検索する必要があるとする。制御ブロックを使うことで、名前、年齢、
および体重のみのブロック220、または通常のデータベース内のそれらの3個
の列のみがロードされることになる。これによって検索がとても速くなり、さら
に同一の情報にアクセスするために必要とされるRAMやCPUの速さも遅くて
すむ。
【0072】 ビューアおよびツール 表計算ソフトおよびワープロなどのアプリケーションおよびプロセスは、デー
タのツール(修正の許可)またはビューア(読込みの許可)として、分類するこ
とができる。与えられた一片のデータを複数の異なるユーザが、多くの望む異な
るビュー方法を使うことで、同時に閲覧することができる。1つのビューアは、
ODE100で使っている情報を表計算ソフトビューアクラスを使い閲覧するこ
とができ、別のビューアは同一の情報をグラフィカルビューアを使い画像に表現
されたものとして閲覧することができる。一方、3番目のビューアはデータを解
析し、そして科学的画像化ツールを用いてデータを表現する、3Dオブジェクト
を生成する。
【0073】 データを修正する機能すべては、ツールを使って行われる。ただデータを閲覧
するだけのすべての機能はビューアを使い行われる。ビューアおよびツールは、
閲覧、および/または修正されるデータの所有権を管理するODEライブラリを
使って、生成することができる。例えば、異なるユーザによって所有され、閲覧
だけが利用できる一塊のテキストをロードするように指示されたODE100は
、テキストを閲覧するために必要とされるコードフラグメント228を求めるた
めに、ODEライブラリにアクセスすることになる。しかし、選択や、スペルチ
ェックに必要とされるコードフラグメント、またはデータを修正する他のどんな
方法のコードフラグメントをロードしたり、アクセスしたりすることはない。テ
キストの所有者がそのテキストをロードする場合、自分のODE100は閲覧の
最初のユーザとして同一のコードフラグメントをロードすることになり、さらに
スペルチェックフラグメント228、フォント変更フラグメント228などの必
要とされるフラグメントもロードすることになる。
【0074】 この例での各ODE100は、そのタスクリストに一片のデータに対してOD
E100が利用できる全機能を示している。ビューアODEのユーザは、2つの
機能のみを見ることになる。それは、End AccessおよびAccess
New Dataである。対照的にこのオーシャン102に対するODEライ
ブラリ内にスペルスペルチェッカがあり、そしてデータの所有者がスペルスペル
チェッカODEを使う許可を有する場合、その時はデータ所有者ODEタスクリ
ストには、スペルスペルチェッカコード228がツールODEにまだロードされ
ていなくても、Spell Check Textが含まれているはずである。
【0075】 閲覧許可が制限されているユーザがウェブページを読む場合、そのユーザのビ
ューアODEはウェブページをを読んだり、表示したりする機能だけを有してい
る。対照的に、ツール(修正)許可を持つユーザは、ほとんど同一のインターフ
ェイス内からデータの修正をすることができる。ODEタスクリストは、選ばれ
た情報で実行できるタスクのみを収納している。修正の許可を有するユーザがテ
キストを選択する場合、タスクリストは、Spell Check、Resiz
e、Change Font、Translateなどのタスクを表示すること
ができる。何も選択しない場合は、3個のセクションがタスクリストに現れる。
すなわち、そのツールまたはビューアで利用できる機能、ツールやビューアの生
成や追加、一般的なODEの機能、およびログアウトのような一般的で広範囲な
システムの機能である。
【0076】 デニズンモビリティ 上述したように、デニズン100は生きている生物と、少なくとも類似という
観点では、特定の能力を共有している。次にこれらの能力について、モビリティ
からより詳しく論じる。
【0077】 図3に示すように、各デニズン100は、受取りステップ300の間に命令を
受け取る機能を有している。命令は、ユーザにより対話的に、さらに他のデニズ
ン100により供給されるコマンドまたはパラメータの形式である。命令は、そ
のようなコマンドまたはパラメータに応じて、または構成部分202の情報に応
じて、デニズンよりロードされる実行可能ブロック220の形式でもある。
【0078】 解析ステップ302の間、デニズン100は、タイプフィールド224および
プライオリティ(ある場合)を検査することで、受け取った命令を解析する。照
会ステップ304の間に、デニズン100は、動作環境102で現在利用できる
資源についての情報を要求する。この情報は、ロケーション104からロケーシ
ョン104への移動の間、デニズン100により内部で保守することができる。
資源情報は、資源の能力と利用可能性を追跡してタスクを遂行する、管理デニズ
ン802(図8)によっても提供され得る。
【0079】 好ましい資源情報には、CPUタイプおよび速さ、メモリの特性、ハードドラ
イブの利用可能性、システム履歴、スワップスペース、および他のコンピュータ
資源の特性が含まれている。与えられた一組の命令を実行するために必要とされ
る資源を、デニズンの生来のオーシャン102内で入手できない場合、そのとき
要求ステップ304には、デニズン100の必要とする資源を捜し出すために、
他のオーシャンの資源デニズンと連絡を取ることも含まれることになる。
【0080】 選択ステップ306の間に、デニズン100はステップ302と304の結果
に基づき、ロケーション104を選択する。考慮された情報には、現在のロケー
ションの資源だけではなく、多様なロケーション104で行われた試みの履歴、
および受け取った命令を実行するための最善なのは、どのロケーション104か
を決めるのに、必要な他の情報も含まれているはずである。複数のロケーション
104を選択できる場合には、最善のロケーション104が利用できない場合の
、優先順位付けされることになる。これおよび新しいアーキテクチャの他の側面
の結果として、さらに異なるデニズン100(または異なる時の「同一」のデニ
ズン100)は、チップ指定アルゴリズムを含む、異なるロード分散アルゴリズ
ムを使うことができるので、デニズン100は従来のユニフォームフォアオール
プロセスおよび/または集中ロードバランスアプローチに限定されないことが理
解できよう。
【0081】 入手ステップ308の間に、デニズンは証書216を機密保護デニズン810
に供給することによって、適切な機密保護デニズン810から選択ロケーション
104へ移動するための許可を求める。許可が出ない場合、要求中のデニズン1
00は待機し、再試行することができ、あるいは適切であれば、機密保護デニズ
ン810を無効にするためにユーザまたは関係する管理者に連絡を取る試みを行
うこともできる。しかし、要求中のデニズン100が、デニズン100に割り当
てられた計算問題の前進を、大きく損なうことがないならば、ユーザおよび管理
者を巻き込まずに異なるロケーション104を選択し、試みることが現時点では
好ましい。
【0082】 一度、許可を入手したならば、デニズン100は管理ポセイドンデニズン82
0(図8)にステップ310の間に直ちに移動することを通知する。ポセイドン
デニズン820は、一方で多様なロケーション104、そして他方でオーシャン
102およびデニズン100のオペレーティングシステム間のインターフェイス
として活動する。そして、デニズン100はステップ312の間にそれ自体の生
成コピーをアーカイブし、ステップ314の間に新しいロケーションに移動し、
そしてステップ316の間に新しいロケーションで、受け取った命令を実行する
。タスクが完了すると、デニズン100はステップ318の間に一時的なロケー
ションでそれ自体の一時的生成コピーをアーカイブし、それからステップ320
の間に元も場所に戻る。
【0083】 ステップ322の間に、ステップ318で生成されたデニズン100のアーカ
イブされたコピーは、削除される。一方、デニズンは新しいロケーションを新し
いホームとすることもできる。そのような場合、ステップ318、またはステッ
プ318および320を飛び越してステップ312の間に生成した アーカイブ
されたコピーが、ステップ322の間に削除される。両方の場合、受け取った命
令を実行した後に、デニズンのロケーションがポセイドンデニズン820に通知
される。
【0084】 タプルがクラス、テンプレート、バージョンおよび/または特定の実行可能ブ
ロック220を識別する数や他の短い識別子を収容している多くの場合には、移
動している間(ロケーションおよび/またはライブラリおよび/またはアーカイ
ブの間)にODEが特定されることが、現時点では好ましい。ODEを構築する
のに必要な実際の実行可能コードおよび他のデータは、集中して格納されるか、
あるいは複数のロケーション104に格納されるかのどちらかであるODEライ
ブラリに位置している。1つの実施形態において、ODEは当初Javaで書き
込まれて、ODEライブラリには、Java、C++、または他のプログラミン
グ言語のコードを編成または生成するクラスが含まれている。
【0085】 ODE100がオーシャン102内の同一のマシン上で新しいODE100を
生成する場合、生成サブクラスは、ODEのJAR(Javaアーカイブ)ファ
イルまたは他のアーカイブファイルにアーカイブされているODE機能クラスか
ら、ロードまたは参照することが好ましい。そのクラスが損傷したり、またはO
DE100がオーシャン102内の異なるコンピュータ上に新しいODE100
を生成している場合、そのとき同一のサブクラスが同一のクラスファイルからロ
ードされるが、それは宛先マシンのODEライブラリからである。このことは新
しいODE100が宛先プラットホーム元来のコードで書き込まれていること、
そして生成されたODE100のバージョン番号が宛先システム上でロードされ
たコードフラグメントのバージョン番号と一致することを確実にするものである
【0086】 ODE100がネットワーク通信回線を通じて移動したり、または1つのアー
カイブの中に移動する場合、ODEを再構築するために必要とされる最小量のデ
ータが、その結果として伝送またはアーカイブされる。これには、タプルおよび
タプルに反映されない、あらゆるメタデータまたは状態情報が含まれている。
【0087】 一実施の形態において、ODE110が移動する場合、ODEライブラリクラ
スおよびサブクラス情報、継承および拡張情報などのテンプレート情報、所有権
証書216、そして参照中のデータが実際伝送される。一部のまたはすべてのデ
ータの代わりに、ユーザが参照されたデータを所有していなかったり、またはデ
ータ(あるいはそのコピー)の移動を望んでいない状態において、ODE100
はブロック220内の参照をデータのロケーションに送信することもできる。宛
先マシンで、新しいODE100がライブラリ情報に基づいて生成され、そのデ
ータはODE100に移送される。
【0088】 この方法の別の利点は、新しいODE100が移動しているプラットホーム1
04のネイティブコードで生成されるということである。新しいロケーション1
04のこのプラットホームは以前のロケーション104のプラットホームと異な
っていてもかまわない。
【0089】 好ましいプラットホームには、無制限に、Java Virtual Mac
hines、および他の仮想マシン、さらには、ネイティブコードシステムが含
まれる。仮想マシンのプラットホームからネイティブコードプラットホームへ移
送する場合、ポセイドンデニズン820はネイティブコードで新しいODEを構
築することになる。データイベント経路220内のコードフラグメント228も
ライブラリ番号のみで、伝送することが好ましく、宛先マシン上のネイティブコ
ードフラグメント228が代用される。その新しいODE100が必要に応じて
動的にコンパイルされ、そして新しいマシンの仕事に取り組むことになる。新し
いODEライブラリが認可され、アップグレードがダウンロードされる場合、そ
れらを暗号化ソース命令セット(暗号化ソースコード)として受け取ることが好
ましい。それから、ポセイドンデニズンがオーシャン102の各プラットホーム
のためにコンパイルする。
【0090】 さらに、移動のこの方法の利点は、実行可能コードがネットワークを通して移
送される必要がないことである。帯域幅の必要を少なくできることに加えて、こ
れによって、実施形態が各ロケーション104のライブラリの別々のコピーを使
う場合、ODEがロケーション104間を移動する時にウィルスが移送されるこ
とを避けることができる。
【0091】 デニズンの再作成 各デニズン100には、先の図に関する続きとして図4および5で示している
ように、再作成の機能がある。図4はデニズン400がそれ自体の全く同一のコ
ピー402を生成する場合を示していて、一方図5は、それ自体の部分的に同一
のコピー502を生成するデニズン500を示している。全く同一のコピー40
2は、メモリで元のデニズン400の完全なコピーを作成し、そしてポセイドン
デニズン820に通知することで生成される。このようにして、デニズン400
、402のそれぞれは、構成部分404、406、起点部分408、410、お
よび実行可能部分412、414であり、異なるロケーションのメモリにあるが
、内容は同一のものである。生成されたデニズン402はメモリに常駐し続ける
こともできるし、またはハードディスク416などの不揮発性のバッファに、ア
ーカイブすることもできる。
【0092】 部分的に同一のコピー502は、メモリで元のデニズン500の部分的なコピ
ーを作成し、元のデニズン500と異なるソースから入手される部分と一部のコ
ピーを任意に組み合わせて、そしてポセイドンデニズン820に通知することで
生成される。一部のコピー作成をする代わりに、デニズン500の完全なコピー
を作成して、そして切り捨てたり、上書きしたりすることもできるであろう。生
成されたデニズン502はメモリに常駐し続けることもできるし、または不揮発
性のバッファ416に、アーカイブすることもできる。
【0093】 示している例において、デニズン500、502のそれぞれの構成部分504
、506および起点部分508、510は、メモリの異なるロケーションにある
が、内容は同一である。デニズン500、502のそれぞれの実行可能部分51
2、514は異なる内容が収納されている。生成されたデニズン502の実行可
能部分514は、ライブラリまたは他のソース516から出ており、元のデニズ
ン500からの単なるコピーではない。別の生成状態では、構成部分506およ
び/または起点部分510も、元のデニズン500からものとは異なるものであ
ることもできる。実行可能部分514も実行可能部分512のサブセット、また
は実行可能部分512からの、1つまたは複数のブロックとソース516から1
つまたは複数のブロックの、組み合わせであることもできる。
【0094】 デニズンの学習(概要) すべての図を参照することで、デニズン100にはニューラルネットワークで
使われる手法とやや似ている、バックプロパゲーションスキーマを使うことがで
きる。その学習方法については他のところで、特に図9から11に関連して詳細
に論じられる。デニズン100は、ステップ316を実行している間に、試みら
れた実行の成功または失敗に基づき実行コードやデータ228の修正ができるこ
とに、ここでは言及するだけにとどめておく。それ自体の実行可能部分206の
代わりに、またはそのような修正に加えて、デニズン100は、遺伝的なアルゴ
リズムや他の発展性のあるアルゴリズムより部分的に同一な子孫502も生成す
ることができる。
【0095】 デニズンの回復 デニズン100が破損し、しかしまだ少なくとも実行できる限られた能力を有
している場合、そのときデニズン100が、図6で示されている方法を使ってそ
れ自体で、修復するように試みることが好ましい。デニズン100は、ステップ
602の間にチェックサムのエラーを確認するか、またはステップ604の間に
例外状態に入ることのどちらかによって、ステップ600の間に内部構造の破損
を検知する。
【0096】 チェックサムのエラーは、デニズン100が実行を開始した時、および/また
はステップ314の間にデニズン100がロケーション104を変更した後に、
検知することができる。証書216のチェックサムの値が、移動または実行を開
始した後に計算された対応する部分202、204(または、デニズン100全
体で適切に)のチェックサムの値とマッチしない場合、デニズン100は破損し
ている。チェックサムのエラーは、デニズン502がブロック220またはブロ
ックコンテナ908(図9)をロードしている場合の生成または自己修復してい
る間にも、ブロックチェックサムフィールド226またはブロックコンテナ内の
チェックサムの値とコード228で計算されたチェックサムの値を、ブロック2
20またはコンテナ908がメモリにロードされた後に比較することで、検知す
ることができる。
【0097】 使われているチェックサムの種類および破損の性質しだいであるが、チェック
サムは、それだけで必ずしもその破損を検知できるとはかぎらない。このような
訳で、デニズン100も例外状態を検知することが好ましい。例外状態は、デニ
ズン100では修復または回避することが困難または不可能なプログラミングエ
ラーによって引き起こされることがある。しかし、ハードウェアまたは伝送のエ
ラーは、ブロック220内の破損したデータまたはコードが、例外の原因となる
こともある。ゼロで割ること、デニズンのメモリスペース外のメモリにアクセス
すること、定義されていない命令を実行すること、配列要素の枠外にアクセスす
ること、または他の不正な動作を行うことなどのあらゆる試みを含む例外状態を
、検知することが好ましい。
【0098】 Java言語は、固有の例外処理を特徴とする。本発明によるソフトウェアは
、与えられた一片のコード228に対する例外処理のこの特徴を使うことができ
る。さらに、別法としてソフトウェアは、ODE100全体に対する特別な例外
処理を使うこともできる。後者の場合、ODE100は保護メモリスペースで実
行する。ホストオペレーティングシステムがフォールトトレラント(特定のMi
crosoft Windows95/NT、MacOS、およびOS/2など
のオペレーティングシステム)ではない場合、これらの例外処理能力は、ODE
実行エラーがシステム故障の発生を防ぐのに役立つ。例外が除去された場合、O
DE100はポッド700に例外番号を送るように試み、そして「亡く」なる。
そして、本明細書において論じている自己修復および診断方法が進行する。
【0099】 ステップ600の間に内部構成の問題を検知した後、デニズン100は自己修
復を行おうとする。ステップ606の間に、デニズン100は、最初、最新のア
ーカイブされた自己のバージョンを、リロードしようとする。これが不可能な場
合、ポセイドンデニズン820にその状態を通知して、そしてステップ608の
間にクラス、サブクラス、およびチェックサム情報に基づいて自ら再構築しよう
とする。デニズン100の(非破損または修復された)制御ブロックで定義され
たブロック220のコピーを入手し、それをメモリにリロードすることで、再構
築することができる。ブロック220は、アーカイブデニズン808で管理され
ているローカルODEライブラリから、もし必要なら他のロケーション104か
ら移送してもらう必要があるかもしれないが、そこから入手することが好ましい
。ブロック220は、望ましいクラス継承および拡張ステータスを反映する、デ
ニズンテンプレートで指示されるように修正される。
【0100】 ステップ606、608のどちらかが、デニズン100の非破損バージョンを
作成する場合、実行はステップ612の間続くことになる。あるいは、デニズン
100は、ポセイドンデニズン820にステップ612の間に現在の状態で自己
回復とアーカイブに失敗したことを通知する。ユーザまたは管理者が後でデニズ
ン100を再構築することができるかもしれない。あるいは少なくとも、他のデ
ニズンで同一の問題を回避するやり方を、識別することができるかもしれない。
ステップ614の間に、デニズンの残存物は、解析することができ、そして残っ
ているあらゆるデータを検索することができる。
【0101】 ポッド 図7で示しているように、与えられたポッド700は実行可能デニズン100
および子デニズン100の組織的な構成という二重の働きを行うことになる。各
ポッド700は、子デニズン704のためにロケーション参照および他のメタデ
ータ702を保守する。デニズン704がポッド700でグループ化されるよう
に、ポッド700と他のポッドは、ファミリデニズン706でグループ化するこ
とができる。メタデータ702には、生成が効率化のためにデータベースの分散
を行うため、またはメモリの限界を満たすために発生している場合、どの生成さ
れた子704がデータベースのでの部分を受け取るかなどの、情報が含まれてい
る。メタデータ702も、移動済みのデータにアクセスする試みを回避するため
、もしくはデータの新しいロケーションを判断するために、データの所有者に連
絡をとることでこのような試みを回避するために、データ参照の履歴を追跡する
こともできる。
【0102】 一実施の形態において、デニズン704は移動する場合、親ポッド700に通
知する。デニズン704がホームオーシャン102の外に移動する場合、親ポッ
ド700はファミリ706に通知し、そのファミリ706はポセイドンデニズン
820に通知する。これは、デニズンモビリティおよびステップ310に関連し
て上記で論じた通りである。他の実施形態においては、異なる階層またはリンク
デニズン組織構成が使われている。例えば、階層構造では、ファミリレイヤが省
かれていたり、ツリー階層構造の代わりにリングが使われていたりなどである。
該実施の形態においては、デニズンがその移動を直接ポセイドン820に報告す
るなどの、異なる通信経路が使われている。
【0103】 ポッド700に属するデニズン704すべては、機能、所有者、さらにデータ
内容で関連を持つことが好ましい。デニズン100が子デニズンを生成する場合
、親デニズンは、すでにそうでないならポッド700になる。新しいポッドの構
成は類似している。しかしポッドデニズン700は、子デニズン704上に情報
を格納するために必要な、データベースブロック220および/またはメタデー
タを組み込んでいる。親デニズン700は、各子704へ問題の実行ブロック2
20を移送することで、1つまたは複数の子デニズン704に、実行機能を任せ
ることができる。
【0104】 管理デニズン 上記で言及され図8で示しているように、動作環境102には、多様な管理デ
ニズン800が含まれている。代替実施形態では、システムから機能性を省くこ
とで、少数のデニズン800では機能の一部またはすべてを組み合わせることで
、管理機能の責任を別の仕方でユーザデニズン100に持たせることで、あるい
はこれらの手段の組み合わせによってデニズン800の一部またはすべてを省い
ている。
【0105】 一部の実施形態では、一部またはすべての管理デニズン800の複数例を含ん
でいる。例えば、データベース、ロギング、およびアーカイブする機能には、複
数の身近な接続しているデニズン800で分散および管理されている、1つのデ
ータベースを使うことができる。あるいは、疎結合のデニズン800で管理され
ている別々のデータベースを使うこともできる。同様に、機密保護規制は、1つ
の中央デニズン810で、複数の移動することのあるデニズン810で、または
各ロケーション104で1つのデニズン810により、強化できる。
【0106】 例示している実施形態には、パフォーマンスに関する情報、および1つまたは
複数のロケーション104の特定のセットで利用できる資源を収集する、システ
ム資源デニズン802が含まれている。ふさわしい資源およびパフォーマンス情
報には、以下の一部またはすべてが含まれている。
【0107】 CPU 速さ %利用可能度 ハードドライブ 総スペース 利用可能スペース ファイルシステムタイプ アクセスタイム RAM 総量 利用可能度 システムキャシュ 総L1 総L2 NIC 速さ プロトコル アドレス モデム ダイヤルの速さ 認証方法 バックアップデバイス デバイスタイプ スケジューリング情報
【0108】 ユーザデータベースデニズン804は、オーシャン102用のユーザ/グルー
プデータベースの収納と管理を行っている。このデータベースには、各アカウン
トまたはグループ用のログインタイム規制、ユーザログイン経路、ファイルおよ
びディレクトリの許可、使用単位、または時間単位での課金の支払のための請求
情報、類似の課金データを含めることができる。ポセイドンデニズン820は、
必要に応じてこのデータベースを構成することができる。このデータベースOD
E804には、それ自体の照会処理コードが収納されている。すべてのODEと
同様に、このODEも単純なODE100のままでも構わない。しかし機能を効
率的に果たすには、大きくなり過ぎた場合、これもポッド700になり、そして
他のODEを生成することもできる。
【0109】 システムログODE806には、このオーシャン102のためのトランザクシ
ョンログなどのプロセスログが収納されている。1つの実施形態では、ログはデ
ータベースに保持され、そしてデニズン806は照会処理コード220に含まれ
る。オーシャン管理者820は、わかりやすいグラフィックユーザインターフェ
イス(GUI)を使い特定のプロセスを追跡できるように、デニズン806を構
成できることが好ましい。管理者820はログファイルのサイズを構成すること
もできる。システムログODE806がデフォルトの構成で機能している場合、
ODE806は、ログファイルが最大ファイルの長さに達した場合はいつでもロ
グファイルを終了し、アーカイブする、そして新しいログファイルを作成する。
ODE806は、ログファイルを閲覧しおよび/またはレポートを生成するため
に、ブロック220も収納することができる。
【0110】 1つの実施形態では、ユーザは他のシステムから取り込むことができるが、フ
ァイルを使わない。その代わりに、「ログファイル」は実際には、その構成次第
であるが、データイベント経路206や多数のデータイベント経路である。OD
E806が大きくなりすぎる場合、新しいODEを生成し、そのどちらかが新し
いODEのデータイベント経路206へのログをコピーし、そしてアーカイブさ
れる。または追加のログ情報の受取りの用意ができているデータイベント経路2
06の付いた新しいODEが作成され、そして自らアーカイブする。
【0111】 アーカイブポッド808は、ポセイドン820がオーシャン102内のODE
100用のアーカイブデータを、定義するようにする。例えば、Interne
tサービスプロバイダのシステム管理者は、ユーザアカウントODE100上で
アーカイブデータを設定できる。アーカイブデータが1週間で、そしてアクティ
ブなアカウントを持つある人が8日間ログオンしなかった場合、そのとき、その
人のODE100は「スリープ」し、USER_ACCOUNT.arkまたは
似たファイルの中に、アーカイブデニズン808によりアーカイブされる。この
アーカイブファイルが、アーカイブODEをそのまま格納する、圧縮データベー
スODE100であることが好ましい。次回、アカウントの所有者がログオンし
ようとすると、システムはその人のアカウントを見つけることができない。
【0112】 そして、システムはアーカイブポッド808に照会し、それは照会をUSER
_ACCOUNTS ODEを渡すと、そのアカウント用のODEはアーカイブ
されていることが返答される。そして、そのアカウントがまだ有効の場合、OD
Eはアーカイブから回復し、アクティブステータスに復帰する。アカウントの所
有者はログオンタイムが少し長いことに気付くかもしれないが、しかし、そのセ
ッション用の自分のアカウントの動作には何も変化がないことに気付くことがあ
る。
【0113】 ポセイドンデニズン820は、漸進的なダイデートを設定することもできる。
ODE100は、ダイデートが過ぎ、そのODE100も他の基準を満たした場
合に、オーシャン102から削除される。例として、オンラインのスイープステ
ークのためにウェブページ上でエントリフォームに記入を終えた人のことを考え
てみる。そのエントリフォームの内容は、データベースODE100に格納され
る。競争が終了した後、競争相手のデータはマーケティングファミリ706へ転
送され、スイープステークにエントリしたODE100は削除されることになる
【0114】 アーカイブポッド808がアクティブアーカイブアプローチを行わないことが
好ましい。このことは、与えられたロケーション104のホスト上にあるすべて
のODEが、最初のホストの平均の活動が与えられた限度より下に低下したり、
あるいは最後のアーカイブから与えられた時間が経過してしまった後に、オーシ
ャン102内の異なるホスト上、または特定のバックアップデバイス上にアーカ
イブされることを意味している。アーカイブは生成技術を使うことによりアクテ
ィブなODE100で、またはダイレクトアーカイブ技術を使うことによりアク
ティブではないODE100で行うことができる。これらのアプローチは、ポセ
イドンデニズン820を通して管理することが好ましい。オーシャン102が1
つのマシン上だけにある場合、Zip、Jazz Drive、またはテープバ
ックアップシステムを、オーシャン102をいつもバックアップするために、ア
ーカイブODE808が、使うことが好ましい。そして、類似した手段がマルチ
マシンのオーシャン102上で行われるべきである。
【0115】 既に言及したように、機密保護ODE810は、与えられたホスト上、または
与えられたロケーション104での実行を許す前に、ユーザまたはゲストODE
100の証書216を検査し、そうでなければ機密保護規制を実施する。
【0116】 ビジュアルマネージャODE812は、オーシャン102内のデニズン100
の対話型管理をサポートする。ビジュアルマネージャODE812は、ユーザに
より最大化または最小化できるコンピュータ画面上にパネルを作成する。このパ
ネルは、システム(ロケーション104に限定されるか、オーシャン102全体
かのどちらか)の中で、現在アクティブなODE100を表すアイコンを表示す
る。ポセイドンデニズンのパネルには、管理ODE800および非管理ユーザO
DE100が含まれている。各ODEタイプは、囲まれたアイコンで表示され、
そしてクリックすると、起点部分204に基づくカテゴリのある照会ボックスお
よびスクロールボックスが含まれるように大きくなる。カテゴリ内のODEは、
名前でリストされている。照会ボックスにより、管理者またはユーザは平易なテ
キスト検索を使うことで、アクティブなODEを捜すことができる。
【0117】 ユーザパネルは、許可レベルに基づいた、そのユーザが有するアクセス権に応
じたODEのみを表示する。ODEカテゴリの中には、ユーザすべてが利用でき
るものもある。それは、見るためにそのユーザ許可を与えられ、そのシステムに
ログオンしているすべてのユーザのために、所有者の名前が表示されるもの(管
理者のパネルには、すべてのユーザの個人情報が表示される)、ユーザにそのシ
ステムのODEのログファイルを検索できるようにしているもの、そしてユーザ
に、そのシステムのアクティブではないODEを、検索できるようにしているも
のである。
【0118】 リバーポッドデニズン814は、オーシャンの境界を越えて資源を捜す接続な
どの、他のオーシャン102との接続を管理する。このような特別なオーシャン
接続は、与えられたオーシャン102内のODE100によって、または接続を
開始するために、ODE100を使うオーシャン102内のマシンにログオンす
るユーザによって行うことができる。リバーODE814は、オーシャン102
内のマシン上で動作しているネイティブではないODEアプリケーションとの接
続も管理する。これには、データベース管理システム、レガシシステム、ハード
ウェアドライバ、Javaバーチャルマシン、非ODE環境で動作するネットワ
ークコンピュータ、UNIX/VMSシェルスクリプト、外部の実行可能なもの
、およびいずれかの知られていないデータストリームを含むことができる。
【0119】 データがネットワーク接続を通して2つのODE間で伝送される場合、その通
信パケット(TCP/IPパケットなど)は、2つのODEの証書216を使い
暗号化される。リバーODE814の証書216、それは、トランザクション、
ソースネットワーク(IP)アドレス、宛先ネットワーク(IP)アドレス、お
よびトランザクション用のトランザクション証書を管理する。このことは、通信
が遮断される場合でも、コンテンツへの不正アクセスを回避することができる。
というのは、証書を所有するODEのみが、伝送パケットの暗号解読をすること
ができ、それも特定の宛先アドレスのみで、さらに含まれる特定のトランザクシ
ョンのためにのみ、そうすることができる。もちろん、ネットワークは、TCP
/IPを頼りにしたり、またはそれを使うことさえする必要がない。本発明によ
るソフトウェアは、複数のネットワークプロトコルをサポートすることができ、
将来のネットワークプロトコルを含むことができるように、拡張することができ
る。
【0120】 実施形態では、リバーポッドデニズン814はスレッドマネージャODE81
6の親である。ODEすべては、スレッドを生成、管理することができる。しか
し、ODE100がそうした場合、それはそのスレッドをスレッドマネージャO
DE816を使い登録する。スレッドマネージャODE816はシステム資源を
解析し、そして優先順位および許可に基づき、スレッドを生成するようにする。
【0121】 例えば、ODE100がネットワークを通して他のアプリケーションとのソケ
ット接続を創設する場合、そのソケットはスレッドとして管理される。各スレッ
ドはメモリおよび(この場合)ネットワークの帯域幅を占める。とても高い優先
順位を持つ誰かがビデオマルチキャストをスケジュールしている場合、それは、
システム102で利用できるネットワーク帯域幅の大部分を必要とする。他のO
DEは、このスケジュールされたイベントに気付いていないかもしれない。OD
E100がソケット接続で利用できるネットワーク帯域幅があることを認識する
場合、ODE100は、スレッドマネージャODE816にスレッドの生成の許
可を打診する。スレッドマネージャODE816は、ビデオマルチキャストがそ
のネットワーク資源の割当てに対する最高の優先順位であることを知っているの
で、それはソケットスレッドがそのネットワーク接続を通して生成されることを
許可する。しかし、スレッドマネージャODE816は、可能な場合には他のネ
ットワーク接続を使うように、ODE100へ要求する。
【0122】 1つの実施形態においては、リバーポッドデニズン814はゲートキーパOD
E818の親でもある。ゲートキーパ818には2つの主な機能がある。第1は
機密保護である。すなわち、ゲートキーパ818はIPマスキング、IPフィル
タリング、ユーザの認証などの標準的なファイアウォールシステム機能を提供す
る。第2のゲートキーパ818の主な役目は、ネットワーク構成を管理すること
である。通常、このことはオーシャン102のネットワーク資源が、どのように
構成されるかを追跡することを意味する。しかし、ゲートキーパ818は、本明
細書の別の箇所の実行可能な例の移動にあるように、通常のダイヤルインおよび
ログオンに必要な構成情報を、広範囲で多様なダイヤルインユーザへの提供も行
うことができる。
【0123】 デニズンの学習(詳細) 従来の遺伝的アルゴリズムおよび順応性のあるニューラルネットは、指定済み
のルールの組に基づいてのみ、自ら順応することができる。それらは、入力が修
正されたり、動作中に入力データが変更される場合には、うまく反応しない。そ
れらは、1つの指定済みのタスクを成し遂げるために書かれている。結局、それ
らは、予期しない入力またはシステムイベントに応じて、動的に生成されたり、
修正されたりはできない。
【0124】 ODE100が「学習」するプロセスは、いくらか従来の進歩的なコンピュー
タシステムに似てはいるものの、基本的には異なっている。図9で示しているよ
うに、ODE100は、ユーザ照会900で要求された入力を解析し、ふさわし
い処理構成906を生成(またはステップ904で修正)するために、ステップ
902を行う。処理構成906には、1つまたは複数のブロックコンテナ908
が含まれている。1つの実施形態においては、処理構成全体が1つのODE10
0内にある。つまり、代替実施形態では、各ブロックコンテナ908は1つの別
の(疎結合)ODE100である。
【0125】 いずれかのブロックコンテナ908は、実行可能ブロック220であったり、
それを収納しており、それらは次にコードフラグメント228を保持する。各フ
ラグメント228は、与えられた入力タイプ、処理方法、他の処理フラグメント
228への接続を有している。フラグメントは、処理のためにユーザおよび/ま
たはODE100へ伝送される、結果912を作るために協力する。構成906
は、1つのデータイベント経路220内の一連の関連したコードフラグメント2
28、またはコード228を収納する各ODEを持つODE100の組織構成で
あり得るので、照会100を処理する仕事は、オーシャン102の一部または全
体を通じて、分割することができる。
【0126】 処理構成906は、ODEライブラリまたは他の基準に見出される一組のルー
ルまたはテンプレートに基づき、実行中に生成および構成される。このようにし
て、ODEが使う学習方法は、進歩的アルゴリズムの新規な形式として、見なす
ことができるはずである。中間結果、エラーメッセージ、資源要求、およびユー
ザの応答などの解析情報914に基づき、ODE100は、ユーザ照会900へ
うまく応答するために、構成906の容量を解析する。ステップ904の間に、
ODE100は、処理構成906のブロック220のロード、アンロード、およ
び/または再コンパイルをすることができる。
【0127】 このことによって、ODE100は、構成906およびODE100が、その
問題と可能な解決策についてすでに習得したことを失うことなく、実行中に作動
の基本的な変更を行うことができる。例えば、ユーザが実行中に照会900を変
更する場合、構成906の最初のバージョンに基づく現存の組を保存し、そして
適合性を評価するために、構成906の新しいバージョンの結果との照合を行う
ことができる。
【0128】 ニューラルネット、遺伝的アルゴリズム、および他の従来の進歩的アルゴリズ
ムとは異なり、本発明の方法は、ODE100がユーザの操作なしで、実行中に
処理フラグメント228の「ネットワーク」を、コンパイルできるようにするも
のである。使用中のコード228は、構成906の現在および過去のバージョン
を引き継ぐ程度に応じて、実行中に構成906をより効果的なものに、修正する
ことができる。データイベント経路220内のODEコードフラグメント228
は、データ入力評価のプロセスのステップとして、データベースまたは他のデー
タリポジトリに、アクセスすることができる。ODE間またはコードフラグメン
ト228間の「接続」の「重さ」は、単に数のはずであるが、それは異なるデー
タベースまたはデータ資源に接続することもできるはずである。発明者の知識に
応じて、従来のニューラルネットのノードまたは接続は、そのプロセスの一部と
してデータベースにアクセスすることができず、従来の遺伝的アルゴリズムも、
与えられたデータベースにアクセスするために、「ハードワイヤ」状態でなけれ
ばならない。
【0129】 ODE100が使う学習方法は、ODE100がデータベース、ファイル、お
よび他のプロセスから情報を検索する方法と、固く結び付いていることが好まし
い。検索中も含めて、データ入力やデータベースが移動する場合、処理構成90
6が移動がない場合のように、アクセスを続けられることが好ましい。データベ
ースの構成が要求900の処理の途中で変更になる場合、ODE100は、適切
なブロック220および/またはコンテナ908をロードし、新しいデータベー
ス構成から情報を収集することで、要求の処理を続けることができる。入力がブ
ロック220の追加を必要とする場合、または相互接続910に追加や変更が求
められる場合、そのとき処理構成906を、要求900の処理を止めることなく
、実行中に再コンパイルや再構築することができる。このような順応性は追加の
ユーザ要求900の結果として、またはデータベース構成内で、発生した例外ま
たは生じたエラーなどの予期しないイベントの結果としても必要とされる。
【0130】 デニズンの学習例 デニズンの学習方法およびアーキテクチャは、新規な検索エンジンの一部とし
て使うことができる。4つの検索用の言葉、「犬」、「コリー」、「ブラウン」
および「黒」をユーザが入力したとすると、最初構成906は、ブラウンおよび
黒のコリーについての情報を収容した、データ経路またはウェブページに情報を
戻す。ユーザが「ブラウン」と「黒」の間に結合語「または」を加える場合、そ
のとき最初の結果が保持され、そして新しい要求が、ブラウンのコリーまたは黒
のコリーに対して生成される。構成906内のコードフラグメントリンケージ9
10に、実行中の変更が加えられるはずである。ブラウンおよび黒のコリーを検
索したページは保持される、というのは、ブラウンおよび黒のコリーは、2度見
つけられることになるからである。つまり、1度は「ブラウン」との照合により
、もう一度は「黒」との照合によってである。検索が再び「黒」ではなくて「ブ
ラウン」と修正された場合、そのとき前に検索したデータベースを再び検索する
必要はない。構成906は、黒のコリーとブラウンおよび黒のコリーについての
情報を破棄する。要するに、要求900の構成は変えることができ、しかし類似
した要求構成の以前の検索結果、および検索から入手したことは何でも、引き続
き使うことができる。
【0131】 デニズンの学習方法およびアーキテクチャも、新規な翻訳エンジンの一部とし
て使うことできる。ODE100が翻訳すべきものとして、以下のバイナリフォ
ーマットのテキストを受け取ったとする。
【0132】 01001000011000010111001000100000011
010000110000101101110001000000110100
001100001011001100111010000100000011
001100110010101110010011010010110010
100111111 ODE100は、テキスト塊をASCIIフォーマットと見なし、ユーザに次
のような新しいメッセージとして表示する。「Har han haft fe
rie?」英語しか話さないユーザは、そのフレーズやフレーズの中の言語が理
解できない。ユーザはメッセージを選択し、「翻訳」ボタンを押す。
【0133】 このメッセージを翻訳するようにとの命令を受け取ったことに応じて、ODE
100はその表現を翻訳する子ODE100を生成する。この子ODE100は
、データベースクラスおよびフレーズ識別サブクラスを使い生成される。フレー
ズ識別サブクラスに基づいてデータイベント経路220を生成するために、OD
E100はフレーズの単語数を識別する必要がある。
【0134】 フレーズの単語数を識別するために、ODE100は、順番にフレーズをコン
ポーネント部分に分割するために、トークンナイザメソッドを使う。このことを
行うために、ODE100は、以下にリストしているように、非文字値の繰り返
しに対してフレーズのASCII文字のバイナリ表示を捜す。以下に、ASCI
I文字マップから各文字の10進法表示に対する2進法が、8ビットの塊と10
進法の同等物で示されている。 01001000 72 01100001 97 01110010 114 00100000 32 01101000 104 01100001 97 01101110 110 00100000 32 01101000 104 01100001 97 01100110 102 01110100 116 00100000 32 01100110 102 01100101 101 01110010 114 01101001 105 01100101 101 00111111 63 ODE100は2つの非文字ASCII値、すなわち、スペースである001
00000(32)とクエスチョンマークである00111111(63)を見
つける。スペースは3度繰り返されており、おそらく単語の間を区切るものであ
る。この情報に基いて、ODE100はいくらかの仮定をする。それは、テキス
トはフレーズまたはセンテンスのフラグメントであり、フレーズには4つの単語
すなわち「Har」、「han」、「haft」、および「ferie」があり
、そしてフレーズは疑問形であるというものである。
【0135】 その場合、ODE100は、入力値として識別される4つの新しいデータイベ
ント経路220を生成する。これらはニューラルネットの入力レイヤのノードに
類似している。これらの4つの単語の2進法値は、以下に示しているように4つ
の入力ブロックにコピーされる。分かりやすくするために、この例では、パイプ
文字|は、ブロックを分割するために使われていて、ASCII文字がここから
、各文字に対する2進法値の代わりに使われる。この図には、データイベント経
路制御ブロックは含まれていない。 |Har|han|haft|ferie|
【0136】 図10やその前の図を参照すると、ODE100はフレーズおよび翻訳命令1
000を辞書ポッド1002に送る。その辞書ポッド1002はアーカイブポッ
ド808の一部であり得る。辞書ポッド1002は、ASCII文字「H」また
は「h」で始まる単語の辞書を収納する、ODE1016、1018、1020
を所有する。これらの辞書ODEは文字により、ポッド1004、1006、1
008、1010、1012、および1014に編成される。示している例では
、ODE100は、「Har」、「han」、および「haft」に対する英語
(オリジナルのメッセージを受け取るODE100の生来言語)以外のすべての
言語で「H」ODEを確認する、複数のスレッドを生成する。照会も行われ、メ
ッセージは「F」および「f」ODEを収納するポッド1006に移動し、続い
てちょうど「f」ポッド1014およびそのODEに移動する。このフィルタリ
ングのプロセスは、要求の処理をする必要のあるODEの数を少なくするために
、実際の照合要求の前に、実行することが好ましい。そうすることで、システム
資源の使用を節約し、要求を処理するのに必要な時間を短くすることができる。
【0137】 複数の言語ではローマ字が使われている。オリジナルのメッセージには、ロー
マ字ではない文字は収納されておらず、ODE100にはこのタイプの要求の経
験がないので、ODE100はローマ字を含む言語や、ローマ字を含まない言語
にさえ最高の優先順位を置く。これらの言語には、スカンジナビア語およびゲル
マン系の言語が含まれる。他の言語はローマ字では書かれない。しかし、コンピ
ュータを使い、これらの言語を話す人々は、しばしばその言語の単語の受け入れ
られるローマ字表現を使う。例えば、日本語は複数の文字組を使うが、その1つ
としてローマ字も使う。オリジナルメッセージが、あらゆる日本語の文字の組の
文字を表すユニコード文字値として受け取られると、日本語のODEに最高のウ
ェイトを置くように要求が行われる。ところが実際は、日本語のODEには、低
いウェイトや優先順位しか与えられないが、これらの言葉が日本語のローマ字表
現である場合、検索が続行される。ウェイトと優先順位値は、各言語の各単語に
対する要求値によって、要求することで表示される。
【0138】 選んだ言語に対する識別確率チャートが以下に示している。初期確率値は辞書
ポッド1002内のデータイベント経路220に格納されている言語に対する値
、さらに英語に与えられた文字の組の類似した値に基づいている。英語ではない
文字の組に対する、この表で最高の値は、0.9である。最小値は、0.1であ
る。この確率は、各文字のセットに英語のアルファベットの文字と同じその言語
のアルファベットでの文字数によって、英語のアルファベットの文字と異なる、
与えられた言語のアルファベットの文字数で分割することによってカーブ評価で
割り当てられる。この値は、その言語のODEに対して検索したすべての単語の
以前の要求値の平均を掛けている。最初の要求の際は、乗数は常に1である。
【0139】 言語 以前の要求値の平均 ID確率 デンマーク語 1 0.85 ノルウェー語 1 0.85 日本語 1 0.1 初期要求、目標の宛先、および初期値を表す、関係したチャートを以下に示す
【0140】 マッチした要求 宛先目標ODE 初期値 Har デンマーク語 H ODE 0.85 ノルウェー語 H ODE 0.85 日本語 H ODE 0.1 han デンマーク語 h ODE 0.85 ノルウェー語 h ODE 0.85 日本語 h ODE 0.1 haft デンマーク語 h ODE 0.85 ノルウェー語 h ODE 0.85 日本語 h ODE 0.1 ferie デンマーク語 f ODE 0.85 ノルウェー語 f ODE 0.85 日本語 f ODE 0.1
【0141】 処理構成906で作業しながら、スレッドは「Har」を適切なODEに移動
させ、多様で確実なマッチを要求する。「H」ポッド1008内のデンマーク語
とノルウェー語に対してはODE1016および1018で、その両者は確実な
マッチを返す。「h」のデンマーク語およびノルウェー語のODEも「han」
を見つけ、そして「f」のデンマーク語およびノルウェー語のODEは「fer
ie」に対する確実なマッチを返す。デンマーク語の「h」ODEも「haft
」を見つける。
【0142】 各スレッドには、照合の要求およびデータの要求が含まれている。要求が無事
に戻ってくる場合、戻りステータスは1である。要求が満たされない場合、戻り
ステータスは0である。照合要求に対する戻りステータスが1の場合、そのとき
宛先ODEはデータの要求を実行する。この例では、要求によって、各単語の英
語の意味、各言語に対する各単語のタイプ(動詞、名詞など)、そしてマッチし
た単語の時制を調べる。これらの値が要求したODEに戻ってきた後、それらは
戻りステータスとともに、その単語に対するデータイベント経路220に格納さ
れる。
【0143】 以下のチャートは、初期要求、目標宛先、初期値、戻りステータス、および2
回目の要求値を示している。2回目の要求値は、初期値と戻りステータスの平均
を求めて計算したもので、それは続く要求のタイプと値を決めるのに使われる。
2回目の要求値も、要求しているODEの信頼値であり、それは要求スレッドが
、単語を正しく識別した信頼の程度を表すものである。
【0144】 マッチした要求 宛先目標ODE 初期値 戻り 2度目 Har デンマーク語 H 0.85 1 0.925 ノルウェー語 H 0.85 1 0.925 日本語 H 0.1 0 0.05 han デンマーク語 h 0.85 1 0.925 ノルウェー語 h 0.85 1 0.925 日本語 h 0.1 0 0.05 haft デンマーク語 h 0.85 1 0.925 ノルウェー語 h 0.85 0 0.425 日本語 h 0.1 0 0.05 ferie デンマーク語 f 0.85 1 0.925 ノルウェー語 f 0.85 1 0.925 日本語 f 0.1 1 0.05
【0145】 戻りステータス1を有する単語のリストとそれらの単語に対して戻ったデータ
を以下に示す。「ヒント」は単語のタイプと、適切な場合時制も含む。
【0146】 要求 言語 ヒント 英語 英語のヒント Har デンマーク語 現在 Has 現在 ノルウェー語 現在 Has 現在 han デンマーク語 代名詞 he 代名詞 ノルウェー語 代名詞 he 代名詞 haft デンマーク語 法動詞 had 過去 ferie デンマーク語 名詞 vacation 名詞 デンマーク語 名詞 vacation 名詞
【0147】 言語識別信頼値は、要求により、各言語に対して要求した単語の要求値の平均
が処理される前に、測ることができる。信頼値が0.05以下になった場合、も
うその言語のODEに対しては、要求を送らない。このようにして、図10に示
されている処理構成906は、以下に示す事前の結果に基づき、図11で示して
いる構成へ、動的に修正することができる。
【0148】 言語 言語ID信頼度 デンマーク語 0.925 ノルウェー語 0.8 日本語 0.05
【0149】 これらの要求スレッドを通して送られた次の要求1100が、「had」に相
当するノルウェー語、それはデンマーク語では「haft」という単語の意味で
すが、それを尋ねてきているとする。この要求により、その単語の綴りに間違え
がなく、データベースから失われてはいないことを確かめる必要があるかもしれ
ない。このサイクルで送られる結果の要求は、ノルウェー語hODE1018に
送られる。ノルウェー語のデータベースからのこの要求に対して戻ってきた単語
が、検索対象語「haft」とは異なる場合、そのときそのメッセージはデンマ
ーク語であるという確信は、とても高くなる。そして、ODE100はそのセン
テンスは本当にデンマーク語であると、見なすことになる。例えば、ノルウェー
語ODEから戻る可変値が「hat」の場合、ODE100はオリジナルメッセ
ージの言語はデンマーク語と見なし、要求により、辞書ODE1002から検索
した英語の単語を英語用の文法構造に置き換える。それは、Has he ha
d vaction?(かれは休暇を取ったか)となる。
【0150】 要求が使えるセンテンスとして戻ってこなかったり、ユーザに提示されたセン
テンスがユーザにより拒絶された場合、そのときODE100はその要求処理構
成906(ノード、入力、および/または接続)を変更する。その変更は以下の
順番で行うことが好ましい。すなわち、最初に、入力語に綴りの誤りがあると仮
定して、データベースODEを確認する。そして、すべての単語の省略を識別す
るために、組み合わせて入力を確認する。最後に、AしかしBではない、AとB
しかしCではないなどと、ノードを変えて単語を確認するという順番である。
【0151】 付加的例 デニズンアーキテクチャは、新規な認証およびアクセスメソッドの一部として
使うことができる。旅行中のセールス担当役員のパットが、会社のイントラネッ
トにアクセスする必要が生じたとする。本発明がなければ、パットの選択肢は、
ダイヤルインルータを介してイントラネットアクセスするために長距離電話番号
をダイヤルするか、または機密保護の不十分なインターネット接続でイントラネ
ットにアクセスするかに限定される。
【0152】 本発明を使うと、パットは動作環境102へのアクセスを提供する近くのイン
ターネットサービスプロバイダを見つける。パットはノート型のコンピュータを
使いリストされた市内局番をダイヤルする。システムがログインアカウント名を
要求すると、パットのコンピュータは、代わりにパットの個人機密保護識別OD
Eおよびパットのホームオーシャン102ルーティング情報を提供する。パスワ
ードについては、パットのODEがデジタル証書216を提示する。近くのイン
ターネットサービスプロバイダのゲートキーパ818は情報を照合し、パットの
ODEに、その近くのインターネットサービスプロバイダを使いログインするの
に必要な、ネットワーク構成情報を提供する。パットのODEがログイン情報を
無事に受け取ったことを確かめたると、ゲートキーパ818は接続を終了させる
【0153】 そしてパットのノートパソコンODEは新しいダイアルアップエントリを作成
し、ネットワーク接続パラメータを構成し、近くのインターネットサービスプロ
バイダに再びダイヤルし、そしてログオンする。パットは、今や信頼性の高いイ
ンターネットサービスプロバイダを通してインターネット(こうしてイントラネ
ットに)アクセスする。そして、長距離料金を払う必要がない。
【0154】 デニズンアーキテクチャは、新規なデータベースシステムおよび方法の一部と
して使うことができる。2つのインターフェイスを介してデータベースに要求す
ることのできるユーザがいるとする。そのユーザは、簡単なテキスト要求または
、サロンやヘアケア商品などの多様なカテゴリにフォーマットされた(プルダウ
ンメニュを介して)要求ページを利用できる、集中要求インターフェイスにアク
セスできる。これらのインターフェイスは、インターフェイスODEにより実装
することができる。インターフェイスODEは、要求900をユーザオーシャン
102内のポッドまたはファミリデニズンなどの中央ノード100へ渡す。
【0155】 要求に答えるために必要な情報がユーザのオーシャン102内で見つからない
場合、そのとき、要求900は中央オーシャン102への接続を開始する、リバ
ーODE814へ渡される。要求102は、オーシャン102のファミリ構造、
ポッド、そしてODEを通してプロパゲーションメソッドで処理される。プロパ
ゲーションメソッドは、処理構成906による普通言語の翻訳関して上記で論じ
られたものと、類似した学習および通信方法を含むことができる。
【0156】 データベースODEはすべて自らの内部要求コードを収納していて、これによ
りユーザは内部データスキーマに関わりなく、簡単に要求することができる。こ
れは従来のデータベースシステムに利点をもたらす。従来のシステムの欠点は、
データベースのスキーマや関連の変化に、対応することができないことである。
内部要求構成を使うことで、学習および動的再コンパイルを通してODE100
内部で起こるデータ構成の変化が、ユーザやシステム102全体に対してトラン
スパレントになる。
【0157】 上級のユーザならば、データベースODEと直接対話をすることができる。O
DEは、GUIを使いユーザと対話できる機能を有する独立型アプリケーション
である。このGUIインターフェイスを通してODE100に要求された情報が
ODE内部にない場合、そのときはODE100は、ユーザおよびオーシャン1
02内のODEの許可の視点からの適切にしたがって、システム102じゅうに
その要求を伝える。
【0158】 ODEはこの分散プロセスを介して普通言語の翻訳、通貨変換、およびデータ
変換を処理する。ODE100が常駐しているオーシャン102が必要な常駐変
換ODEを有している場合、または要求されているODEがそのような変換能力
を有している場合、ユーザは、ドイツ語で要求し、そして英語で応答を得ること
もできるはずである。そして、情報はフランス語でさえ格納されている。要求に
価格情報が含まれている場合、ODEは要求の、さらに回答すべてを同じ通貨に
するために通貨の価値を変換することができる。
【0159】 本発明を使い2つの通常の種類のデータベースにアクセスすることができる。
データベースODEは、要求言語(SQLなど)をそのまま使いODE100内
でデータベースをカプセル化した、データベースフォーマットを使う。コード2
28には、実行可能命令、データベース記録、グラフィックファイル、そして他
のデータおよび命令を収納することがある。あるいは、ODE100は、データ
ベースネイティブドライバ(ODBC、JDBC、ActiveXなど)を使い
サードパーティデータベースとの対話を処理できるように生成することができる
。そのようにすると、直接またはサードパーティデータベース管理システムを通
しての、いずれかの方法でデータベースへのアクセスが可能になる。ODE10
0は、実行中にユーザの要求をネイティブ要求コードに翻訳し、ユーザに要求の
修正を常に強要することなしにデータベース構造の変更を可能にする。このこと
で、データベース管理システムが処理するように設計されていないなどの、特別
な要求もできる。
【0160】 多くの従来のデータベースシステムでは、要求の最適化はインデックスの使用
で処理される。これは他のテーブルを参照する行キー付きの、キーボードのテー
ブルである。インデックスを読み、そして要求とマッチする行を検索するほうが
、メモリの全データベースを検索するよりもかなり速い。インデックスを生成す
る1つの方法は、テーブルから与えられたコラムの行番号および内容を、インデ
ックステーブルへ単にコピーして、実行中に生成することである。システムは与
えられた語の数や繰返しに関して、データベースの行やドキュメントを走査する
こともできる。インデックスはその行についての情報を記述するために、複数の
キーボードを使い、手動で生成することもできる。
【0161】 データベース管理システム(DBMS)を使い自動的にインデックスを生成す
る方が、手動でインデックスを生成するよりもしばしば速い。例えば、自動イン
デック生成は、インターネット検索エンジンによって使われるインデックスを生
成する「ウェブクロワーズ」で、通常使われている。残念ながら、自動的に生成
されたインデックスは、提供する意味情報がより少ないという意味で、品質が低
下する傾向がある。サイトに「バイセクル(自転車)」というカテゴリと「マウ
ンテン(山)」とうサブカテゴリがある場合、「マウンテンバイク」というフレ
ーズの検索では、極めて重要であるが、そのサイトを識別できない。なぜならば
、使われたキーワードが異なっていて、インデックス検索では、キーワードに類
似または完全にマッチすることを手がかりにしているからである。手動で生成さ
れるインデックスはより正確な検索結果をもたらすが、データベースまたは統合
データベースシステムの情報が変化する場合、保守がとても困難である。
【0162】 ODEは、様々な仕方で要求を最適化するために使うことができる。1つの最
適化の方法は、伝播情報管理に基くものである。例えば、大きな長距離電話会社
の技術者が、エリアコード801からエリアコード409への長距離電話の通話
件数を知りたいとする。それは、将来の人口増加に基づく予測される通話数の増
加を処理するために、インフラが十分かどうかを見出すためにである。普通のD
BMSでは、技術者は、エリアコード801の顧客で、与えられた時間内にエリ
アコード409へ電話をする顧客を表すとても膨大なデータベースのすべての行
を、データベースシステムが見つけるようにしなければならない。可能なあるゆ
る組み合わせの中で、これらの基準の4つすべてを収納するインデックスを手に
入れることは、それがこれらの基準の2つでさえ、それは非常に非効率的になる
【0163】 さて、ODEアーキテクチャを使ったアプローチを考慮しよう。各顧客のアカ
ウントがそれ自体のデータベースODE100で表され、そしてデータファミリ
706が各エリアコードを表すとしよう。各ファミリ706内に、都市ごと電話
回線を表すポッド700があることになる。技術者は1996年11月20日か
ら12月31日までの、エリアコード801の顧客からエリアコード409への
すべての通話について、システムに要求する。システムはこの要求をコンポーネ
ント部分に分割する。
【0164】 コラム名 値 顧客エリアコード 801 宛先エリアコード 409 開始日付 19961120 終了日付 19961231 そして、システムはデータベースODEフィルタリング機能を利用する。以下
の要求がすべてのデータファミリに送られる。それは、「Binary(Tru
e or False)Customer_Area_Code=801」であ
る。データファミリが「True」と応答する場合、そのときシステムは次の(
そして最後の)要求を送る。それは、「BinaryDest_Area_Co
de=409およびStart_Date=19961120およびFinis
h_Date=19961231」である。
【0165】 要求は処理構成906じゅうに広まるにつれ、要求の最適化の2番目の方法が
行われる。データオーシャン管理者820がデータベースODE構成を生成する
場合、ストレージ機能の限度を定義する。この場合、限度にODE生成日付と最
新のイベント日付が含まれる場合、そのとき1996年11月20日より前の修
正日付を有するすべてのODEが取り出される、なぜならば、1996年11月
19日より後にそのアカウントに何も修正が行われていなければ、どの番号に対
しても電話がをかけてはいないはずであるからである。同様に、そのアカウント
が1996年12月31日より後に生成されたのであれば、そのときも、要求の
候補ではない。このことで、システムが処理しなければならない要求の数を、か
なり少なくすることができる。
【0166】 デニズンアーキテクチャは、Binary Large OBjectS(B
LOBS)を含むマルチメディアデータオブジェクト要求最適化のための、新規
なシステムおよび方法の一部としても使うことができる。BLOBSへの関心は
、マルチメディア産業とオンラインビデオ編集システムの急増とともに、増大し
ている。効率的なBLOBSストレージを統合し、より従来のデータベースシス
テムにアクセスすることが有利になる。しかし、含まれるBLOBSファイルの
サイズが問題を引き起こす。
【0167】 MPEG2フォーマットで2時間の映画はデータベースストレージスペースの
4.8ギガバイトを必要とするはずである。それのため、映画の格納は、高性能
サーバ上でのみ動作が可能な巨大なデータベースを必要とする。これは、しばし
ば価格が法外に高く、維持が非常に難しい。10人のユーザがほぼ同じ時間に、
特定のビデオファイルを見たいとする。しかし、異なるオフセットをビデオに入
れ、異なるサイトでそうしたいとする。1人がビデオの複数のコピーをメモリに
ロードするよう試みるとする。あるいは、回転ベースで各ユーザにファイルの塊
を送るために、共用CPUを使うことを試みるとしよう。これらのアプローチに
は、大きなハードウェアを使用が必要とされる。
【0168】 しかし、本発明のアーキテクチャを使うことによって、ODE内部のプレイバ
ックコードとともに、ODE内にBLOBSをカプセル化することができる。ま
たは、オーシャン102の内側か外側ファイルに対する内部ポインタを有するが
できる。これはオーシャン102内で複数のCPUを共用することに基づいて、
各ODEがファイルのプレイバックを制御することを可能にする。
【0169】 1つの実施形態において、ビデオがデータオーシャン102内ではないコンピ
ュータにある場合、そのときODEは実のところ述べたように、プレイバックを
制御できる。しかし、ビデオファイルがODEでカプセル化され、ODEの最大
サイズより大きい場合、そのときそのODEはポッドになり、新しいODEを生
成し、そしてそのビデオファイルを分割して、異なるODEに各々格納されてい
る同じサイズの塊にする。ポッドはセクションを追跡して、各ODEにどんなフ
レームがあるか、または何時に要求があったを監視する。ユーザはポッドを通し
てプレイバックを要求することができる。
【0170】 そして、プレイしているフレームを含むビデオの塊を収納しているODEをロ
ードするだけでよい。このことは、ビデオをRAMからストリームすることを可
能にする。これは、ビデオをプレイしているODEが、プレイバックを最も効率
的処理することを可能にするデータオーシャン102内のマシン上で、実行する
ことができるようにする。各プレイバックODEは異なるマシンで実行できる。
このアプローチもビデオのどのセクションのプレイバックも可能にする。そして
、必要になるまでアーカイブされたままで、そのときは必要ではないセクション
を持つ必要がない。各プレイバックODEは複数のスレッドを生成できる。それ
によって、複数のユーザがどこからでも、そのODEに格納されているビデオを
見ることができる。
【0171】 また、ユーザが毎秒15フレームのストリームしか許さない接続を通してビデ
オを見ている場合、ODEは1つおきにのみフレームを送る。ビデオがフレーム
デファレンス圧縮方法で格納されている場合、フレームすべてをロードする必要
があり、ホスト上で圧縮解除が起こる。ユーザがダウンロードできるフレームの
数は、ユーザが受け取れるものと同じくらい速く、ストリームされる。ビデオが
フレームデファレンス圧縮ではない方法で格納されている場合、ユーザの帯域幅
が許すフレームの数だけが、メモリにロードされ、伝送される。
【0172】 要約すると、本発明は性能を最適化するために異なるロケーションの多様なプ
ラットフォーム間を移動するプロセスと、自らの構成内の内部の不具合を正すた
めの検知および試みのプロセスと、要求や他の入力の結果に応じて自らを修正す
るプロセスとを含む分散コンピュータアーキテクチャである。そのアーキテクチ
ャは、データベース管理、普通言語の翻訳、そしてネットワーク認証およびアク
セスを含む多様なアプリケーション分野で有利に使うことができる。本発明の実
施形態は、当分野の技術者には既知のツールを利用し、それらを新しく、役立つ
方法で互いに組み合わせたり、新規な構造と組み合わせたものである。
【0173】 本発明の範囲における製造商品には、コンピュータリーダブルストレージ媒体
の基板の特定の物理的な構成と結合しているコンピュータリーダブルストレージ
媒体を含む。基板構成は本明細書で記述されているように、特定のおよび定義済
みの仕方でコンピュータを動作させるデータおよび命令を表す。ふさわしいスト
レージデバイスは、フロッピーディスク、ハードディスク、テープ、CD−RO
M、RAM、および1つまたは複数のコンピュータによって読込みが可能な他の
メディアを含む。各このような媒体は、確実に、本発明による動作環境でデニズ
ンプロセスを、サポートするまたは行うマシンによって実行可能なプログラム、
機能、および/または命令を実施する。
【0174】 請求するステップは文字通りの侵害分析の目的で省略することができず、かつ
他のステップの結果に依存するステップは必要な結果が得られた後でのみ実行し
なければならないという要件を仮定して、本発明の方法のステップを省略し、異
なる順序で行い、または同時に行うことが可能であるということを当業者なら理
解できるる。
【0175】 本明細書には、図2および図10で示すコンポーネントなど配置やコンポーネ
ントの内容に関して明らかに不一致な点が含まれている。さらに、図で示した実
施形態と文で論じたものにも明らかに矛盾がある。しかし、これらの明らかに不
一致の点に関する記述は、本発明の別の実施形態の変形例を論じたものと正当に
評価することによって解決できるものである。
【0176】 当分野の技術者は、このような状態において、どの実施形態を使うべきを容易
に決定できる。また、当業者であれば、本発明の実施形態には、上述したアーキ
テクチャのすべての部分を含める必要がないことも認識できる。
【0177】 本発明は、その精神や本質的な態様から逸脱することなく、他の特定の形で実
施してもよい。上述した実施の形態は、すべての点で例示的なもので制限的なも
のではない。セクション表題は、便宜上のものである。本発明で使用する科学的
な原理に関する本明細書での説明は、すべて例示的なものである。したがって、
本発明の範囲は、上記の内容によらず、請求の範囲によって示されるものである
。特許請求の範囲と同等の意味および該範囲に含まれる全ての変更は、本発明の
範囲内に包含されるものである。
【図面の簡単な説明】
本発明に係る利点および特徴を表す方法は、添付の図面を参照して詳細に説明
される。該添付図面は、本発明の選択した態様を示すだけであり、本発明の範囲
を何ら限定するものではない。
【図1】 本発明に係る動作環境、デニズンプロセス、および他の形態を示す図である。
【図2】 本発明の一実施の形態である、デニズンプロセスの内部構成を示す図である。
【図3】 受け取った命令を実行する、本発明に係る選択ロケーションのデニズンプロセ
スによる方法を示す流れ図である。
【図4】 本発明に係るデニズンプロセスにおける全く同一なバージョンの生成を示す図
である。
【図5】 本発明に係るデニズンプロセスにおける部分的に同一なバージョンの生成を示
す図である。
【図6】 それ自体の内部構成における不具合を検知して修復する、本発明に係るデニズ
ンプロセスによる方法を示す流れ図である。
【図7】 本発明に係るファミリデニズン、つまりファミリデニズンに属するポッドデニ
ズン、およびポッドデニズンに属する2つの簡単なデニズンを示す図である。
【図8】 本発明に係る管理デニズンを示す図である。
【図9】 本発明に係るデニズン処理構成の生成および動的修正を示す図である。
【図10】 自然言語変換を行うように最初に構成されている図9に示す種類のデニズン処
理構成を示す図である。
【図11】 動的に再設定した後の図10で示したデニズン処理構成を示す図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年2月28日(2000.2.28)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GE,GH,GM,HR ,HU,ID,IL,IS,JP,KE,KG,KP, KR,KZ,LC,LK,LR,LS,LT,LU,L V,MD,MG,MK,MN,MW,MX,NO,NZ ,PL,PT,RO,RU,SD,SE,SG,SI, SK,SL,TJ,TM,TR,TT,UA,UG,U Z,VN,YU,ZW 【要約の続き】 ロードディングとアンロードディングコードで自ら、修 正もできる。デニズン(100)は、柔軟に、プロセッ サを割り当てることができる。なぜならば、各デニズン (100)は個々に、どこで実行すべきかを、決めるこ とができるからである。新規なアーキテクチャを使う適 用分野には、データベース管理や普通言語の翻訳が含ま れる。

Claims (60)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータアーキテクチャによるコンピュータシステム資
    源を活用する方法であって、該コンピュータシステム資源は、少なくとも2つの
    ロケーションを含み、 デニズンのための動作環境を取得する工程であって、少なくとも2つのロケー
    ションを含み、該ロケーション間をデニズンが移動する手段を含む工程と、 少なくとも1つのユーザデニズンを提供する工程であって、命令を受け取り、
    該受け取った命令の視点から動作環境における異なるロケーションを評価し、該
    評価に基づいてロケーションを選択し、該選択したロケーションに自ら移動し、
    該選択したロケーションで前記受け取った命令の少なくとも一部を実行する工程
    と を具えたことを特徴とする方法。
  2. 【請求項2】 各ロケーションは、命令を実行するためのプロセッサへのア
    クセスを提供し、 各ロケーションは、前記プロセッサへのアクセス可能な命令を格納するための
    メモリを提供することを特徴とする請求項1記載の方法。
  3. 【請求項3】 前記ユーザデニズンは、構成部分、起点部分、および実行可
    能部分を含み、 前記提供する工程は、前記部分の少なくとも1つを再構築可能なユーザデニズ
    ンを提供することを特徴とする請求項2記載の方法。
  4. 【請求項4】 前記実行可能部分は、プライマリデータであることを特徴と
    する請求項3記載の方法。
  5. 【請求項5】 実行可能部分は、プライマリ命令であることを特徴とする請
    求項3記載の方法。
  6. 【請求項6】 前記提供する工程は、自ら再構築およびアーカイブ可能なユ
    ーザデニズンの提供を含むことを特徴とする請求項2記載の方法。
  7. 【請求項7】 前記提供する工程は、自らエラーを検知して、自らを自らの
    アーカイブしたバージョンで置き換えを行うことが可能なユーザデニズンを提供
    することを特徴とする請求項6記載の方法。
  8. 【請求項8】 前記提供する工程は、自ら再構築可能なユーザデニズンを提
    供することを含むことを特徴とする請求項2記載の方法。
  9. 【請求項9】 前記提供する工程は、自らエラーを検知して、自ら置き換え
    を行うことが可能なユーザデニズンの提供を含むことを特徴とする請求項8記載
    の方法。
  10. 【請求項10】 前記提供する工程は、自らアーカイブすることが可能なユ
    ーザデニズンを提供することを含むことを特徴とする請求項2記載の方法。
  11. 【請求項11】 前記提供する工程は、受け取った命令の少なくとも一部を
    実行する結果に応じて、自らを修正可能なユーザデニズンを提供することを含む
    ことを特徴とする請求項2記載の方法。
  12. 【請求項12】 前記修正工程は、ニューラルネット学習方法を使うことを
    特徴とする請求項11記載の方法。
  13. 【請求項13】 前記修正工程は、バックプロパゲーションを使うことを特
    徴とする請求項12記載の方法。
  14. 【請求項14】 前記修正工程は、進歩的アルゴリズムを使うことを特徴と
    する請求項11記載の方法。
  15. 【請求項15】 前記修正工程は、遺伝的アルゴリズムを使うことを特徴と
    する請求項14記載の方法。
  16. 【請求項16】 前記修正工程は、動的再コンパイルを使うことを特徴とす
    る請求項11記載の方法。
  17. 【請求項17】 前記提供する工程は、自ら動作環境の変化の結果に応じて
    自ら修正可能なユーザデニズンを提供することを含むことを特徴とする請求項2
    記載の方法。
  18. 【請求項18】 前記修正工程は、利用可能な帯域幅の変化に応じて発生す
    ることを特徴とする請求項17記載の方法。
  19. 【請求項19】 前記修正工程は、動作環境をサポートするコンピュータの
    利用可能性の変化に応じて発生することを特徴とする請求項17記載の方法。
  20. 【請求項20】 前記提供する工程は、追加のデニズン間の要求の処理を分
    割し、自ら修正可能なユーザデニズンを提供することを含むことを特徴とする請
    求項2記載の方法。
  21. 【請求項21】 前記提供する工程は、実行エラーの衝撃を限定するために
    、内部の例外を処理可能なユーザデニズンを提供することを含むことを特徴とす
    る請求項2記載の方法。
  22. 【請求項22】 少なくとも1つの管理デニズンを供給する工程をさらに具
    えたことを特徴とする請求項2記載の方法。
  23. 【請求項23】 前記供給する工程は、動作環境で異なるロケーションにつ
    いての情報の収集が可能で、ユーザデニズンに該情報を提供可能な管理デニズン
    の供給を含むことを特徴とする請求項22記載の方法。
  24. 【請求項24】 前記供給する工程は、動作環境における特定ロケーション
    へユーザデニズンによるアクセスが制御可能な管理デニズンの供給を含むことを
    特徴とする請求項22記載の方法。
  25. 【請求項25】 動作環境におけるロケーション間のユーザデニズンの移動
    を追跡することが可能な、少なくとも1つのポッドデニズンを配置する工程をさ
    らに具えたことを特徴とする請求項2記載の方法。
  26. 【請求項26】 前記提供する工程は、多数の関連したユーザデニズンを含
    み、 前記ポッドデニズンは、多数のユーザデニズンによって使用されるロケーショ
    ンを追跡することを含むことを特徴とする請求項25記載の方法。
  27. 【請求項27】 エコシステムコンピュータアーキテクチャを実行するコン
    ピュータシステムであって、該コンピュータシステムは、 少なくとも2つのロケーションを含むデニズンのための動作環境、命令の実行
    のためにプロセッサへのアクセスの提供、プロセッサにアクセス可能な命令を格
    納するためのメモリの提供と、 前記デニズンがロケーション間で移動する移動手段と、 命令を受け取り、該受け取った命令の視点から動作環境における異なるロケー
    ションを評価し、該評価に基づいてロケーションを選択し、該選択したロケーシ
    ョンに自ら移動し、該選択したロケーションで前記受け取った命令の少なくとも
    一部を実行することが可能な、少なくとも1つのユーザデニズンと を具えたことを特徴とするコンピュータシステム。
  28. 【請求項28】 少なくとも2つのロケーションは、コンピュータネットワ
    ーク内における異なるコンピュータ上にあることを特徴とする請求項27記載の
    コンピュータシステム。
  29. 【請求項29】 少なくとも2つのロケーションが同一のコンピュータ上に
    あることを特徴とする請求項27記載のコンピュータシステム。
  30. 【請求項30】 少なくとも1つのロケーションは、Javaバージョンマ
    シンへのアクセスを提供することを特徴とする請求項27記載のコンピュータシ
    ステム。
  31. 【請求項31】 少なくとも1つのデニズンは、ネイティブ実行可能コード
    を含むことを特徴とする請求項27記載のコンピュータシステム。
  32. 【請求項32】 少なくとも1つのデニズンは、インタープレタブルコード
    を含むことを特徴とする請求項27記載のコンピュータシステム。
  33. 【請求項33】 少なくとも1つのデニズンは、プラットホームインデペン
    ダントポータブルコードを含むことを特徴とする請求項27記載のコンピュータ
    システム。
  34. 【請求項34】 少なくとも1つのデニズンは、ソースコードを含むことを
    特徴とする請求項27記載のコンピュータシステム。
  35. 【請求項35】 前記移動手段は、TCP/IP接続を含むことを特徴とす
    る請求項27記載のコンピュータシステム。
  36. 【請求項36】 前記移動手段は、宛先ロケーションでライブラリに格納さ
    れているコードを用いて、デニズンを構築するための情報を特定する手段を含む
    ことを特徴とする請求項27記載のコンピュータシステム。
  37. 【請求項37】 前記デニズンを構築するための情報は、クラス識別子を含
    むことを特徴とする請求項36記載のコンピュータシステム。
  38. 【請求項38】 前記デニズンを構築するための情報は、クラスへの拡張を
    含むことを特徴とする請求項36記載のコンピュータシステム。
  39. 【請求項39】 前記デニズンを構築するための情報は、クラス継承情報を
    含むことを特徴とする請求項36記載のコンピュータシステム。
  40. 【請求項40】 各ユーザデニズンは、構成部分、起点部分、および実行可
    能部分を具えたことを特徴とする請求項27記載のコンピュータシステム。
  41. 【請求項41】 前記構成部分は、ルーティング情報を含むことを特徴とす
    る請求項40記載のコンピュータシステム。
  42. 【請求項42】 前記起点部分は、少なくとも1つの暗号化証書を含むこと
    を特徴とする請求項40記載のコンピュータシステム。
  43. 【請求項43】 アーカイブポッドデニズンをさらに具えたことを特徴とす
    る請求項27記載のコンピュータシステム。
  44. 【請求項44】 接続ポッドデニズンをさらに具えたことを特徴とする請求
    項27記載のコンピュータシステム。
  45. 【請求項45】 管理デニズンをさらに具えたことを特徴とする請求項27
    記載のコンピュータシステム。
  46. 【請求項46】 前記管理デニズンは、動作環境で生じる活動のログを保守
    することを特徴とする請求項45記載のコンピュータシステム。
  47. 【請求項47】 前記管理デニズンは、動作環境内のデニズンの対話管理を
    サポートすることを特徴とする請求項45記載のコンピュータシステム。
  48. 【請求項48】 デニズン継承情報を定義し、デニズンを構築するのに使う
    ことができるテンプレートをさらに具えたことを特徴とする請求項27記載のコ
    ンピュータシステム。
  49. 【請求項49】 デニズンを構築するのに使うことができる拡張情報をさら
    に具えたことを特徴とする請求項27記載のコンピュータシステム。
  50. 【請求項50】 少なくとも1つデニズンは、少なくとも1つの実行可能部
    分をさらに具えたことを特徴とする請求項27記載のコンピュータシステム。
  51. 【請求項51】 前記実行可能部分は、リレーショナルデータベースの行に
    対応するデータを含むことを特徴とする請求項50記載のコンピュータシステム
  52. 【請求項52】 該システムは、複数のデニズンを収納し、各デニズンはデ
    ータベースデータを収納する実行可能部分を含み、該データはデータベースキー
    の値に従ってデニズンの間で分割されることを特徴とする請求項50記載のコン
    ピュータシステム。
  53. 【請求項53】 前記データベースキーは、リレーショナルデータベースの
    キーフィールドに対応することを特徴とする請求項52記載のコンピュータシス
    テム。
  54. 【請求項54】 2つのデニズンの2つの実行可能部分は、各々メモリの同
    一のロケーションを参照することを特徴とする請求項50記載のコンピュータシ
    ステム。
  55. 【請求項55】 前記実行可能部分は、各々同一のデータを参照することを
    特徴とする請求項54記載のコンピュータシステム。
  56. 【請求項56】 前記実行可能部分は、各々同一の命令を参照することを特
    徴とする請求項54記載のコンピュータシステム。
  57. 【請求項57】 要求に応答して少なくとも1つのデニズンで生成の手段を
    さらに具えたことを特徴とする請求項27記載のコンピュータシステム。
  58. 【請求項58】 少なくとも1つの生成されたデニズンから結果を収集する
    手段をさらに具えたことを特徴とする請求項57記載のコンピュータシステム。
  59. 【請求項59】 要求に応答して少なくとも1つのスレッドで生成の手段を
    さらに具えたことを特徴とする請求項27記載のコンピュータシステム。
  60. 【請求項60】 少なくとも1つの生成されたスレッドから結果を収集する
    手段をさらに具えたことを特徴とする請求項59記載のコンピュータシステム。
JP2000508165A 1997-08-27 1998-07-27 分散型コンピュータシステム Pending JP2001514422A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/919,081 US6112304A (en) 1997-08-27 1997-08-27 Distributed computing architecture
US08/919,081 1997-08-27
PCT/US1998/015633 WO1999011018A1 (en) 1997-08-27 1998-07-27 Distributed computing architecture

Publications (1)

Publication Number Publication Date
JP2001514422A true JP2001514422A (ja) 2001-09-11

Family

ID=25441472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000508165A Pending JP2001514422A (ja) 1997-08-27 1998-07-27 分散型コンピュータシステム

Country Status (8)

Country Link
US (1) US6112304A (ja)
EP (1) EP1040615A4 (ja)
JP (1) JP2001514422A (ja)
AU (1) AU8597498A (ja)
BR (1) BR9812280A (ja)
CA (1) CA2298582C (ja)
IL (1) IL134447A0 (ja)
WO (1) WO1999011018A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004326719A (ja) * 2003-04-24 2004-11-18 Hachiro Taen テナント検針に関するビジネスモデル。
JP2010501948A (ja) * 2006-08-25 2010-01-21 サーセン コーポレイション 文書ベースシステムおよびその実現方法

Families Citing this family (164)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1313036A3 (en) 1994-09-01 2005-04-13 Computer Associates Think, Inc. X.500 System and methods relating to services
US7315860B1 (en) 1994-09-01 2008-01-01 Computer Associates Think, Inc. Directory service system and method with tolerance for data entry storage and output
US7188003B2 (en) * 1994-12-30 2007-03-06 Power Measurement Ltd. System and method for securing energy management systems
US8065338B2 (en) 1995-08-30 2011-11-22 Computer Associates Think, Inc. Directory searching methods and systems
US6047284A (en) 1997-05-14 2000-04-04 Portal Software, Inc. Method and apparatus for object oriented storage and retrieval of data from a relational database
US7631012B2 (en) 1997-05-22 2009-12-08 Computer Associates Think, Inc. System and method of operating a database
US6442753B1 (en) * 1997-08-28 2002-08-27 International Business Machines Corporation Apparatus and method for checking dependencies among classes in an object-oriented program
US6349344B1 (en) * 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US7051004B2 (en) * 1998-04-03 2006-05-23 Macrovision Corporation System and methods providing secure delivery of licenses and content
US6493342B1 (en) * 1998-09-11 2002-12-10 Teledesic Llc Method of data transmission in a data communication network
US6499137B1 (en) 1998-10-02 2002-12-24 Microsoft Corporation Reversible load-time dynamic linking
US6988271B2 (en) 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6263491B1 (en) * 1998-10-02 2001-07-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6546553B1 (en) 1998-10-02 2003-04-08 Microsoft Corporation Service installation on a base function and provision of a pass function with a service-free base function semantic
US6629123B1 (en) 1998-10-02 2003-09-30 Microsoft Corporation Interception of unit creation requests by an automatic distributed partitioning system
US6381628B1 (en) 1998-10-02 2002-04-30 Microsoft Corporation Summarized application profiling and quick network profiling
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6983463B1 (en) 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
BR9914551A (pt) * 1998-10-16 2002-03-05 Computer Ass Think Inc Processo e sistema para macro-linguagem extensìvel
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6330588B1 (en) * 1998-12-21 2001-12-11 Philips Electronics North America Corporation Verification of software agents and agent activities
US6438600B1 (en) * 1999-01-29 2002-08-20 International Business Machines Corporation Securely sharing log-in credentials among trusted browser-based applications
US6317718B1 (en) * 1999-02-26 2001-11-13 Accenture Properties (2) B.V. System, method and article of manufacture for location-based filtering for shopping agent in the physical world
FI990461A0 (fi) * 1999-03-03 1999-03-03 Nokia Mobile Phones Ltd Menetelmä ohjelmiston lataamiseksi palvelimelta päätelaitteeseen
CA2267477C (en) * 1999-03-30 2003-10-14 Object Technology International Inc. Packaging memory image files
US7089208B1 (en) * 1999-04-30 2006-08-08 Paypal, Inc. System and method for electronically exchanging value among distributed users
AU5968000A (en) 1999-07-21 2001-02-13 E-Payments A method for performing a transaction over a network
US7376583B1 (en) 1999-08-10 2008-05-20 Gofigure, L.L.C. Device for making a transaction via a communications link
US7720762B1 (en) 2002-10-03 2010-05-18 Gofigure Payments, Llc System and method for electronically processing commercial transactions based upon threshold amount
US6879995B1 (en) * 1999-08-13 2005-04-12 Sun Microsystems, Inc. Application server message logging
US6845503B1 (en) * 1999-08-13 2005-01-18 Sun Microsystems, Inc. System and method for enabling atomic class loading in an application server environment
US7882501B1 (en) * 1999-08-13 2011-02-01 Oracle America, Inc. System and method for enabling dynamic modifed class reloading in an application server environment
US6334123B1 (en) * 1999-09-03 2001-12-25 Whamtech, Inc. Index relational processor
AU7742000A (en) 1999-10-01 2001-05-10 Accenture Llp Information service architectures for netcentric computing systems
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US7068680B1 (en) 1999-10-01 2006-06-27 Accenture Llp Communication service architectures for netcentric computing systems
US6988249B1 (en) 1999-10-01 2006-01-17 Accenture Llp Presentation service architectures for netcentric computing systems
US6874010B1 (en) 1999-10-01 2005-03-29 Accenture Llp Base service architectures for netcentric computing systems
US7734457B2 (en) * 1999-10-16 2010-06-08 Computer Associates Think, Inc. Method and system for generating dynamic comparison models
US20020046157A1 (en) * 1999-11-01 2002-04-18 Neal Solomon System, method and apparatus for demand-initiated intelligent negotiation agents in a distributed network
US20020055903A1 (en) * 1999-11-01 2002-05-09 Neal Solomon System, method, and apparatus for a cooperative communications network
US20030074301A1 (en) * 1999-11-01 2003-04-17 Neal Solomon System, method, and apparatus for an intelligent search agent to access data in a distributed network
US20020069134A1 (en) * 1999-11-01 2002-06-06 Neal Solomon System, method and apparatus for aggregation of cooperative intelligent agents for procurement in a distributed network
US7003560B1 (en) 1999-11-03 2006-02-21 Accenture Llp Data warehouse computing system
AU1462901A (en) * 1999-11-03 2001-05-14 Accenture Llp Data warehouse computing system
AUPQ428499A0 (en) 1999-11-26 1999-12-23 Computer Associates Pty. Ltd. A method and apparatus for operating a data base
US6615231B1 (en) * 1999-12-15 2003-09-02 Microsoft Corporation System and method for directing requests to specific processing
CN100417130C (zh) * 2000-03-07 2008-09-03 日本电信电话株式会社 语义信息网络(sion)
US20010039497A1 (en) * 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US20040148336A1 (en) * 2000-03-30 2004-07-29 Hubbard Edward A Massively distributed processing system architecture, scheduling, unique device identification and associated methods
US6891802B1 (en) 2000-03-30 2005-05-10 United Devices, Inc. Network site testing method and associated system
US20090216641A1 (en) * 2000-03-30 2009-08-27 Niration Network Group, L.L.C. Methods and Systems for Indexing Content
US7020678B1 (en) 2000-03-30 2006-03-28 United Devices, Inc. Machine generated sweepstakes entry model and associated distributed processing system
US6847995B1 (en) 2000-03-30 2005-01-25 United Devices, Inc. Security architecture for distributed processing systems and associated method
US7039670B2 (en) * 2000-03-30 2006-05-02 United Devices, Inc. Massively distributed processing system with modular client agent and associated method
US20010027467A1 (en) * 2000-03-30 2001-10-04 Anderson David P. Massively distributed database system and associated method
US8010703B2 (en) * 2000-03-30 2011-08-30 Prashtama Wireless Llc Data conversion services and associated distributed processing system
US7254607B2 (en) * 2000-03-30 2007-08-07 United Devices, Inc. Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US6654783B1 (en) 2000-03-30 2003-11-25 Ethergent Corporation Network site content indexing method and associated system
US7003547B1 (en) 2000-03-30 2006-02-21 United Devices, Inc. Distributed parallel processing system having capability-based incentives and associated method
USRE42153E1 (en) * 2000-03-30 2011-02-15 Hubbard Edward A Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US6963897B1 (en) 2000-03-30 2005-11-08 United Devices, Inc. Customer services and advertising based upon device attributes and associated distributed processing system
US7092985B2 (en) * 2000-03-30 2006-08-15 United Devices, Inc. Method of managing workloads and associated distributed processing system
US7082474B1 (en) 2000-03-30 2006-07-25 United Devices, Inc. Data sharing and file distribution method and associated distributed processing system
US7257611B1 (en) * 2000-04-12 2007-08-14 Oracle International Corporation Distributed nonstop architecture for an event processing system
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
US20010049726A1 (en) * 2000-06-02 2001-12-06 Guillaume Comeau Data path engine
US6871195B2 (en) * 2000-09-13 2005-03-22 E-Promentor Method and system for remote electronic monitoring and mentoring of computer assisted performance support
EP1189403A1 (en) * 2000-09-15 2002-03-20 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Method for exchanging capability information in a telecommunication system
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
US7392515B2 (en) * 2001-02-09 2008-06-24 International Business Machines Corporation Program components having multiple selectable implementations
WO2002088977A1 (en) * 2001-04-30 2002-11-07 Blue Martini Software, Inc. Methods for creating a multilingual web applications
US20020199156A1 (en) * 2001-05-23 2002-12-26 Fuel Tech, Inc. Hardware-adaptable data visualization tool for use in complex data analysis and engineering design
WO2002097619A2 (en) * 2001-05-30 2002-12-05 Research In Motion Limited A mobile communications device application processing system
US20030014478A1 (en) * 2001-06-29 2003-01-16 Noble Alan C. Dynamically distributed client-server web browser
EP1276033B1 (de) * 2001-07-10 2012-03-14 Trident Microsystems (Far East) Ltd. Speichereinrichtung mit Datenschutz in einem Prozessor
US7571215B2 (en) * 2001-07-16 2009-08-04 Bea Systems, Inc. Data replication protocol
AU2002355575A1 (en) * 2001-08-08 2003-02-24 Trivium Systems Inc. Scalable messaging platform for the integration of business software components
WO2003015342A1 (en) * 2001-08-08 2003-02-20 Trivium Systems Inc. Dynamic rules-based secure data access system for business computer platforms
CN1285047C (zh) * 2001-08-30 2006-11-15 Bea系统公司 具有并行检查的群集高速缓存
US7028030B2 (en) 2001-08-30 2006-04-11 Bea Systems, Inc. Cluster caching with concurrency checking
US20030046230A1 (en) * 2001-08-30 2003-03-06 Jacobs Dean Bernard Method for maintaining account consistency
US7113980B2 (en) 2001-09-06 2006-09-26 Bea Systems, Inc. Exactly once JMS communication
US6745211B2 (en) * 2001-11-21 2004-06-01 Ge Financial Assurance Holdings, Inc. Method and system for verifying and correcting data records in a database
US7171493B2 (en) * 2001-12-19 2007-01-30 The Charles Stark Draper Laboratory Camouflage of network traffic to resist attack
WO2003073206A2 (en) * 2002-02-22 2003-09-04 Bea Systems, Inc. System and method for using a data replication service to manage a configuration repository
US7162715B1 (en) 2002-03-16 2007-01-09 I-Squared, Inc. Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US8099393B2 (en) 2002-03-22 2012-01-17 Oracle International Corporation Transaction in memory object store
GB0214943D0 (en) * 2002-06-28 2002-08-07 Bitarts Ltd Computer program protection
DE60218831T2 (de) * 2002-06-28 2007-12-06 Hewlett-Packard Development Co., L.P., Houston Proxylastabgleicher
US20040015601A1 (en) * 2002-07-17 2004-01-22 Whitson John C. Method for tracking encapsulated software over a network of computers
US7000151B2 (en) * 2002-07-18 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for providing run-time type checking
US6944715B2 (en) * 2002-08-13 2005-09-13 International Business Machines Corporation Value based caching
US7707141B1 (en) * 2002-11-27 2010-04-27 Microsoft Corporation Use of a set based approach to constructing complex queries for managing resources built from a set of simple underlying operations
US7406481B2 (en) 2002-12-17 2008-07-29 Oracle International Corporation Using direct memory access for performing database operations between two or more machines
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US7900038B2 (en) * 2003-04-29 2011-03-01 Wells Fargo Bank, N.A. Method and apparatus for a broker entity
JP2007526539A (ja) 2003-06-18 2007-09-13 アンブリック, インコーポレイテッド 集積回路開発システム
US20070186076A1 (en) * 2003-06-18 2007-08-09 Jones Anthony M Data pipeline transport system
WO2005015389A1 (en) * 2003-07-11 2005-02-17 Computer Associates Think, Inc. Adding user-defined objects to a modeling tool
US20060195845A1 (en) * 2005-02-28 2006-08-31 Rhine Scott A System and method for scheduling executables
US8223935B2 (en) 2005-04-30 2012-07-17 Oracle International Corporation Revenue management systems and methods
AU2006263656A1 (en) 2005-06-28 2007-01-04 Oracle International Corporation Revenue management system and method
JP2009504030A (ja) 2005-07-28 2009-01-29 オラクル・インターナショナル・コーポレイション 収益管理システムおよび方法
US20070094270A1 (en) * 2005-10-21 2007-04-26 Callminer, Inc. Method and apparatus for the processing of heterogeneous units of work
US8223777B2 (en) * 2005-11-15 2012-07-17 Oracle International Corporation Gateway for achieving low latency and high availability in a real time event processing system
US20070180275A1 (en) * 2006-01-27 2007-08-02 Brian Metzger Transparent encryption using secure JDBC/ODBC wrappers
US8286238B2 (en) * 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor
US7983996B2 (en) * 2007-03-01 2011-07-19 The Boeing Company Method and apparatus for human behavior modeling in adaptive training
US8069127B2 (en) * 2007-04-26 2011-11-29 21 Ct, Inc. Method and system for solving an optimization problem with dynamic constraints
US8386630B1 (en) 2007-09-09 2013-02-26 Arris Solutions, Inc. Video-aware P2P streaming and download with support for real-time content alteration
US8302154B2 (en) * 2007-11-10 2012-10-30 International Business Machines Corporation Automatic and adjustable system and method for synchronizing security mechanisms in database drivers with database servers
US8284944B2 (en) * 2008-03-13 2012-10-09 International Business Machines Corporation Unified and persistent system and method for automatic configuration of encryption
US8578393B1 (en) * 2008-06-18 2013-11-05 Alert Logic, Inc. Log message collection employing on-demand loading of message translation libraries
US8769048B2 (en) 2008-06-18 2014-07-01 Commvault Systems, Inc. Data protection scheduling, such as providing a flexible backup window in a data protection system
US9128883B2 (en) 2008-06-19 2015-09-08 Commvault Systems, Inc Data storage resource allocation by performing abbreviated resource checks based on relative chances of failure of the data storage resources to determine whether data storage requests would fail
US8352954B2 (en) 2008-06-19 2013-01-08 Commvault Systems, Inc. Data storage resource allocation by employing dynamic methods and blacklisting resource request pools
US8725688B2 (en) 2008-09-05 2014-05-13 Commvault Systems, Inc. Image level copy or restore, such as image level restore without knowledge of data object metadata
US9235831B2 (en) 2009-04-22 2016-01-12 Gofigure Payments, Llc Mobile payment systems and methods
US8949597B1 (en) * 2009-12-22 2015-02-03 Sprint Communications Company L.P. Managing certificates on a mobile device
US9448850B2 (en) * 2010-03-11 2016-09-20 International Business Machines Corporation Discovering a resource in a distributed computing system
US9348661B2 (en) * 2010-03-11 2016-05-24 International Business Machines Corporation Assigning a unique identifier to a communicator
US20110225297A1 (en) 2010-03-11 2011-09-15 International Business Machines Corporation Controlling Access To A Resource In A Distributed Computing System With A Distributed Access Request Queue
US8621446B2 (en) * 2010-04-29 2013-12-31 International Business Machines Corporation Compiling software for a hierarchical distributed processing system
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US20120311016A1 (en) * 2011-06-02 2012-12-06 Recursion Software, Inc. System and method for providing self-healing capabilites in a distributed knowlegde network/intelligent sensor network
US8904557B2 (en) * 2012-02-15 2014-12-02 Sap Ag Solution for continuous control and protection of enterprise data based on authorization projection
US9003507B2 (en) * 2012-03-23 2015-04-07 Cloudpath Networks, Inc. System and method for providing a certificate to a third party request
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US8880446B2 (en) 2012-11-15 2014-11-04 Purepredictive, Inc. Predictive analytics factory
US9633216B2 (en) 2012-12-27 2017-04-25 Commvault Systems, Inc. Application of information management policies based on operation with a geographic entity
US10423889B2 (en) 2013-01-08 2019-09-24 Purepredictive, Inc. Native machine learning integration for a data management product
US9459968B2 (en) 2013-03-11 2016-10-04 Commvault Systems, Inc. Single index to query multiple backup formats
US9218574B2 (en) 2013-05-29 2015-12-22 Purepredictive, Inc. User interface for machine learning
US9646262B2 (en) 2013-06-17 2017-05-09 Purepredictive, Inc. Data intelligence using machine learning
US9413891B2 (en) 2014-01-08 2016-08-09 Callminer, Inc. Real-time conversational analytics facility
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US9648100B2 (en) 2014-03-05 2017-05-09 Commvault Systems, Inc. Cross-system storage management for transferring data across autonomous information management systems
US9740574B2 (en) 2014-05-09 2017-08-22 Commvault Systems, Inc. Load balancing across multiple data paths
US11249858B2 (en) 2014-08-06 2022-02-15 Commvault Systems, Inc. Point-in-time backups of a production application made accessible over fibre channel and/or ISCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host
US9852026B2 (en) 2014-08-06 2017-12-26 Commvault Systems, Inc. Efficient application recovery in an information management system based on a pseudo-storage-device driver
US9852172B2 (en) * 2014-09-17 2017-12-26 Oracle International Corporation Facilitating handling of crashes in concurrent execution environments of server systems while processing user queries for data retrieval
CN105488366B (zh) 2014-10-13 2019-12-10 阿里巴巴集团控股有限公司 一种数据权限的控制方法和系统
US20160110266A1 (en) * 2014-10-21 2016-04-21 Commvault Systems, Inc. Restoring backed up data across autonomous storage management systems
US9444811B2 (en) 2014-10-21 2016-09-13 Commvault Systems, Inc. Using an enhanced data agent to restore backed up data across autonomous storage management systems
US10303558B2 (en) * 2015-04-17 2019-05-28 Microsoft Technology Licensing, Llc Checkpointing higher order query operators
US9766825B2 (en) 2015-07-22 2017-09-19 Commvault Systems, Inc. Browse and restore for block-level backups
US10296368B2 (en) 2016-03-09 2019-05-21 Commvault Systems, Inc. Hypervisor-independent block-level live browse for access to backed up virtual machine (VM) data and hypervisor-free file-level recovery (block-level pseudo-mount)
US10838821B2 (en) 2017-02-08 2020-11-17 Commvault Systems, Inc. Migrating content and metadata from a backup system
US10740193B2 (en) 2017-02-27 2020-08-11 Commvault Systems, Inc. Hypervisor-independent reference copies of virtual machine payload data based on block-level pseudo-mount
US10891069B2 (en) 2017-03-27 2021-01-12 Commvault Systems, Inc. Creating local copies of data stored in online data repositories
US10776329B2 (en) 2017-03-28 2020-09-15 Commvault Systems, Inc. Migration of a database management system to cloud storage
US11074140B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Live browsing of granular mailbox data
US10664352B2 (en) 2017-06-14 2020-05-26 Commvault Systems, Inc. Live browsing of backed up data residing on cloned disks
US10795927B2 (en) 2018-02-05 2020-10-06 Commvault Systems, Inc. On-demand metadata extraction of clinical image data
US10761942B2 (en) 2018-03-12 2020-09-01 Commvault Systems, Inc. Recovery point objective (RPO) driven backup scheduling in a data storage management system using an enhanced data agent
US10789387B2 (en) 2018-03-13 2020-09-29 Commvault Systems, Inc. Graphical representation of an information management system
US10860443B2 (en) 2018-12-10 2020-12-08 Commvault Systems, Inc. Evaluation and reporting of recovery readiness in a data storage management system
US11308034B2 (en) 2019-06-27 2022-04-19 Commvault Systems, Inc. Continuously run log backup with minimal configuration and resource usage from the source machine
US11756290B2 (en) 2020-06-10 2023-09-12 Bank Of America Corporation System for intelligent drift matching for unstructured data in a machine learning environment
US11429601B2 (en) 2020-11-10 2022-08-30 Bank Of America Corporation System for generating customized data input options using machine learning techniques
US11966360B2 (en) 2021-01-04 2024-04-23 Bank Of America Corporation System for optimized archival using data detection and classification model

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57201958A (en) * 1981-06-05 1982-12-10 Hitachi Ltd Device and method for interpretation between natural languages
US4604686A (en) * 1984-01-27 1986-08-05 Martin Marietta Corporation Associative data access method (ADAM) and its means of implementation
US4774655A (en) * 1984-10-24 1988-09-27 Telebase Systems, Inc. System for retrieving information from a plurality of remote databases having at least two different languages
US4839853A (en) * 1988-09-15 1989-06-13 Bell Communications Research, Inc. Computer information retrieval using latent semantic structure
US5197005A (en) * 1989-05-01 1993-03-23 Intelligent Business Systems Database retrieval system having a natural language interface
AU662805B2 (en) * 1992-04-06 1995-09-14 Addison M. Fischer A method for processing information among computers which may exchange messages
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
US5365587A (en) * 1993-03-11 1994-11-15 International Business Machines Corporation Self modifying access code for altering capabilities
US5596744A (en) * 1993-05-20 1997-01-21 Hughes Aircraft Company Apparatus and method for providing users with transparent integrated access to heterogeneous database management systems
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
AU683038B2 (en) * 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
US6381595B1 (en) * 1994-09-29 2002-04-30 International Business Machines Corporation System and method for compensation of functional differences between heterogeneous database management systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004326719A (ja) * 2003-04-24 2004-11-18 Hachiro Taen テナント検針に関するビジネスモデル。
JP2010501948A (ja) * 2006-08-25 2010-01-21 サーセン コーポレイション 文書ベースシステムおよびその実現方法

Also Published As

Publication number Publication date
US6112304A (en) 2000-08-29
BR9812280A (pt) 2000-07-18
EP1040615A4 (en) 2004-09-29
AU8597498A (en) 1999-03-16
CA2298582C (en) 2003-11-11
IL134447A0 (en) 2001-04-30
EP1040615A1 (en) 2000-10-04
WO1999011018A1 (en) 1999-03-04
CA2298582A1 (en) 1999-03-04

Similar Documents

Publication Publication Date Title
CA2298582C (en) Distributed computing architecture
US11316727B2 (en) Method and system for clustering event messages and manage event-message clusters
Banker et al. MongoDB in action: covers MongoDB version 3.0
Kleppmann Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems
Pentreath Machine learning with spark
Greenwald et al. Oracle essentials: Oracle database 12c
US10713589B1 (en) Consistent sort-based record-level shuffling of machine learning data
Tiwari Professional nosql
Capriolo et al. Programming hive
KR101114023B1 (ko) 확장형 문서 검색을 위한 콘텐츠 전파
US11232071B2 (en) Regressable differential data structures
MXPA05005535A (es) Anti-virus para un almacenamiento de articulo.
Cordova et al. Accumulo: Application development, table design, and best practices
US20230401214A1 (en) Graph database and methods with improved functionality
Challawala et al. MySQL 8 for Big Data: Effective Data Processing with MySQL 8, Hadoop, NoSQL APIs, and Other Big Data Tools
Paro ElasticSearch cookbook
Kumar et al. Modern Big Data processing with Hadoop: Expert techniques for architecting end-to-end Big Data solutions to get valuable insights
US11745093B2 (en) Developing implicit metadata for data stores
Yadav Spark Cookbook
Zarei et al. Past, present and future of Hadoop: A survey
Holzmann et al. ABCDEF: The 6 key features behind scalable, multi-tenant web archive processing with ARCH: Archive, Big Data, Concurrent, Distributed, Efficient, Flexible
Abbasi Learning apache spark 2
White Hadoop
Antony et al. Professional Hadoop
Paro Elasticsearch 8. x Cookbook: Over 180 recipes to perform fast, scalable, and reliable searches for your enterprise