(57)【要約】  マルチユーザ、エラスティック、オンデマンド、分散型関係データベース管理システム。データベースは、アトムという分散型オブジェクトに分解される。１つの位置でのアトムのコピーのあらゆる変更は、そのアトムのコピーを含む全ての他の位置に複製される。トランザクションマネージャは、アトミック性、一貫性、独立性、及び永続性を満たすように作動する。【選択図】      図１
2013522778.tif 000002
【特許請求の範囲】
【請求項１】
ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであって、
Ａ）ｉ）ユーザレベルでの高レベル入力及び出力指令と、データベースと対話するための一連の作動を制御するシステムレベルでの入力及び出力指令との間のインタフェースであって、ある一定のシステムレベル指令に応答して、アトムオブジェクトが、アトムを生成し、各アトムが、データ又はメタデータの指定のフラグメントを含み、それによって１組のアトムの全てのインスタンスが該データベース内の全ての該メタデータ及びデータを集合的に定義する前記インタフェース、
ｉｉ）システム内の各他のノードとの通信経路を確立するための通信制御、
ｉｉｉ）クエリに関連するがそのノードに存在しないアトムのコピーを選択されたノードから要求するための前記インタフェースからのシステム指令に応答する方法、
ｉｖ）別のノードからのアトムの要求に応答して、クエリを完了するのに必要とされるアトムのみがいずれかの所定の時間にいずれかのトランザクションノードに位置する必要があるように前記要求側ノードへの転送に向けて要求されたアトムを複製するための方法、及び
ｖ）そのノードでのアトムの変化に応答して、そのアトムが常駐する前記システム内の全ての他のノードへの転送に向けてそのアトムを複製するための方法、
を各ノードが含む複数のノードと、
Ｂ）全ての前記ノード間の通信経路を提供するために前記複数のノードに接続された手段と、
Ｃ）永続ストレージ内のアトムの集合が前記データベース内の全ての前記データ及びメタデータを集合的に含むようにアトム内の情報のための永続ストレージを提供するために前記通信手段に接続された手段と、
を含むことを特徴とするデータベース管理システム。
【請求項２】
前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐する全てのアトムと、該常駐アトムの各々のコピーを有する各ノードの位置とを追跡するカタログアトムを生成することを特徴とする請求項１に記載のデータベース管理システム。
【請求項３】
前記カタログアトムの１つが、システムに接続した各ノード内で複製されるマスターカタログアトムであり、
前記アトムの別のものが、前記インタフェースにより開始されたトランザクションの進行を追跡するための前記データベースのための単一のトランザクションマネージャアトムであり、
前記マスターカタログは、前記トランザクションマネージャアトムの位置を識別する、
ことを特徴とする請求項２に記載のデータベース管理システム。
【請求項４】
前記ユーザレベルでの前記データベースは、レコード及びフィールドを有する名称付きテーブルを含み、かつ少なくとも１つの名称付きスキーマに従って作動し、
前記アトムオブジェクトの他のものが、
ｉ）フィールドのリストを収容する各テーブルのためのテーブルアトム、
ｉｉ）スキーマとそのスキーマに関連する前記名称付きテーブルとの間の対応を確立するスキーマアトム、及び
ｉｉｉ）前記データベースと前記名称付きスキーマの間の対応を確立するデータベースアトム、
を生成する、
ことを特徴とする請求項３に記載のデータベース管理システム。
【請求項５】
前記レーザレベルでの前記データベーステーブルは、フィールドとデータとを収容する識別されたレコードを含み、
他のアトムオブジェクトが、所定の数のデータレコードを含むデータアトムとレコードバージョンを管理するレコード状態アトムとを生成し、
前記レコード状態アトムは、そのレコード状態アトムに割り当てられた管理されたデータアトムと、各レコードバージョンの識別表示と、各レコードバージョンに対するそのバージョンとそのバージョンを含む該データアトムの位置とに関する情報とを識別するアレイを含む、
ことを特徴とする請求項４に記載のデータベース管理システム。
【請求項６】
各データアトムは、該データアトム内の各レコードのアドレス及び長さと該データレコードとを更に含むことを特徴とする請求項５に記載のデータベース管理システム。
【請求項７】
前記レーザレベルでの前記データベーステーブルは、識別されたブロブを含み、
他のアトムオブジェクトが、ブロブと、全ての関連のブロブアトムと該ブロブアトムにおける該ブロブの位置とのリストを含むブロブレコード状態アトムとを収容するブロブアトムを生成する、
ことを特徴とする請求項４に記載のデータベース管理システム。
【請求項８】
各ブロブアトムが、各ブロブのアドレス及び長さと該ブロブとを含むことを特徴とする請求項７に記載のデータベース管理システム。
【請求項９】
各ノードが、更に、
ｉ）システムレベル指令に応答して予め定義されたメッセージを生成して受信するメッセージング手段、及び
ｉｉ）前記メッセージを送信するための前記通信経路の１つを選択するための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項１０】
各ノードが、各通信経路の効率を非同期で試験するための手段を含むことを特徴とする請求項９に記載のデータベース管理システム。
【請求項１１】
前記試験する手段は、ピングメッセージを生成して各通信経路に対してピング時間を判断するためのピング確認応答メッセージを受信するための手段を含むことを特徴とする請求項１０に記載のデータベース管理システム。
【請求項１２】
前記メッセージング手段は、アトムをメッセージにシリアル化してメッセージをアトムに逆シリアル化するための手段を含み、
各メッセージが、非同期に前記選択された通信経路上で送られる、
ことを特徴とする請求項９に記載のデータベース管理システム。
【請求項１３】
メッセージが、メッセージシーケンスを維持する制御を有するプロトコルの下で送られることを特徴とする請求項１２に記載のデータベース管理システム。
【請求項１４】
個々のノードが、アクティブであってシステムに接続することができ、かつシステムから切り離すことができ、前記アトムの１つが、システム内の各アクティブノードを識別してシステムに接続された各ノード内で複製されるマスターカタログアトムであり、
システムが、
ｉ）加入側ノードと前記アクティブノードの選択されたものとの間の接続を確立するための手段、
ｉｉ）前記選択されたノードに接続を求めるための前記加入側ノード内の手段、
ｉｉｉ）前記選択されたノード内でそのマスターカタログアトムを更新し、前記加入側ノードをアクティブノードとして示すための手段、
ｉｖ）前記選択されたノードの識別表示を含むメッセージを前記加入側ノードに転送し、かつシステム及び永続ストレージ内の全ての他のノードに該加入側ノードの利用可能性を示すメッセージをブロードキャストするための該選択されたノード内の手段、
ｖ）前記マスターカタログアトムのコピーを前記選択されたノードに要求することによって前記メッセージに応答するための前記加入側ノード内の手段、及び
ｖｉ）前記選択されたノード内でその更新されたマスターカタログアトムを前記加入側ノードに転送するための手段、
を含むノードがシステムに加入することを可能にするための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項１５】
前記加入側ノードは、前記更新されたマスターカタログアトムの受信に応答して、前記インタフェースからの要求に応答して追加のアトムのコピーを要求するための手段を含むことを特徴とする請求項１４に記載のデータベース管理システム。
【請求項１６】
前記選択されたノードは、前記更新されたマスターカタログの利用可能性を全ての他のノード及び永続ストレージにブロードキャストし、各他のノード及び永続ストレージが、該更新されたマスターカタログのその受信の確認応答を該選択されたノードにするための手段を含むことを特徴とする請求項１４に記載のデータベース管理システム。
【請求項１７】
前記ノードの１つにおけるインタフェースが、新しいアトムの生成を要求する要求を行い、
前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐するアトムを追跡するカタログアトムを生成し、
前記ノードの前記１つは、更に、
ｉ）前記カタログアトム内で該カタログアトムにコンテンツなしのその新しいアトムを作成させ、かつ該新しいアトムをそのアトムのための議長に指定させるための前記インタフェース要求に応答して該新しいアトムを追跡することになる手段、
ｉｉ）前記カタログアトム内でオブジェクト識別表示を前記新しいアトムに割り当てる手段、
ｉｉｉ）前記カタログアトム内で前記新しいアトムの冗長なコピーがないこと及び該新しいアトムが他のノードに対して利用可能でないことを示す該新しいアトムに対するステータスを確立するための手段、
ｉｖ）前記カタログアトム内で前記新しいアトムの存在をシステム内の全ての他の対応するカタログアトムにブロードキャストするための手段、
ｖ）前記新しいアトムをポピュレートし、かつ該新しいアトムをシステム上で利用可能にするための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項１８】
永続ストレージが、前記新しいアトムの前記記憶に応答して冗長なコピーの存在を示すためにそのステータスを更新するメッセージを該新しいアトムを有するノードに送るための手段を含むことを特徴とする請求項１７に記載のデータベース管理システム。
【請求項１９】
前記ノードの１つにおけるインタフェースが、他のノードにだけ存在するアトムに対する要求を行い、
前記アトムオブジェクトのうちのある一定のものが、そのノード及び他のノードに常駐するアトムを追跡するカタログアトムを生成し、
システムが、
ｉ）前記インタフェース要求に応答して前記要求側カタログアトム内でその空のアトムを作成するための該インタフェース要求に応答して前記要求されたアトムを追跡することになる手段、
ｉｉ）前記要求側カタログアトム内で最も応答性のあるノードを選択して前記アトムのコピーを該最も応答性のあるノードから要求することを確立するための手段、
ｉｉｉ）前記選択されたノード内で前記要求されたアトムのコピーをオブジェクトメッセージで前記要求側ノードに送り、かつ該アトムの利用可能性をそのアトム内の他のノードにブロードキャストするための手段、
ｉｖ）受信したオブジェクトメッセージの有効性を評価し、前記空のアトムをポピュレートし、かつオブジェクト確認応答メッセージを前記選択されたノードに転送するための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項２０】
前記選択されたノードは、該選択されたノードがそのアトムに関連する他のノードからのメッセージを前記要求側ノードに転送することになる前記要求されたアトムを収容する全てのノードのリレーリストを生成することを特徴とする請求項１９に記載のデータベース管理システム。
【請求項２１】
前記ブロードキャストされたオブジェクト利用可能メッセージを受信する前記他のノードの各々が、オブジェクト確認応答メッセージを前記選択されたノードに送るための手段を含み、該選択されたノードは、前記要求側ノードへのあらゆるその後のメッセージのリレーを終了するために別のノードからの各オブジェクト確認応答メッセージの受信に応答して前記リレーリストを更新するための手段を含むことを特徴とする請求項２０に記載のデータベース管理システム。
【請求項２２】
前記データベースの一貫性を保証するためのトランザクション処理に向けて適合され、
システムが、コミットすべきアトムに関わる第１のノードを含み、少なくとも１つの他のノードが、そのアトムのコピーを含み、そのアトムのコピーが、永続ストレージに含まれており、
システムが、
ｉ）前記第１のノード内で永続ストレージへの転送のためのトランザクション識別表示を有するプレコミットメッセージを生成するための手段、
ｉｉ）前記トランザクションをコミットし、その後に前記トランザクション識別表示を有するコミットメッセージを全ての前記ノードにブロードキャストするために前記プレコミットメッセージに応答する永続ストレージに関連付けられた手段、
ｉｉｉ）前記識別されたトランザクションを更新するために前記コミットメッセージの受信に応答する前記第１のノード及び少なくとも１つの他のノード内の手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項２３】
ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであって、
Ａ）ユーザにデータベースへのアクセスを提供する少なくとも１つのトランザクションノード及びデータベース全体のアーカイブを維持する少なくとも１つのアーカイブノードであって、各トランザクションノードが、ユーザレベルでの高レベル入力及び出力クエリ指令と該データベースと対話するための一連の作動を制御するシステムレベルでの入力及び出力指令との間のインタフェースを提供するデータベース要求エンジンを含み、ある一定のシステムレベル指令に応答して、アトムオブジェクトが、アトムを生成し、各アトムが、データ又はメタデータの指定のフラグメントを含み、それによって１組のアトムの全てのインスタンスが、該データベース内の全ての該メタデータ及びデータを集合的に定義する前記少なくとも１つのトランザクションノード及び少なくとも１つのアーカイブノード、
Ｂ）全ての前記ノードを相互接続するデータベースシステムネットワーク、
Ｃ）前記ノードの各々においてシステム内の各他のノードとの通信経路を確立するための通信制御、
Ｄ）前記クエリ指令に関連するがそのノードに存在しないアトムのコピーを要求するために前記データベース要求エンジンからのシステム指令に応答する各トランザクションノード内の方法、
Ｅ）各ノードにおいてクエリ指令を完了するのに必要とされるアトムのみがいずれの所定の時間にもいずれかのトランザクションノードに位置する必要があるように前記要求側ノードへの転送に向けて要求されたアトムを複製するために別のノードからのアトムの要求に応答する方法、及び
Ｆ）各トランザクションノードにおいてそのノードでのアトムの変化に応答してそのアトムのコピーを含むシステム内の全ての他のノードにその変化を複製するための方法、
を含むことを特徴とするデータベース管理システム。
【請求項２４】
前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐する全てのアトムと該常駐アトムの各々のコピーを有する各ノードの位置とを追跡するカタログアトムを生成することを特徴とする請求項２３に記載のデータベース管理システム。
【請求項２５】
前記カタログアトムの１つは、システムに接続された各ノード内で複製されるマスターカタログアトムであり、
前記アトムの別のものが、前記インタフェースにより開始されたトランザクションの進行を追跡するための前記データベースのための単一のトランザクションマネージャアトムであり、
前記マスターカタログは、前記トランザクションマネージャアトムの位置を識別する、
ことを特徴とする請求項２４に記載のデータベース管理システム。
【請求項２６】
前記ユーザレベルでの前記データベースは、レコード及びフィールドを有する名称付きテーブルを含み、かつ少なくとも１つの名称付きスキーマに従って作動し、
前記アトムオブジェクトの他のものが、
ｉ）フィールドのリストを収容する各テーブルのためのテーブルアトム、
ｉｉ）スキーマとそのスキーマに関連する前記名称付きテーブルとの間の対応を確立するスキーマアトム、及び
ｉｉｉ）前記データベースと前記名称付きスキーマの間の対応を確立するデータベースアトム、
を生成する、
ことを特徴とする請求項２５に記載のデータベース管理システム。
【請求項２７】
前記レーザレベルでの前記データベーステーブルは、フィールドとデータとを収容する識別されたレコードを含み、
他のアトムオブジェクトが、所定の数のデータレコードを含むデータアトムとレコードバージョンを管理するレコード状態アトムとを生成し、
前記レコード状態アトムは、そのレコード状態アトムに割り当てられた前記管理されたデータアトムと、各レコードバージョンの識別表示と、各レコードバージョンに対するそのバージョン及びそのバージョンを含む該データアトムの位置に関する情報とを識別するアレイを含む、
ことを特徴とする請求項２６に記載のデータベース管理システム。
【請求項２８】
各データアトムは、該データアトム内の各レコードのアドレス及び長さと該データレコードとを更に含むことを特徴とする請求項２７に記載のデータベース管理システム。
【請求項２９】
前記レーザレベルでの前記データベーステーブルは、識別されたブロブを含み、
他のアトムオブジェクトが、ブロブと、全ての関連のブロブアトムと該ブロブアトムにおける該ブロブの位置とのリストを含むブロブレコード状態アトムとを収容するブロブアトムを生成する、
ことを特徴とする請求項２６に記載のデータベース管理システム。
【請求項３０】
各ブロブアトムが、各ブロブのアドレス及び長さと該ブロブとを含むことを特徴とする請求項２９に記載のデータベース管理システム。
【請求項３１】
各ノードが、更に、
ｉ）システムレベル指令に応答して予め定義されたメッセージを生成して受信するメッセージング手段、及び
ｉｉ）前記メッセージを送信するための前記通信経路の１つを選択するための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項３２】
各ノードが、各通信経路の効率を非同期で試験するための手段を含むことを特徴とする請求項３１に記載のデータベース管理システム。
【請求項３３】
前記試験する手段は、ピングメッセージを生成して各通信経路に対してピング時間を判断するためのピング確認応答メッセージを受信するための手段を含むことを特徴とする請求項３２に記載のデータベース管理システム。
【請求項３４】
前記メッセージング手段は、アトムをメッセージにシリアル化して該メッセージをアトムに逆シリアル化するための手段を含み、
各メッセージが、非同期に前記選択された通信経路上で送られる、
ことを特徴とする請求項３１に記載のデータベース管理システム。
【請求項３５】
メッセージが、メッセージシーケンスを維持する制御を有するプロトコルの下で送られることを特徴とする請求項３４に記載のデータベース管理システム。
【請求項３６】
個々のノードが、アクティブであってシステムに接続することができ、かつシステムから切り離すことができ、前記アトムの１つが、システム内の各アクティブノードを識別してシステムに接続された各ノード内で複製されるマスターカタログアトムであり、
システムが、
ｉ）加入側トランザクションノードと前記アクティブノードの選択されたものとの間の接続を確立するための手段、
ｉｉ）前記選択されたノードにシステムへの接続を求めるための前記加入側トランザクションノード内の手段、
ｉｉｉ）前記選択されたノード内でそのマスターカタログアトムを更新し、前記加入側トランザクションノードをアクティブノードとして示すための手段、
ｉｖ）前記選択されたノードの識別表示を含むメッセージを前記加入側トランザクションノードに転送し、かつシステム内の全ての他のノードに該加入側トランザクションノードの利用可能性を示すメッセージをブロードキャストするための該選択されたノード内の手段、
ｖ）前記マスターカタログアトムのコピーを前記選択されたノードに要求することによって前記メッセージに応答するための前記加入側トランザクションノード内の手段、及び
ｖｉ）前記選択されたノード内でその更新されたマスターカタログアトムを前記加入側トランザクションノードに転送するための手段、
を含むノードがシステムに加入することを可能にするための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項３７】
前記加入側トランザクションノードは、前記更新されたマスターカタログアトムの受信に応答してそのデータベース要求エンジンからのシステム指令に応答して追加のアトムのコピーを要求するための手段を含むことを特徴とする請求項３６に記載のデータベース管理システム。
【請求項３８】
前記選択されたノードは、前記更新されたマスターカタログの利用可能性を全ての他のノードにブロードキャストし、各他のノードが、該選択されたノードに該更新されたマスターカタログのその受信を確認応答するための手段を含むことを特徴とする請求項３６に記載のデータベース管理システム。
【請求項３９】
前記トランザクションノードの１つにおける前記データベース要求エンジンは、新しいアトムの生成を要求する要求を行い、
前記アトムオブジェクトのある一定のものが、そのノードに常駐するアトムを追跡するカタログアトムを生成し、
前記トランザクションノードは、更に、
ｉ）前記カタログアトム内で前記カタログアトムにコンテンツなしのその新しいアトムを作成させ、かつ該新しいアトムをそのアトムのための議長として指定するために前記データベース要求エンジン要求に応答して該新しいアトムを追跡するための手段、
ｉｉ）前記カタログアトム内でオブジェクト識別表示を前記新しいアトムに割り当てるための手段、
ｉｉｉ）前記カタログアトム内で前記新しいアトムの冗長なコピーがないこと及び該新しいアトムが他のノードに対して利用可能ではないことを示す該新しいアトムのステータスを確立するための手段、
ｉｖ）前記カタログアトム内で前記新しいアトムの存在をシステム内の全ての他の対応するカタログアトムにブロードキャストするための手段、
ｖ）前記新しいアトムをポピュレートし、かつ該新しいアトムをシステム内の他のノードに利用可能にするための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項４０】
各アーカイブノード内で前記新しいアトムの前記記憶に応答して冗長なコピーの存在を示すそのステータスを更新するメッセージを該新しいアトムに送るための手段を更に含むことを特徴とする請求項３９に記載のデータベース管理システム。
【請求項４１】
１つのトランザクションノード内のデータベース要求エンジンが、他のノードにだけ存在するアトムを要求し、
前記アトムオブジェクトのある一定のものが、そのノード及び他のノードに常駐するアトムを追跡するカタログアトムを生成し、
システムが、
ｉ）前記要求側カタログアトム内の前記要求に応答してその空のアトムを作成するために前記要求されたアトムを追跡することになる手段、
ｉｉ）前記要求側カタログアトム内で最も応答性のあるノードを選択して前記アトムのコピーを該最も応答性のあるノードから要求することを確立するための手段、
ｉｉｉ）前記選択されたノード内で前記要求されたアトムのコピーをオブジェクトメッセージで前記要求側ノードに送り、かつ該アトムの利用可能性を該アトムが常駐する他のノードにブロードキャストするための手段、
ｉｖ）受信したオブジェクトメッセージの有効性を評価し、前記空のアトムをポピュレートし、かつオブジェクト確認応答メッセージを前記選択されたノードに転送するための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項４２】
前記選択されたノードは、該選択されたノードがそのアトムに関連する他のノードからのメッセージを前記要求側ノードに転送することになる前記要求されたアトムを収容する全てのノードのリレーリストを生成することを特徴とする請求項４１に記載のデータベース管理システム。
【請求項４３】
前記ブロードキャストされたオブジェクト利用可能メッセージを受信する前記他のノードの各々が、オブジェクト確認応答メッセージを前記選択されたノードに送るための手段を含み、該選択されたノードは、前記要求側ノードへのあらゆるその後のメッセージのリレーを終了するために別のノードからの各オブジェクト確認応答メッセージの受信に応答して前記リレーリストを更新するための手段を含むことを特徴とする請求項４２に記載のデータベース管理システム。
【請求項４４】
トランザクション処理中に前記データベースの一貫性を保証するように適合されており、
システムが、コミットすべきトランザクションに関わる第１のノードを含み、アーカイブノードを含む少なくとも１つの他のノードが、そのアトムのコピーを含み、
システムが、
ｉ）前記第１のノード内でアーカイブノードへの転送のためにトランザクション識別表示を有するプレコミットメッセージを生成するための手段、
ｉｉ）前記プレコミットメッセージに応答して前記トランザクションをコミットし、その後に前記トランザクション識別表示を有するコミットメッセージを全ての前記ノードにブロードキャストするためのアーカイブノードに関連付けられた手段、及び
ｉｉｉ）前記第１のノード及び少なくとも１つの他のノード内で前記コミットメッセージの受信に応答して前記識別されたトランザクションを更新するための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項４５】
論理データベースに関連するトランザクションを処理する複数のトランザクションノードからアクセスされるテーブルに編成されたデータレコードで構成された論理データベースのためのデータベース管理システムであって、
Ａ）データベースをフラグメントに構文解析するための手段であって、各フラグメントが、シリアル化されたメッセージとしてのデータベース管理システム内の転送に向けてかつ逆シリアル化されたメッセージとしての記憶に向けて論理データベースに関連するメタデータ及び／又はデータの一部分を記憶する前記構文解析するための手段と、
Ｂ）逆シリアル化された形式の全ての前記フラグメントを永続ストレージに記憶し、それによってデータベース全体のための単一のストアを構成する少なくとも１つのアーカイブノードであって、各トランザクションノードが、
ｉ）ユーザからのクエリに対して該クエリに関連するフラグメントを識別するための一連の低レベル指令を確立することによって応答するための手段、
ｉｉ）所定のフラグメントが何らかの他のノードに存在するか又はアーカイブノードでのみ存在することができるように、そこで処理されているクエリに関連する既存のフラグメントのコピーのみを取得することによって前記低レベル指令に応答するための手段、及び
ｉｉｉ）変更が、他のノード内のフラグメントにピアツーピアに基づいて行われ、かつあらゆるトランザクションノードが、そのトランザクションノードを通じて前記データベースにアクセスするユーザによって行われているクエリに関連するフラグメントのみを含むように、あらゆる変更されたフラグメントを前記少なくとも１つのアーカイブノード及びそのフラグメントのコピーが常駐する各トランザクションノードに対して複製するための手段、
を含む前記少なくとも１つのアーカイブノードと、
を含むことを特徴とするデータベース管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にデータベース管理システムに関する。より具体的には、本発明は、アトム性、パフォーマンス、及び拡張性により特徴付けられるマルチユーザ、エラスティック、オンデマンド、分散型関係データベース管理システムを実施する方法及び装置に関する。
【背景技術】
【０００２】
従来的に、メッセージを記憶して読み取るためのデータベースの使用は、広範な市販のアプリケーションの重要なツールとして登場している。初期には、データベースシステムは、複数のユーザを有する単一のサーバ配置上で作動するものが多かった。しかし、データベースアーキテクチャの基本的な性質が変化することを要求する様々なファクタが生じている。第１のファクタとして、データベースストレージ要件が極めて増大した。第２に、このようなデータベースにアクセスしようとするユーザ数も多くなった。第３に、最少の更新で済む比較的安定したデータを検索するためのデータベースの使用が、トランザクション処理に取って代わられた。
【０００３】
トランザクションは、その全体で完了すべきである作業単位である。単一のトランザクションは、複数のデータ処理を含む場合がある。一例として、単一のトランザクションは、読取操作、次に、書込操作を含む場合がある。近年、関係データベースが、増大し続けるトランザクション処理速度をサポートすることを可能にすることに有意な努力が向けられている。
【０００４】
データベースは、現在、ＡＣＩＤ特性、すなわち、アトム性、一貫性、独立性、及び永続性を定義する規格により判断される。アトム性は、全てのトランザクションタスクが全体で完了することを保証するものである。一貫性は、有効なデータのみが確実にデータベースに書き込まれるようにするものである。独立性は、他の作動がトランザクション中に中間状態であるデータにアクセスし、すなわち、「見る」ことが確実にできないようにするものである。永続性は、トランザクションが問題なく処理されると元に戻すことが確実にできないようにするものである。
【０００５】
一貫性は、特に、２人又はそれよりも多くのユーザが共有された揮発性データへの同時アクセスを求めることができるマルチユーザシステムにおいては重要である。最初のマルチユーザシステムは、ロック作動を用いて一貫性を保証していた。ロックは、排他的、すなわち、書込みロックとするか、又は非排他的な読取ロックとすることができ、かつ個々のレコード又はページに適用することができた。しかし、データベースが大規模化する時に、かつトランザクション速度が増大する時に、ロックを管理するオーバヘッドが有意なものになり、一部の場合には、非常に大きなものとなった。
【０００６】
マルチバージョン同時実行制御（ＭＶＣＣ）は、同時実行を保証する代替処理である。ＭＶＣＣは、複雑なデータベースに関するロックより有効とすることができる。ＭＶＣＣでは、タイムスタンプ又は増加式のトランザクション識別（ＩＤ）を使用してレコードの異なるバージョンをシリアル化する。各バージョンにより、トランザクションではタイムスタンプ又はＩＤに先行するオブジェクトの最新版を読み取ることができる。この制御方法で、例えば、レコードの変更は、変更がコミットされるまで他のユーザにより見られはしない。ＭＶＣＣは、他の付随するオーバヘッドに関するロックを排除して、読取操作が書込操作を遮断することができないシステムを確立する。
【０００７】
ＡＣＩＤ試験に合格することに加えて、現在、ユーザへの連続的な利用可能性に関する要件がある。一部のデータベースシステムは、１つのコンピュータシステムをトランザクション処理専用に、別のコンピュータシステムを意志決定サポート、及び他の報告処理専用にする。それらは、他の機能を同時にサポートすることができるように相互に接続される。データベースが大規模化及び複雑化する時に、既存のデータ処理システムはより強力なデータ処理システムにより取って代わられる。成長に対応する別の手法では、１つのマシンが全ての再現されたマシンを同期状態に保つ「ヘッド」マシンと指定された再現システムを用いる。仮にヘッドマシンが故障した場合に、処理は、その機能を別の再現されたマシンに割り当てる。異なる再現されたマシンが、特定のユーザが利用可能である。この手法は、全てのマシンが同じ機能を有するべきであるので拡張性はない。
【０００８】
別の手法として、複数の自律データベースシステムを様々な個々のデータベースを相互接続するコンピュータネットワークを有する単一の「連合した」データベースに一体化することができる。連合したデータベースでは、ミドルウェアは、構成データベースを同期状態に維持すべきである。この「ミドルウェア」は、非常に複雑になる可能性がある。データベースの大規模化に伴って、ミドルウェアを操作するのに必要なリソースは、システムパフォーマンス全体が劣化するほどの大きなオーバヘッドを課す可能性がある。
【０００９】
「分割」は、論理データベース又はその構成要素が異なる独立した部分に分割されるデータベースを実行する別の手法である。分散型データベース管理システムにおいて、各パーティションは、複数ノード上に広げることができる。特定のノードでのユーザは、パーティション上でローカルトランザクションを実行することができる。分割は、より小さいデータベースを形成することにより、又は１つの表のみの選択した要素を分割することによって実行することができる。
【００１０】
分割には２つの一般的な手法がある。水平分割において、「シャーディング」とも呼ばれる異なる横列が、異なるテーブル及び異なるサーバ内に配置される。通常、それらは、範囲により異なるテーブルに分割される様々な郵便番号又は名字のような特定の共通性を有する。例えば、第１のデータベースは、Ａ〜Ｍの範囲の名字に対して全てのレコードを含むことができ、第２のデータベースは、１つの形態の水平分割であるＮ〜Ｚの範囲のシャーディングにおいて、別々のサーバ上でデータベースの横列を配置する。シャーディングでは確かに各テーブル内の横列数が減少し、検索パフォーマンスが増大する。しかし、シャーディングでは、シャーディングをよって実行し難くするアプリケーションレベルでハッシュコードが使用される。それはまた、２相コミットも組み込む。シャーディングの複雑性は、シャードを定義する基準が極めて良好に定義されるので、シャーディングを特定の用途に適切なものにする。
【００１１】
垂直分割では、水平分割より少ない縦列でテーブルを作成し、かつテーブルにわたって分割縦列を作成する。連合したデータベースと同様に、垂直分割では、ミドルウェアは、適切なパーティションに特定のフィールドのあらゆる要求を経路指定する方法を決定すべきである。更に、これらのシステムは、実行することが複雑である２相コミットシーケンスを使用して作動する。
【００１２】
「分散メモリ」アーキテクチャとして公知である更に別の手法では、各ノードは、独立しておりかつ自給自足型である。分散メモリアーキテクチャは、単に廉価なコンピュータの形態でノードを追加することによって上方に拡張することができるのでウェブ開発に一般的である。この手法は、更新がトランザクション処理に関して発生するであろうよりは頻繁ではない傾向があるデータウェアハウジング用途において一般的である。しかし、接合の処理は、異なるパーティション又はマシンからの大きなデータセットにわたって非常に複雑である。
【００１３】
一部のデータベースシステムは、「分散型」システムと呼ばれる。分散型システムの１つの例は、「クラスター」及び２つの通信経路を組み込むものである。高速「インターネット」経路は、クラスターの間でデータを搬送する。高速専用通信経路は、ロック管理のような様々な制御機能に必要である。この手法は、データベースの冗長性及び利用可能性の問題を解決するが、ロック管理により、上述のようにシステムパフォーマンスが制限される可能性がある。
【００１４】
「全て共有型」システムにおいて、非超高速通信により、システムは、同期状態に保たれる。しかし、ロック管理では、有意な帯域幅リソースが必要である可能性がある。これを回避するために、このようなシステムは、ポイントツーポイント通信チャンネル及び非常に高度なディスクコントローラを組み込んでいる。
【００１５】
まとめると、上述の従来技術のシステムは、データベースシステムの公知の要件の一部を満足するが全部ではない。必要とされるものは、アトム性、一貫性、独立性、及び永続性のＡＣＩＤ特性を満たす拡張性のあるデータベースアーキテクチャである。更に必要とされるものは、トランザクション処理を提供し、かつ広い地理的領域にわたって作動可能であり、専用高速通信経路を必要とせずに「インターネット」で作動するデータベースシステムである。
【発明の概要】
【発明が解決しようとする課題】
【００１６】
従って、本発明の目的は、エラスティックなオンデマンド分散型データ処理システムを提供することである。
【００１７】
本発明の別の目的は、耐故障性であるエラスティックなオンデマンド分散型データ処理システムを提供することである。
【００１８】
本発明の更に別の目的は、高度の利用可能性を有するエラスティックなオンデマンド分散型データ処理システムを提供することである。
【００１９】
本発明の更に別の目的は、プラットフォーム独立型であるエラスティックなオンデマンド分散型データ処理システムを提供することである。
【００２０】
本発明の別の目的は、アトミック性、一貫性、独立性、及び永続性を有するエラスティックなオンデマンド分散型データ処理システムを提供することである。
【００２１】
本発明の更に別の目的は、専用高速通信経路を必要とせずに「インターネット」で作動するエラスティックなオンデマンド分散型データ処理システムを提供することである。
【００２２】
本発明の更に別の目的は、トランザクション処理を提供し、かつ広い地理的領域にわたる実施に適合されたエラスティックなオンデマンド分散型データ処理システムを提供することである。
【課題を解決するための手段】
【００２３】
本発明の一態様により、ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムは、複数のノードとその間の通信経路を有する永続ストレージを含む。各ノードは、ユーザレベルでの高レベル入力及び出力指令とデータベースと対話する一連の作動を制御するシステムレベルでの入力及び出力指令間のインタフェースを含み、特定のシステムレベル指令に応答して、アトムオブジェクトは、アトムを生成し、各アトムは、１組のアトムの全てのインスタンスが、データベース内の全てのメタデータ及びデータを集合的に定義するようにデータ又はメタデータの指定のフラグメントを含む。各ノードは、システム内の各々の他のノードとの通信経路を確立する通信制御と、クエリに関連するがそのノードに存在しないアトムのコピーを選択されたコピーを要求するインタフェースからのシステム指令に応答する方法と、クエリを完了するのに必要とされるアトムのみがいずれの所定の時間に、もいずれかのトランザクションノードに位置する必要があるように要求側ノードへの転送に向けて要求されたアトムを複製する別のノードからのアトムの要求に応答する方法と、そのアトムが常駐するシステム内の全ての他のノードへの転送に向けてそのアトムを複製するそのノードでのアトムの変化に応答する方法とを更に含む。永続ストレージは、データベース内の全てのデータ及びメタデータを集合的に含むアトムの集合を含む。
【００２４】
本発明の別の態様によれば、ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであり、このシステムは、ユーザにデータベースへのアクセスを供給する少なくとも１つのトランザクションノード及びデータベース全体のアーカイブを維持する少なくとも１つのアーカイブノードを含む。各トランザクションノードは、ユーザレベルでの高レベル入力及び出力クエリ指令とデータベースと対話する一連の作動を制御するシステムレベルでの入力及び出力指令間のインタフェースになるデータベース要求エンジンを含む。特定のシステムレベル指令に応答して、アトムオブジェクトは、アトムを生成する。各アトムは、１組のアトムの全てのインスタンスが、データベース内の全てのメタデータ及びデータを集合的に定義するようにデータ又はメタデータの指定のフラグメントを含む。データベースシステムネットワークは、全てのノードを相互接続する。ノードの各々内の通信制御は、システム内の各々の他のノードとの通信経路を確立する。各トランザクションノード内の方法は、クエリ指令に関連するがそのノードに存在しないアトムのコピーを要求するデータベース要求エンジンからのシステム指令に応答する。各ノード内の別の方法は、クエリ指令を完了するのに必要とされるアトムのみがいずれの所定の時間に、もいずれかのトランザクションノードに位置する必要があるように要求側ノードへの転送に向けて要求されたアトムを複製する別のノードからのアトムの要求に応答する。各トランザクションノード内の別の方法は、そのアトムのコピーを含むシステム内の全ての他のノードにその変化を複製するそのノードでのアトムの変化に応答する。
【００２５】
本発明の更に別の態様によれば、関連するトランザクションを処理する複数のトランザクションノードからアクセスすべきであるテーブルに編成されたデータレコードで構成された論理データベースのデータベース管理システムであり、データベースは、フラグメントに構文解析され、各フラグメントは、シリアル化されたメッセージとしてのデータベース管理システムにおける転送に向けて、かつ逆シリアル化されたメッセージとしての記憶に向けて論理データベースに関連するメタデータ及び／又はデータの一部を記憶する。システムは、逆シリアル化された形で全てのフラグメントを永続ストレージに記憶し、それによってデータデータベース全体の単一のストアを形成する少なくとも１つのアーカイブノードを含む。各々のトランザクションノードは、クエリに関連するフラグメントを識別する一連の低レベル指令を確立することによってユーザからのクエリに応答し、かつ特定のフラグメントが何らかの他のノードで又はアーカイブノードでのみ存在することができるように、処理中のクエリに関連する既存のフラグメントのコピーのみを取得することによって低レベル指令に応答する。各トランザクションノードは、ピアツーピアに基づいて他のノード内のフラグメントに変更が行われるように、かつあらゆるトランザクションノードが、そのトランザクションノードを通じてデータベースにアクセスするユーザにより行われているクエリに関連するフラグメントのみを含むようにあらゆる変更されたフラグメントを少なくとも１つのアーカイブノード及びそのフラグメントのコピーが常駐する各トランザクションノードに複製する。
【００２６】
特許請求の範囲では、特に、本発明の主題を指摘し、かつ明確に主張する。本発明の様々な目的、利点、及び新しい特徴は、同様の参照番号が同様の部分を指す添付図面と関連して以下の詳細説明を読むことによって更に完全に明らかであろう。
【図面の簡単な説明】
【００２７】
【図１】相互に接続したトランザクションノード及びアーカイブノードと共に本発明を組み込むエラスティックな拡張性のあるオンデマンド分散型データ処理システムの一実施形態の概略図である。
【図２】トランザクションノードの編成を示す図である。
【図３】アーカイブノードの編成を示す図である。
【図４Ａ】本発明を実行する際に有用であり、かつトランザクションノードにおいていずれかの所定の時間に登場する可能性がある図２に示すアトムクラスによって生成された「アトム」オブジェクトの論理構成を示す図である。
【図４Ｂ】本発明を実行する際に有用であり、かつトランザクションノードにおいていずれかの所定の時間に登場する可能性がある図３に示すアトムクラスによって生成された「アトム」オブジェクトの論理構成を示す図である。
【図５】マスターカタログアトム内の情報を示す図である。
【図６】トランザクションマネージャアトム内の情報を示す図である。
【図７】データベースアトム内の情報を示す図である。
【図８】スキーマアトム内の情報を示す図である。
【図９】テーブルアトム内の情報を示す図である。
【図１０】テーブルカタログアトム内の情報を示す図である。
【図１１】インデックスアトム内の情報を示す図である。
【図１２】レコード状態アトム内の情報を示す図である。
【図１３】データアトム内の情報を示す図である。
【図１４】ブロブ状態アトム内の情報を示す図である。
【図１５】ブロブアトム内の情報を示す図である。
【図１６】図１のデータベースシステムのトランザクションノード及びアーカイブノードの間に転送される例示的な非同期メッセージの構文を示す図である。
【図１７】情報が図１のデータベースシステムの処理とアーカイブのノードの間に転送される様々なメッセージタイプを示す図である。
【図１８】ノードが図１のデータベースシステムに加入する方法を理解する際に有用な流れ図である。
【図１９】ノードオブジェクト内の情報を示す図である。
【図２０】本発明によるノードがアトムを作成する方法を理解する際に有用な流れ図である。
【図２１】固有のアトム識別表示が図２０の方法中に割り当てられる方法を理解する際に有用な流れ図である。
【図２２】１つのノードが別のノードからアトムのコピーを取得する方法を理解する際に有用な流れ図である。
【図２３】本発明がトランザクションをコミットする方法を理解する際に有用な流れ図である。
【発明を実施するための形態】
【００２８】
図１は、本発明を組み込む複数のデータ処理ノードを有するエラスティックな拡張性のあるオンデマンド分散型データベースシステム３０の一実施形態を示している。ノードＮ１〜Ｎ６は、データベースへのユーザアプリケーションアクセスをもたらす「トランザクションノード」であり、ノードＡ１及びＡ２は、各アーカイブノードでデータベース全体のディスクアーカイブを維持するように機能する「アーカイブノード」である。アーカイブノードは通常データベース全体を記憶するが、単一のトランザクションノードは、その時間にそのノードで実行中のトランザクションをサポートするのに必要であると判断するデータベースのその部分だけを含む。
【００２９】
図１の各ノードは、データベースシステムネットワーク３１を通じてシステム３０内の各々の他のノードと直接に通信することができる。例えば、ノードＮ１は、ノードＮ２〜Ｎ６、Ａ１及びＡ２の各々と通信経路を確立することができる。あらゆる２つノード間の通信は、シリアル化されたメッセージによるものである。好ましい実施形態では、メッセージングを非同期に行って、システムによって使用される帯域幅を最大化し、それによって時機を逃さずかつ迅速に様々な作動を提供する。一般的に、データベースシステムネットワーク３１は、広帯域幅、低待ち時間経路（例えば、イーサネット（登録商標）ネットワーク）及び広帯域幅、高待ち時間経路（例えば、ＷＡＮネットワーク）の組合せで作動する。各ノードは、低待ち時間経路の使用を速度が重視される通信（例えば、アトムのフェッチ）に制限する機能を有する。高待ち時間経路は、非クリティカル通信（例えば、テーブルの情報を更新する要求）に使用することができる。同じくかつ好ましくは、本発明のデータ処理ネットワークは、送信制御プロトコル（ＴＣＰ）のようなメッセージングプロトコルを組込み、かつ各ノードが確実にメッセージが他のノードによりそれに送られたのと同じシーケンスでメッセージを処理に適応させる。
【００３０】
図２は、データベースシステムネットワーク３１及び様々なエンドユーザ３３に連結する代表的なトランザクションノード３２を示している。トランザクションノード３２は、ネットワークインタフェース３５を通じてデータベースシステムネットワーク３１と、ユーザネットワークインタフェース３７を通じて様々なユーザと通信する中心処理システム（ＣＰ）３４を含む。中心処理システム３４は、本発明の好ましい実施形態を実行するデータベース管理プログラムのコピーを含むＲＡＭメモリ３８とも対話する。このプログラムは、リモートインタフェース４０と、データベース要求エンジン４１と、クラス又はオブジェクトのセット４２とをもたらすように機能する。
【００３１】
データベース要求エンジン４１は、トランザクションノード上に存在するにすぎず、レーザレベルでの高レベル入力及び出力指令とシステムレベルでのシステムレベル入力及び出力指令間のインタフェースである。一般的には、データベース要求エンジンは、ＳＱＬ問い合わせのようなユーザクエリをその組４２の様々なクラス又はオブジェクトにより解釈される指令に構文解析、コンパイル、及び最適化する。
【００３２】
本発明の説明の目的上、セットクラス／オブジェクトセット４２は、「アトムクラス」の部分集合４３、「メッセージクラス」の部分集合４４、及び「ヘルパークラス」の部分集合４５に分割される。これらのクラスの更なる詳細に対しては後述する。
【００３３】
明らかなようにかつ本発明により、いずれの所定の時間にも、トランザクションノードは、その時にアクティブなユーザアプリケーションに関連する総合データベースの部分を含むに過ぎない。更に、本発明の様々な特徴は、使用中のデータベースの全ての部分がランダムアクセスメモリ３８内に常駐することを可能にするものである。このシステムの作動中にトランザクションノードにディスクストアのような補助ストアを設ける必要はない。
【００３４】
図３を参照すると、図１のアーカイブノードＡ１又はＡ２のような各アーカイブノード５０は、データベースシステムネットワーク３１にも接続している。しかし、図２内のトランザクションノード３２に関連するエンドユーザ３３の代わりに、アーカイブノードは、永続ストレージ５１、一般的にディスクベースのストレージシステム又はキーバリューストアにのみ接続される。アーカイブノード５０は、Ｉ／Ｏチャンネル５２を通じて永続ストレージ５１と、ネットワークインタフェース５５を通じてデータベースシステムネットワーク３１と通信する中心処理システム５４を含む。中心処理システム５４は、１組のクラス又はオブジェクト６２を含むＲＡＭメモリ５７とも対話する。図２のトランザクションノード３２と同様に、図３のクラス／オブジェクトセット６２は、「アトムクラス」のセット６３、「メッセージクラス」のセット６４、及び「ヘルパークラス」のセット６５を含む。
【００３５】
本発明の好ましい実施形態は、オブジェクト指向プログラミング（ＯＯＰ）を使用し、当業技術で公知のように、図２及び図３に示すようなクラス及びサブクラスは、そのクラス又はサブクラスの「インスタンス」又はオブジェクトを生成することができる方法、データ構造、及び処理を定義する。「インスタンス」は、「継承」及び／又は「多相性」を使用して生成することができる。具体的に開示する実施形態上でオブジェクト指向プログラミング又は変形を使用しない実施例が可能であることは、当業者には明らかであろう。
【００３６】
本発明をここでいくつかの相で説明する。「アトム」の節では、それぞれ図２及び図３のアトムクラス４３及び６３によって生成されたオブジェクトの階層及び機能を定義する。「メッセージ」節では、それぞれ図２及び図３のメッセージクラス４４及び６４によって生成される可能性があるトランザクションノード及びアーカイブノード間の通信を行う１組のメッセージを説明する。「方法」の節では、データベース管理に関して基本操作を説明する。「実施例」の節では、データベース要求エンジン４１への特定のデータベース問合せに応答して本発明の目的をもたらすアトム、メッセージ、及び方法の対話を説明する。
【００３７】
アトム
上述のように、図２のアトムクラス４３及び図３の６３の各々は、「アトム」を生成する。より具体的には、アトムクラスは、１つ又はそれよりも多くの「アトムタイプ」又は「アトムオブジェクト」を定義する。各「アトムタイプ」又は「アトムオブジェクト」は、それ自体の「インスタンス」、すなわち、「アトム」を生成する。各特定のアトムオブジェクトの目的のより詳細な理解すると明らかなように、各「アトム」は、データベース情報の特定のフラグメントを含む。一部のアトムは、データベースメタデータの一部を含み、他のアトムは、データレコードを含み、更に他のアトムは、他のアトムタイプを作成及び追跡するカタログとして機能する。一部の「アトムタイプ」は、全てのノードに複製される１つのアトムをインスタンス化することができるに過ぎない。他の「アトムタイプ」は、必要に応じて他のノードに複製される複数のアトムをインスタンス化することができる。
【００３８】
アトムは、ある一定の特性を有する。トランザクションノードにおいて、アトムは、非永続メモリ内にのみ、及びアトムの有効なメモリ常駐フォーマットをもたらす特定のアトムタイプをポピュレートした逆シリアル化されたメッセージの形態でのみ存在する。各アトムは、コンテンツをシリアル化されたメッセージに符号化するための手段とアトムのコンテンツを検索するためにシリアル化されたメッセージを復号するための手段とを有する。このようなシリアル化されたメッセージは、後述するいくつかの作動に関連して使用される。
【００３９】
アトムを複製するノードから送信された各シリアル化されたメッセージは、添付のノード識別表示及びそのノードの最新のトランザクションコミットシーケンス番号と共にそのアトムのコンテンツを含む。アーカイブノードがそのシリアル化されたメッセージを受信した時に、メッセージを逆シリアル化し、ノードリスト及びコミットシーケンス番号を除去した後に、メッセージ（すなわち、アトム）の残りのコンテンツを永続ストレージ内に配置する。
【００４０】
本発明によりアトムには、いくつかの規則が適用される。それらの規則の理由及び含意は、より明らかである。第１に、各アトムは、図１のデータベース処理ネットワーク３０においてどこでもそのアトムの確実な識別表示を行う固有の識別表示を有するべきである。第２に、あらゆるアトムは、同時に冗長性を維持するために２つのノードに存在すべきであるが、単一のアトムは、作成された後に、かつアーカイブノードがコピーを要求する前に存在することができることを除く。第３に、トランザクションノードは、要求があって初めてアトムを取り込み。第４に、変更が１つのノード内のアトムに行われる度に、そのノードは、「ピアツーピア」で、すなわち、全てのアーカイブノード及びその同じアトムを含むトランザクションノードだけにその変更されたアトムを複製すべきである。
【００４１】
より詳細に後述する「ゴミ収集」処理は、アーカイブノード及びトランザクションノードに行われる可能性がある。処理は、トランザクションノード及びアーカイブノードから非アクティブアトムを除去する。従って、トランザクションノードは、そのノードでのランダムアクセスメモリ内のユーザアプリケーションにその時に現在関連するアトムを記憶することができる。従って、データベース要求エンジン４１は、データベース全体をローカルと「見て」、マルチノード環境で、かつそのノードでデータベースの完全なコピーなしで作動していることに気づいていない。アーカイブノードは、ディスクにシリアル化された後にアトムのコンテンツをパージする選択肢を有し、従って、記憶に必要とされるメモリが小形化される。アーカイブノードがこのようなアトムの複製メッセージを受信した場合に、アーカイブノードは、複製中のアトムからの情報を適用する前にディスクストアから情報をフェッチすべきである。
【００４２】
この一般的な背景で、各アトムタイプを「論理的」又は機能的レベルでここに説明する。この情報により、本発明の作動に対して更に説明する内容に関連して、当業者は、オブジェクト指向プログラミングに基づく実施例を含む様々な実施例のいずれかにおいて本発明を製造及び使用することができる。
【００４３】
図４Ａ及び図４Ｂは、データベースエンジン４１、及びいずれかの所定の時間にトランザクションノード３２内に常駐する可能性がある代表的な１組のアトムを示している。この例において、トランザクションノードは、マスターカタログアトム７０、トランザクションマネージャアトム７１、データベースアトム７２、スキーマアトム７３、テーブルアトム７４、及びテーブルカタログアトム７５に対応する。データベース当たりにマスターカタログアトム７０が１つのみ、トランザクションマネージャアトム７１が１つ、データベースアトム７２が１つある。トランザクションマネージャアトム７１、データベースアトム７２、及びスキーマアトム７３は、データベース要求エンジン４１が新しいデータベースを作成する時に作成される。
【００４４】
図４Ａを参照すると、マスターカタログアトム７０は、図１のデータベースシステム３０内のトランザクションノード及びアーカイブノードの状態を追跡する。マスターカタログアトム７０は、トランザクションマネージャアトム７１、データベースアトム７２、各スキーマアトム７３、各々の対応する１組のテーブルアトム７４及びテーブルカタログアトム７５、及びシーケンスＩＤマネージャ８２を作成及びモニタするアクティブインデックスと考えることができる。
【００４５】
テーブルカタログアトム７５は、アクティブインデックスとして作用し、かつ単一のテーブルに関連するインデックスアトム７６、レコード状態アトム７７、データアトム７８、ブロブ状態アトム８０、及びブロブアトム８１を作成及びモニタする。すなわち、各テーブルにテーブルカタログアトム７５が１つある。
【００４６】
図４Ｂは、異なるアトムタイプの対話及び管理を理解する際に有用である。このコンテクストにおいて、マスターカタログアトム７０もテーブルカタログアトム７５も管理機能を実行しない。残りのアトムに対して、データベースアトム７０が、各スキーマアトム７３を管理する。各スキーマアトム７３は、各々の関連のテーブルアトム７４及びシーケンスＩＤマネージャアトム８２を管理する。各テーブルアトム７４は、対応するテーブルカタログアトム７５、インデックスアトム７６、レコード状態アトム７７、データアトム７８、ブロブ状態アトム８０、及びブロブアトム８７を管理する。
【００４７】
図４Ｂを依然として参照すると、データベース要求エンジン４１は、マスターカタログアトム７０、トランザクションマネージャアトム７１、データベースアトム７２、各スキーマアトム７３、各テーブルアトム７４、及びシーケンスＩＤマネージャ８２と通信する。データベース要求エンジン４１は、ＳＱＬのような高レベル言語のコンパイラとして作用する。コンパイラとして、クエリを構文解析、コンパイル、及び最適化して、データベース情報の様々なフラグメントの形成に対してアトムからメタデータ及びデータを取得する。
【００４８】
各アトムは、特定の共通の要素とタイプに独特である他の要素とを有する。図５を参照すると、マスターカタログアトム７０は、共通の要素７０Ａ〜７０Ｉを含む。要素７０Ａは、アトムの固有の識別表示である。全てのノードに複製されるマスターカタログアトムのインスタンスが１つしかないので、マスターカタログアトムＩＤ  ７０Ａには固定した数字、一般的に「１」定数が与えられる。一般的に、ポインタ７０Ｂ及び７０Ｃにより、それぞれ、マスターカタログアトム及び作成カタログアトムが識別される。マスターカタログアトムに対して、両方のポインタは、マスターカタログアトム自体を識別する。
【００４９】
各アトムは、議長を有するべきである。議長は、後述するような機能を実行する。要素７０Ｄは、そのアトムの議長が常駐するそのノードのポインタである。
【００５０】
アトムのコピーがあらゆるトランザクションノードで変更される度に、新しい変更番号を受信する。要素７０Ｅは、その変更番号を記録する。
【００５１】
ノードがアトムを別のノードに要求する時はいつでも、要求側ノードが他のトランザクションノードに分らない合間がある。要素７０Ｆは、要求が完了されるまで供給側ノードがそのアトムを含む全ての他のノードから要求側ノードにメッセージを中継すべきである全てのノードのリストである。
【００５２】
データベースシステムの作動は、サイクルにも分割される。サイクル基準要素７０Ｇは、アトムへの最終アクセスのサイクル番号を供給する。要素７０Ｈは、アトムを含む全てのアクティブノードのリストである。要素７０１は、いくつかの状態インジケータを含む。
【００５３】
図５を依然として参照すると、グローバルノードＩＤＳエントリ７０Ｊは、システム内の各アクティブノードの固有の識別子を割り当てるＩＤマネージャを含む。公知のように、このような識別子は、長い文字ストリングである。ローカルノードＩＤＳエントリ７０Ｋは、システムに取り付けることができるノードの総数までの数字の範囲を含む。これらのエントリを併せて、２種類の識別表示間の対応が得られる。ローカルノードＩＤの使用により、効率が増大する。
【００５４】
トランザクションノードが図１のデータベースシステムに加入する時に、接続マネージャ７０Ｌがこの処理を達成する。トランザクションノードがデータベースシステムに加入することを可能にする特定的な実施例に対しては後述する。加入側ノードは、未処理ノード状態エントリ７０Ｍを使用して、応答側ノードからの更に別の通信を受信するまでその応答側ノードのグローバルアドレスがないことを示している。データベースＵＵＩエントリ７０Ｎは、データベースの全域的な固有の識別表示を含む。
【００５５】
７０Ｐでのエントリは、マスターカタログアトム７０がアクティブインデックスとして作用する全てのアトムを連結するので重要である。上述のように、これらには、データベースアトム７２及びスキーマアトム７３、テーブルアトム７４、及びテーブルカタログアトム７５の各々がある。
【００５６】
パスワードエントリ７０Ｑは、データベースへの接続を認証するための手段を表している。実際のエントリ及びソフトウエアバージョンエントリ７０Ｒ及び７０Ｓにより、システムは、より新しいバージョンのソフトウエアがインストールされた時に下位互換性で作動させることができる。実際のソフトウエアエントリ７０Ｒにより、その時に使用中であるソフトウエアバージョン、ソフトウエアバージョンエントリ７０Ｓ、最新のインストールされたバージョンに対応する番号が識別される。それによって個々のノードをより新しいバージョンに更新することができ、他のノードを更新せずに済み、かつデータベースは、全てのノードによるアクセスに向けて閉じられたりしない。
【００５７】
図５を依然として参照すると、マスターカタログアトム７０は、トランザクションマネージャアトム７１のポインタ７０Ｔと、構成オブジェクトのポインタ７０Ｕと、ゴミ収集スレッドのポインタ７０Ｖと、ピングスレッドのポインタ７０Ｗとも含む。疎通スレッドは、ノードで定期的に及び他の作動とは独立して作動する。各々の他のノードの「疎通を確認」して対応する経路の通信効率の判断において使用することができる情報を提供する。例えば、図１のノードＮ１がノードＮ２又はＮ５と通信する選択肢を有する場合に、ノードＮ１は、その通信に向けてノードＮ２及びＮ５への通信経路のうち最も効率的なもの選択においてピング情報を使用することができる。他の選択処理を置換又は追加することができる。
【００５８】
図６を参照すると、各データベースにトランザクションマネージャアトム７１が１つあり、マスターカタログアトム７０を作成する同じ処理中に作成される。トランザクションマネージャアトム７１は、データベース要求エンジン４１からのデータベース指令に応答してデータベーストランザクションを作成、追跡、及び終了する。トランザクションマネージャアトム７１は、マスターカタログアトム内の同様の要素に対応する要素７１Ａ〜７１Ｉを含む。しかし、要素７１Ａは、トランザクションマネージャアトム７１の識別表示である。要素７１Ｂ及び７１Ｃは、両方ともマスターカタログアトム７０を指示する。
【００５９】
ＩＤマネージャ７１Ｊは、固有のトランザクションシーケンス識別表示を提供し、かつアクティブトランザクションリスト７１Ｋと、コミットされたトランザクションリスト７１Ｌと、失敗したトランザクションリスト７１Ｍとを維持する。要素７１Ｎは、コミットシーケンス情報を記憶する。ＩＤマネージャ７１Ｊは、各トランザクションの開始時にトランザクションＩＤを割り当てる。各トランザクションＩＤは、固有のものであるが、必ずしも連続したものというわけではない。ローカルトランザクションマネージャアトムは、トランザクションがコミットされた時にコミットシーケンス番号を要素７１Ｎに割り当てる。シーケンス番号は、連続したものであり、各々は、トランザクションを要求したノード独特のものである。トランザクション遷移イベントカウンタ７１Ｐは、トランザクションの開始及びトランザクションのコミット成功のような各トランザクション中に行われる個別のイベントを識別する。このようなカウンタは、同じ情報を伴う複数のトランザクションが重なり合う時に有用である。
【００６０】
図７を参照すると、データベースアトム７２は、マスターカタログアトム７０及びトランザクションマネージャアトム７１が作成されると同時に作成される。データベースアトム７２は、スキーマアトム７３の各々を識別する。データベースアトム７２は、新しいユーザがデータベースに加入しようとする時に認証処理に関わることができる。認証レベルに関する他のデータを含むことができる。
【００６１】
基本的に、データベースアトム７２は、図５の同様の要素に対応する要素７２Ａ〜７２Ｉを含む。要素７２Ａは、データベースアトム識別表示である。ポインタ７２Ｂ及び７２Ｃの各々により、マスターカタログアトム７０が識別される。スキーマ名−スキーマＩＤレジストリ７２Ｊは、スキーマ名をスキーマアトム識別表示に関連付けるものである。
【００６２】
図８を参照すると、スキーマアトム７３は、そのスキーマに対してテーブルアトムを作成及び追跡する。データベースアトム７２は、複数のスキーマアトムを管理することができ、各スキーマアトムは、複数のテーブルアトムと対話することができる。スキーマアトム７３は、図５の要素７０Ａ〜７０Ｉに対応する要素７３Ａ〜７３Ｉを含む。要素７３Ａは、固有のスキーマアトム識別表示７３Ａであり、要素７３Ｂ及び７３Ｃは、マスターカタログアトム７０のポインタである。テーブルは、スキーマ内に固有の名を有する。テーブル名−テーブルアトムＩＤレジストリ７３Ｊは、各テーブル名と対応するテーブルアトムの対応を示している。各スキーマシーケンスは、名称を有する。シーケンス名称−シーケンスＩＤマネージャレジストリ７３Ｋは、シーケンス名と、各スキーマアトムに関連付けられた図４Ａ及び４ＢのシーケンスＩＤマネージャ８２のような対応するシーケンスＩＤマネージャとの間の関係を提供する。
【００６３】
図９は、フィールド、フォーマット、インデックス、及びタイプに関連するメタデータを組込み、かつそのテーブルに対してインデックスアトム７６、レコード状態アトム７７、及びブロブ状態アトム８０の各々を管理するテーブルアトム７４の論理図を示している。テーブルアトム７４は、テーブル内のデータを作成及び追跡もする。テーブルアトム７４は、図５の要素７０Ａ〜７０Ｉに対応する要素７４Ａ〜７４Ｉを含む。要素７４Ａは、固有のテーブルアトム識別表示を含み、要素７４Ｂ及び７４Ｃは、両方ともマスターカタログアトムを指示する。ポインタ７４Ｊにより、対応するテーブルカタログアトムが識別される。要素７４Ｋは、テーブルの全てのフィールドのリストを収容する。
【００６４】
各テーブルアトムは、いくつかのＩＤマネージャを有する。ポインタ７４Ｌは、各フィールドに固有の識別表示を供給するＩＤマネージャを指示する。ポインタ７４Ｍ、７４Ｎ、７４Ｐ及び７４Ｑにより、それぞれ、インデックスアトム、データアトム、ブロブアトム、及びサブタイプに識別表示を割り当てる別々のＩＤマネージャが識別される。要素７４Ｒは、既存のサブタイプのリストである。アレイ７４Ｓ及び７４Ｔは、それぞれ、レコード状態アトム及びブロブ状態アトムの位置を示している。
【００６５】
図１０をここで参照すると、各テーブルアトムにテーブルカタログアトムが１つある。各テーブルカタログアトム７５は、テーブルアトムが作成された時に作成される。テーブルカタログアトムは、インデックスと、レコード状態と、データと、ブロブ状態と、ブロブアトムとを含む１つのテーブルに独特なアトムを作成及び追跡する。各テーブルカタログアトム７５は、図５の要素７０Ａ〜７０Ｉに対応する要素７５Ａ〜７５Ｉを含む。要素７５Ａは、マスターカタログアトムにより割り当てられた固有のテーブルカタログアトム識別表示である。要素７５Ｂ及び７５Ｃは、マスターカタログアトム７０を指示する。ＩＤマネージャ７５Ｊは、インデックス、レコードの状態、データ、ブロブ状態、及びブロブアトムの各々に対して固有のアトム識別表示を提供する。リスト７５Ｋにより、対応するテーブルアトムに関連する全てのアトムが識別される。要素７５Ｌ内のポインタにより、対応するテーブルアトムに関連するローカルノードでの各アトムの位置が識別される。一連のリスト７５Ｍにより、各アトムに対してそのアトムの複製を伴うノードのリストが識別される。ビットマップ７５Ｎは、アトムがアーカイブノード内にある時に他のオブジェクト及びディレクトリを識別する有利な手段になる。
【００６６】
図１１を参照すると、テーブル内の各インデックスにインデックスアトム７６が１つあり、テーブル当たりに複数のインデックスアトムがある場合がある。各々のインデックスアトムは、図５の要素７０Ａ〜７０Ｉに対応する要素７６Ａ〜７６Ｉを含む。要素７６Ａは、対応するテーブルカタログアトムにより割り当てられる固有のインデックスアトム識別表示である。ポインタ７６Ｂ及び７６Ｃにより、それぞれ、マスターカタログアトム及びテーブルカタログアトムが識別される。要素７６Ｊは、従来の割り出し機能をもたらすインデックスノードのバイナリツリーを含む。要素７６Ｋは、インデックスレベルを含む。このようなインデックス構造及びインデックスオペレーションは、当業者に公知である。
【００６７】
図１２を参照すると、レコード状態アトム７７は、単一のテーブル内の一定の範囲のレコード番号に対してレコードバージョン及び状態を管理する。従って、特定のテーブルアトムは、複数のレコード状態アトムを管理することができる。各々のレコード状態アトムは、図５の要素７０Ａ〜７０Ｉに対応する要素７７Ａ〜７７Ｉを含む。要素７７Ａは、作成テーブルカタログアトムが割り当てるレコード状態アトムＩＤを含む。ポインタ７７Ｂ及び７７Ｃにより、それぞれ、マスターカタログアトム及びテーブルカタログアトムが識別される。要素７７Ｊは、レコード状態アトム７７により管理される全てのデータアトムの位置を識別するアレイである。要素７７Ｋは、「ベースレコード「のレコード番号を含む。すなわち、各データアトムは、複数のレコードを記憶する。要素７７は、対応するテーブルアトムのポインタである。
【００６８】
本発明が対象とするデータベースアプリケーションにおいて、複数のユーザが、同じレコードの複数のバージョンを生成することができる。本発明の好ましい実施形態は、マルチバージョン同時実行制御（ＭＶＣＣ）を使用して、レコード又は他のオブジェクトのいくつかのバージョンが同時にデータベースに存在することを可能にすることによってトランザクションが確実にデータベースを決して待つ必要がないようにする。その結果、各レコード状態アトム７７は、各レコードバージョンに関するメタデータを含む。エントリ７７Ｍは、ゴミ収集において有用である各々のバージョンを有するレコードの位置を識別するビットマップである。
【００６９】
レコード状態アトム７７は、レコードの各バージョン７７Ｎに対して、バージョンを生成したトランザクションを識別するトランザクションＩＤ７７Ｐを含む。フォーマットバージョンエントリ７７Ｑにより、レコードが挿入された時に存在していたテーブルサブタイプのバージョン番号が識別される。このフォーマットによりレコードの物理的順序が識別され、レコードバージョンが作成された時に使用中であったデータベースプログラムのレコードが属するサブタイプが識別される。要素７７Ｒは、レコードバージョンシーケンス番号を含み、要素７７Ｓは、レコードの次に古い又は前のバージョンの位置を含む。データアトムアレイ７７Ｊのインデックス７７Ｔ及びベースレコード識別表示７７Ｋを併せて、レコードバージョンを有するデータアトム内の実際のスロット７７Ｕのアドレスになる。
【００７０】
図１３は、図５の要素７０Ａ〜７０Ｉに対応する要素７８Ａ〜７８Ｉを有するデータアトム７８を示している。データアトム７８において、要素７８Ａは、テーブルカタログアトムにより割り当てられたデータアトム識別表示７８Ａである。要素７８Ｂ及び７８Ｃは、それぞれ、マスターカタログアトム及び対応するテーブルカタログアトムのポインタである。ＩＤマネージャ７８Ｊは、データアトム７８内の各レコードに対してレコードスロット識別表示を割り当てる。要素７８Ｋにより、データアトム７８内の各レコードに対してアドレス及びそのレコードの長さが識別される。要素７８Ｃは、データ記録及びそのバージョンを表している。
【００７１】
図１４をここで参照すると、データベースは、「ブロブレコード」も記憶する。「ブロブレコード」は、一般的にデータベース内の単一の構成要素として記憶された二進データの集合である。ブロブレコードは、バージョン内には存在しない。ブロブ状態アトムは、図５の７０Ａ〜７０Ｉ要素に対応する要素８０Ａ〜８０Ｉを含む。要素８０Ａは、ブロブ状態アトム固有アトム識別表示を有する。要素８０Ｂ及び８０Ｃは、それぞれ、マスターカタログアトム及び対応するテーブルカタログアトムのポインタである。リスト８０Ｊにより、単一のブロブ状態アトム８０により管理される全てのブロブアトムが識別される。エントリ８０Ｋは、基部ブロブレコードの識別表示を提供する。要素８０Ｌは、対応するテーブルアトムを指示する。各ブロブレコードに対して、ブロブ状態アトムは、ブロブアトムにインデックス８０Ｍを含む。要素８０Ｎにより、ブロブレコードに対してブロブアトムのスロットが識別される。
【００７２】
図１５は、図５の要素７０Ａ〜７０Ｉに対応する要素８１Ａ〜８１Ｉを有するブロブアトム８１を示している。要素８１Ａは、テーブルカタログアトムにより割り当てられたアトム識別表示である。要素８１Ｂ及び８１Ｃは、それぞれ、マスターカタログアトム及び対応するテーブルカタログアトムのポインタである。ＩＤマネージャ８１Ｊは、ブロブスロット識別表示をブロブアトム８１内の各ブロブに割り当てる。要素８１Ｋにより、ブロブアトム７８内の各ブロブに対して、アドレス及び長さが識別される。要素８１Ｌは、ブロブアトムに割り当てられた全てのブロブレコードを表している。
【００７３】
要約すると、各アトムは、データベースのフラグメントのみとの関係を有する。例えば、データベースアトム７２は、データベースのスキーマを識別するメタデータを含む。各スキーマアトム７３は、そのスキーマに関連する全てのテーブルを識別するメタデータを含む。各テーブルに対して、テーブルアトム７４及び対応するテーブルカタログアトム７５は、フィールド及び特性の識別表示のような情報を含むテーブルに関するメタデータを示す。レコード状態アトムは、一群のレコードに関するメタデータを含む。データアトムは、これらのレコード及び様々なバージョンを含むスロットのポインタと共に各データレコードに関する情報を含む。ブロブ状態及びブロブアトムは、ブロブレコードに関する類似の情報を含む。
【００７４】
メッセージ
上述のように、あらゆる２つノード間の通信は、メッセージングシーケンスを維持する制御でＴＣＰ又は別のプロトコルを使用して非同期で送信されるシリアル化されたメッセージによるものである。図１６は、可変長ヘッダ９１と可変長本文９２とを含む典型的なメッセージ９０の基本的な構文を示している。ヘッダ９１は、メッセージ及びその機能を指定するメッセージ識別子コード９３を含む。本発明では異なるノードが異なるソフトウエアバージョンを用いて作動する場合があるシナリオを仮定しているので、ヘッダ９１は、メッセージを作成したソフトウエアバージョンの識別表示９４も含む。ヘッダ内の残りの要素には、送信側（すなわち、図５のマスターカタログアトムから）のローカル識別表示９５、メッセージの宛先、すなわち、カタログアトム（例えば、図１０のテーブルカタログＩＤ７５Ａ）の情報９６、及びアトム識別表示９７（例えば、図１２内のレコード状態ＩＤ７７Ａ）がある。この情報から、受信者ノードは、メッセージを逆シリアル化、復号、及び処理することができる。
【００７５】
１７は、本発明の特定的な実施形態に対して図１６の構文を有する１組のメッセージを示している。各々は、これから説明するような特殊機能を実行する。
【００７６】
先に簡単に説明したように、メッセージが送られることになっている時に、ノードが異なれば通信経路も異なる。例えば、１つのノードが、要求側ノードとして、アトムを取得する必要がある場合に、そのアトムの複製は、複数の他のノードに位置することができる。この実施形態では、「ピング」により、最良の経路対応ノードを選択するのに有用な選択情報が得られる。ピングでは、公知のように、「ピング」指令が宛先に到達する時間及び確認応答メッセージが受信される時間を判断する。本発明のこの実施形態では、各ノードは、定期的にヘルパークラスを使用して、ピングメッセージ１１０を接続以前の他のノードの各々に送る。各受信側ノードは、ヘルパークラスを使用して、ピング時間を含むピング応答メッセージ１１１を戻す。各ノードは、図８に関して後述するノードオブジェクトでこれらのメッセージを送受信する時間に関するこの情報を蓄積する。１つのノードが複数のノードの１つにメッセージを送る準備をする時に、送信側ノードは、そのメッセージの受信側ノードとしてノードの１つを選択するために蓄積されたピングデータを含むがこれらに限定されないファクタを解析する。
【００７７】
次の組のメッセージは、図１のデータベースシステム３０への新しいノードの接続又は以前非アクティブであったノードの接続に関わっているものである。このようなノード、例えば、トランザクションノードＮ２がデータベースシステム３０に接続したいと思った時に、図１９に関して詳細に後述する接続処理を開始する。図１７を参照すると、その処理がメッセージを受信するためのアクティブノードを識別した状態で、加入側ノードは、接続メッセージ１１２を選択したノードに送る。選択したノードは、データベースシステム３０内の全ての他の接続したノードに歓迎メッセージ１１３及び新ノードメッセージ１１４を戻す。他の接続したノードの各々は、固有の歓迎メッセージ１１３を加入側ノードに送信する。このメッセージシーケンスが完了した時に、加入側ノードは、様々なアトムを取得するために更に歩を進めることができる。
【００７８】
アーカイブノードは、彼らが別のノードに同期している時にアクティブモード又は同期モードで作動させることができる。アーカイブノード内のヘルパークラスは、ノード状態メッセージ１１５を送信して、そのアーカイブノードの状態変化に対して全ての他のノードの注意を喚起する。
【００７９】
次の組のメッセージは、ノードが要求側ノードとして別のノードからのアトムのコピーを検索する時に関わっているものである。例えば、ノードが図１のデータベースシステム３０に加入した後に、一般的にマスターカタログアトムのコピーを要求する。この処理に対して、図２０及び図２１の説明に関連して先に詳細に説明する。
【００８０】
図１７を依然として参照すると、要求側ノードは、目的要求メッセージ１１６を選択したノードに出し、選択されたノードは、要求されたアトムと共に一般的にオブジェクトメッセージ１１７を戻す。選択されたノードは、そのアトムと共にオブジェクト利用可能メッセージ１１８を全ての他のノードに送る。選択されたノードからオブジェクト利用可能メッセージ１１８を受信する各ノードは、オブジェクト確認応答済みメッセージ１１９を選択されたノードに戻す。選択されたノードは、選択されたノードが全てのオブジェクト確認応答済みメッセージ１１９を受信した後にオブジェクト完了メッセージ１２０ノードを要求側ノードに送る。
【００８１】
一部の状況では、選択されたノードは、選択されたノードが要求されたアトムを落したと知らせるオブジェクト利用不能メッセージ１２１を送る。選択されたノードからのバウンスオブジェクトメッセージは、要求されたアトムがマスターカタログアトム又はテーブルカタログアトムの１つにないことを示している。これは、更新トランザクションが進行中であり、選択されたノードがオブジェクト要求メッセージ１１６に応答しない時に発生する場合があり、その理由は、ゴミ収集処理によりオブジェクト要求メッセージを受信する前にそのアトムが収集されたからである。応答として、要求側トランザクションノードは、アトムでデータベースシステム内の別のノードを選択することができる。
【００８２】
図１及び図４Ａ及び図４Ｂのデータベース要求エンジン４１は、登録オブジェクトメッセージ１２３又は登録抹消オブジェクトメッセージ１２４を定期的に生成する可能性がある。これらのメッセージは、データベース及びスキーマアトムのようなレジストリを含むアトムを対象とする。オブジェクト削除メッセージ１２５は、そのノードでのユーザが、テーブルのような何らかの品目を削除する指令を出した時にノードから送られる。
【００８３】
ローカルノードが更新又は修正された時はいつでも、変更番号が増加する。あらゆる複製メッセージは、そのアトムのローカル変更番号を含む。あらゆるアトムは、各ノードに対して最新の変更番号を追跡する。アーカイブノードが修正されたアトムのコピーを受信した時に、アトムの変更番号をコピーして、変更番号を消去した後にアトムをディスクにシリアル化する。変更が行われた場合に、変更番号は、ゼロにはならない。アーカイブノードは、オブジェクト書込済みメッセージ１２６を送り、変更番号は、各ノードに書き込まれる。各受信側ノードは、自身の変更番号をメッセージ内の変更番号と比較する。次に、ノードは、アトムがアーカイブされてゴミ収集の潜在的な候補であることを説明するためにアトムの状態を更新することができる。
【００８４】
上述のように、各アトムは、固有のアイデンティティがなければならない。特定のアトムタイプ（例えば、新しいテーブルアトム）の第１のアトムが作成された時に、作成トランザクションノードは、そのテーブルアトムの議長と指定される。「議長の地位」を取り分割する規則に対しては後ほど説明する。トランザクションノードは、新しいアトムタイプを作成する必要がある時はいつでも、利用可能な識別表示を有していない場合にＩＤ要求メッセージ１２７を議長に送る。議長は、一般的に、自由な識別表示値の割り当てによる少なくとも１つの固有の識別表示のブロックを含むＩＤ委任メッセージ１２８を戻す。この処理は、図２０の処理に関してより詳細に説明する。
【００８５】
図４Ａ及び図４Ｂを参照すると、テーブルアトム７４は、いくつかのメッセージのいずれかを送ることができる。データベース要求エンジン４１が新しいフィールドを追加する処理を開始した場合に、その対応するトランザクションノードでのテーブルアトムは、新しい構造を生成して、そのテーブルアトムを含む全ての他のノードの変更を複製するテーブルフィールド追加済みメッセージ１２９を送る。トランザクションノードがテーブル構成を変更するフィールド、サブタイプ、又はフィールド特性を更新した場合に、そのノードは、テーブル構成メッセージ１３０を出す。ノードが新しいレコードの状態又はブロブ状態アトムを作成する必要がある時はいつでも、テーブル要求記録メッセージ１３１が生成される。議長だけが、このアトムを作成することができ、議長は、これが行われた時にテーブル記録オブジェクトメッセージ１３２をブロードキャストする。
【００８６】
トランザクションノードがテーブルに新しいレコードを挿入する度に、それは、テーブルレコードメッセージ１３３を生成する。インデックス付きのフィールドがテーブルに追加される時のような新しいインデックスを作成することが必要になった時はいつでも、作成テーブルアトムは、新しいテーブルアトムを複製する。この時に、インデックスが、書込専用インデックスに設定される。関連する全ての関連の処理が完了した後に、ノードは、テーブルインデックス追加済みメッセージ１３４を送る。
【００８７】
テーブルアトムがブロブのブロブ状態アトムを作成する時はいつでも、テーブルアトムは、テーブルブロブオブジェクトメッセージ１３５を生成する。テーブルブロブメッセージ１３６は、新しいブロブが作成されたことを示している。
【００８８】
タイプ及びサブタイプを利用するデータベースにおいて、図１のデータベース要求エンジン４１は、テーブルアトムに新しいテーブル−タイプ識別表示を割り当てさせる指令を生成する。これが行われた時に、テーブルタイプメッセージ１３７が、同様のテーブルアトムを有する全てのノードに複製される。
【００８９】
テーブルレコード抹消メッセージ１３８は、特定のレコード状態アトムに関するレコード番号を示している。テーブルゴミ収集メッセージ１３９は、そのテーブル内のレコードが以前のバージョン又は他の基準の異常に長いチェーンを含むと判断された時に、テーブルアトムに対して議長によって生成される。従って、「未使用」アトムは、データが「ない状態」である。
【００９０】
図４Ａ及び図４Ｂのレコード状態アトム７７は、いくつかの専用メッセージも生成する。特定のレコードを更新することが必要になった場合に、本発明のデータベース管理システムは、そのレコードの新しいバージョンを作成する。図１７を再び参照すると、対応するレコード状態アトムは、そのアトムがその特定のレコードを更新する許可を求めるために議長に誘導されるレコード更新要求メッセージ１４０を生成する。議長は、そのレコードを更新する許可を付与又は拒否する記録更新応答メッセージ１４１を生成することによって応答する。議長が許可を付与した場合に、要求側レコード状態アトムは、更新を実行して、アトムの新しいバージョンを有する記録更新メッセージ１４２をそのアトムのコピーと共に各ノードに送る。
【００９１】
データアトムは、レコード及びそのバージョンの何らかの最大数まで記憶する。対応するレコード状態アトムは、管理するデータアトムのサイズをモニタする。レコード状態アトムが管理されたデータアトムはそのサイズを超えたと判断する場合に、新しいデータアトムを生成して、記録データオブジェクトメッセージ１４３によってその新しいデータアトムを複製する。
【００９２】
レコード状態アトムは、いずれの新しいレコードバージョンも複製する記録レコードメッセージ１４４を生成する。定期的に、テーブルアトム議長は、レコード状態アトムが最古アクティブトランザクションより古いレコードバージョンを識別する処理を開始する。これが行われた時に、会長のレコード状態アトムは、上述の以前のレコードバージョンをその後のゴミ収集処理中に削除することを可能にする記録プルーンメッセージ１４５を送信する。トランザクションをロールバックすることが必要になるこの条件が生じた場合に、レコード状態アトムは、バックアウトレコードを更新するバックアウトレコードメッセージ１４６を生成する。
【００９３】
１組のインデックス専用メッセージもある。公知のように、インデックスは、最適な最大寸法を有し、インデックスがそのサイズを超えた場合には、インデックスは分割すべきである。本発明により、議長のみが、インデックスアトムを分割することができる。議長は、一方的に又はそのアトムの別のコピーからのインデックス分割要求メッセージ１４７に応答してこれを行うことができる。議長が分割を引き起こした時に、議長は、分割されたインデックスを含むインデックス分割メッセージ１４８を生成する。分割の後に、議長は、分割後に最初のインデックスアトムを切り捨てるインデックスプルーンメッセージ１４９を送る。インデックスノードがインデックスに追加される度に、新しいインデックスに関するインデックスキー、レコード識別表示、及び他の情報を含むインデックスノード追加済みメッセージが生成される。インデックスが完全にポピュレートされ、従って、検索作動中に使用準備ができている時に、テーブルインデックス待機メッセージ１５１が生成される。上述のように、テーブルインデックスを追加することにより、書込専用インデックスでありかつ読取不可能であるインデックスアトムが生成される。テーブルインデックス待機メッセージ１５１は、このような書込専用インデックスを可読にする。
【００９４】
ブロブ状態アトムは、ブロブズブロブメッセージ１５２を生成することにより、ブロブアトムのスロットを識別する。
【００９５】
データレコードメッセージ１５３は、スロット番号及びレコード長を含む。それは、データレコードも含む。
【００９６】
トランザクションの状態が変わる時に、特定のトランザクションノードのトランザクションマネージャアトム７１は、トランザクション状態メッセージ１５４を生成する。これらは、トランザクションの現状がアクティブ状態か、プリコミット状態か、コミット状態又はロールバック状態かを示している。ある一定の状況の下で、１つのトランザクションに関連する要求が別のノード上の別のトランザクションにより遮断される可能性がある。その場合に、トランザクションマネージャアトムは、トランザクション遮断メッセージ１５５を受信する。トランザクションがデッドロックになり、ロールバックすべきである場合に、デッドロックを引き起こすノードに関連するトランザクションマネージャアトムは、トランザクションをロールバックさせるトランザクションデッドロックメッセージ１５６を生成する。
【００９７】
いずれのテーブルカタログアトム上のアーカイブノードマスターカタログ又はアトムも、最後に書かれた時間を要求することができる。これは、要求側ノードが要求に書込時間メッセージ１５８を送る時に行われる。そのメッセージの受信者は、次に、書込時間メッセージ１５９でそれらの要求された時間を戻す。
【００９８】
上記メッセージは、本発明を組み込むデータベース管理システムを維持するのに必要とされる様々な手順を適切に処理することができるセットを構成する。明らかなように、各メッセージは、ヘッダに最少のオーバヘッドを有する。各メッセージは、適切に短いものとすることができる。ＴＣＰ又は他のメッセージングプロトコルと共に使用される時に、メッセージは、連続して送られなければならず、いずれの所定のノードでも、受信され次第、それらは、それらが異なるノードによって送られたものであったとしてもそれと同じシーケンスで取り扱うべきである。
【００９９】
方法
ここで、本発明の作動の様々な態様に関連する一部の基本的な方法を説明することは、本発明の更に理解するのに役立つであろう。各々の変形は、当業者には明らかであると考えられる。
【０１００】
図１８は、ノードがネットワークに加入した時に図１のデータベースシステム３０内の異なるノードにおいては行われる作動の流れ図である。この説明の目的上、図１のノード５がデータベースシステムに加入することになり、すなわち、それは、加入側トランザクションノード１７０であると指定されたと仮定する。第１の処理として、加入側トランザクションノード１７０は、段階１７１を使用して選択されたノードでＴＣＰ接続を確立する。基本的に、加入側トランザクションノード１７０は、データベースを識別する固定された位置にメッセージを送る。示されていないが当業技術で公知のように、接続ブローカーは、データベースシステムへのアクセスを拒否又は許可することによってこの要求に応答する。接続ブローカーがアクセスを許可した場合に、選択されたノード１７２として、トランザクションノードＮｌのようなノードを選択する。次に、接続ブローカーは、選択されたノード１７２のポート番号によるなどの名称で加入側トランザクションノード１７０にメッセージを送る。図１８は、群１７３として、データベースシステム内の全ての他のアクティブトランザクションノード及びアーカイブノードも示している。
【０１０１】
段階１７１で接続が確立された状態で、加入側トランザクションノード１７０は、段階１７４を使用して接続メッセージを選択されたノード１７２に送る。選択されたノード１７２は、段階１７５で、接続マネージャでマスターカタログアトムを更新し、ローカルノードＩＤを加入側トランザクションノード１７０に割り当てて、そのノードオブジェクトでそのノードをローカルノードのアレイに追加することによって接続メッセージに応答する。例を図１９に示している。
【０１０２】
図１９は、図１８の段階１７５に関連して説明したようなノードオブジェクトを示している。それは、ノードのソケットのポインタ４００Ａと、ノードでのマスターカタログアトムのポインタ４００Ｂと、マスターカタログアトム内の接続マネージャのポインタ４００Ｃとを収容する。ポインタ４００Ｄにより、着信メッセージを聴取するのに使用されるスレッドが識別され、ポインタ４００Ｅにより、メッセージを受信するソケットバッファが識別される。メッセージ聴取者は、メッセージを待ち、メッセージタイプを判断し、次に、メッセージを処理して完了させる。
【０１０３】
ノードオブジェクト４００は、全てのアトムと同様に、このノードが聴取しているノードのグローバルノードＩＤ４００Ｆ及びローカルノードＩＤ４００Ｇを含む。要素４００Ｈは、ノードから送られたものを待っているメッセージの待ち行列のポインタである。要素４００Ｉ及び４００Ｊは、ローカルポート及びリモートポートの識別表示を含む。要素４００Ｋは、リモートノードで作動するソフトウエアのバージョン番号を含む。ノードタイプ要素４００Ｌは、リモートノードがトランザクションノードか、同期処理を受けているアーカイブノードか、又はオンラインアーカイブノードかを示している。
【０１０４】
要素４００Ｍは、ローカルノードの名称を含み、要素４００Ｎは、リモートノードの名称を含む。要素４００Ｐは、処理中の現在のメッセージのポインタである。要素４００Ｑ及び４００Ｒは、最終ピング作動及びピング時間の時間を識別する。上述のように、各ノードは、そのノードで開始されたトランザクションの各コミット作動に応答して連続したコミットシーケンス番号を生成する。要素４００Ｓは、この数を含む。要素４００Ｔは、このノードオブジェクトがこのノードのノードオブジェクトであるか否かを示している。
【０１０５】
図１８を再び参照すると、段階１７６で、選択されたノード１７２は、歓迎メッセージをグローバルノードＩＤを含む加入側トランザクションノード１７０に送る。次に、選択されたノードは、段階１７７において、新ノードメッセージを全ての他のトランザクションノード及びアーカイブノードの群１７３にブロードキャストする。
【０１０６】
群１７３内の各ノードは、段階１８０で、グローバルＩＤを記録し、加入側トランザクションノードのローカルＩＤを割り当てて、それぞれのマスターカタログアトム内の全ての接続したノードのローカルリストを更新することによって新ノードメッセージに応答する。各々は、次に、段階１８１を使用して、歓迎メッセージを加入側トランザクションノード１７０に送る。この処理が完了すると、加入側トランザクションノード１７０は、群１７３内の選択されたノード１７２及び全てのノードを含む全てのアクティブノードの完全なリストを有する。
【０１０７】
段階１８２で加入側トランザクションノード１７０が歓迎メッセージを選択されたノードから受信する時に、それは、マスターカタログアトムのコピーを要求する選択されたノード１７２にオブジェクト要求メッセージを送る（段階１８３）。選択されたノード１７２がマスターカタログアトム内の情報の様々な項目を更新した後に、選択されたノードは、段階１８４を実行し、加入側トランザクションノード１７０に送られるオブジェクトメッセージ内のマスターカタログアトムをシリアル化し、オブジェクト利用可能メッセージをシステム内の全ての他のノードにブロードキャストする。従って、各ノード内のマスターカタログアトムは、更新及び同期化される。
【０１０８】
オブジェクトメッセージの受信を待つことなく、加入側トランザクションノードは、選択されたノード１７２からのデータベースアトム及びトランザクションマネージャアトムのコピーを検索する段階１８５の処理を始めることができる。
【０１０９】
段階１８６で、オブジェクト利用可能メッセージを受信する各々の他のノードは、オブジェクト確認応答済みメッセージを選択されたノードに戻すことによって応答する。
【０１１０】
加入側ノード内のデータベース要求エンジンは、このシーケンスを開始する。従って、図１８の方法が完了された時に、加入側トランザクションノード１７０は、データベースシステムに接続され、図４Ａ及び図４Ｂに示すように、マスターカタログアトム７０、トランザクションマネージャアトム７１及びデータベースアトム７２のコピーを含む。加入側トランザクションノード１７０は、次に、必要に応じて他のアトムのコピーを作成又は取得する。
【０１１１】
一部の作動中に、トランザクションノードは新しいテーブルを作成することができ、新しいテーブルアトムの作成が必要になる。図２０は、その処理１９０を開示するものであり、ノードＡは、要求側ノードである、アトムＸは、新しいアトムＹを要求して管理することになるアトムである。新しいテーブルアトムＹの作成に対して、アトムＸは、スキーマアトムになり、ローカルカタログＺは、マスターカタログアトムになる。段階１９１は、アトムＹのインスタンスを取得する要求の準備機能を表している。アトムが変更される度に、変更番号が割り当てられ、初期値は、一般的に「０」である。
【０１１２】
段階１９２で、ローカルカタログＺはコンテンツなしのアトムＹのそのインスタンスを作成して、ローカルノードをアトムＹの議長に指定する、次に、処理１９３により、ローカルカタログＺは、オブジェクトＩＤを新しいアトムＹに割り当てることができる。このような処理の詳細を図２１に関して示すと共に説明する。
【０１１３】
次に、ローカルカタログＺは、その変更が行われることを可能にする排他的ロックを設定する。ロックが所定の位置にある間、ローカルカタログＺは、新しいアトムＹの状態を「ダーティな」状態に、及び「非オープン」状態に設定する。「ダーティな」状態は、新しいアトムＹがアーカイブに複製されなかったことを示している。「非オープン」状態は、新しいアトムＹは他のノードがまだ利用可能でないことを示している。段階１９５で、ローカルカタログＺは自己更新して、次に、排他的ロックを解除する。段階１９６で、カタログＺは、アトムＹを識別するオブジェクト利用可能メッセージをトランザクションノード及びアーカイブノード内のカタログＺの全ての他のインスタンスにブロードキャストする。
【０１１４】
段階１９７で、アトムＸは、新しいアトムＹの管理アトムとしてアトムＹのインスタンスをポピュレートし、アトムＹの状態を新しいアトムを複製することができることを示す「オープン」に設定する。その後しばらく、アーカイブノードは、永続ストレージへの新しいアトムのコピーを保存することになる。すなわち、アーカイブノードは、アトムＹのコピーを要求することによってオブジェクト利用可能メッセージの受信に応答し、それによって冗長性をもたらすことになる。これが完了した時に、アーカイブノードからオブジェクト確認応答済みメッセージの受信により「ダーティな」状態を変更し、この変更は、次に、アトムＹのコピーを有する全ての他のノードに反映される。
【０１１５】
図２０の割当て処理１９３及び同様の割当て処理は、オブジェクトＩＤを割り当てる本発明の作動の様々な段階で用いている。図２１は、より詳細にこの割当て処理を示している。具体的には、カタログアトムがオブジェクトＩＤを割り当てたいと思った時に、段階２００で、カタログアトムが利用可能なローカルＩＤを有するか否かを判断する。有する場合には、制御は、要求に応答して利用可能なＩＤを割り当てる段階２０１に移る。ローカルＩＤが利用可能でない場合には、制御は、段階２０２に移って、このノードでのカタログアトムが「議長」状態を有するか否かを判断する。ローカルＩＤが利用可能である場合に、議長は、直接に利用可能なＩＤを識別する権限を有し、制御は、段階２０１に移る。
【０１１６】
思い出されるように、特定のアトムに対して少なくとも１つの他のノードが存在する時に、各アトムは、要求されたアトムのコピーを含むノードのリストを収容する。そのアトムが図２０の処理に従って作成された後にこれがアトムの第１の要求であった場合に、リスト上の第１のノード内の対応するカタログは、議長である。段階２０３は、ノードを選択して議長を識別する処理を表している。選択処理に対して、最初にトランザクションノードで通信を確立することが好ましい。段階２０４は、議長へのＩＤ要求メッセージの送信を表している。
【０１１７】
段階２０５で議長がＩＤ要求メッセージを受信した時に、利用可能なＩＤ番号のブロックを取得する（段階２０６）。議長は、利用可能なＩＤ番号のこのブロックのサイトとして要求を行うトランザクションノードを識別する（段階２０７）。段階２１０で、次に、議長は、ＩＤ委任メッセージを要求側ノードに送る。段階２１１で要求側ノードが議長からＩＤ委任メッセージを受信した時に、は段階２１２でＩＤ番号のブロックを記憶し、次に、段階２０１での割り当てるに向けて第１の利用可能なＩＤを選択する。再び図２０を参照すると、その関連では、処理１９３は、段階２０２から段階２０１に移って直接に段階２００に移り、その理由は、議長は、図２０で段階１９２で指定されるからである。
【０１１８】
図４Ａ及び図４Ｂのデータベースエンジン４１がアトムを要求する時はいつでも、図２２の応答２２０が処理される。例えば、要求側ノード２２１内のデータベース要求エンジン４１が他のノード２２３を有するデータベース内の選択されたノード２２２からのアトムＹ（例えば、テーブルアトム）のコピーを求めると仮定する。データベース要求エンジン４１がその要求が行われた時に、段階２２４では、アトムＹが要求側ノード２２１に存在するか否かを判断する。存在する場合に、段階２２５では、要求されたアトムが存在するので処理を終了する。存在しない場合に、制御は、段階２２６に移って、ローカルカタログＺは、アトムＹの空のインスタンスを作成してアトムＹが「未ポピュレート状態」であると宣言する。データベースエンジン４１がテーブルアトム７４を要求している場合に、マスターカタログアトム７０は、この段階を実行する。段階２３０では、次に、上述の選択処理を用いて選択されたノード２２２を識別する。優先項目は、選択されたノード２２２として最も応答性があるアーカイブノードを選択する前にトランザクションノードのいずれかを選択することである。
【０１１９】
段階２３１において、要求側ノード２２１は、アトムＹのオブジェクト要求メッセージを選択されたノード２２２に送る。これに応答して、選択されたノード２２２は段階２３２を用いて、ノード及びシーケンス番号を有するシリアル化された形の要求されたアトムＹと共にメッセージをオブジェクトに送る。
【０１２０】
同時に、選択されたノード２２２は、オブジェクト利用可能メッセージを全ての他のノード２２３にブロードキャストする。アトムＹのコピーを有する全ての他のノードのリレーリストを作成する。処理のこの時点で、他のノードは、要求側ノード内のアトムＹとは直接には通信せず、その理由は、そのアトムのコピーにメッセージを要求側ノードに送るべきであることに気づいていないからである。従って、他のノードのいずれかがアトムＹを複製した時に、選択されたノード２２２は、メッセージを要求側ノード２２１に中継する。
【０１２１】
要求側ノード２２１が選択されたノード２２２からオブジェクトメッセージを受信した時に、段階２３３でメッセージの接近容易性解析を提供する。メッセージが現在のアトムを含む場合に、アトムＹは、段階２３６でメッセージを処理して、段階２３７でオブジェクト確認応答済みメッセージを選択されたノードに送る。
【０１２２】
全ての他のノード２２３は、段階２４０を用いて、オブジェクト確認応答済みメッセージを選択されたノード２２２に送ることによってオブジェクト利用可能メッセージに応答する。選択されたノード２２２は段階２４１を用いて、オブジェクト確認応答済みメッセージをモニタする。具体的には、各オブジェクト確認応答済みメッセージに応答してそのリレーリストから他のノードの各々を除去して、そのノードへの中継を中止する。全ての他のノード２２３がリストから除去された時に、選択されたノードは、全ての中継を停止してオブジェクト完了メッセージをブロードキャストする。
【０１２３】
別のノードが図２２の段階２２６と２３６の間の時間中に要求側ノード２２１に到達する複製メッセージを送ることが可能である。これは、メッセージ処理を中断する可能性がある。その結果、アトムＹが未ポピュレート状態である間に上述の例のアトムＹの複製メッセージが要求側ノードで受信した時に、複製メッセージは、図５〜図１３のいずれも示していないが各アトムの一部である未処理メッセージリスト内に配置される。
【０１２４】
上述のように、本発明は、特にトランザクション処理技術とインタフェースで接続するデータベースに適合される。従って、メッセージを「コミットする」適切な手法を伴うべきである。図２３は、このような環境においてデータの一貫性を保証する１つの手法を示している。具体的には、図２３は、４つのノード、すなわち、トランザクションノードＡ２５０、トランザクションノードＢ２５１、トランザクションノードＣ２５２、及びアーカイブノード２５３を示している。トランザクションノードＢ２５１は、段階２５４でそのノードでのトランザクションマネージャアトムによって供給されたトランザクションＩＤと共にプリコミットメッセージを送ると仮定する。段階２５５でメッセージをアーカイブノードに経路指定する。そのトランザクションをコミットする全ての条件が完了された時に、アーカイブノード２５５は、段階２５６でコミットトランザクションメッセージを出し、段階２５７でその委任メッセージをブロードキャストする。段階２５８で、トランザクションノードの各々は、これに応答してその対応するトランザクション番号を更新する。
【０１２５】
図２１のアトムのコピーを要求する処理に関して上述したように、要求側ノードは、段階２３３であらゆる受信したメッセージにアクセシビリティ解析を提供する。この試験により、あらゆるトランザクションノードが常に有効な情報で作動するという保証が得られ、この試験では、トランザクションＩＤ番号及びコミットシーケンス番号の解析を提供する。この解析及び本発明の他の特徴の理解は、トランザクションＩＤ及びコミットシーケンス番号の更に別の理解、トランザクションの相対的な順序の解析、及び「アトムスキュー」の理解により容易にされると考えられる。
【０１２６】
トランザクションＩＤ及びコミットシーケンス番号に関してかつ上述したように、各トランザクション識別子は、図１のデータベースシステムにわたって固有である。トランザクションＩＤの目的は、それが、どのトランザクションが特定のレコードバージョンを作成したかを示す固有の永久的なシステム全体に及ぶマークであることである。各トランザクションＩＤは、トランザクションマネージャアトム７１のローカルコピーにより割り当てられ、１つのこのようなトランザクションマネージャアトムは、データベースシステム内の各トランザクションノード上のトランザクションマネージャアトムに識別子番号のブロックを割り当てる議長になる。特定のトランザクションノードでのトランザクションマネージャアトムは、割り当てられたブロック内の未使用数をノードが開始する各トランザクションに順番に割り当てる。従って、特定のノードで開始されるトランザクションが新しいほど、トランザクションＩＤは、古いトランザクションに割り当てられたトランザクションＩＤより高いとすることができる。しかし、システムにわたって、トランザクションＩＤは、異なるトランザクションの相対的な開始時間に関しては何も意味しない。
【０１２７】
その結果、レコードバージョンを作成したトランザクションが、トランザクションの読取が開始される前にコミットされた場合に限り、トランザクションが確実にレコードバージョンを読むことができるようにする何らかの方法を提供すべきである。本発明において、どのレコードバージョンを読むべきかを判断するこのような方法は、開始時間にはなく、レコードバージョンを作成したトランザクションのトランザクションコミット時間に存在する。トランザクションＩＤは、コミット時間を含まず、従って、各ノード上のトランザクションマネージャアトムは、実際コミット作動に基づいてコミットシーケンス番号を各トランザクションに割り当てる。各トランザクションノードは、増加するシーケンスでコミットシーケンス番号を生成する。特定のノードからのトランザクションが４６７というコミットシーケンス番号を有する場合に、それよりも小さいコミットシーケンス番号を有するノードからの全てのトランザクションがコミットされたことは確かである。全てのノードは同じコミットシーケンス番号を生成するので、個数を解釈するには対応するノードの番号及び識別表示が必要である。
【０１２８】
トランザクションがコミットされた時に、トランザクションマネージャアトムは、対応するトランザクションＩＤ及びコミットシーケンス番号を含む全てのノードに委任メッセージを送る。アトムが自己シリアル化した時に、そのアトムのコピーを保持する各ノードからわかった最高のコミットシーケンス番号を含む。例えば、ノードＡ、Ｂ及びＣがアトムＺのコピーを含み、ノードＡがアトムＺに対してオブジェクトメッセージを生成すると仮定する。そのメッセージのシリアル化された形式は、ノードＡが自分自身からわかった最高のコミットシーケンス番号と、ノードＢ及びＣからわかった最高のコミットシーケンス番号とを含むことになる。ノードＡからシリアル化されたメッセージは、ノードＡがアトムＹのコピーを共有するノードを見た時に、アトムＹのコピーを共有する全てのノード上のトランザクションの状態を説明するものである。ノードＢ又はノードＣは、ノードＡがまだ受信又は処理していないトランザクションに対してより高いコミットシーケンス番号を実際に出した可能性がある。
【０１２９】
各ノード上のトランザクションマネージャは、データベースシステム内の各ノードに対してトランザクションオブジェクトを維持する。各トランザクションオブジェクトは、全てのノード上のトランザクションの状態を反映し、ローカルでありかつ連続的に増加しているもう２つの番号を各オブジェクトに割り当てる。トランザクションマネージャアトムがトランザクションを開始するか、又は別のノードがトランザクションを開始したことを示すトランザクション遷移メッセージを受信した時に、トランザクションマネージャアトムは、新しいトランザクションＩＤを有するローカルトランザクションオブジェクトを作成して開始番号を割り当てる。ローカルトランザクションがコミットされた時に、又はトランザクションマネージャアトムが別のノード上のトランザクションがコミットされたことを示すトランザクション遷移メッセージを受信した時に、トランザクション終了番号が、コミットシーケンス番号と共にトランザクションオブジェクトに割り当てられる。開始番号及び終了番号は、同じシーケンスからのものである。一例として、トランザクション１２３がトランザクション４５３の終了番号よりも高い開始番号を有する場合に、トランザクション１２３は、トランザクション４５３により作成されたレコードバージョンをトランザクション４５３を実行したあらゆるノードから読み取ることができる。
【０１３０】
トランザクション開始番号及び終了番号は、ローカルであり、すなわち、ローカルノード上でわかった時のトランザクションの状態を反映する。ノードが異なれば、異なる値を割り当てるので、他のノード上でのトランザクションの異なる順序付けが見出される。明らかなように、処理トランザクション状態メッセージを受信及び処理する際に遅延が存在する可能性がある。各トランザクションは、ローカルトランザクションノード上でのみ実行される。このデータベースシステムは、１つのトランザクションノードには、トランザクションがローカルトランザクションノード上でコミットする前にトランザクションがコミットされたと分らないようにしている。例えば、ノードＡがトランザクション４５３のトランザクションノードＢから委任メッセージを受信して処理した後にトランザクション１２３を開始した場合に、トランザクション１２３は、トランザクションを受信したトランザクションノードＣがコミットされて別の順番でメッセージを開始したとしてもトランザクション４５３からの変更を読み取ることができ、２つのトランザクションは同時点のものと考える。
【０１３１】
トランザクションのいずれもトランザクションノードＣ上では実行されないので、情報は、トランザクションノードＣに関連のないものである。しかし、各個々のトランザクションノードが見たデータベースシステムの姿の差異により、ある一定の状況では問題が発生する可能性がある。
【０１３２】
「アトムスキュー」に関して、本発明の一態様により、各ノードは、別のノードがメッセージに送った順番で別のノードからのメッセージを処理すべきである。しかし、全てのノードは、独立して作動する。従って、いずれの所定の時間にも、一部のノードは、他のノードがまだ処理していないメッセージを受信して処理してしまっていることになる。アトムの一部のコピーは、他のコピーが含まない変更を含むことになる。上述の差異は、コピーを有するノードには重要なことではなく、その理由は、アトムの各コピーは、そのノードに対しては一貫した状態であるからである。上述のように、トランザクションノードがアトムを変更した時はいつでも、ノードは、変更されたアトムをそのアトムのコピーを含む全ての他のノードに複製する。トランザクションノードＢ及びＣが各々そのアトムのコピーを含みかつトランザクションノードＢがそのアトムを変更した場合に、トランザクションノードＢは、複製メッセージをトランザクションノードＣに送る。トランザクションノードＢがトランザクションを処理している間、トランザクションノードＣにトランザクション状態メッセージを送ってトランザクションノードＢが変更するあらゆるアトムを複製する。トランザクションノードＢが図２３に示す処理によりトランザクションをコミットした時に、トランザクションノードＣは、トランザクションがコミットされたことを示すトランザクション状態メッセージを受信しているはずである。トランザクションノードＣは、全てのメッセージは送られた順序で処理されることになるために委任メッセージを受信する前にトランザクションに関連する全てのメッセージを処理することになる。トランザクションノードが異なれば、アトムのコピーは異なる可能性があるが、いずれのトランザクションノード上でトランザクションにより行われた全ての変更も、他のノードがトランザクションコミットされたと分る前に全ての他のノード上にあることになる。
【０１３３】
システムレベルからトランザクションを見た時に、異なるトランザクションノードは、同期して作動しているのではない。異なるノードにより処理された単一のメッセージの時間は、通信経路の効率及び各トランザクションノードが処理する必要があるメッセージの数の差異のために変わる可能性がある。異なるノードでの処理時間内の差異を考慮すべきである。３つのトランザクションノード、すなわち、ノードＡ、ノードＢ、及びノードＣを考える。ノードＢが、アトムＸを変更するトランザクション７６８を実行し、かつノードＣが、アトムＸのコピーを有すると仮定する。ノードＢでのアトムＸが、変更メッセージをノードＣに送り、かつノードＣが、上述の変更を処理する前に何らかの時間の経過があると仮定する。また、ノードＢが、４７というコミットシーケンス番号をトランザクション７６８に割り当てたと仮定する。ノードＢ上のトランザクションマネージャアトムは、データベースシステム内の全てのノードにトランザクション状態メッセージを送る。また、ノードＡが、ノードＢから委任メッセージを受信した後に、但し、ノードＣがトランザクションの処理を完了する前に、アトムＸのコピーをノードＣに要求すると仮定する。ノードＡは、ノードＢからトランザクション状態メッセージを受信して処理する。ノードＡの観点からすれば、トランザクション７６８がコミットされ、ノードＢの最高コミットシーケンス番号は、４７である。しかし、このタイミングで、ノードＣから戻されたアトムは、ノードＢでトランザクションにより行われた変更を反映していない。
【０１３４】
本発明により、ノードＣ上のアトムＸが、ノードＡへの送信に向けて自己シリアル化した時に、それは、アトムＸのコピーを有する各ノードから最高コミットシーケンス番号を含む。この場合に、メッセージは、ノードＣに対してはシーケンス番号９７、ノードＢに対しては４６を含むと仮定する。
【０１３５】
図２２を参照すると、要求側ノードとしてのノードＡは、コンテンツをノードＣに求める前にアトムＸの空のインスタンスを作成する。図２２内のアクセシビリティ解析により、ノードＡが見た時の各ノードの現在の最高コミットシーケンス番号が得られる。アトムＸを有するシリアル化されたメッセージも拡張され、ノードＢが見た時の各ノードの現在の最高コミットシーケンス番号が得られる。この比較において、アクセシビリティ解析により、メッセージ内のシリアル化されたコミットシーケンス番号が４６であり、一方、Ｂのローカル最高コミットシーケンス番号は４７であると判断することになる。従って、ノードＡ、現状ではアトムＸのシリアル化されたバージョンを使用することができないので、ノードＣ上のアトムＸがオブジェクト完了メッセージを送るのを待たなければならない。コミットシーケンス番号が同じか又はより高い場合に、ノードＡは、アトムを処理し続けることができる。
【０１３６】
上述のように、ノードＣがアトムＸのシリアル化されたコピーをノードＡに送った時に、それは、アトムＸの他のコピーに、この場合には、ノードＢ上のコピーにオブジェクト利用可能メッセージを送っている。ノードＢ上のアトムＸは、オブジェクト確認応答済みメッセージをノードＣ上のアトムＸに送ってノードＡ上のコピーを自分自身のコピーのそのリストに追加する。次に、ノードＢ上のアトムＸは、変更メッセージをノードＡ及びＣの上のコピーに送ることになる。その間、ノードＣ上のアトムＸは、ノードＢからメッセージを処理してノードＡに中継する。ノードＡ上のアトムＸは、メッセージを処理して益々それ自体を更新する。ノードＣ上のアトムＸがノードＢ上のアトムＸからのオブジェクト確認応答済みメッセージ及び他のノード上のアトムＸの全ての他のコピーを処理した時に、オブジェクト完了メッセージをノードＡ上にアトムＸに送る。
【０１３７】
本発明により、各トランザクションノードは、ディスク又は他の永続ストレージにあらゆるアトムを転送する必要がなく作動すべきである。これには、各トランザクションノードからの非アクティブアトムの能率のよい除去が必要である。この目標をもたらすために、各ノード内のヘルパークラスは、定期的にサイクルマネージャにより呼び出されるゴミ収集機能を行って、他の作動とは独立して新しいゴミ収集サイクルを開始する。より具体的には、サイクルマネージャは、経年変化サイクルを実行し、それによって前のサイクルで参照したあらゆるアトムは、そのノードのマスターカタログアトム内の最長時間未使用（ＬＲＵ）リスト上の最初に移動される。サイクルマネージャは、前のサイクルに関してアクティブである他のいずれのスレッドも確実にないようにする排他的ロックを取得する。
【０１３８】
サイクルマネージャは、次に、レコードゴミ収集に向けてマーク付けされたテーブルアトムに対してレコードゴミ収集スレッドを開始する。ノードでの現在の記憶量が図５でポインタ７０Ｕにより識別された構成オブジェクトにより定義された指定の量を超えた場合に、ゴミ収集スレッド処理は、最長時間未使用アトムからごく最近使用アトムまでマスターカタログＬＲＵをループする。アトムが（１）アクティブではない、（２）現在の経年変化サイクルで参照されていない、（３）「オブジェクト未完了」ではない、（４）ローカルで変更されてアーカイブノードにまだ書き込まれていない、かつ（５）メモリ常駐アトムがないカタログである場合に、そのアトムをゴミ収集候補に向けて候補と分類する。アーカイブノード内のアトムは、更にディスクにシリアル化されたものでなければならない。
【０１３９】
ゴミ収集処理により全ての上述の条件が満たされたと判断された場合に、２つの選択肢がある。ノードがアーカイブノードであり、アトムの他のインスタンスが他のノードにある場合に、アトムのコンテンツは「パージされる」。そうでなければ、アトムは、それ自体を落とすように要求され、それは、これをまず最終試験を作成カタログアトムに問合わせすることによって行う。その試験に合格した場合に、カタログアトムは、候補アトムのそのポインタを消去し、候補アトムは、オブジェクト利用不能メッセージを候補アトムのインスタンスを含む他のノードにブロードキャストし、次に、自己削除する。このループは、作動記憶量が許容限度内になるまでアトム単位で続く。
【０１４０】
２つの機構は、この処理に関わっているものである。カタログアトムが、分類に向けてアトムを見つけるように求められた時に、カタログアトムは、サイクル参照エントリを現在のサイクル番号に設定する。更に、トランザクションマネージャ、データベース、スキーマ、シーケンス、及びテーブルアトムは、上述のアトム内の方法によりアトムポインタを保持することができ、オブジェクト又はアトムがごみ収集されるのを防止するためにアトム使用カウンタを増分せず済むように現在のサイクルで共有ロックを取得する。
【０１４１】
図１９及び図２０は、「議長任務」を説明するものである。図２０に示すように、アトムが作成された時に、作成ノードはアトム議長と指定され、アトムに対してノードの順序付けされたリストを確立する。ノードがアトムを作成した時に、それは、順序付けされたリスト内の唯一のエントリである。リスト内の第１のノードは、議長である。
【０１４２】
別のノードが後でそのアトムのコピーを要求した時に、選択されたノードは、議長であるか否か問わず、要求側ノードの識別表示を順序付けされたリスト内で自分の直後にいれる。従って、いずれかのアトムの議長と指定されたノードが何らかの理由で非アクティブになった場合に、そのアトムの全ての他のコピーは、ノードの順序付けされたリストを有する。順序付けされたリストを通して見ると、次の議長は、リスト上の第１の残りのトランザクションノードである。トランザクションノードがリスト上になかった場合に、第１の非同期アーカイブノードが指定される。
【０１４３】
ここで、簡単なデータベースクエリを説明することは、ノード内の異なるノード及びアトムの間の対話を理解する際の手助けとして役に立つと考えられる。トランザクションノードでのデータベース要求エンジンが「０１９４４」という郵便番号でテーブル「メンバ」内の全てのレコードを選択するデータベースクエリを受信することを仮定する。トランザクションマネージャアトム及びテーブルアトムはローカルノードに位置し、全ての問合せ処理が完了しており、かつインデックスアトムが、「メンバ」テーブル内の「ｚｉｐ」フィールドに向けて存在すると仮定する。
【０１４４】
最初は、図２内のデータベース要求エンジン４１は、トランザクションマネージャアトムがトランザクションＩＤを割り当てる新しいトランザクションを始める指令をトランザクションマネージャアトムに出す。次に、データベース要求エンジンは「メンバ」テーブルに関するテーブルアトムを利用して、インデックスアトムが「ｚｉｐ」フィールドに向けて存在するか否かを判断する。これらの２つのアトムがローカルノードである場合に、これらの２つのアトムを処理する。そうでなければ、これらのアトムのコピーを他のノードから取得した後に処理が続く。
【０１４５】
「メンバ」テーブルのテーブルアトムは、対応するテーブルカタログアトムからの情報を利用してインデックスを走査する。それによって指定の郵便番号を有する「メンバ」テーブル内の各「レコード」を識別するビットマップが生成される。明らかなように、このビットマップは、特定のフィールドに限定することができ、又は複数のフィールドからのインデックスの論理結合の結果とすることができる。
【０１４６】
次に、得られるビットマップに基づいてループを確立する。ループの各反復に対して、データベース要求エンジンは、レコード内のトランザクションＩＤで指定されたフェッチレコード方法を処理するためにテーブルアトムの呼び出しを出す。テーブルアトムは、レコード状態アトムが管理するレコードＩＤの最大数に対応する定数でレコード番号を割ることによってレコードアトムに関連する適切なレコード状態アトムを選択する。次に、テーブルアトムは、トランザクションＩＤ及び識別されたレコード番号を使用してフェッチ方法を選択されたレコード状態アトムに使用する。マルチバージョンレコードに対して、レコード状態アトムは、あらゆるレコードバージョンをループして、正しいバージョン及び適切なポインタが対応するデータアトムを見つける。レコード状態アトムは、レコードを指示してその検索を可能にするデータアトム番号でそのデータアトムを呼び出す。この処理が完了した時に、データベース要求エンジンは、ユーザに指定の郵便番号を有する全てのレコードを説明するレコードセットを供給する。
【０１４７】
要約すると、本発明により構成されるデータベース管理システムは、エラスティックな拡張性のあるオンデマンド分散データ処理システムを提供することが当業者に明らかであろう。システムは耐故障性であり、かつ高度な利用可能性を有する。それは、プラットフォーム独立型であり、アトミマック性、一貫性、独立性、永続性があるデータベースになるように作動する。更に、高速通信経路を必要とせずに「インターネット」で作動させることができ、広い地理的領域にわたって実施することができるトランザクション処理に向けて適合される。
【０１４８】
本発明は、以下の特徴の１つ又はそれよりも多くを実施することによって全ての上述の目的を達成する。本発明は、データベースをピアツーピアで複製する分散型オブジェクトに分解する。各トランザクションノード及びアーカイブノードは、どのアトムがローカルでメモリ常駐であるべきであるかを判断する。カタログアトムは、位置を様々なアトムのローカルコピー及びリモートコピーまで追跡し、これらのコピーがメンバであるカタログを識別する。更に、各ノードは、地理的に分散したシステムを可能にするアトムのコピーを要求する複数のノードのうちの最良のものを判断することができる。
【０１４９】
本発明は、ある一定の実施形態に関して開示したものである。本発明から逸脱することなく多くの修正を開示した装置に行うことができることは明らかであろう。従って、全てのかかる変更と修正を本発明の真の精神及び範囲に該当するように網羅することが添付の特許請求の範囲の意図である。
【符号の説明】
【０１５０】
３０  オンデマンド分散型データベースシステム
３１  データベースシステムネットワーク
Ａ１、Ａ２  ノード
Ｎ１〜Ｎ６  ノード
【図１】
2013522778.tif 000003
【図２】
2013522778.tif 000004
【図３】
2013522778.tif 000005
【図４Ａ】
2013522778.tif 000006
【図４Ｂ】
2013522778.tif 000007
【図５】
2013522778.tif 000008
【図６】
2013522778.tif 000009
【図７】
2013522778.tif 000010
【図８】
2013522778.tif 000011
【図９】
2013522778.tif 000012
【図１０】
2013522778.tif 000013
【図１１】
2013522778.tif 000014
【図１２】
2013522778.tif 000015
【図１３】
2013522778.tif 000016
【図１４】
2013522778.tif 000017
【図１５】
2013522778.tif 000018
【図１６】
2013522778.tif 000019
【図１７】
2013522778.tif 000020
【図１８】
2013522778.tif 000021
【図１９】
2013522778.tif 000022
【図２０】
2013522778.tif 000023
【図２１】
2013522778.tif 000024
【図２２】
2013522778.tif 000025
【図２３】
2013522778.tif 000026
【手続補正書】
【提出日】平成24年11月20日(2012.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであって、
Ａ）ｉ）ユーザレベルでの高レベル入力及び出力指令と、データベースと対話するための一連の作動を制御するシステムレベルでの入力及び出力指令との間のインタフェースであって、ある一定のシステムレベル指令に応答して、アトムオブジェクトが、アトムを生成し、各アトムが、データ又はメタデータの指定のフラグメントを含む前記インタフェース、
ｉｉ）システム内の各他のノードとの通信経路を確立するための通信制御、
ｉｉｉ）クエリに関連するがそのノードに存在しないアトムのコピーを選択されたノードから要求するための前記インタフェースからのシステム指令に応答する方法、
ｉｖ）別のノードからのアトムの要求に応答して、クエリを完了するのに必要とされるアトムのみがいずれかの所定の時間にいずれかのトランザクションノードに位置する必要があるように前記要求側ノードへの転送に向けて要求されたアトムを複製するための方法、及び
ｖ）そのノードでのアトムの変化に応答して、そのアトムが常駐する前記システム内の全ての他のノードへの転送に向けてそのアトムを複製するための方法、
を各ノードが含む複数のノードと、
Ｂ）全ての前記ノード間の通信経路を提供するために前記複数のノードに接続された手段と、
Ｃ）永続ストレージに受信されるアトム内の情報の集合が前記データベース内の全ての前記データ及びメタデータを含むように各アトムのコピーを永続ストレージに備えるために前記通信手段に接続された手段と、
を含むことを特徴とするデータベース管理システム。
【請求項２】
前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐する全てのアトムと、該常駐アトムの各々のコピーを有する各ノードの位置とを追跡するカタログアトムを生成することを特徴とする請求項１に記載のデータベース管理システム。
【請求項３】
前記カタログアトムの１つが、システムに接続した各ノード内で複製されるマスターカタログアトムであり、
前記アトムの別のものが、前記インタフェースにより開始されたトランザクションの進行を追跡するための前記データベースのための単一のトランザクションマネージャアトムであり、
前記マスターカタログは、前記トランザクションマネージャアトムの位置を識別する、
ことを特徴とする請求項２に記載のデータベース管理システム。
【請求項４】
前記ユーザレベルでの前記データベースは、レコード及びフィールドを有する名称付きテーブルを含み、かつ少なくとも１つの名称付きスキーマに従って作動し、
前記アトムオブジェクトの他のものが、
ｉ）フィールドのリストを収容する各テーブルのためのテーブルアトム、
ｉｉ）スキーマとそのスキーマに関連する前記名称付きテーブルとの間の対応を確立するスキーマアトム、及び
ｉｉｉ）前記データベースと前記名称付きスキーマの間の対応を確立するデータベースアトム、
を生成する、
ことを特徴とする請求項３に記載のデータベース管理システム。
【請求項５】
前記レーザレベルでの前記データベーステーブルは、フィールドとデータとを収容する識別されたレコードを含み、
他のアトムオブジェクトが、所定の数のデータレコードを含むデータアトムとレコードバージョンを管理するレコード状態アトムとを生成し、
前記レコード状態アトムは、そのレコード状態アトムに割り当てられた管理されたデータアトムと、各レコードバージョンの識別表示と、各レコードバージョンに対するそのバージョンとそのバージョンを含む該データアトムの位置とに関する情報とを識別するアレイを含む、
ことを特徴とする請求項４に記載のデータベース管理システム。
【請求項６】
各データアトムは、該データアトム内の各レコードのアドレス及び長さと該データレコードとを更に含むことを特徴とする請求項５に記載のデータベース管理システム。
【請求項７】
前記レーザレベルでの前記データベーステーブルは、識別されたブロブを含み、
他のアトムオブジェクトが、ブロブと、全ての関連のブロブアトムと該ブロブアトムにおける該ブロブの位置とのリストを含むブロブレコード状態アトムとを収容するブロブアトムを生成する、
ことを特徴とする請求項４に記載のデータベース管理システム。
【請求項８】
各ブロブアトムが、各ブロブのアドレス及び長さと該ブロブとを含むことを特徴とする請求項７に記載のデータベース管理システム。
【請求項９】
各ノードが、更に、
ｉ）システムレベル指令に応答して予め定義されたメッセージを生成して受信するメッセージング手段、及び
ｉｉ）前記メッセージを送信するための前記通信経路の１つを選択するための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項１０】
各ノードが、各通信経路の効率を非同期で試験するための手段を含むことを特徴とする請求項９に記載のデータベース管理システム。
【請求項１１】
前記試験する手段は、ピングメッセージを生成して各通信経路に対してピング時間を判断するためのピング確認応答メッセージを受信するための手段を含むことを特徴とする請求項１０に記載のデータベース管理システム。
【請求項１２】
前記メッセージング手段は、アトムをメッセージにシリアル化してメッセージをアトムに逆シリアル化するための手段を含み、
各メッセージが、非同期に前記選択された通信経路上で送られる、
ことを特徴とする請求項９に記載のデータベース管理システム。
【請求項１３】
メッセージが、メッセージシーケンスを維持する制御を有するプロトコルの下で送られることを特徴とする請求項１２に記載のデータベース管理システム。
【請求項１４】
個々のノードが、アクティブであってシステムに接続することができ、かつシステムから切り離すことができ、前記アトムの１つが、システム内の各アクティブノードを識別してシステムに接続された各ノード内で複製されるマスターカタログアトムであり、
システムが、
ｉ）加入側ノードと前記アクティブノードの選択されたものとの間の接続を確立するための手段、
ｉｉ）前記選択されたノードに接続を求めるための前記加入側ノード内の手段、
ｉｉｉ）前記選択されたノード内でそのマスターカタログアトムを更新し、前記加入側ノードをアクティブノードとして示すための手段、
ｉｖ）前記選択されたノードの識別表示を含むメッセージを前記加入側ノードに転送し、かつシステム及び永続ストレージ内の全ての他のノードに該加入側ノードの利用可能性を示すメッセージをブロードキャストするための該選択されたノード内の手段、
ｖ）前記マスターカタログアトムのコピーを前記選択されたノードに要求することによって前記メッセージに応答するための前記加入側ノード内の手段、及び
ｖｉ）前記選択されたノード内でその更新されたマスターカタログアトムを前記加入側ノードに転送するための手段、
を含むノードがシステムに加入することを可能にするための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項１５】
前記加入側ノードは、前記更新されたマスターカタログアトムの受信に応答して、前記インタフェースからの要求に応答して追加のアトムのコピーを要求するための手段を含むことを特徴とする請求項１４に記載のデータベース管理システム。
【請求項１６】
前記選択されたノードは、前記更新されたマスターカタログの利用可能性を全ての他のノード及び永続ストレージにブロードキャストし、各他のノード及び永続ストレージが、該更新されたマスターカタログのその受信の確認応答を該選択されたノードにするための手段を含むことを特徴とする請求項１４に記載のデータベース管理システム。
【請求項１７】
前記ノードの１つにおけるインタフェースが、新しいアトムの生成を要求する要求を行い、
前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐するアトムを追跡するカタログアトムを生成し、
前記ノードの前記１つは、更に、
ｉ）前記カタログアトム内で該カタログアトムにコンテンツなしのその新しいアトムを作成させ、かつ該新しいアトムをそのアトムのための議長に指定させるための前記インタフェース要求に応答して該新しいアトムを追跡することになる手段、
ｉｉ）前記カタログアトム内でオブジェクト識別表示を前記新しいアトムに割り当てる手段、
ｉｉｉ）前記カタログアトム内で前記新しいアトムの冗長なコピーがないこと及び該新しいアトムが他のノードに対して利用可能でないことを示す該新しいアトムに対するステータスを確立するための手段、
ｉｖ）前記カタログアトム内で前記新しいアトムの存在をシステム内の全ての他の対応するカタログアトムにブロードキャストするための手段、
ｖ）前記新しいアトムをポピュレートし、かつ該新しいアトムをシステム上で利用可能にするための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項１８】
永続ストレージが、前記新しいアトムの前記受信に応答して冗長なコピーの存在を示すためにそのステータスを更新するメッセージを該新しいアトムを有するノードに送るための手段を含むことを特徴とする請求項１７に記載のデータベース管理システム。
【請求項１９】
前記ノードの１つにおけるインタフェースが、他のノードにだけ存在するアトムに対する要求を行い、
前記アトムオブジェクトのうちのある一定のものが、そのノード及び他のノードに常駐するアトムを追跡するカタログアトムを生成し、
システムが、
ｉ）前記インタフェース要求に応答して前記要求側カタログアトム内でその空のアトムを作成するための該インタフェース要求に応答して前記要求されたアトムを追跡することになる手段、
ｉｉ）前記要求側カタログアトム内で最も応答性のあるノードを選択して前記アトムのコピーを該最も応答性のあるノードから要求するための手段、
ｉｉｉ）前記選択されたノード内で前記要求されたアトムのコピーをオブジェクトメッセージで前記要求側ノードに送り、かつ該アトムの利用可能性をそのアトム内の他のノードにブロードキャストするための手段、
ｉｖ）受信したオブジェクトメッセージの有効性を評価し、前記空のアトムをポピュレートし、かつオブジェクト確認応答メッセージを前記選択されたノードに転送するための手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項２０】
前記選択されたノードは、該選択されたノードがそのアトムに関連する他のノードからのメッセージを前記要求側ノードに転送することになる前記要求されたアトムを収容する全てのノードのリレーリストを生成することを特徴とする請求項１９に記載のデータベース管理システム。
【請求項２１】
前記ブロードキャストされたオブジェクト利用可能メッセージを受信する前記他のノードの各々が、オブジェクト確認応答メッセージを前記選択されたノードに送るための手段を含み、該選択されたノードは、前記要求側ノードへのあらゆるその後のメッセージのリレーを終了するために別のノードからの各オブジェクト確認応答メッセージの受信に応答して前記リレーリストを更新するための手段を含むことを特徴とする請求項２０に記載のデータベース管理システム。
【請求項２２】
前記データベースの一貫性を保証するためのトランザクション処理に向けて適合され、
システムが、コミットすべきアトムに関わる第１のノードを含み、少なくとも１つの他のノードが、そのアトムのコピーを含み、
システムが、
ｉ）前記第１のノード内で永続ストレージへの転送のためのトランザクション識別表示を有するプレコミットメッセージを生成するための手段、
ｉｉ）前記トランザクションをコミットし、その後に前記トランザクション識別表示を有するコミットメッセージを全ての前記ノードにブロードキャストするために前記プレコミットメッセージに応答する永続ストレージに関連付けられた手段、
ｉｉｉ）前記識別されたトランザクションを更新するために前記コミットメッセージの受信に応答する前記第１のノード及び少なくとも１つの他のノード内の手段、
を含む、
ことを特徴とする請求項１に記載のデータベース管理システム。
【請求項２３】
ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであって、
Ａ）ユーザにデータベースへのアクセスを提供する少なくとも１つのトランザクションノード及びデータベース全体のアーカイブを維持する少なくとも１つのアーカイブノードであって、各トランザクションノードが、ユーザレベルでの高レベル入力及び出力クエリ指令と該データベースと対話するための一連の作動を制御するシステムレベルでの入力及び出力指令との間のインタフェースを提供するデータベース要求エンジンを含み、ある一定のシステムレベル指令に応答して、アトムオブジェクトが、アトムを生成し、各アトムが、データ又はメタデータの指定のフラグメントを含む前記少なくとも１つのトランザクションノード及び少なくとも１つのアーカイブノード、
Ｂ）全ての前記ノードを相互接続するデータベースシステムネットワーク、
Ｃ）前記ノードの各々においてシステム内の各他のノードとの通信経路を確立するための通信制御、
Ｄ）前記クエリ指令に関連するがそのノードに存在しないアトムのコピーを要求するために前記データベース要求エンジンからのシステム指令に応答する各トランザクションノード内の方法、
Ｅ）各トランザクションノードにおいてクエリ指令を完了するのに必要とされるアトムのみがいずれの所定の時間にもいずれかのトランザクションノードに位置する必要があるように前記要求側ノードへの転送に向けて要求されたアトムを複製するために別のノードからのアトムの要求に応答する方法、及び
Ｆ）各トランザクションノードにおいてそのノードでのアトムの変化に応答して、前記少なくとも１つのアーカイブノードの各々が前記データベース内の全ての前記メタデータ及びデータを含むように、そのアトムのコピーを含むシステム内の全ての他のノードにその変化を複製するための方法、
を含むことを特徴とするデータベース管理システム。
【請求項２４】
前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐する全てのアトムと該常駐アトムの各々のコピーを有する各ノードの位置とを追跡するカタログアトムを生成することを特徴とする請求項２３に記載のデータベース管理システム。
【請求項２５】
前記カタログアトムの１つは、システムに接続された各ノード内で複製されるマスターカタログアトムであり、
前記アトムの別のものが、前記インタフェースにより開始されたトランザクションの進行を追跡するための前記データベースのための単一のトランザクションマネージャアトムであり、
前記マスターカタログは、前記トランザクションマネージャアトムの位置を識別する、
ことを特徴とする請求項２４に記載のデータベース管理システム。
【請求項２６】
前記ユーザレベルでの前記データベースは、レコード及びフィールドを有する名称付きテーブルを含み、かつ少なくとも１つの名称付きスキーマに従って作動し、
前記アトムオブジェクトの他のものが、
ｉ）フィールドのリストを収容する各テーブルのためのテーブルアトム、
ｉｉ）スキーマとそのスキーマに関連する前記名称付きテーブルとの間の対応を確立するスキーマアトム、及び
ｉｉｉ）前記データベースと前記名称付きスキーマの間の対応を確立するデータベースアトム、
を生成する、
ことを特徴とする請求項２５に記載のデータベース管理システム。
【請求項２７】
前記レーザレベルでの前記データベーステーブルは、フィールドとデータとを収容する識別されたレコードを含み、
他のアトムオブジェクトが、所定の数のデータレコードを含むデータアトムとレコードバージョンを管理するレコード状態アトムとを生成し、
前記レコード状態アトムは、そのレコード状態アトムに割り当てられた前記管理されたデータアトムと、各レコードバージョンの識別表示と、各レコードバージョンに対するそのバージョン及びそのバージョンを含む該データアトムの位置に関する情報とを識別するアレイを含む、
ことを特徴とする請求項２６に記載のデータベース管理システム。
【請求項２８】
各データアトムは、該データアトム内の各レコードのアドレス及び長さと該データレコードとを更に含むことを特徴とする請求項２７に記載のデータベース管理システム。
【請求項２９】
前記レーザレベルでの前記データベーステーブルは、識別されたブロブを含み、
他のアトムオブジェクトが、ブロブと、全ての関連のブロブアトムと該ブロブアトムにおける該ブロブの位置とのリストを含むブロブレコード状態アトムとを収容するブロブアトムを生成する、
ことを特徴とする請求項２６に記載のデータベース管理システム。
【請求項３０】
各ブロブアトムが、各ブロブのアドレス及び長さと該ブロブとを含むことを特徴とする請求項２９に記載のデータベース管理システム。
【請求項３１】
各ノードが、更に、
ｉ）システムレベル指令に応答して予め定義されたメッセージを生成して受信するメッセージング手段、及び
ｉｉ）前記メッセージを送信するための前記通信経路の１つを選択するための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項３２】
各ノードが、各通信経路の効率を非同期で試験するための手段を含むことを特徴とする請求項３１に記載のデータベース管理システム。
【請求項３３】
前記試験する手段は、ピングメッセージを生成して各通信経路に対してピング時間を判断するためのピング確認応答メッセージを受信するための手段を含むことを特徴とする請求項３２に記載のデータベース管理システム。
【請求項３４】
前記メッセージング手段は、アトムをメッセージにシリアル化して該メッセージをアトムに逆シリアル化するための手段を含み、
各メッセージが、非同期に前記選択された通信経路上で送られる、
ことを特徴とする請求項３１に記載のデータベース管理システム。
【請求項３５】
メッセージが、メッセージシーケンスを維持する制御を有するプロトコルの下で送られることを特徴とする請求項３４に記載のデータベース管理システム。
【請求項３６】
個々のノードが、アクティブであってシステムに接続することができ、かつシステムから切り離すことができ、前記アトムの１つが、システム内の各アクティブノードを識別してシステムに接続された各ノード内で複製されるマスターカタログアトムであり、
システムが、
ｉ）加入側トランザクションノードと前記アクティブノードの選択されたものとの間の接続を確立するための手段、
ｉｉ）前記選択されたノードにシステムへの接続を求めるための前記加入側トランザクションノード内の手段、
ｉｉｉ）前記選択されたノード内でそのマスターカタログアトムを更新し、前記加入側トランザクションノードをアクティブノードとして示すための手段、
ｉｖ）前記選択されたノードの識別表示を含むメッセージを前記加入側トランザクションノードに転送し、かつシステム内の全ての他のノードに該加入側トランザクションノードの利用可能性を示すメッセージをブロードキャストするための該選択されたノード内の手段、
ｖ）前記マスターカタログアトムのコピーを前記選択されたノードに要求することによって前記メッセージに応答するための前記加入側トランザクションノード内の手段、及び
ｖｉ）前記選択されたノード内でその更新されたマスターカタログアトムを前記加入側トランザクションノードに転送するための手段、
を含むノードがシステムに加入することを可能にするための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項３７】
前記加入側トランザクションノードは、前記更新されたマスターカタログアトムの受信に応答してそのデータベース要求エンジンからのシステム指令に応答して追加のアトムのコピーを要求するための手段を含むことを特徴とする請求項３６に記載のデータベース管理システム。
【請求項３８】
前記選択されたノードは、前記更新されたマスターカタログの利用可能性を全ての他のノードにブロードキャストし、各他のノードが、該選択されたノードに該更新されたマスターカタログのその受信を確認応答するための手段を含むことを特徴とする請求項３６に記載のデータベース管理システム。
【請求項３９】
前記トランザクションノードの１つにおける前記データベース要求エンジンは、新しいアトムの生成を要求する要求を行い、
前記アトムオブジェクトのある一定のものが、そのノードに常駐するアトムを追跡するカタログアトムを生成し、
前記トランザクションノードは、更に、
ｉ）前記カタログアトム内で前記カタログアトムにコンテンツなしのその新しいアトムを作成させ、かつ該新しいアトムをそのアトムのための議長として指定するために前記データベース要求エンジン要求に応答して該新しいアトムを追跡するための手段、
ｉｉ）前記カタログアトム内でオブジェクト識別表示を前記新しいアトムに割り当てるための手段、
ｉｉｉ）前記カタログアトム内で前記新しいアトムの冗長なコピーがないこと及び該新しいアトムが他のノードに対して利用可能ではないことを示す該新しいアトムのステータスを確立するための手段、
ｉｖ）前記カタログアトム内で前記新しいアトムの存在をシステム内の全ての他の対応するカタログアトムにブロードキャストするための手段、
ｖ）前記新しいアトムをポピュレートし、かつ該新しいアトムをシステム内の他のノードに利用可能にするための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項４０】
各アーカイブノード内で前記新しいアトムの前記受信に応答して冗長なコピーの存在を示すそのステータスを更新するメッセージを該新しいアトムに送るための手段を更に含むことを特徴とする請求項３９に記載のデータベース管理システム。
【請求項４１】
１つのトランザクションノード内のデータベース要求エンジンが、他のノードにだけ存在するアトムを要求し、
前記アトムオブジェクトのある一定のものが、そのノード及び他のノードに常駐するアトムを追跡するカタログアトムを生成し、
システムが、
ｉ）前記要求側カタログアトム内の前記要求に応答してその空のアトムを作成するために前記要求されたアトムを追跡することになる手段、
ｉｉ）前記要求側カタログアトム内で最も応答性のあるノードを選択して前記アトムのコピーを該最も応答性のあるノードから要求するための手段、
ｉｉｉ）前記選択されたノード内で前記要求されたアトムのコピーをオブジェクトメッセージで前記要求側ノードに送り、かつ該アトムの利用可能性を該アトムが常駐する他のノードにブロードキャストするための手段、
ｉｖ）受信したオブジェクトメッセージの有効性を評価し、前記空のアトムをポピュレートし、かつオブジェクト確認応答メッセージを前記選択されたノードに転送するための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【請求項４２】
前記選択されたノードは、該選択されたノードがそのアトムに関連する他のノードからのメッセージを前記要求側ノードに転送することになる前記要求されたアトムを収容する全てのノードのリレーリストを生成することを特徴とする請求項４１に記載のデータベース管理システム。
【請求項４３】
前記ブロードキャストされたオブジェクト利用可能メッセージを受信する前記他のノードの各々が、オブジェクト確認応答メッセージを前記選択されたノードに送るための手段を含み、該選択されたノードは、前記要求側ノードへのあらゆるその後のメッセージのリレーを終了するために別のノードからの各オブジェクト確認応答メッセージの受信に応答して前記リレーリストを更新するための手段を含むことを特徴とする請求項４２に記載のデータベース管理システム。
【請求項４４】
トランザクション処理中に前記データベースの一貫性を保証するように適合されており、
システムが、コミットすべきトランザクションに関わる第１のノードを含み、アーカイブノードを含む少なくとも１つの他のノードが、そのアトムのコピーを含み、
システムが、
ｉ）前記第１のノード内でアーカイブノードへの転送のためにトランザクション識別表示を有するプレコミットメッセージを生成するための手段、
ｉｉ）前記プレコミットメッセージに応答して前記トランザクションをコミットし、その後に前記トランザクション識別表示を有するコミットメッセージを全ての前記ノードにブロードキャストするためのアーカイブノードに関連付けられた手段、及び
ｉｉｉ）前記第１のノード及び少なくとも１つの他のノード内で前記コミットメッセージの受信に応答して前記識別されたトランザクションを更新するための手段、
を含む、
ことを特徴とする請求項２３に記載のデータベース管理システム。
【国際調査報告】
2013522778.tif 000027
2013522778.tif 000028