JP5801375B2 - データベース管理システム - Google Patents

データベース管理システム Download PDF

Info

Publication number
JP5801375B2
JP5801375B2 JP2013500238A JP2013500238A JP5801375B2 JP 5801375 B2 JP5801375 B2 JP 5801375B2 JP 2013500238 A JP2013500238 A JP 2013500238A JP 2013500238 A JP2013500238 A JP 2013500238A JP 5801375 B2 JP5801375 B2 JP 5801375B2
Authority
JP
Japan
Prior art keywords
atom
node
transaction
message
database
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.)
Active
Application number
JP2013500238A
Other languages
English (en)
Other versions
JP2013522778A (ja
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 JP2013522778A publication Critical patent/JP2013522778A/ja
Application granted granted Critical
Publication of JP5801375B2 publication Critical patent/JP5801375B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Description

本発明は、一般的にデータベース管理システムに関する。より具体的には、本発明は、アトム性、パフォーマンス、及び拡張性により特徴付けられるマルチユーザ、エラスティック、オンデマンド、分散型関係データベース管理システムを実施する方法及び装置に関する。
従来的に、メッセージを記憶して読み取るためのデータベースの使用は、広範な市販のアプリケーションの重要なツールとして登場している。初期には、データベースシステムは、複数のユーザを有する単一のサーバ配置上で作動するものが多かった。しかし、データベースアーキテクチャの基本的な性質が変化することを要求する様々なファクタが生じている。第1のファクタとして、データベースストレージ要件が極めて増大した。第2に、このようなデータベースにアクセスしようとするユーザ数も多くなった。第3に、最少の更新で済む比較的安定したデータを検索するためのデータベースの使用が、トランザクション処理に取って代わられた。
トランザクションは、その全体で完了すべきである作業単位である。単一のトランザクションは、複数のデータ処理を含む場合がある。一例として、単一のトランザクションは、読取操作、次に、書込操作を含む場合がある。近年、関係データベースが、増大し続けるトランザクション処理速度をサポートすることを可能にすることに有意な努力が向けられている。
データベースは、現在、ACID特性、すなわち、アトム性、一貫性、独立性、及び永続性を定義する規格により判断される。アトム性は、全てのトランザクションタスクが全体で完了することを保証するものである。一貫性は、有効なデータのみが確実にデータベースに書き込まれるようにするものである。独立性は、他の作動がトランザクション中に中間状態であるデータにアクセスし、すなわち、「見る」ことが確実にできないようにするものである。永続性は、トランザクションが問題なく処理されると元に戻すことが確実にできないようにするものである。
一貫性は、特に、2人又はそれよりも多くのユーザが共有された揮発性データへの同時アクセスを求めることができるマルチユーザシステムにおいては重要である。最初のマルチユーザシステムは、ロック作動を用いて一貫性を保証していた。ロックは、排他的、すなわち、書込みロックとするか、又は非排他的な読取ロックとすることができ、かつ個々のレコード又はページに適用することができた。しかし、データベースが大規模化する時に、かつトランザクション速度が増大する時に、ロックを管理するオーバヘッドが有意なものになり、一部の場合には、非常に大きなものとなった。
マルチバージョン同時実行制御(MVCC)は、同時実行を保証する代替処理である。MVCCは、複雑なデータベースに関するロックより有効とすることができる。MVCCでは、タイムスタンプ又は増加式のトランザクション識別(ID)を使用してレコードの異なるバージョンをシリアル化する。各バージョンにより、トランザクションではタイムスタンプ又はIDに先行するオブジェクトの最新版を読み取ることができる。この制御方法で、例えば、レコードの変更は、変更がコミットされるまで他のユーザにより見られはしない。MVCCは、他の付随するオーバヘッドに関するロックを排除して、読取操作が書込操作を遮断することができないシステムを確立する。
ACID試験に合格することに加えて、現在、ユーザへの連続的な利用可能性に関する要件がある。一部のデータベースシステムは、1つのコンピュータシステムをトランザクション処理専用に、別のコンピュータシステムを意志決定サポート、及び他の報告処理専用にする。それらは、他の機能を同時にサポートすることができるように相互に接続される。データベースが大規模化及び複雑化する時に、既存のデータ処理システムはより強力なデータ処理システムにより取って代わられる。成長に対応する別の手法では、1つのマシンが全ての再現されたマシンを同期状態に保つ「ヘッド」マシンと指定された再現システムを用いる。仮にヘッドマシンが故障した場合に、処理は、その機能を別の再現されたマシンに割り当てる。異なる再現されたマシンが、特定のユーザが利用可能である。この手法は、全てのマシンが同じ機能を有するべきであるので拡張性はない。
別の手法として、複数の自律データベースシステムを様々な個々のデータベースを相互接続するコンピュータネットワークを有する単一の「連合した」データベースに一体化することができる。連合したデータベースでは、ミドルウェアは、構成データベースを同期状態に維持すべきである。この「ミドルウェア」は、非常に複雑になる可能性がある。データベースの大規模化に伴って、ミドルウェアを操作するのに必要なリソースは、システムパフォーマンス全体が劣化するほどの大きなオーバヘッドを課す可能性がある。
「分割」は、論理データベース又はその構成要素が異なる独立した部分に分割されるデータベースを実行する別の手法である。分散型データベース管理システムにおいて、各パーティションは、複数ノード上に広げることができる。特定のノードでのユーザは、パーティション上でローカルトランザクションを実行することができる。分割は、より小さいデータベースを形成することにより、又は1つの表のみの選択した要素を分割することによって実行することができる。
分割には2つの一般的な手法がある。水平分割において、「シャーディング」とも呼ばれる異なる横列が、異なるテーブル及び異なるサーバ内に配置される。通常、それらは、範囲により異なるテーブルに分割される様々な郵便番号又は名字のような特定の共通性を有する。例えば、第1のデータベースは、A〜Mの範囲の名字に対して全てのレコードを含むことができ、第2のデータベースは、1つの形態の水平分割であるN〜Zの範囲のシャーディングにおいて、別々のサーバ上でデータベースの横列を配置する。シャーディングでは確かに各テーブル内の横列数が減少し、検索パフォーマンスが増大する。しかし、シャーディングでは、シャーディングをよって実行し難くするアプリケーションレベルでハッシュコードが使用される。それはまた、2相コミットも組み込む。シャーディングの複雑性は、シャードを定義する基準が極めて良好に定義されるので、シャーディングを特定の用途に適切なものにする。
垂直分割では、水平分割より少ない縦列でテーブルを作成し、かつテーブルにわたって分割縦列を作成する。連合したデータベースと同様に、垂直分割では、ミドルウェアは、適切なパーティションに特定のフィールドのあらゆる要求を経路指定する方法を決定すべきである。更に、これらのシステムは、実行することが複雑である2相コミットシーケンスを使用して作動する。
「分散メモリ」アーキテクチャとして公知である更に別の手法では、各ノードは、独立しておりかつ自給自足型である。分散メモリアーキテクチャは、単に廉価なコンピュータの形態でノードを追加することによって上方に拡張することができるのでウェブ開発に一般的である。この手法は、更新がトランザクション処理に関して発生するであろうよりは頻繁ではない傾向があるデータウェアハウジング用途において一般的である。しかし、接合の処理は、異なるパーティション又はマシンからの大きなデータセットにわたって非常に複雑である。
一部のデータベースシステムは、「分散型」システムと呼ばれる。分散型システムの1つの例は、「クラスター」及び2つの通信経路を組み込むものである。高速「インターネット」経路は、クラスターの間でデータを搬送する。高速専用通信経路は、ロック管理のような様々な制御機能に必要である。この手法は、データベースの冗長性及び利用可能性の問題を解決するが、ロック管理により、上述のようにシステムパフォーマンスが制限される可能性がある。
「全て共有型」システムにおいて、非超高速通信により、システムは、同期状態に保たれる。しかし、ロック管理では、有意な帯域幅リソースが必要である可能性がある。これを回避するために、このようなシステムは、ポイントツーポイント通信チャンネル及び非常に高度なディスクコントローラを組み込んでいる。
まとめると、上述の従来技術のシステムは、データベースシステムの公知の要件の一部を満足するが全部ではない。必要とされるものは、アトム性、一貫性、独立性、及び永続性のACID特性を満たす拡張性のあるデータベースアーキテクチャである。更に必要とされるものは、トランザクション処理を提供し、かつ広い地理的領域にわたって作動可能であり、専用高速通信経路を必要とせずに「インターネット」で作動するデータベースシステムである。
従って、本発明の目的は、エラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の別の目的は、耐故障性であるエラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の更に別の目的は、高度の利用可能性を有するエラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の更に別の目的は、プラットフォーム独立型であるエラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の別の目的は、アトミック性、一貫性、独立性、及び永続性を有するエラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の更に別の目的は、専用高速通信経路を必要とせずに「インターネット」で作動するエラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の更に別の目的は、トランザクション処理を提供し、かつ広い地理的領域にわたる実施に適合されたエラスティックなオンデマンド分散型データ処理システムを提供することである。
本発明の一態様により、ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムは、複数のノードとその間の通信経路を有する永続ストレージを含む。各ノードは、ユーザレベルでの高レベル入力及び出力指令とデータベースと対話する一連の作動を制御するシステムレベルでの入力及び出力指令間のインタフェースを含み、特定のシステムレベル指令に応答して、アトムオブジェクトは、アトムを生成し、各アトムは、1組のアトムの全てのインスタンスが、データベース内の全てのメタデータ及びデータを集合的に定義するようにデータ又はメタデータの指定のフラグメントを含む。各ノードは、システム内の各々の他のノードとの通信経路を確立する通信制御と、クエリに関連するがそのノードに存在しないアトムのコピーを選択されたコピーを要求するインタフェースからのシステム指令に応答する方法と、クエリを完了するのに必要とされるアトムのみがいずれの所定の時間に、もいずれかのトランザクションノードに位置する必要があるように要求側ノードへの転送に向けて要求されたアトムを複製する別のノードからのアトムの要求に応答する方法と、そのアトムが常駐するシステム内の全ての他のノードへの転送に向けてそのアトムを複製するそのノードでのアトムの変化に応答する方法とを更に含む。永続ストレージは、データベース内の全てのデータ及びメタデータを集合的に含むアトムの集合を含む。
本発明の別の態様によれば、ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであり、このシステムは、ユーザにデータベースへのアクセスを供給する少なくとも1つのトランザクションノード及びデータベース全体のアーカイブを維持する少なくとも1つのアーカイブノードを含む。各トランザクションノードは、ユーザレベルでの高レベル入力及び出力クエリ指令とデータベースと対話する一連の作動を制御するシステムレベルでの入力及び出力指令間のインタフェースになるデータベース要求エンジンを含む。特定のシステムレベル指令に応答して、アトムオブジェクトは、アトムを生成する。各アトムは、1組のアトムの全てのインスタンスが、データベース内の全てのメタデータ及びデータを集合的に定義するようにデータ又はメタデータの指定のフラグメントを含む。データベースシステムネットワークは、全てのノードを相互接続する。ノードの各々内の通信制御は、システム内の各々の他のノードとの通信経路を確立する。各トランザクションノード内の方法は、クエリ指令に関連するがそのノードに存在しないアトムのコピーを要求するデータベース要求エンジンからのシステム指令に応答する。各ノード内の別の方法は、クエリ指令を完了するのに必要とされるアトムのみがいずれの所定の時間に、もいずれかのトランザクションノードに位置する必要があるように要求側ノードへの転送に向けて要求されたアトムを複製する別のノードからのアトムの要求に応答する。各トランザクションノード内の別の方法は、そのアトムのコピーを含むシステム内の全ての他のノードにその変化を複製するそのノードでのアトムの変化に応答する。
本発明の更に別の態様によれば、関連するトランザクションを処理する複数のトランザクションノードからアクセスすべきであるテーブルに編成されたデータレコードで構成された論理データベースのデータベース管理システムであり、データベースは、フラグメントに構文解析され、各フラグメントは、シリアル化されたメッセージとしてのデータベース管理システムにおける転送に向けて、かつ逆シリアル化されたメッセージとしての記憶に向けて論理データベースに関連するメタデータ及び/又はデータの一部を記憶する。システムは、逆シリアル化された形で全てのフラグメントを永続ストレージに記憶し、それによってデータデータベース全体の単一のストアを形成する少なくとも1つのアーカイブノードを含む。各々のトランザクションノードは、クエリに関連するフラグメントを識別する一連の低レベル指令を確立することによってユーザからのクエリに応答し、かつ特定のフラグメントが何らかの他のノードで又はアーカイブノードでのみ存在することができるように、処理中のクエリに関連する既存のフラグメントのコピーのみを取得することによって低レベル指令に応答する。各トランザクションノードは、ピアツーピアに基づいて他のノード内のフラグメントに変更が行われるように、かつあらゆるトランザクションノードが、そのトランザクションノードを通じてデータベースにアクセスするユーザにより行われているクエリに関連するフラグメントのみを含むようにあらゆる変更されたフラグメントを少なくとも1つのアーカイブノード及びそのフラグメントのコピーが常駐する各トランザクションノードに複製する。
特許請求の範囲では、特に、本発明の主題を指摘し、かつ明確に主張する。本発明の様々な目的、利点、及び新しい特徴は、同様の参照番号が同様の部分を指す添付図面と関連して以下の詳細説明を読むことによって更に完全に明らかであろう。
相互に接続したトランザクションノード及びアーカイブノードと共に本発明を組み込むエラスティックな拡張性のあるオンデマンド分散型データ処理システムの一実施形態の概略図である。 トランザクションノードの編成を示す図である。 アーカイブノードの編成を示す図である。 本発明を実行する際に有用であり、かつトランザクションノードにおいていずれかの所定の時間に登場する可能性がある図2に示すアトムクラスによって生成された「アトム」オブジェクトの論理構成を示す図である。 本発明を実行する際に有用であり、かつトランザクションノードにおいていずれかの所定の時間に登場する可能性がある図3に示すアトムクラスによって生成された「アトム」オブジェクトの論理構成を示す図である。 マスターカタログアトム内の情報を示す図である。 トランザクションマネージャアトム内の情報を示す図である。 データベースアトム内の情報を示す図である。 スキーマアトム内の情報を示す図である。 テーブルアトム内の情報を示す図である。 テーブルカタログアトム内の情報を示す図である。 インデックスアトム内の情報を示す図である。 レコード状態アトム内の情報を示す図である。 データアトム内の情報を示す図である。 ブロブ状態アトム内の情報を示す図である。 ブロブアトム内の情報を示す図である。 図1のデータベースシステムのトランザクションノード及びアーカイブノードの間に転送される例示的な非同期メッセージの構文を示す図である。 情報が図1のデータベースシステムの処理とアーカイブのノードの間に転送される様々なメッセージタイプを示す図である。 ノードが図1のデータベースシステムに加入する方法を理解する際に有用な流れ図である。 ノードオブジェクト内の情報を示す図である。 本発明によるノードがアトムを作成する方法を理解する際に有用な流れ図である。 固有のアトム識別表示が図20の方法中に割り当てられる方法を理解する際に有用な流れ図である。 1つのノードが別のノードからアトムのコピーを取得する方法を理解する際に有用な流れ図である。 本発明がトランザクションをコミットする方法を理解する際に有用な流れ図である。
図1は、本発明を組み込む複数のデータ処理ノードを有するエラスティックな拡張性のあるオンデマンド分散型データベースシステム30の一実施形態を示している。ノードN1〜N6は、データベースへのユーザアプリケーションアクセスをもたらす「トランザクションノード」であり、ノードA1及びA2は、各アーカイブノードでデータベース全体のディスクアーカイブを維持するように機能する「アーカイブノード」である。アーカイブノードは通常データベース全体を記憶するが、単一のトランザクションノードは、その時間にそのノードで実行中のトランザクションをサポートするのに必要であると判断するデータベースのその部分だけを含む。
図1の各ノードは、データベースシステムネットワーク31を通じてシステム30内の各々の他のノードと直接に通信することができる。例えば、ノードN1は、ノードN2〜N6、A1及びA2の各々と通信経路を確立することができる。あらゆる2つノード間の通信は、シリアル化されたメッセージによるものである。好ましい実施形態では、メッセージングを非同期に行って、システムによって使用される帯域幅を最大化し、それによって時機を逃さずかつ迅速に様々な作動を提供する。一般的に、データベースシステムネットワーク31は、広帯域幅、低待ち時間経路(例えば、イーサネット(登録商標)ネットワーク)及び広帯域幅、高待ち時間経路(例えば、WANネットワーク)の組合せで作動する。各ノードは、低待ち時間経路の使用を速度が重視される通信(例えば、アトムのフェッチ)に制限する機能を有する。高待ち時間経路は、非クリティカル通信(例えば、テーブルの情報を更新する要求)に使用することができる。同じくかつ好ましくは、本発明のデータ処理ネットワークは、送信制御プロトコル(TCP)のようなメッセージングプロトコルを組込み、かつ各ノードが確実にメッセージが他のノードによりそれに送られたのと同じシーケンスでメッセージを処理に適応させる。
図2は、データベースシステムネットワーク31及び様々なエンドユーザ33に連結する代表的なトランザクションノード32を示している。トランザクションノード32は、ネットワークインタフェース35を通じてデータベースシステムネットワーク31と、ユーザネットワークインタフェース37を通じて様々なユーザと通信する中心処理システム(CP)34を含む。中心処理システム34は、本発明の好ましい実施形態を実行するデータベース管理プログラムのコピーを含むRAMメモリ38とも対話する。このプログラムは、リモートインタフェース40と、データベース要求エンジン41と、クラス又はオブジェクトのセット42とをもたらすように機能する。
データベース要求エンジン41は、トランザクションノード上に存在するにすぎず、レーザレベルでの高レベル入力及び出力指令とシステムレベルでのシステムレベル入力及び出力指令間のインタフェースである。一般的には、データベース要求エンジンは、SQL問い合わせのようなユーザクエリをその組42の様々なクラス又はオブジェクトにより解釈される指令に構文解析、コンパイル、及び最適化する。
本発明の説明の目的上、セットクラス/オブジェクトセット42は、「アトムクラス」の部分集合43、「メッセージクラス」の部分集合44、及び「ヘルパークラス」の部分集合45に分割される。これらのクラスの更なる詳細に対しては後述する。
明らかなようにかつ本発明により、いずれの所定の時間にも、トランザクションノードは、その時にアクティブなユーザアプリケーションに関連する総合データベースの部分を含むに過ぎない。更に、本発明の様々な特徴は、使用中のデータベースの全ての部分がランダムアクセスメモリ38内に常駐することを可能にするものである。このシステムの作動中にトランザクションノードにディスクストアのような補助ストアを設ける必要はない。
図3を参照すると、図1のアーカイブノードA1又はA2のような各アーカイブノード50は、データベースシステムネットワーク31にも接続している。しかし、図2内のトランザクションノード32に関連するエンドユーザ33の代わりに、アーカイブノードは、永続ストレージ51、一般的にディスクベースのストレージシステム又はキーバリューストアにのみ接続される。アーカイブノード50は、I/Oチャンネル52を通じて永続ストレージ51と、ネットワークインタフェース55を通じてデータベースシステムネットワーク31と通信する中心処理システム54を含む。中心処理システム54は、1組のクラス又はオブジェクト62を含むRAMメモリ57とも対話する。図2のトランザクションノード32と同様に、図3のクラス/オブジェクトセット62は、「アトムクラス」のセット63、「メッセージクラス」のセット64、及び「ヘルパークラス」のセット65を含む。
本発明の好ましい実施形態は、オブジェクト指向プログラミング(OOP)を使用し、当業技術で公知のように、図2及び図3に示すようなクラス及びサブクラスは、そのクラス又はサブクラスの「インスタンス」又はオブジェクトを生成することができる方法、データ構造、及び処理を定義する。「インスタンス」は、「継承」及び/又は「多相性」を使用して生成することができる。具体的に開示する実施形態上でオブジェクト指向プログラミング又は変形を使用しない実施例が可能であることは、当業者には明らかであろう。
本発明をここでいくつかの相で説明する。「アトム」の節では、それぞれ図2及び図3のアトムクラス43及び63によって生成されたオブジェクトの階層及び機能を定義する。「メッセージ」節では、それぞれ図2及び図3のメッセージクラス44及び64によって生成される可能性があるトランザクションノード及びアーカイブノード間の通信を行う1組のメッセージを説明する。「方法」の節では、データベース管理に関して基本操作を説明する。「実施例」の節では、データベース要求エンジン41への特定のデータベース問合せに応答して本発明の目的をもたらすアトム、メッセージ、及び方法の対話を説明する。
アトム
上述のように、図2のアトムクラス43及び図3の63の各々は、「アトム」を生成する。より具体的には、アトムクラスは、1つ又はそれよりも多くの「アトムタイプ」又は「アトムオブジェクト」を定義する。各「アトムタイプ」又は「アトムオブジェクト」は、それ自体の「インスタンス」、すなわち、「アトム」を生成する。各特定のアトムオブジェクトの目的のより詳細な理解すると明らかなように、各「アトム」は、データベース情報の特定のフラグメントを含む。一部のアトムは、データベースメタデータの一部を含み、他のアトムは、データレコードを含み、更に他のアトムは、他のアトムタイプを作成及び追跡するカタログとして機能する。一部の「アトムタイプ」は、全てのノードに複製される1つのアトムをインスタンス化することができるに過ぎない。他の「アトムタイプ」は、必要に応じて他のノードに複製される複数のアトムをインスタンス化することができる。
アトムは、ある一定の特性を有する。トランザクションノードにおいて、アトムは、非永続メモリ内にのみ、及びアトムの有効なメモリ常駐フォーマットをもたらす特定のアトムタイプをポピュレートした逆シリアル化されたメッセージの形態でのみ存在する。各アトムは、コンテンツをシリアル化されたメッセージに符号化するための手段とアトムのコンテンツを検索するためにシリアル化されたメッセージを復号するための手段とを有する。このようなシリアル化されたメッセージは、後述するいくつかの作動に関連して使用される。
アトムを複製するノードから送信された各シリアル化されたメッセージは、添付のノード識別表示及びそのノードの最新のトランザクションコミットシーケンス番号と共にそのアトムのコンテンツを含む。アーカイブノードがそのシリアル化されたメッセージを受信した時に、メッセージを逆シリアル化し、ノードリスト及びコミットシーケンス番号を除去した後に、メッセージ(すなわち、アトム)の残りのコンテンツを永続ストレージ内に配置する。
本発明によりアトムには、いくつかの規則が適用される。それらの規則の理由及び含意は、より明らかである。第1に、各アトムは、図1のデータベース処理ネットワーク30においてどこでもそのアトムの確実な識別表示を行う固有の識別表示を有するべきである。第2に、あらゆるアトムは、同時に冗長性を維持するために2つのノードに存在すべきであるが、単一のアトムは、作成された後に、かつアーカイブノードがコピーを要求する前に存在することができることを除く。第3に、トランザクションノードは、要求があって初めてアトムを取り込み。第4に、変更が1つのノード内のアトムに行われる度に、そのノードは、「ピアツーピア」で、すなわち、全てのアーカイブノード及びその同じアトムを含むトランザクションノードだけにその変更されたアトムを複製すべきである。
より詳細に後述する「ゴミ収集」処理は、アーカイブノード及びトランザクションノードに行われる可能性がある。処理は、トランザクションノード及びアーカイブノードから非アクティブアトムを除去する。従って、トランザクションノードは、そのノードでのランダムアクセスメモリ内のユーザアプリケーションにその時に現在関連するアトムを記憶することができる。従って、データベース要求エンジン41は、データベース全体をローカルと「見て」、マルチノード環境で、かつそのノードでデータベースの完全なコピーなしで作動していることに気づいていない。アーカイブノードは、ディスクにシリアル化された後にアトムのコンテンツをパージする選択肢を有し、従って、記憶に必要とされるメモリが小形化される。アーカイブノードがこのようなアトムの複製メッセージを受信した場合に、アーカイブノードは、複製中のアトムからの情報を適用する前にディスクストアから情報をフェッチすべきである。
この一般的な背景で、各アトムタイプを「論理的」又は機能的レベルでここに説明する。この情報により、本発明の作動に対して更に説明する内容に関連して、当業者は、オブジェクト指向プログラミングに基づく実施例を含む様々な実施例のいずれかにおいて本発明を製造及び使用することができる。
図4A及び図4Bは、データベースエンジン41、及びいずれかの所定の時間にトランザクションノード32内に常駐する可能性がある代表的な1組のアトムを示している。この例において、トランザクションノードは、マスターカタログアトム70、トランザクションマネージャアトム71、データベースアトム72、スキーマアトム73、テーブルアトム74、及びテーブルカタログアトム75に対応する。データベース当たりにマスターカタログアトム70が1つのみ、トランザクションマネージャアトム71が1つ、データベースアトム72が1つある。トランザクションマネージャアトム71、データベースアトム72、及びスキーマアトム73は、データベース要求エンジン41が新しいデータベースを作成する時に作成される。
図4Aを参照すると、マスターカタログアトム70は、図1のデータベースシステム30内のトランザクションノード及びアーカイブノードの状態を追跡する。マスターカタログアトム70は、トランザクションマネージャアトム71、データベースアトム72、各スキーマアトム73、各々の対応する1組のテーブルアトム74及びテーブルカタログアトム75、及びシーケンスIDマネージャ82を作成及びモニタするアクティブインデックスと考えることができる。
テーブルカタログアトム75は、アクティブインデックスとして作用し、かつ単一のテーブルに関連するインデックスアトム76、レコード状態アトム77、データアトム78、ブロブ状態アトム80、及びブロブアトム81を作成及びモニタする。すなわち、各テーブルにテーブルカタログアトム75が1つある。
図4Bは、異なるアトムタイプの対話及び管理を理解する際に有用である。このコンテクストにおいて、マスターカタログアトム70もテーブルカタログアトム75も管理機能を実行しない。残りのアトムに対して、データベースアトム70が、各スキーマアトム73を管理する。各スキーマアトム73は、各々の関連のテーブルアトム74及びシーケンスIDマネージャアトム82を管理する。各テーブルアトム74は、対応するテーブルカタログアトム75、インデックスアトム76、レコード状態アトム77、データアトム78、ブロブ状態アトム80、及びブロブアトム87を管理する。
図4Bを依然として参照すると、データベース要求エンジン41は、マスターカタログアトム70、トランザクションマネージャアトム71、データベースアトム72、各スキーマアトム73、各テーブルアトム74、及びシーケンスIDマネージャ82と通信する。データベース要求エンジン41は、SQLのような高レベル言語のコンパイラとして作用する。コンパイラとして、クエリを構文解析、コンパイル、及び最適化して、データベース情報の様々なフラグメントの形成に対してアトムからメタデータ及びデータを取得する。
各アトムは、特定の共通の要素とタイプに独特である他の要素とを有する。図5を参照すると、マスターカタログアトム70は、共通の要素70A〜70Iを含む。要素70Aは、アトムの固有の識別表示である。全てのノードに複製されるマスターカタログアトムのインスタンスが1つしかないので、マスターカタログアトムID 70Aには固定した数字、一般的に「1」定数が与えられる。一般的に、ポインタ70B及び70Cにより、それぞれ、マスターカタログアトム及び作成カタログアトムが識別される。マスターカタログアトムに対して、両方のポインタは、マスターカタログアトム自体を識別する。
各アトムは、議長を有するべきである。議長は、後述するような機能を実行する。要素70Dは、そのアトムの議長が常駐するそのノードのポインタである。
アトムのコピーがあらゆるトランザクションノードで変更される度に、新しい変更番号を受信する。要素70Eは、その変更番号を記録する。
ノードがアトムを別のノードに要求する時はいつでも、要求側ノードが他のトランザクションノードに分らない合間がある。要素70Fは、要求が完了されるまで供給側ノードがそのアトムを含む全ての他のノードから要求側ノードにメッセージを中継すべきである全てのノードのリストである。
データベースシステムの作動は、サイクルにも分割される。サイクル基準要素70Gは、アトムへの最終アクセスのサイクル番号を供給する。要素70Hは、アトムを含む全てのアクティブノードのリストである。要素701は、いくつかの状態インジケータを含む。
図5を依然として参照すると、グローバルノードIDSエントリ70Jは、システム内の各アクティブノードの固有の識別子を割り当てるIDマネージャを含む。公知のように、このような識別子は、長い文字ストリングである。ローカルノードIDSエントリ70Kは、システムに取り付けることができるノードの総数までの数字の範囲を含む。これらのエントリを併せて、2種類の識別表示間の対応が得られる。ローカルノードIDの使用により、効率が増大する。
トランザクションノードが図1のデータベースシステムに加入する時に、接続マネージャ70Lがこの処理を達成する。トランザクションノードがデータベースシステムに加入することを可能にする特定的な実施例に対しては後述する。加入側ノードは、未処理ノード状態エントリ70Mを使用して、応答側ノードからの更に別の通信を受信するまでその応答側ノードのグローバルアドレスがないことを示している。データベースUUIエントリ70Nは、データベースの全域的な固有の識別表示を含む。
70Pでのエントリは、マスターカタログアトム70がアクティブインデックスとして作用する全てのアトムを連結するので重要である。上述のように、これらには、データベースアトム72及びスキーマアトム73、テーブルアトム74、及びテーブルカタログアトム75の各々がある。
パスワードエントリ70Qは、データベースへの接続を認証するための手段を表している。実際のエントリ及びソフトウエアバージョンエントリ70R及び70Sにより、システムは、より新しいバージョンのソフトウエアがインストールされた時に下位互換性で作動させることができる。実際のソフトウエアエントリ70Rにより、その時に使用中であるソフトウエアバージョン、ソフトウエアバージョンエントリ70S、最新のインストールされたバージョンに対応する番号が識別される。それによって個々のノードをより新しいバージョンに更新することができ、他のノードを更新せずに済み、かつデータベースは、全てのノードによるアクセスに向けて閉じられたりしない。
図5を依然として参照すると、マスターカタログアトム70は、トランザクションマネージャアトム71のポインタ70Tと、構成オブジェクトのポインタ70Uと、ゴミ収集スレッドのポインタ70Vと、ピングスレッドのポインタ70Wとも含む。疎通スレッドは、ノードで定期的に及び他の作動とは独立して作動する。各々の他のノードの「疎通を確認」して対応する経路の通信効率の判断において使用することができる情報を提供する。例えば、図1のノードN1がノードN2又はN5と通信する選択肢を有する場合に、ノードN1は、その通信に向けてノードN2及びN5への通信経路のうち最も効率的なもの選択においてピング情報を使用することができる。他の選択処理を置換又は追加することができる。
図6を参照すると、各データベースにトランザクションマネージャアトム71が1つあり、マスターカタログアトム70を作成する同じ処理中に作成される。トランザクションマネージャアトム71は、データベース要求エンジン41からのデータベース指令に応答してデータベーストランザクションを作成、追跡、及び終了する。トランザクションマネージャアトム71は、マスターカタログアトム内の同様の要素に対応する要素71A〜71Iを含む。しかし、要素71Aは、トランザクションマネージャアトム71の識別表示である。要素71B及び71Cは、両方ともマスターカタログアトム70を指示する。
IDマネージャ71Jは、固有のトランザクションシーケンス識別表示を提供し、かつアクティブトランザクションリスト71Kと、コミットされたトランザクションリスト71Lと、失敗したトランザクションリスト71Mとを維持する。要素71Nは、コミットシーケンス情報を記憶する。IDマネージャ71Jは、各トランザクションの開始時にトランザクションIDを割り当てる。各トランザクションIDは、固有のものであるが、必ずしも連続したものというわけではない。ローカルトランザクションマネージャアトムは、トランザクションがコミットされた時にコミットシーケンス番号を要素71Nに割り当てる。シーケンス番号は、連続したものであり、各々は、トランザクションを要求したノード独特のものである。トランザクション遷移イベントカウンタ71Pは、トランザクションの開始及びトランザクションのコミット成功のような各トランザクション中に行われる個別のイベントを識別する。このようなカウンタは、同じ情報を伴う複数のトランザクションが重なり合う時に有用である。
図7を参照すると、データベースアトム72は、マスターカタログアトム70及びトランザクションマネージャアトム71が作成されると同時に作成される。データベースアトム72は、スキーマアトム73の各々を識別する。データベースアトム72は、新しいユーザがデータベースに加入しようとする時に認証処理に関わることができる。認証レベルに関する他のデータを含むことができる。
基本的に、データベースアトム72は、図5の同様の要素に対応する要素72A〜72Iを含む。要素72Aは、データベースアトム識別表示である。ポインタ72B及び72Cの各々により、マスターカタログアトム70が識別される。スキーマ名−スキーマIDレジストリ72Jは、スキーマ名をスキーマアトム識別表示に関連付けるものである。
図8を参照すると、スキーマアトム73は、そのスキーマに対してテーブルアトムを作成及び追跡する。データベースアトム72は、複数のスキーマアトムを管理することができ、各スキーマアトムは、複数のテーブルアトムと対話することができる。スキーマアトム73は、図5の要素70A〜70Iに対応する要素73A〜73Iを含む。要素73Aは、固有のスキーマアトム識別表示73Aであり、要素73B及び73Cは、マスターカタログアトム70のポインタである。テーブルは、スキーマ内に固有の名を有する。テーブル名−テーブルアトムIDレジストリ73Jは、各テーブル名と対応するテーブルアトムの対応を示している。各スキーマシーケンスは、名称を有する。シーケンス名称−シーケンスIDマネージャレジストリ73Kは、シーケンス名と、各スキーマアトムに関連付けられた図4A及び4BのシーケンスIDマネージャ82のような対応するシーケンスIDマネージャとの間の関係を提供する。
図9は、フィールド、フォーマット、インデックス、及びタイプに関連するメタデータを組込み、かつそのテーブルに対してインデックスアトム76、レコード状態アトム77、及びブロブ状態アトム80の各々を管理するテーブルアトム74の論理図を示している。テーブルアトム74は、テーブル内のデータを作成及び追跡もする。テーブルアトム74は、図5の要素70A〜70Iに対応する要素74A〜74Iを含む。要素74Aは、固有のテーブルアトム識別表示を含み、要素74B及び74Cは、両方ともマスターカタログアトムを指示する。ポインタ74Jにより、対応するテーブルカタログアトムが識別される。要素74Kは、テーブルの全てのフィールドのリストを収容する。
各テーブルアトムは、いくつかのIDマネージャを有する。ポインタ74Lは、各フィールドに固有の識別表示を供給するIDマネージャを指示する。ポインタ74M、74N、74P及び74Qにより、それぞれ、インデックスアトム、データアトム、ブロブアトム、及びサブタイプに識別表示を割り当てる別々のIDマネージャが識別される。要素74Rは、既存のサブタイプのリストである。アレイ74S及び74Tは、それぞれ、レコード状態アトム及びブロブ状態アトムの位置を示している。
図10をここで参照すると、各テーブルアトムにテーブルカタログアトムが1つある。各テーブルカタログアトム75は、テーブルアトムが作成された時に作成される。テーブルカタログアトムは、インデックスと、レコード状態と、データと、ブロブ状態と、ブロブアトムとを含む1つのテーブルに独特なアトムを作成及び追跡する。各テーブルカタログアトム75は、図5の要素70A〜70Iに対応する要素75A〜75Iを含む。要素75Aは、マスターカタログアトムにより割り当てられた固有のテーブルカタログアトム識別表示である。要素75B及び75Cは、マスターカタログアトム70を指示する。IDマネージャ75Jは、インデックス、レコードの状態、データ、ブロブ状態、及びブロブアトムの各々に対して固有のアトム識別表示を提供する。リスト75Kにより、対応するテーブルアトムに関連する全てのアトムが識別される。要素75L内のポインタにより、対応するテーブルアトムに関連するローカルノードでの各アトムの位置が識別される。一連のリスト75Mにより、各アトムに対してそのアトムの複製を伴うノードのリストが識別される。ビットマップ75Nは、アトムがアーカイブノード内にある時に他のオブジェクト及びディレクトリを識別する有利な手段になる。
図11を参照すると、テーブル内の各インデックスにインデックスアトム76が1つあり、テーブル当たりに複数のインデックスアトムがある場合がある。各々のインデックスアトムは、図5の要素70A〜70Iに対応する要素76A〜76Iを含む。要素76Aは、対応するテーブルカタログアトムにより割り当てられる固有のインデックスアトム識別表示である。ポインタ76B及び76Cにより、それぞれ、マスターカタログアトム及びテーブルカタログアトムが識別される。要素76Jは、従来の割り出し機能をもたらすインデックスノードのバイナリツリーを含む。要素76Kは、インデックスレベルを含む。このようなインデックス構造及びインデックスオペレーションは、当業者に公知である。
図12を参照すると、レコード状態アトム77は、単一のテーブル内の一定の範囲のレコード番号に対してレコードバージョン及び状態を管理する。従って、特定のテーブルアトムは、複数のレコード状態アトムを管理することができる。各々のレコード状態アトムは、図5の要素70A〜70Iに対応する要素77A〜77Iを含む。要素77Aは、作成テーブルカタログアトムが割り当てるレコード状態アトムIDを含む。ポインタ77B及び77Cにより、それぞれ、マスターカタログアトム及びテーブルカタログアトムが識別される。要素77Jは、レコード状態アトム77により管理される全てのデータアトムの位置を識別するアレイである。要素77Kは、「ベースレコード「のレコード番号を含む。すなわち、各データアトムは、複数のレコードを記憶する。要素77は、対応するテーブルアトムのポインタである。
本発明が対象とするデータベースアプリケーションにおいて、複数のユーザが、同じレコードの複数のバージョンを生成することができる。本発明の好ましい実施形態は、マルチバージョン同時実行制御(MVCC)を使用して、レコード又は他のオブジェクトのいくつかのバージョンが同時にデータベースに存在することを可能にすることによってトランザクションが確実にデータベースを決して待つ必要がないようにする。その結果、各レコード状態アトム77は、各レコードバージョンに関するメタデータを含む。エントリ77Mは、ゴミ収集において有用である各々のバージョンを有するレコードの位置を識別するビットマップである。
レコード状態アトム77は、レコードの各バージョン77Nに対して、バージョンを生成したトランザクションを識別するトランザクションID77Pを含む。フォーマットバージョンエントリ77Qにより、レコードが挿入された時に存在していたテーブルサブタイプのバージョン番号が識別される。このフォーマットによりレコードの物理的順序が識別され、レコードバージョンが作成された時に使用中であったデータベースプログラムのレコードが属するサブタイプが識別される。要素77Rは、レコードバージョンシーケンス番号を含み、要素77Sは、レコードの次に古い又は前のバージョンの位置を含む。データアトムアレイ77Jのインデックス77T及びベースレコード識別表示77Kを併せて、レコードバージョンを有するデータアトム内の実際のスロット77Uのアドレスになる。
図13は、図5の要素70A〜70Iに対応する要素78A〜78Iを有するデータアトム78を示している。データアトム78において、要素78Aは、テーブルカタログアトムにより割り当てられたデータアトム識別表示78Aである。要素78B及び78Cは、それぞれ、マスターカタログアトム及び対応するテーブルカタログアトムのポインタである。IDマネージャ78Jは、データアトム78内の各レコードに対してレコードスロット識別表示を割り当てる。要素78Kにより、データアトム78内の各レコードに対してアドレス及びそのレコードの長さが識別される。要素78Cは、データ記録及びそのバージョンを表している。
図14をここで参照すると、データベースは、「ブロブレコード」も記憶する。「ブロブレコード」は、一般的にデータベース内の単一の構成要素として記憶された二進データの集合である。ブロブレコードは、バージョン内には存在しない。ブロブ状態アトムは、図5の70A〜70I要素に対応する要素80A〜80Iを含む。要素80Aは、ブロブ状態アトム固有アトム識別表示を有する。要素80B及び80Cは、それぞれ、マスターカタログアトム及び対応するテーブルカタログアトムのポインタである。リスト80Jにより、単一のブロブ状態アトム80により管理される全てのブロブアトムが識別される。エントリ80Kは、基部ブロブレコードの識別表示を提供する。要素80Lは、対応するテーブルアトムを指示する。各ブロブレコードに対して、ブロブ状態アトムは、ブロブアトムにインデックス80Mを含む。要素80Nにより、ブロブレコードに対してブロブアトムのスロットが識別される。
図15は、図5の要素70A〜70Iに対応する要素81A〜81Iを有するブロブアトム81を示している。要素81Aは、テーブルカタログアトムにより割り当てられたアトム識別表示である。要素81B及び81Cは、それぞれ、マスターカタログアトム及び対応するテーブルカタログアトムのポインタである。IDマネージャ81Jは、ブロブスロット識別表示をブロブアトム81内の各ブロブに割り当てる。要素81Kにより、ブロブアトム78内の各ブロブに対して、アドレス及び長さが識別される。要素81Lは、ブロブアトムに割り当てられた全てのブロブレコードを表している。
要約すると、各アトムは、データベースのフラグメントのみとの関係を有する。例えば、データベースアトム72は、データベースのスキーマを識別するメタデータを含む。各スキーマアトム73は、そのスキーマに関連する全てのテーブルを識別するメタデータを含む。各テーブルに対して、テーブルアトム74及び対応するテーブルカタログアトム75は、フィールド及び特性の識別表示のような情報を含むテーブルに関するメタデータを示す。レコード状態アトムは、一群のレコードに関するメタデータを含む。データアトムは、これらのレコード及び様々なバージョンを含むスロットのポインタと共に各データレコードに関する情報を含む。ブロブ状態及びブロブアトムは、ブロブレコードに関する類似の情報を含む。
メッセージ
上述のように、あらゆる2つノード間の通信は、メッセージングシーケンスを維持する制御でTCP又は別のプロトコルを使用して非同期で送信されるシリアル化されたメッセージによるものである。図16は、可変長ヘッダ91と可変長本文92とを含む典型的なメッセージ90の基本的な構文を示している。ヘッダ91は、メッセージ及びその機能を指定するメッセージ識別子コード93を含む。本発明では異なるノードが異なるソフトウエアバージョンを用いて作動する場合があるシナリオを仮定しているので、ヘッダ91は、メッセージを作成したソフトウエアバージョンの識別表示94も含む。ヘッダ内の残りの要素には、送信側(すなわち、図5のマスターカタログアトムから)のローカル識別表示95、メッセージの宛先、すなわち、カタログアトム(例えば、図10のテーブルカタログID75A)の情報96、及びアトム識別表示97(例えば、図12内のレコード状態ID77A)がある。この情報から、受信者ノードは、メッセージを逆シリアル化、復号、及び処理することができる。
17は、本発明の特定的な実施形態に対して図16の構文を有する1組のメッセージを示している。各々は、これから説明するような特殊機能を実行する。
先に簡単に説明したように、メッセージが送られることになっている時に、ノードが異なれば通信経路も異なる。例えば、1つのノードが、要求側ノードとして、アトムを取得する必要がある場合に、そのアトムの複製は、複数の他のノードに位置することができる。この実施形態では、「ピング」により、最良の経路対応ノードを選択するのに有用な選択情報が得られる。ピングでは、公知のように、「ピング」指令が宛先に到達する時間及び確認応答メッセージが受信される時間を判断する。本発明のこの実施形態では、各ノードは、定期的にヘルパークラスを使用して、ピングメッセージ110を接続以前の他のノードの各々に送る。各受信側ノードは、ヘルパークラスを使用して、ピング時間を含むピング応答メッセージ111を戻す。各ノードは、図8に関して後述するノードオブジェクトでこれらのメッセージを送受信する時間に関するこの情報を蓄積する。1つのノードが複数のノードの1つにメッセージを送る準備をする時に、送信側ノードは、そのメッセージの受信側ノードとしてノードの1つを選択するために蓄積されたピングデータを含むがこれらに限定されないファクタを解析する。
次の組のメッセージは、図1のデータベースシステム30への新しいノードの接続又は以前非アクティブであったノードの接続に関わっているものである。このようなノード、例えば、トランザクションノードN2がデータベースシステム30に接続したいと思った時に、図19に関して詳細に後述する接続処理を開始する。図17を参照すると、その処理がメッセージを受信するためのアクティブノードを識別した状態で、加入側ノードは、接続メッセージ112を選択したノードに送る。選択したノードは、データベースシステム30内の全ての他の接続したノードに歓迎メッセージ113及び新ノードメッセージ114を戻す。他の接続したノードの各々は、固有の歓迎メッセージ113を加入側ノードに送信する。このメッセージシーケンスが完了した時に、加入側ノードは、様々なアトムを取得するために更に歩を進めることができる。
アーカイブノードは、彼らが別のノードに同期している時にアクティブモード又は同期モードで作動させることができる。アーカイブノード内のヘルパークラスは、ノード状態メッセージ115を送信して、そのアーカイブノードの状態変化に対して全ての他のノードの注意を喚起する。
次の組のメッセージは、ノードが要求側ノードとして別のノードからのアトムのコピーを検索する時に関わっているものである。例えば、ノードが図1のデータベースシステム30に加入した後に、一般的にマスターカタログアトムのコピーを要求する。この処理に対して、図20及び図21の説明に関連して先に詳細に説明する。
図17を依然として参照すると、要求側ノードは、目的要求メッセージ116を選択したノードに出し、選択されたノードは、要求されたアトムと共に一般的にオブジェクトメッセージ117を戻す。選択されたノードは、そのアトムと共にオブジェクト利用可能メッセージ118を全ての他のノードに送る。選択されたノードからオブジェクト利用可能メッセージ118を受信する各ノードは、オブジェクト確認応答済みメッセージ119を選択されたノードに戻す。選択されたノードは、選択されたノードが全てのオブジェクト確認応答済みメッセージ119を受信した後にオブジェクト完了メッセージ120ノードを要求側ノードに送る。
一部の状況では、選択されたノードは、選択されたノードが要求されたアトムを落したと知らせるオブジェクト利用不能メッセージ121を送る。選択されたノードからのバウンスオブジェクトメッセージは、要求されたアトムがマスターカタログアトム又はテーブルカタログアトムの1つにないことを示している。これは、更新トランザクションが進行中であり、選択されたノードがオブジェクト要求メッセージ116に応答しない時に発生する場合があり、その理由は、ゴミ収集処理によりオブジェクト要求メッセージを受信する前にそのアトムが収集されたからである。応答として、要求側トランザクションノードは、アトムでデータベースシステム内の別のノードを選択することができる。
図1及び図4A及び図4Bのデータベース要求エンジン41は、登録オブジェクトメッセージ123又は登録抹消オブジェクトメッセージ124を定期的に生成する可能性がある。これらのメッセージは、データベース及びスキーマアトムのようなレジストリを含むアトムを対象とする。オブジェクト削除メッセージ125は、そのノードでのユーザが、テーブルのような何らかの品目を削除する指令を出した時にノードから送られる。
ローカルノードが更新又は修正された時はいつでも、変更番号が増加する。あらゆる複製メッセージは、そのアトムのローカル変更番号を含む。あらゆるアトムは、各ノードに対して最新の変更番号を追跡する。アーカイブノードが修正されたアトムのコピーを受信した時に、アトムの変更番号をコピーして、変更番号を消去した後にアトムをディスクにシリアル化する。変更が行われた場合に、変更番号は、ゼロにはならない。アーカイブノードは、オブジェクト書込済みメッセージ126を送り、変更番号は、各ノードに書き込まれる。各受信側ノードは、自身の変更番号をメッセージ内の変更番号と比較する。次に、ノードは、アトムがアーカイブされてゴミ収集の潜在的な候補であることを説明するためにアトムの状態を更新することができる。
上述のように、各アトムは、固有のアイデンティティがなければならない。特定のアトムタイプ(例えば、新しいテーブルアトム)の第1のアトムが作成された時に、作成トランザクションノードは、そのテーブルアトムの議長と指定される。「議長の地位」を取り分割する規則に対しては後ほど説明する。トランザクションノードは、新しいアトムタイプを作成する必要がある時はいつでも、利用可能な識別表示を有していない場合にID要求メッセージ127を議長に送る。議長は、一般的に、自由な識別表示値の割り当てによる少なくとも1つの固有の識別表示のブロックを含むID委任メッセージ128を戻す。この処理は、図20の処理に関してより詳細に説明する。
図4A及び図4Bを参照すると、テーブルアトム74は、いくつかのメッセージのいずれかを送ることができる。データベース要求エンジン41が新しいフィールドを追加する処理を開始した場合に、その対応するトランザクションノードでのテーブルアトムは、新しい構造を生成して、そのテーブルアトムを含む全ての他のノードの変更を複製するテーブルフィールド追加済みメッセージ129を送る。トランザクションノードがテーブル構成を変更するフィールド、サブタイプ、又はフィールド特性を更新した場合に、そのノードは、テーブル構成メッセージ130を出す。ノードが新しいレコードの状態又はブロブ状態アトムを作成する必要がある時はいつでも、テーブル要求記録メッセージ131が生成される。議長だけが、このアトムを作成することができ、議長は、これが行われた時にテーブル記録オブジェクトメッセージ132をブロードキャストする。
トランザクションノードがテーブルに新しいレコードを挿入する度に、それは、テーブルレコードメッセージ133を生成する。インデックス付きのフィールドがテーブルに追加される時のような新しいインデックスを作成することが必要になった時はいつでも、作成テーブルアトムは、新しいテーブルアトムを複製する。この時に、インデックスが、書込専用インデックスに設定される。関連する全ての関連の処理が完了した後に、ノードは、テーブルインデックス追加済みメッセージ134を送る。
テーブルアトムがブロブのブロブ状態アトムを作成する時はいつでも、テーブルアトムは、テーブルブロブオブジェクトメッセージ135を生成する。テーブルブロブメッセージ136は、新しいブロブが作成されたことを示している。
タイプ及びサブタイプを利用するデータベースにおいて、図1のデータベース要求エンジン41は、テーブルアトムに新しいテーブル−タイプ識別表示を割り当てさせる指令を生成する。これが行われた時に、テーブルタイプメッセージ137が、同様のテーブルアトムを有する全てのノードに複製される。
テーブルレコード抹消メッセージ138は、特定のレコード状態アトムに関するレコード番号を示している。テーブルゴミ収集メッセージ139は、そのテーブル内のレコードが以前のバージョン又は他の基準の異常に長いチェーンを含むと判断された時に、テーブルアトムに対して議長によって生成される。従って、「未使用」アトムは、データが「ない状態」である。
図4A及び図4Bのレコード状態アトム77は、いくつかの専用メッセージも生成する。特定のレコードを更新することが必要になった場合に、本発明のデータベース管理システムは、そのレコードの新しいバージョンを作成する。図17を再び参照すると、対応するレコード状態アトムは、そのアトムがその特定のレコードを更新する許可を求めるために議長に誘導されるレコード更新要求メッセージ140を生成する。議長は、そのレコードを更新する許可を付与又は拒否する記録更新応答メッセージ141を生成することによって応答する。議長が許可を付与した場合に、要求側レコード状態アトムは、更新を実行して、アトムの新しいバージョンを有する記録更新メッセージ142をそのアトムのコピーと共に各ノードに送る。
データアトムは、レコード及びそのバージョンの何らかの最大数まで記憶する。対応するレコード状態アトムは、管理するデータアトムのサイズをモニタする。レコード状態アトムが管理されたデータアトムはそのサイズを超えたと判断する場合に、新しいデータアトムを生成して、記録データオブジェクトメッセージ143によってその新しいデータアトムを複製する。
レコード状態アトムは、いずれの新しいレコードバージョンも複製する記録レコードメッセージ144を生成する。定期的に、テーブルアトム議長は、レコード状態アトムが最古アクティブトランザクションより古いレコードバージョンを識別する処理を開始する。これが行われた時に、会長のレコード状態アトムは、上述の以前のレコードバージョンをその後のゴミ収集処理中に削除することを可能にする記録プルーンメッセージ145を送信する。トランザクションをロールバックすることが必要になるこの条件が生じた場合に、レコード状態アトムは、バックアウトレコードを更新するバックアウトレコードメッセージ146を生成する。
1組のインデックス専用メッセージもある。公知のように、インデックスは、最適な最大寸法を有し、インデックスがそのサイズを超えた場合には、インデックスは分割すべきである。本発明により、議長のみが、インデックスアトムを分割することができる。議長は、一方的に又はそのアトムの別のコピーからのインデックス分割要求メッセージ147に応答してこれを行うことができる。議長が分割を引き起こした時に、議長は、分割されたインデックスを含むインデックス分割メッセージ148を生成する。分割の後に、議長は、分割後に最初のインデックスアトムを切り捨てるインデックスプルーンメッセージ149を送る。インデックスノードがインデックスに追加される度に、新しいインデックスに関するインデックスキー、レコード識別表示、及び他の情報を含むインデックスノード追加済みメッセージが生成される。インデックスが完全にポピュレートされ、従って、検索作動中に使用準備ができている時に、テーブルインデックス待機メッセージ151が生成される。上述のように、テーブルインデックスを追加することにより、書込専用インデックスでありかつ読取不可能であるインデックスアトムが生成される。テーブルインデックス待機メッセージ151は、このような書込専用インデックスを可読にする。
ブロブ状態アトムは、ブロブズブロブメッセージ152を生成することにより、ブロブアトムのスロットを識別する。
データレコードメッセージ153は、スロット番号及びレコード長を含む。それは、データレコードも含む。
トランザクションの状態が変わる時に、特定のトランザクションノードのトランザクションマネージャアトム71は、トランザクション状態メッセージ154を生成する。これらは、トランザクションの現状がアクティブ状態か、プリコミット状態か、コミット状態又はロールバック状態かを示している。ある一定の状況の下で、1つのトランザクションに関連する要求が別のノード上の別のトランザクションにより遮断される可能性がある。その場合に、トランザクションマネージャアトムは、トランザクション遮断メッセージ155を受信する。トランザクションがデッドロックになり、ロールバックすべきである場合に、デッドロックを引き起こすノードに関連するトランザクションマネージャアトムは、トランザクションをロールバックさせるトランザクションデッドロックメッセージ156を生成する。
いずれのテーブルカタログアトム上のアーカイブノードマスターカタログ又はアトムも、最後に書かれた時間を要求することができる。これは、要求側ノードが要求に書込時間メッセージ158を送る時に行われる。そのメッセージの受信者は、次に、書込時間メッセージ159でそれらの要求された時間を戻す。
上記メッセージは、本発明を組み込むデータベース管理システムを維持するのに必要とされる様々な手順を適切に処理することができるセットを構成する。明らかなように、各メッセージは、ヘッダに最少のオーバヘッドを有する。各メッセージは、適切に短いものとすることができる。TCP又は他のメッセージングプロトコルと共に使用される時に、メッセージは、連続して送られなければならず、いずれの所定のノードでも、受信され次第、それらは、それらが異なるノードによって送られたものであったとしてもそれと同じシーケンスで取り扱うべきである。
方法
ここで、本発明の作動の様々な態様に関連する一部の基本的な方法を説明することは、本発明の更に理解するのに役立つであろう。各々の変形は、当業者には明らかであると考えられる。
図18は、ノードがネットワークに加入した時に図1のデータベースシステム30内の異なるノードにおいては行われる作動の流れ図である。この説明の目的上、図1のノード5がデータベースシステムに加入することになり、すなわち、それは、加入側トランザクションノード170であると指定されたと仮定する。第1の処理として、加入側トランザクションノード170は、段階171を使用して選択されたノードでTCP接続を確立する。基本的に、加入側トランザクションノード170は、データベースを識別する固定された位置にメッセージを送る。示されていないが当業技術で公知のように、接続ブローカーは、データベースシステムへのアクセスを拒否又は許可することによってこの要求に応答する。接続ブローカーがアクセスを許可した場合に、選択されたノード172として、トランザクションノードNlのようなノードを選択する。次に、接続ブローカーは、選択されたノード172のポート番号によるなどの名称で加入側トランザクションノード170にメッセージを送る。図18は、群173として、データベースシステム内の全ての他のアクティブトランザクションノード及びアーカイブノードも示している。
段階171で接続が確立された状態で、加入側トランザクションノード170は、段階174を使用して接続メッセージを選択されたノード172に送る。選択されたノード172は、段階175で、接続マネージャでマスターカタログアトムを更新し、ローカルノードIDを加入側トランザクションノード170に割り当てて、そのノードオブジェクトでそのノードをローカルノードのアレイに追加することによって接続メッセージに応答する。例を図19に示している。
図19は、図18の段階175に関連して説明したようなノードオブジェクトを示している。それは、ノードのソケットのポインタ400Aと、ノードでのマスターカタログアトムのポインタ400Bと、マスターカタログアトム内の接続マネージャのポインタ400Cとを収容する。ポインタ400Dにより、着信メッセージを聴取するのに使用されるスレッドが識別され、ポインタ400Eにより、メッセージを受信するソケットバッファが識別される。メッセージ聴取者は、メッセージを待ち、メッセージタイプを判断し、次に、メッセージを処理して完了させる。
ノードオブジェクト400は、全てのアトムと同様に、このノードが聴取しているノードのグローバルノードID400F及びローカルノードID400Gを含む。要素400Hは、ノードから送られたものを待っているメッセージの待ち行列のポインタである。要素400I及び400Jは、ローカルポート及びリモートポートの識別表示を含む。要素400Kは、リモートノードで作動するソフトウエアのバージョン番号を含む。ノードタイプ要素400Lは、リモートノードがトランザクションノードか、同期処理を受けているアーカイブノードか、又はオンラインアーカイブノードかを示している。
要素400Mは、ローカルノードの名称を含み、要素400Nは、リモートノードの名称を含む。要素400Pは、処理中の現在のメッセージのポインタである。要素400Q及び400Rは、最終ピング作動及びピング時間の時間を識別する。上述のように、各ノードは、そのノードで開始されたトランザクションの各コミット作動に応答して連続したコミットシーケンス番号を生成する。要素400Sは、この数を含む。要素400Tは、このノードオブジェクトがこのノードのノードオブジェクトであるか否かを示している。
図18を再び参照すると、段階176で、選択されたノード172は、歓迎メッセージをグローバルノードIDを含む加入側トランザクションノード170に送る。次に、選択されたノードは、段階177において、新ノードメッセージを全ての他のトランザクションノード及びアーカイブノードの群173にブロードキャストする。
群173内の各ノードは、段階180で、グローバルIDを記録し、加入側トランザクションノードのローカルIDを割り当てて、それぞれのマスターカタログアトム内の全ての接続したノードのローカルリストを更新することによって新ノードメッセージに応答する。各々は、次に、段階181を使用して、歓迎メッセージを加入側トランザクションノード170に送る。この処理が完了すると、加入側トランザクションノード170は、群173内の選択されたノード172及び全てのノードを含む全てのアクティブノードの完全なリストを有する。
段階182で加入側トランザクションノード170が歓迎メッセージを選択されたノードから受信する時に、それは、マスターカタログアトムのコピーを要求する選択されたノード172にオブジェクト要求メッセージを送る(段階183)。選択されたノード172がマスターカタログアトム内の情報の様々な項目を更新した後に、選択されたノードは、段階184を実行し、加入側トランザクションノード170に送られるオブジェクトメッセージ内のマスターカタログアトムをシリアル化し、オブジェクト利用可能メッセージをシステム内の全ての他のノードにブロードキャストする。従って、各ノード内のマスターカタログアトムは、更新及び同期化される。
オブジェクトメッセージの受信を待つことなく、加入側トランザクションノードは、選択されたノード172からのデータベースアトム及びトランザクションマネージャアトムのコピーを検索する段階185の処理を始めることができる。
段階186で、オブジェクト利用可能メッセージを受信する各々の他のノードは、オブジェクト確認応答済みメッセージを選択されたノードに戻すことによって応答する。
加入側ノード内のデータベース要求エンジンは、このシーケンスを開始する。従って、図18の方法が完了された時に、加入側トランザクションノード170は、データベースシステムに接続され、図4A及び図4Bに示すように、マスターカタログアトム70、トランザクションマネージャアトム71及びデータベースアトム72のコピーを含む。加入側トランザクションノード170は、次に、必要に応じて他のアトムのコピーを作成又は取得する。
一部の作動中に、トランザクションノードは新しいテーブルを作成することができ、新しいテーブルアトムの作成が必要になる。図20は、その処理190を開示するものであり、ノードAは、要求側ノードである、アトムXは、新しいアトムYを要求して管理することになるアトムである。新しいテーブルアトムYの作成に対して、アトムXは、スキーマアトムになり、ローカルカタログZは、マスターカタログアトムになる。段階191は、アトムYのインスタンスを取得する要求の準備機能を表している。アトムが変更される度に、変更番号が割り当てられ、初期値は、一般的に「0」である。
段階192で、ローカルカタログZはコンテンツなしのアトムYのそのインスタンスを作成して、ローカルノードをアトムYの議長に指定する、次に、処理193により、ローカルカタログZは、オブジェクトIDを新しいアトムYに割り当てることができる。このような処理の詳細を図21に関して示すと共に説明する。
次に、ローカルカタログZは、その変更が行われることを可能にする排他的ロックを設定する。ロックが所定の位置にある間、ローカルカタログZは、新しいアトムYの状態を「ダーティな」状態に、及び「非オープン」状態に設定する。「ダーティな」状態は、新しいアトムYがアーカイブに複製されなかったことを示している。「非オープン」状態は、新しいアトムYは他のノードがまだ利用可能でないことを示している。段階195で、ローカルカタログZは自己更新して、次に、排他的ロックを解除する。段階196で、カタログZは、アトムYを識別するオブジェクト利用可能メッセージをトランザクションノード及びアーカイブノード内のカタログZの全ての他のインスタンスにブロードキャストする。
段階197で、アトムXは、新しいアトムYの管理アトムとしてアトムYのインスタンスをポピュレートし、アトムYの状態を新しいアトムを複製することができることを示す「オープン」に設定する。その後しばらく、アーカイブノードは、永続ストレージへの新しいアトムのコピーを保存することになる。すなわち、アーカイブノードは、アトムYのコピーを要求することによってオブジェクト利用可能メッセージの受信に応答し、それによって冗長性をもたらすことになる。これが完了した時に、アーカイブノードからオブジェクト確認応答済みメッセージの受信により「ダーティな」状態を変更し、この変更は、次に、アトムYのコピーを有する全ての他のノードに反映される。
図20の割当て処理193及び同様の割当て処理は、オブジェクトIDを割り当てる本発明の作動の様々な段階で用いている。図21は、より詳細にこの割当て処理を示している。具体的には、カタログアトムがオブジェクトIDを割り当てたいと思った時に、段階200で、カタログアトムが利用可能なローカルIDを有するか否かを判断する。有する場合には、制御は、要求に応答して利用可能なIDを割り当てる段階201に移る。ローカルIDが利用可能でない場合には、制御は、段階202に移って、このノードでのカタログアトムが「議長」状態を有するか否かを判断する。ローカルIDが利用可能である場合に、議長は、直接に利用可能なIDを識別する権限を有し、制御は、段階201に移る。
思い出されるように、特定のアトムに対して少なくとも1つの他のノードが存在する時に、各アトムは、要求されたアトムのコピーを含むノードのリストを収容する。そのアトムが図20の処理に従って作成された後にこれがアトムの第1の要求であった場合に、リスト上の第1のノード内の対応するカタログは、議長である。段階203は、ノードを選択して議長を識別する処理を表している。選択処理に対して、最初にトランザクションノードで通信を確立することが好ましい。段階204は、議長へのID要求メッセージの送信を表している。
段階205で議長がID要求メッセージを受信した時に、利用可能なID番号のブロックを取得する(段階206)。議長は、利用可能なID番号のこのブロックのサイトとして要求を行うトランザクションノードを識別する(段階207)。段階210で、次に、議長は、ID委任メッセージを要求側ノードに送る。段階211で要求側ノードが議長からID委任メッセージを受信した時に、は段階212でID番号のブロックを記憶し、次に、段階201での割り当てるに向けて第1の利用可能なIDを選択する。再び図20を参照すると、その関連では、処理193は、段階202から段階201に移って直接に段階200に移り、その理由は、議長は、図20で段階192で指定されるからである。
図4A及び図4Bのデータベースエンジン41がアトムを要求する時はいつでも、図22の応答220が処理される。例えば、要求側ノード221内のデータベース要求エンジン41が他のノード223を有するデータベース内の選択されたノード222からのアトムY(例えば、テーブルアトム)のコピーを求めると仮定する。データベース要求エンジン41がその要求が行われた時に、段階224では、アトムYが要求側ノード221に存在するか否かを判断する。存在する場合に、段階225では、要求されたアトムが存在するので処理を終了する。存在しない場合に、制御は、段階226に移って、ローカルカタログZは、アトムYの空のインスタンスを作成してアトムYが「未ポピュレート状態」であると宣言する。データベースエンジン41がテーブルアトム74を要求している場合に、マスターカタログアトム70は、この段階を実行する。段階230では、次に、上述の選択処理を用いて選択されたノード222を識別する。優先項目は、選択されたノード222として最も応答性があるアーカイブノードを選択する前にトランザクションノードのいずれかを選択することである。
段階231において、要求側ノード221は、アトムYのオブジェクト要求メッセージを選択されたノード222に送る。これに応答して、選択されたノード222は段階232を用いて、ノード及びシーケンス番号を有するシリアル化された形の要求されたアトムYと共にメッセージをオブジェクトに送る。
同時に、選択されたノード222は、オブジェクト利用可能メッセージを全ての他のノード223にブロードキャストする。アトムYのコピーを有する全ての他のノードのリレーリストを作成する。処理のこの時点で、他のノードは、要求側ノード内のアトムYとは直接には通信せず、その理由は、そのアトムのコピーにメッセージを要求側ノードに送るべきであることに気づいていないからである。従って、他のノードのいずれかがアトムYを複製した時に、選択されたノード222は、メッセージを要求側ノード221に中継する。
要求側ノード221が選択されたノード222からオブジェクトメッセージを受信した時に、段階233でメッセージの接近容易性解析を提供する。メッセージが現在のアトムを含む場合に、アトムYは、段階236でメッセージを処理して、段階237でオブジェクト確認応答済みメッセージを選択されたノードに送る。
全ての他のノード223は、段階240を用いて、オブジェクト確認応答済みメッセージを選択されたノード222に送ることによってオブジェクト利用可能メッセージに応答する。選択されたノード222は段階241を用いて、オブジェクト確認応答済みメッセージをモニタする。具体的には、各オブジェクト確認応答済みメッセージに応答してそのリレーリストから他のノードの各々を除去して、そのノードへの中継を中止する。全ての他のノード223がリストから除去された時に、選択されたノードは、全ての中継を停止してオブジェクト完了メッセージをブロードキャストする。
別のノードが図22の段階226と236の間の時間中に要求側ノード221に到達する複製メッセージを送ることが可能である。これは、メッセージ処理を中断する可能性がある。その結果、アトムYが未ポピュレート状態である間に上述の例のアトムYの複製メッセージが要求側ノードで受信した時に、複製メッセージは、図5〜図13のいずれも示していないが各アトムの一部である未処理メッセージリスト内に配置される。
上述のように、本発明は、特にトランザクション処理技術とインタフェースで接続するデータベースに適合される。従って、メッセージを「コミットする」適切な手法を伴うべきである。図23は、このような環境においてデータの一貫性を保証する1つの手法を示している。具体的には、図23は、4つのノード、すなわち、トランザクションノードA250、トランザクションノードB251、トランザクションノードC252、及びアーカイブノード253を示している。トランザクションノードB251は、段階254でそのノードでのトランザクションマネージャアトムによって供給されたトランザクションIDと共にプリコミットメッセージを送ると仮定する。段階255でメッセージをアーカイブノードに経路指定する。そのトランザクションをコミットする全ての条件が完了された時に、アーカイブノード255は、段階256でコミットトランザクションメッセージを出し、段階257でその委任メッセージをブロードキャストする。段階258で、トランザクションノードの各々は、これに応答してその対応するトランザクション番号を更新する。
図21のアトムのコピーを要求する処理に関して上述したように、要求側ノードは、段階233であらゆる受信したメッセージにアクセシビリティ解析を提供する。この試験により、あらゆるトランザクションノードが常に有効な情報で作動するという保証が得られ、この試験では、トランザクションID番号及びコミットシーケンス番号の解析を提供する。この解析及び本発明の他の特徴の理解は、トランザクションID及びコミットシーケンス番号の更に別の理解、トランザクションの相対的な順序の解析、及び「アトムスキュー」の理解により容易にされると考えられる。
トランザクションID及びコミットシーケンス番号に関してかつ上述したように、各トランザクション識別子は、図1のデータベースシステムにわたって固有である。トランザクションIDの目的は、それが、どのトランザクションが特定のレコードバージョンを作成したかを示す固有の永久的なシステム全体に及ぶマークであることである。各トランザクションIDは、トランザクションマネージャアトム71のローカルコピーにより割り当てられ、1つのこのようなトランザクションマネージャアトムは、データベースシステム内の各トランザクションノード上のトランザクションマネージャアトムに識別子番号のブロックを割り当てる議長になる。特定のトランザクションノードでのトランザクションマネージャアトムは、割り当てられたブロック内の未使用数をノードが開始する各トランザクションに順番に割り当てる。従って、特定のノードで開始されるトランザクションが新しいほど、トランザクションIDは、古いトランザクションに割り当てられたトランザクションIDより高いとすることができる。しかし、システムにわたって、トランザクションIDは、異なるトランザクションの相対的な開始時間に関しては何も意味しない。
その結果、レコードバージョンを作成したトランザクションが、トランザクションの読取が開始される前にコミットされた場合に限り、トランザクションが確実にレコードバージョンを読むことができるようにする何らかの方法を提供すべきである。本発明において、どのレコードバージョンを読むべきかを判断するこのような方法は、開始時間にはなく、レコードバージョンを作成したトランザクションのトランザクションコミット時間に存在する。トランザクションIDは、コミット時間を含まず、従って、各ノード上のトランザクションマネージャアトムは、実際コミット作動に基づいてコミットシーケンス番号を各トランザクションに割り当てる。各トランザクションノードは、増加するシーケンスでコミットシーケンス番号を生成する。特定のノードからのトランザクションが467というコミットシーケンス番号を有する場合に、それよりも小さいコミットシーケンス番号を有するノードからの全てのトランザクションがコミットされたことは確かである。全てのノードは同じコミットシーケンス番号を生成するので、個数を解釈するには対応するノードの番号及び識別表示が必要である。
トランザクションがコミットされた時に、トランザクションマネージャアトムは、対応するトランザクションID及びコミットシーケンス番号を含む全てのノードに委任メッセージを送る。アトムが自己シリアル化した時に、そのアトムのコピーを保持する各ノードからわかった最高のコミットシーケンス番号を含む。例えば、ノードA、B及びCがアトムZのコピーを含み、ノードAがアトムZに対してオブジェクトメッセージを生成すると仮定する。そのメッセージのシリアル化された形式は、ノードAが自分自身からわかった最高のコミットシーケンス番号と、ノードB及びCからわかった最高のコミットシーケンス番号とを含むことになる。ノードAからシリアル化されたメッセージは、ノードAがアトムYのコピーを共有するノードを見た時に、アトムYのコピーを共有する全てのノード上のトランザクションの状態を説明するものである。ノードB又はノードCは、ノードAがまだ受信又は処理していないトランザクションに対してより高いコミットシーケンス番号を実際に出した可能性がある。
各ノード上のトランザクションマネージャは、データベースシステム内の各ノードに対してトランザクションオブジェクトを維持する。各トランザクションオブジェクトは、全てのノード上のトランザクションの状態を反映し、ローカルでありかつ連続的に増加しているもう2つの番号を各オブジェクトに割り当てる。トランザクションマネージャアトムがトランザクションを開始するか、又は別のノードがトランザクションを開始したことを示すトランザクション遷移メッセージを受信した時に、トランザクションマネージャアトムは、新しいトランザクションIDを有するローカルトランザクションオブジェクトを作成して開始番号を割り当てる。ローカルトランザクションがコミットされた時に、又はトランザクションマネージャアトムが別のノード上のトランザクションがコミットされたことを示すトランザクション遷移メッセージを受信した時に、トランザクション終了番号が、コミットシーケンス番号と共にトランザクションオブジェクトに割り当てられる。開始番号及び終了番号は、同じシーケンスからのものである。一例として、トランザクション123がトランザクション453の終了番号よりも高い開始番号を有する場合に、トランザクション123は、トランザクション453により作成されたレコードバージョンをトランザクション453を実行したあらゆるノードから読み取ることができる。
トランザクション開始番号及び終了番号は、ローカルであり、すなわち、ローカルノード上でわかった時のトランザクションの状態を反映する。ノードが異なれば、異なる値を割り当てるので、他のノード上でのトランザクションの異なる順序付けが見出される。明らかなように、処理トランザクション状態メッセージを受信及び処理する際に遅延が存在する可能性がある。各トランザクションは、ローカルトランザクションノード上でのみ実行される。このデータベースシステムは、1つのトランザクションノードには、トランザクションがローカルトランザクションノード上でコミットする前にトランザクションがコミットされたと分らないようにしている。例えば、ノードAがトランザクション453のトランザクションノードBから委任メッセージを受信して処理した後にトランザクション123を開始した場合に、トランザクション123は、トランザクションを受信したトランザクションノードCがコミットされて別の順番でメッセージを開始したとしてもトランザクション453からの変更を読み取ることができ、2つのトランザクションは同時点のものと考える。
トランザクションのいずれもトランザクションノードC上では実行されないので、情報は、トランザクションノードCに関連のないものである。しかし、各個々のトランザクションノードが見たデータベースシステムの姿の差異により、ある一定の状況では問題が発生する可能性がある。
「アトムスキュー」に関して、本発明の一態様により、各ノードは、別のノードがメッセージに送った順番で別のノードからのメッセージを処理すべきである。しかし、全てのノードは、独立して作動する。従って、いずれの所定の時間にも、一部のノードは、他のノードがまだ処理していないメッセージを受信して処理してしまっていることになる。アトムの一部のコピーは、他のコピーが含まない変更を含むことになる。上述の差異は、コピーを有するノードには重要なことではなく、その理由は、アトムの各コピーは、そのノードに対しては一貫した状態であるからである。上述のように、トランザクションノードがアトムを変更した時はいつでも、ノードは、変更されたアトムをそのアトムのコピーを含む全ての他のノードに複製する。トランザクションノードB及びCが各々そのアトムのコピーを含みかつトランザクションノードBがそのアトムを変更した場合に、トランザクションノードBは、複製メッセージをトランザクションノードCに送る。トランザクションノードBがトランザクションを処理している間、トランザクションノードCにトランザクション状態メッセージを送ってトランザクションノードBが変更するあらゆるアトムを複製する。トランザクションノードBが図23に示す処理によりトランザクションをコミットした時に、トランザクションノードCは、トランザクションがコミットされたことを示すトランザクション状態メッセージを受信しているはずである。トランザクションノードCは、全てのメッセージは送られた順序で処理されることになるために委任メッセージを受信する前にトランザクションに関連する全てのメッセージを処理することになる。トランザクションノードが異なれば、アトムのコピーは異なる可能性があるが、いずれのトランザクションノード上でトランザクションにより行われた全ての変更も、他のノードがトランザクションコミットされたと分る前に全ての他のノード上にあることになる。
システムレベルからトランザクションを見た時に、異なるトランザクションノードは、同期して作動しているのではない。異なるノードにより処理された単一のメッセージの時間は、通信経路の効率及び各トランザクションノードが処理する必要があるメッセージの数の差異のために変わる可能性がある。異なるノードでの処理時間内の差異を考慮すべきである。3つのトランザクションノード、すなわち、ノードA、ノードB、及びノードCを考える。ノードBが、アトムXを変更するトランザクション768を実行し、かつノードCが、アトムXのコピーを有すると仮定する。ノードBでのアトムXが、変更メッセージをノードCに送り、かつノードCが、上述の変更を処理する前に何らかの時間の経過があると仮定する。また、ノードBが、47というコミットシーケンス番号をトランザクション768に割り当てたと仮定する。ノードB上のトランザクションマネージャアトムは、データベースシステム内の全てのノードにトランザクション状態メッセージを送る。また、ノードAが、ノードBから委任メッセージを受信した後に、但し、ノードCがトランザクションの処理を完了する前に、アトムXのコピーをノードCに要求すると仮定する。ノードAは、ノードBからトランザクション状態メッセージを受信して処理する。ノードAの観点からすれば、トランザクション768がコミットされ、ノードBの最高コミットシーケンス番号は、47である。しかし、このタイミングで、ノードCから戻されたアトムは、ノードBでトランザクションにより行われた変更を反映していない。
本発明により、ノードC上のアトムXが、ノードAへの送信に向けて自己シリアル化した時に、それは、アトムXのコピーを有する各ノードから最高コミットシーケンス番号を含む。この場合に、メッセージは、ノードCに対してはシーケンス番号97、ノードBに対しては46を含むと仮定する。
図22を参照すると、要求側ノードとしてのノードAは、コンテンツをノードCに求める前にアトムXの空のインスタンスを作成する。図22内のアクセシビリティ解析により、ノードAが見た時の各ノードの現在の最高コミットシーケンス番号が得られる。アトムXを有するシリアル化されたメッセージも拡張され、ノードBが見た時の各ノードの現在の最高コミットシーケンス番号が得られる。この比較において、アクセシビリティ解析により、メッセージ内のシリアル化されたコミットシーケンス番号が46であり、一方、Bのローカル最高コミットシーケンス番号は47であると判断することになる。従って、ノードA、現状ではアトムXのシリアル化されたバージョンを使用することができないので、ノードC上のアトムXがオブジェクト完了メッセージを送るのを待たなければならない。コミットシーケンス番号が同じか又はより高い場合に、ノードAは、アトムを処理し続けることができる。
上述のように、ノードCがアトムXのシリアル化されたコピーをノードAに送った時に、それは、アトムXの他のコピーに、この場合には、ノードB上のコピーにオブジェクト利用可能メッセージを送っている。ノードB上のアトムXは、オブジェクト確認応答済みメッセージをノードC上のアトムXに送ってノードA上のコピーを自分自身のコピーのそのリストに追加する。次に、ノードB上のアトムXは、変更メッセージをノードA及びCの上のコピーに送ることになる。その間、ノードC上のアトムXは、ノードBからメッセージを処理してノードAに中継する。ノードA上のアトムXは、メッセージを処理して益々それ自体を更新する。ノードC上のアトムXがノードB上のアトムXからのオブジェクト確認応答済みメッセージ及び他のノード上のアトムXの全ての他のコピーを処理した時に、オブジェクト完了メッセージをノードA上にアトムXに送る。
本発明により、各トランザクションノードは、ディスク又は他の永続ストレージにあらゆるアトムを転送する必要がなく作動すべきである。これには、各トランザクションノードからの非アクティブアトムの能率のよい除去が必要である。この目標をもたらすために、各ノード内のヘルパークラスは、定期的にサイクルマネージャにより呼び出されるゴミ収集機能を行って、他の作動とは独立して新しいゴミ収集サイクルを開始する。より具体的には、サイクルマネージャは、経年変化サイクルを実行し、それによって前のサイクルで参照したあらゆるアトムは、そのノードのマスターカタログアトム内の最長時間未使用(LRU)リスト上の最初に移動される。サイクルマネージャは、前のサイクルに関してアクティブである他のいずれのスレッドも確実にないようにする排他的ロックを取得する。
サイクルマネージャは、次に、レコードゴミ収集に向けてマーク付けされたテーブルアトムに対してレコードゴミ収集スレッドを開始する。ノードでの現在の記憶量が図5でポインタ70Uにより識別された構成オブジェクトにより定義された指定の量を超えた場合に、ゴミ収集スレッド処理は、最長時間未使用アトムからごく最近使用アトムまでマスターカタログLRUをループする。アトムが(1)アクティブではない、(2)現在の経年変化サイクルで参照されていない、(3)「オブジェクト未完了」ではない、(4)ローカルで変更されてアーカイブノードにまだ書き込まれていない、かつ(5)メモリ常駐アトムがないカタログである場合に、そのアトムをゴミ収集候補に向けて候補と分類する。アーカイブノード内のアトムは、更にディスクにシリアル化されたものでなければならない。
ゴミ収集処理により全ての上述の条件が満たされたと判断された場合に、2つの選択肢がある。ノードがアーカイブノードであり、アトムの他のインスタンスが他のノードにある場合に、アトムのコンテンツは「パージされる」。そうでなければ、アトムは、それ自体を落とすように要求され、それは、これをまず最終試験を作成カタログアトムに問合わせすることによって行う。その試験に合格した場合に、カタログアトムは、候補アトムのそのポインタを消去し、候補アトムは、オブジェクト利用不能メッセージを候補アトムのインスタンスを含む他のノードにブロードキャストし、次に、自己削除する。このループは、作動記憶量が許容限度内になるまでアトム単位で続く。
2つの機構は、この処理に関わっているものである。カタログアトムが、分類に向けてアトムを見つけるように求められた時に、カタログアトムは、サイクル参照エントリを現在のサイクル番号に設定する。更に、トランザクションマネージャ、データベース、スキーマ、シーケンス、及びテーブルアトムは、上述のアトム内の方法によりアトムポインタを保持することができ、オブジェクト又はアトムがごみ収集されるのを防止するためにアトム使用カウンタを増分せず済むように現在のサイクルで共有ロックを取得する。
図19及び図20は、「議長任務」を説明するものである。図20に示すように、アトムが作成された時に、作成ノードはアトム議長と指定され、アトムに対してノードの順序付けされたリストを確立する。ノードがアトムを作成した時に、それは、順序付けされたリスト内の唯一のエントリである。リスト内の第1のノードは、議長である。
別のノードが後でそのアトムのコピーを要求した時に、選択されたノードは、議長であるか否か問わず、要求側ノードの識別表示を順序付けされたリスト内で自分の直後にいれる。従って、いずれかのアトムの議長と指定されたノードが何らかの理由で非アクティブになった場合に、そのアトムの全ての他のコピーは、ノードの順序付けされたリストを有する。順序付けされたリストを通して見ると、次の議長は、リスト上の第1の残りのトランザクションノードである。トランザクションノードがリスト上になかった場合に、第1の非同期アーカイブノードが指定される。
ここで、簡単なデータベースクエリを説明することは、ノード内の異なるノード及びアトムの間の対話を理解する際の手助けとして役に立つと考えられる。トランザクションノードでのデータベース要求エンジンが「01944」という郵便番号でテーブル「メンバ」内の全てのレコードを選択するデータベースクエリを受信することを仮定する。トランザクションマネージャアトム及びテーブルアトムはローカルノードに位置し、全ての問合せ処理が完了しており、かつインデックスアトムが、「メンバ」テーブル内の「zip」フィールドに向けて存在すると仮定する。
最初は、図2内のデータベース要求エンジン41は、トランザクションマネージャアトムがトランザクションIDを割り当てる新しいトランザクションを始める指令をトランザクションマネージャアトムに出す。次に、データベース要求エンジンは「メンバ」テーブルに関するテーブルアトムを利用して、インデックスアトムが「zip」フィールドに向けて存在するか否かを判断する。これらの2つのアトムがローカルノードである場合に、これらの2つのアトムを処理する。そうでなければ、これらのアトムのコピーを他のノードから取得した後に処理が続く。
「メンバ」テーブルのテーブルアトムは、対応するテーブルカタログアトムからの情報を利用してインデックスを走査する。それによって指定の郵便番号を有する「メンバ」テーブル内の各「レコード」を識別するビットマップが生成される。明らかなように、このビットマップは、特定のフィールドに限定することができ、又は複数のフィールドからのインデックスの論理結合の結果とすることができる。
次に、得られるビットマップに基づいてループを確立する。ループの各反復に対して、データベース要求エンジンは、レコード内のトランザクションIDで指定されたフェッチレコード方法を処理するためにテーブルアトムの呼び出しを出す。テーブルアトムは、レコード状態アトムが管理するレコードIDの最大数に対応する定数でレコード番号を割ることによってレコードアトムに関連する適切なレコード状態アトムを選択する。次に、テーブルアトムは、トランザクションID及び識別されたレコード番号を使用してフェッチ方法を選択されたレコード状態アトムに使用する。マルチバージョンレコードに対して、レコード状態アトムは、あらゆるレコードバージョンをループして、正しいバージョン及び適切なポインタが対応するデータアトムを見つける。レコード状態アトムは、レコードを指示してその検索を可能にするデータアトム番号でそのデータアトムを呼び出す。この処理が完了した時に、データベース要求エンジンは、ユーザに指定の郵便番号を有する全てのレコードを説明するレコードセットを供給する。
要約すると、本発明により構成されるデータベース管理システムは、エラスティックな拡張性のあるオンデマンド分散データ処理システムを提供することが当業者に明らかであろう。システムは耐故障性であり、かつ高度な利用可能性を有する。それは、プラットフォーム独立型であり、アトミマック性、一貫性、独立性、永続性があるデータベースになるように作動する。更に、高速通信経路を必要とせずに「インターネット」で作動させることができ、広い地理的領域にわたって実施することができるトランザクション処理に向けて適合される。
本発明は、以下の特徴の1つ又はそれよりも多くを実施することによって全ての上述の目的を達成する。本発明は、データベースをピアツーピアで複製する分散型オブジェクトに分解する。各トランザクションノード及びアーカイブノードは、どのアトムがローカルでメモリ常駐であるべきであるかを判断する。カタログアトムは、位置を様々なアトムのローカルコピー及びリモートコピーまで追跡し、これらのコピーがメンバであるカタログを識別する。更に、各ノードは、地理的に分散したシステムを可能にするアトムのコピーを要求する複数のノードのうちの最良のものを判断することができる。
本発明は、ある一定の実施形態に関して開示したものである。本発明から逸脱することなく多くの修正を開示した装置に行うことができることは明らかであろう。従って、全てのかかる変更と修正を本発明の真の精神及び範囲に該当するように網羅することが添付の特許請求の範囲の意図である。
30 オンデマンド分散型データベースシステム
31 データベースシステムネットワーク
A1、A2 ノード
N1〜N6 ノード

Claims (44)

  1. ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであって、
    A)i)ユーザレベルでの高レベル入力及び出力指令と、データベースと対話するための一連の作動を制御するシステムレベルでの入力及び出力指令との間のインタフェースであって、ある一定のシステムレベル指令に応答して、アトムオブジェクトが、アトムを生成し、各アトムが、データ又はメタデータの指定のフラグメントを含む前記インタフェース、
    ii)システム内の各他のノードとの通信経路を確立するための通信制御、
    iii)クエリに関連するがそのノードに存在しないアトムのコピーを選択されたノードから要求する要求側ノードとしてのノードのための前記インタフェースからのシステム指令に応答する方法、
    iv)別のノードからのアトムの要求に応答して、クエリを完了するのに必要とされるアトムのみがいずれかの所定の時間にいずれかのトランザクションノードに位置する必要があるように前記要求側ノードへの転送に向けて要求されたアトムを複製するための方法、及び
    v)そのノードでのアトムの変化に応答して、そのアトムが常駐する前記システム内の全ての他のノードへの転送に向けてそのアトムを複製するための方法、
    を各ノードが含む複数のノードと、
    B)全ての前記ノード間の通信経路を提供するために前記複数のノードに接続された通信手段と、
    C)永続ストレージに受信されるアトム内の情報の集合が前記データベース内の全ての前記データ及びメタデータを含むように各アトムのコピーを永続ストレージに備えるために前記通信手段に接続された手段と、
    を含むことを特徴とするデータベース管理システム。
  2. 前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐する全てのアトムと、該常駐アトムの各々のコピーを有する各ノードの位置とを追跡するカタログアトムを生成することを特徴とする請求項1に記載のデータベース管理システム。
  3. 前記カタログアトムのうちの1つが、システムに接続した各ノード内で複製されるマスターカタログアトムであり、
    前記アトムのうちの別のものが、前記インタフェースにより開始されたトランザクションの進行を追跡するための前記データベースのための単一のトランザクションマネージャアトムであり、
    前記マスターカタログは、前記トランザクションマネージャアトムの位置を識別する、 ことを特徴とする請求項2に記載のデータベース管理システム。
  4. 前記ユーザレベルでの前記データベースは、レコード及びフィールドを有する名称付きテーブルを含み、かつ少なくとも1つの名称付きスキーマに従って作動し、
    前記アトムオブジェクトの他のものが、
    i)フィールドのリストを収容する各テーブルのためのテーブルアトム、
    ii)スキーマとそのスキーマに関連する前記名称付きテーブルとの間の対応を確立するスキーマアトム、及び
    iii)前記データベースと前記名称付きスキーマの間の対応を確立するデータベースアトム、
    を生成する、
    ことを特徴とする請求項3に記載のデータベース管理システム。
  5. 前記ーザレベルでの前記データベースは、フィールドとデータとを収容する識別されたレコードを含み、
    他のアトムオブジェクトが、所定の数のデータレコードを含むデータアトムとレコードバージョンを管理するレコード状態アトムとを生成し、
    前記レコード状態アトムは、そのレコード状態アトムに割り当てられた管理されたデータアトムと、各レコードバージョンの識別表示と、各レコードバージョンに対するそのバージョンとそのバージョンを含む該データアトムの位置とに関する情報とを識別するアレイを含む、
    ことを特徴とする請求項4に記載のデータベース管理システム。
  6. 各データアトムは、該データアトム内の各レコードのアドレス及び長さと該データレコードとを更に含むことを特徴とする請求項5に記載のデータベース管理システム。
  7. 前記ーザレベルでの前記データベースは、識別されたブロブを含み、
    他のアトムオブジェクトが、ブロブと、全ての関連のブロブアトムと該ブロブアトムにおける該ブロブの位置とのリストを含むブロブレコード状態アトムとを収容するブロブアトムを生成する、
    ことを特徴とする請求項4に記載のデータベース管理システム。
  8. 各ブロブアトムが、各ブロブのアドレス及び長さと該ブロブとを含むことを特徴とする請求項7に記載のデータベース管理システム。
  9. 各ノードが、更に、
    i)システムレベル指令に応答して予め定義されたメッセージを生成して受信するメッセージング手段、及び
    ii)前記メッセージを送信するための前記通信経路の1つを選択するための手段、
    を含む、
    ことを特徴とする請求項1に記載のデータベース管理システム。
  10. 各ノードが、各通信経路の効率を非同期で試験するための手段を含むことを特徴とする請求項9に記載のデータベース管理システム。
  11. 前記試験する手段は、ピングメッセージを生成して各通信経路に対してピング時間を判断するためのピング確認応答メッセージを受信するための手段を含むことを特徴とする請求項10に記載のデータベース管理システム。
  12. 前記メッセージング手段は、アトムをメッセージにシリアル化してメッセージをアトムに逆シリアル化するための手段を含み、
    各メッセージが、非同期に前記選択された通信経路上で送られる、
    ことを特徴とする請求項9に記載のデータベース管理システム。
  13. メッセージが、メッセージシーケンスを維持する制御を有するプロトコルの下で送られることを特徴とする請求項12に記載のデータベース管理システム。
  14. 個々のノードが、アクティブであってシステムに接続することができ、かつシステムから切り離すことができ、前記アトムの1つが、システム内の各アクティブノードを識別してシステムに接続された各ノード内で複製されるマスターカタログアトムであり、
    システムが、
    i)加入側ノードと前記アクティブノードの選択されたものとの間の接続を確立するための手段、
    ii)前記選択されたノードに接続を求めるための前記加入側ノード内の手段、
    iii)前記選択されたノード内でそのマスターカタログアトムを更新し、前記加入側ノードをアクティブノードとして示すための手段、
    iv)前記選択されたノードの識別表示を含むメッセージを前記加入側ノードに転送し、かつシステム及び永続ストレージ内の全ての他のノードに該加入側ノードの利用可能性を示すメッセージをブロードキャストするための該選択されたノード内の手段、
    v)前記マスターカタログアトムのコピーを前記選択されたノードに要求することによって前記メッセージに応答するための前記加入側ノード内の手段、及び
    vi)前記選択されたノード内でその更新されたマスターカタログアトムを前記加入側ノードに転送するための手段、
    を含むノードがシステムに加入することを可能にするための手段、
    を含む、
    ことを特徴とする請求項1に記載のデータベース管理システム。
  15. 前記加入側ノードは、前記更新されたマスターカタログアトムの受信に応答して、前記インタフェースからの要求に応答して追加のアトムのコピーを要求するための手段を含むことを特徴とする請求項14に記載のデータベース管理システム。
  16. 前記選択されたノードは、前記更新されたマスターカタログの利用可能性を全ての他のノード及び永続ストレージにブロードキャストし、各他のノード及び永続ストレージが、該更新されたマスターカタログのその受信の確認応答を該選択されたノードにするための手段を含むことを特徴とする請求項14に記載のデータベース管理システム。
  17. 前記ノードの1つにおけるインタフェースが、新しいアトムの生成を要求する要求を行い、
    前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐するアトムを追跡するカタログアトムを生成し、
    前記ノードの前記1つは、更に、
    i)前記カタログアトム内で該カタログアトムにコンテンツなしのその新しいアトムを作成させ、かつ該新しいアトムをそのアトムのための議長に指定させるための前記インタフェース要求に応答して該新しいアトムを追跡することになる手段、
    ii)前記カタログアトム内でオブジェクト識別表示を前記新しいアトムに割り当てる手段、
    iii)前記カタログアトム内で前記新しいアトムの冗長なコピーがないこと及び該新しいアトムが他のノードに対して利用可能でないことを示す該新しいアトムに対するステータスを確立するための手段、
    iv)前記カタログアトム内で前記新しいアトムの存在をシステム内の全ての他の対応するカタログアトムにブロードキャストするための手段、
    v)前記新しいアトムをポピュレートし、かつ該新しいアトムをシステム上で利用可能にするための手段、
    を含む、
    ことを特徴とする請求項1に記載のデータベース管理システム。
  18. 永続ストレージが、前記新しいアトムの前記受信に応答して冗長なコピーの存在を示すためにそのステータスを更新するメッセージを該新しいアトムを有するノードに送るための手段を含むことを特徴とする請求項17に記載のデータベース管理システム。
  19. 前記ノードの1つにおけるインタフェースが、他のノードにだけ存在するアトムに対する要求を行い、
    前記アトムオブジェクトのうちのある一定のものが、そのノード及び他のノードに常駐するアトムを追跡するカタログアトムを生成し、
    システムが、
    i)前記インタフェース要求に応答して前記要求側カタログアトム内でその空のアトムを作成するための該インタフェース要求に応答して前記要求されたアトムを追跡することになる手段、
    ii)前記要求側カタログアトム内で最も応答性のあるノードを選択して前記アトムのコピーを該最も応答性のあるノードから要求するための手段、
    iii)前記選択されたノード内で前記要求されたアトムのコピーをオブジェクトメッセージで前記要求側ノードに送り、かつ該アトムの利用可能性をそのアトム内の他のノードにブロードキャストするための手段、
    iv)受信したオブジェクトメッセージの有効性を評価し、前記空のアトムをポピュレートし、かつオブジェクト確認応答メッセージを前記選択されたノードに転送するための手段、
    を含む、
    ことを特徴とする請求項1に記載のデータベース管理システム。
  20. 前記選択されたノードは、該選択されたノードがそのアトムに関連する他のノードからのメッセージを前記要求側ノードに転送することになる前記要求されたアトムを収容する全てのノードのリレーリストを生成することを特徴とする請求項19に記載のデータベース管理システム。
  21. 前記ブロードキャストされたオブジェクト利用可能メッセージを受信する前記他のノードの各々が、オブジェクト確認応答メッセージを前記選択されたノードに送るための手段を含み、該選択されたノードは、前記要求側ノードへのあらゆるその後のメッセージのリレーを終了するために別のノードからの各オブジェクト確認応答メッセージの受信に応答して前記リレーリストを更新するための手段を含むことを特徴とする請求項20に記載のデータベース管理システム。
  22. 前記データベースの一貫性を保証するためのトランザクション処理に向けて適合され、 システムが、コミットすべきアトムに関わる第1のノードを含み、少なくとも1つの他のノードが、そのアトムのコピーを含み、
    システムが、
    i)前記第1のノード内で永続ストレージへの転送のためのトランザクション識別表示を有するプレコミットメッセージを生成するための手段、
    ii)前記トランザクションをコミットし、その後に前記トランザクション識別表示を有するコミットメッセージを全ての前記ノードにブロードキャストするために前記プレコミットメッセージに応答する永続ストレージに関連付けられた手段、
    iii)前記識別されたトランザクションを更新するために前記コミットメッセージの受信に応答する前記第1のノード及び少なくとも1つの他のノード内の手段、
    を含む、
    ことを特徴とする請求項1に記載のデータベース管理システム。
  23. ユーザがデータ及びメタデータで構成されたデータベースと対話することを可能にするデータベース管理システムであって、
    A)ユーザにデータベースへのアクセスを提供する少なくとも1つのトランザクションノード及びデータベース全体のアーカイブを維持する少なくとも1つのアーカイブノードであって、各トランザクションノードが、ユーザレベルでの高レベル入力及び出力クエリ指令と該データベースと対話するための一連の作動を制御するシステムレベルでの入力及び出力指令との間のインタフェースを提供するデータベース要求エンジンを含み、ある一定のシステムレベル指令に応答して、アトムオブジェクトが、アトムを生成し、各アトムが、データ又はメタデータの指定のフラグメントを含む前記少なくとも1つのトランザクションノード及び少なくとも1つのアーカイブノード、
    B)全ての前記ノードを相互接続するデータベースシステムネットワーク、
    C)前記ノードの各々においてシステム内の各他のノードとの通信経路を確立するための通信制御、
    D)前記クエリ指令に関連するがそのノードに存在しないアトムのコピーを要求する要求側ノードとしてのノードのため前記データベース要求エンジンからのシステム指令に応答する各トランザクションノード内の方法、
    E)各トランザクションノードにおいてクエリ指令を完了するのに必要とされるアトムのみがいずれの所定の時間にもいずれかのトランザクションノードに位置する必要があるように前記要求側ノードへの転送に向けて要求されたアトムを複製するために別のノードからのアトムの要求に応答する方法、及び
    F)各トランザクションノードにおいてそのノードでのアトムの変化に応答して、前記少なくとも1つのアーカイブノードの各々が前記データベース内の全ての前記メタデータ及びデータを含むように、そのアトムのコピーを含むシステム内の全ての他のノードにその変化を複製するための方法、
    を含むことを特徴とするデータベース管理システム。
  24. 前記アトムオブジェクトのうちのある一定のものが、そのノードに常駐する全てのアトムと該常駐アトムの各々のコピーを有する各ノードの位置とを追跡するカタログアトムを生成することを特徴とする請求項23に記載のデータベース管理システム。
  25. 前記カタログアトムのうちの1つは、システムに接続された各ノード内で複製されるマスターカタログアトムであり、
    前記アトムのうちの別のものが、前記インタフェースにより開始されたトランザクションの進行を追跡するための前記データベースのための単一のトランザクションマネージャアトムであり、
    前記マスターカタログは、前記トランザクションマネージャアトムの位置を識別する、 ことを特徴とする請求項24に記載のデータベース管理システム。
  26. 前記ユーザレベルでの前記データベースは、レコード及びフィールドを有する名称付きテーブルを含み、かつ少なくとも1つの名称付きスキーマに従って作動し、
    前記アトムオブジェクトの他のものが、
    i)フィールドのリストを収容する各テーブルのためのテーブルアトム、
    ii)スキーマとそのスキーマに関連する前記名称付きテーブルとの間の対応を確立するスキーマアトム、及び
    iii)前記データベースと前記名称付きスキーマの間の対応を確立するデータベースアトム、
    を生成する、
    ことを特徴とする請求項25に記載のデータベース管理システム。
  27. 前記ーザレベルでの前記データベースは、フィールドとデータとを収容する識別されたレコードを含み、
    他のアトムオブジェクトが、所定の数のデータレコードを含むデータアトムとレコードバージョンを管理するレコード状態アトムとを生成し、
    前記レコード状態アトムは、そのレコード状態アトムに割り当てられた前記管理されたデータアトムと、各レコードバージョンの識別表示と、各レコードバージョンに対するそのバージョン及びそのバージョンを含む該データアトムの位置に関する情報とを識別するアレイを含む、
    ことを特徴とする請求項26に記載のデータベース管理システム。
  28. 各データアトムは、該データアトム内の各レコードのアドレス及び長さと該データレコードとを更に含むことを特徴とする請求項27に記載のデータベース管理システム。
  29. 前記ーザレベルでの前記データベースは、識別されたブロブを含み、
    他のアトムオブジェクトが、ブロブと、全ての関連のブロブアトムと該ブロブアトムにおける該ブロブの位置とのリストを含むブロブレコード状態アトムとを収容するブロブアトムを生成する、
    ことを特徴とする請求項26に記載のデータベース管理システム。
  30. 各ブロブアトムが、各ブロブのアドレス及び長さと該ブロブとを含むことを特徴とする請求項29に記載のデータベース管理システム。
  31. 各ノードが、更に、
    i)システムレベル指令に応答して予め定義されたメッセージを生成して受信するメッセージング手段、及び
    ii)前記メッセージを送信するための前記通信経路の1つを選択するための手段、
    を含む、
    ことを特徴とする請求項23に記載のデータベース管理システム。
  32. 各ノードが、各通信経路の効率を非同期で試験するための手段を含むことを特徴とする請求項31に記載のデータベース管理システム。
  33. 前記試験する手段は、ピングメッセージを生成して各通信経路に対してピング時間を判断するためのピング確認応答メッセージを受信するための手段を含むことを特徴とする請求項32に記載のデータベース管理システム。
  34. 前記メッセージング手段は、アトムをメッセージにシリアル化して該メッセージをアトムに逆シリアル化するための手段を含み、
    各メッセージが、非同期に前記選択された通信経路上で送られる、
    ことを特徴とする請求項31に記載のデータベース管理システム。
  35. メッセージが、メッセージシーケンスを維持する制御を有するプロトコルの下で送られることを特徴とする請求項34に記載のデータベース管理システム。
  36. 個々のノードが、アクティブであってシステムに接続することができ、かつシステムから切り離すことができ、前記アトムの1つが、システム内の各アクティブノードを識別してシステムに接続された各ノード内で複製されるマスターカタログアトムであり、
    システムが、
    i)加入側トランザクションノードと前記アクティブノードの選択されたものとの間の接続を確立するための手段、
    ii)前記選択されたノードにシステムへの接続を求めるための前記加入側トランザクションノード内の手段、
    iii)前記選択されたノード内でそのマスターカタログアトムを更新し、前記加入側トランザクションノードをアクティブノードとして示すための手段、
    iv)前記選択されたノードの識別表示を含むメッセージを前記加入側トランザクションノードに転送し、かつシステム内の全ての他のノードに該加入側トランザクションノードの利用可能性を示すメッセージをブロードキャストするための該選択されたノード内の手段、
    v)前記マスターカタログアトムのコピーを前記選択されたノードに要求することによって前記メッセージに応答するための前記加入側トランザクションノード内の手段、及び vi)前記選択されたノード内でその更新されたマスターカタログアトムを前記加入側トランザクションノードに転送するための手段、
    を含むノードがシステムに加入することを可能にするための手段、
    を含む、
    ことを特徴とする請求項23に記載のデータベース管理システム。
  37. 前記加入側トランザクションノードは、前記更新されたマスターカタログアトムの受信に応答してそのデータベース要求エンジンからのシステム指令に応答して追加のアトムのコピーを要求するための手段を含むことを特徴とする請求項36に記載のデータベース管理システム。
  38. 前記選択されたノードは、前記更新されたマスターカタログの利用可能性を全ての他のノードにブロードキャストし、各他のノードが、該選択されたノードに該更新されたマスターカタログのその受信を確認応答するための手段を含むことを特徴とする請求項36に記載のデータベース管理システム。
  39. 前記トランザクションノードの1つにおける前記データベース要求エンジンは、新しいアトムの生成を要求する要求を行い、
    前記アトムオブジェクトのある一定のものが、そのノードに常駐するアトムを追跡するカタログアトムを生成し、
    前記トランザクションノードは、更に、
    i)前記カタログアトム内で前記カタログアトムにコンテンツなしのその新しいアトムを作成させ、かつ該新しいアトムをそのアトムのための議長として指定するために前記データベース要求エンジン要求に応答して該新しいアトムを追跡するための手段、
    ii)前記カタログアトム内でオブジェクト識別表示を前記新しいアトムに割り当てるための手段、
    iii)前記カタログアトム内で前記新しいアトムの冗長なコピーがないこと及び該新しいアトムが他のノードに対して利用可能ではないことを示す該新しいアトムのステータスを確立するための手段、
    iv)前記カタログアトム内で前記新しいアトムの存在をシステム内の全ての他の対応するカタログアトムにブロードキャストするための手段、
    v)前記新しいアトムをポピュレートし、かつ該新しいアトムをシステム内の他のノードに利用可能にするための手段、
    を含む、
    ことを特徴とする請求項23に記載のデータベース管理システム。
  40. 各アーカイブノード内で前記新しいアトムの前記受信に応答して冗長なコピーの存在を示すそのステータスを更新するメッセージを該新しいアトムに送るための手段を更に含むことを特徴とする請求項39に記載のデータベース管理システム。
  41. 1つのトランザクションノード内のデータベース要求エンジンが、他のノードにだけ存在するアトムを要求し、
    前記アトムオブジェクトのある一定のものが、そのノード及び他のノードに常駐するアトムを追跡するカタログアトムを生成し、
    システムが、
    i)前記要求側カタログアトム内の前記要求に応答してその空のアトムを作成するために前記要求されたアトムを追跡することになる手段、
    ii)前記要求側カタログアトム内で最も応答性のあるノードを選択して前記アトムのコピーを該最も応答性のあるノードから要求するための手段、
    iii)前記選択されたノード内で前記要求されたアトムのコピーをオブジェクトメッセージで前記要求側ノードに送り、かつ該アトムの利用可能性を該アトムが常駐する他のノードにブロードキャストするための手段、
    iv)受信したオブジェクトメッセージの有効性を評価し、前記空のアトムをポピュレートし、かつオブジェクト確認応答メッセージを前記選択されたノードに転送するための手段、
    を含む、
    ことを特徴とする請求項23に記載のデータベース管理システム。
  42. 前記選択されたノードは、該選択されたノードがそのアトムに関連する他のノードからのメッセージを前記要求側ノードに転送することになる前記要求されたアトムを収容する全てのノードのリレーリストを生成することを特徴とする請求項41に記載のデータベース管理システム。
  43. 前記ブロードキャストされたオブジェクト利用可能メッセージを受信する前記他のノードの各々が、オブジェクト確認応答メッセージを前記選択されたノードに送るための手段を含み、該選択されたノードは、前記要求側ノードへのあらゆるその後のメッセージのリレーを終了するために別のノードからの各オブジェクト確認応答メッセージの受信に応答して前記リレーリストを更新するための手段を含むことを特徴とする請求項42に記載のデータベース管理システム。
  44. トランザクション処理中に前記データベースの一貫性を保証するように適合されており、
    システムが、コミットすべきトランザクションに関わる第1のノードを含み、アーカイブノードを含む少なくとも1つの他のノードが、そのアトムのコピーを含み、
    システムが、
    i)前記第1のノード内でアーカイブノードへの転送のためにトランザクション識別表示を有するプレコミットメッセージを生成するための手段、
    ii)前記プレコミットメッセージに応答して前記トランザクションをコミットし、その後に前記トランザクション識別表示を有するコミットメッセージを全ての前記ノードにブロードキャストするためのアーカイブノードに関連付けられた手段、及び
    iii)前記第1のノード及び少なくとも1つの他のノード内で前記コミットメッセージの受信に応答して前記識別されたトランザクションを更新するための手段、
    を含む、
    ことを特徴とする請求項23に記載のデータベース管理システム。
JP2013500238A 2010-03-18 2011-03-18 データベース管理システム Active JP5801375B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US31535110P 2010-03-18 2010-03-18
US61/315,351 2010-03-18
PCT/US2011/029056 WO2011116324A2 (en) 2010-03-18 2011-03-18 Database management system

Publications (2)

Publication Number Publication Date
JP2013522778A JP2013522778A (ja) 2013-06-13
JP5801375B2 true JP5801375B2 (ja) 2015-10-28

Family

ID=44625647

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013500238A Active JP5801375B2 (ja) 2010-03-18 2011-03-18 データベース管理システム

Country Status (15)

Country Link
US (3) US8224860B2 (ja)
EP (1) EP2548135B1 (ja)
JP (1) JP5801375B2 (ja)
CN (2) CN103026355B (ja)
AU (1) AU2011227121B2 (ja)
BR (1) BR112012023552A2 (ja)
CA (1) CA2793429C (ja)
ES (1) ES2811106T3 (ja)
IL (3) IL221872A (ja)
MY (1) MY155432A (ja)
NZ (1) NZ603057A (ja)
RU (2) RU2016122623A (ja)
SG (1) SG183996A1 (ja)
WO (1) WO2011116324A2 (ja)
ZA (1) ZA201207678B (ja)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208191B2 (en) 2012-07-20 2015-12-08 Sap Se Lock-free, scalable read access to shared data structures
RU2016122623A (ru) * 2010-03-18 2018-11-29 НУОДиБи ИНК. Система управления базой данных
US8266102B2 (en) * 2010-05-26 2012-09-11 International Business Machines Corporation Synchronization of sequential access storage components with backup catalog
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9740762B2 (en) * 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10366100B2 (en) 2012-07-26 2019-07-30 Mongodb, Inc. Aggregation framework system architecture and method
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US9881034B2 (en) 2015-12-15 2018-01-30 Mongodb, Inc. Systems and methods for automating management of distributed databases
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9026493B1 (en) * 2011-02-28 2015-05-05 Google Inc. Multi-master RDBMS improvements for distributed computing environment
CN102265277B (zh) * 2011-06-01 2014-03-05 华为技术有限公司 数据存储***的操作方法和装置
CN103842994A (zh) * 2011-08-01 2014-06-04 标记公司 异步分布式数据库管理的***和方法
US8667010B2 (en) * 2012-01-27 2014-03-04 Microsfot Corporation Database table partitioning allowing overlaps used in full text query
WO2013147785A1 (en) * 2012-03-29 2013-10-03 Hitachi Data Systems Corporation Highly available search index with storage node addition and removal
CN102760154A (zh) * 2012-05-23 2012-10-31 上海引跑信息科技有限公司 一种在文本信息检索服务中支持分布式事务管理的方法
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US9355127B2 (en) * 2012-10-12 2016-05-31 International Business Machines Corporation Functionality of decomposition data skew in asymmetric massively parallel processing databases
US9009203B2 (en) 2013-02-19 2015-04-14 Sap Se Lock-free, scalable read access to shared data structures using garbage collection
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US9417974B2 (en) 2013-03-28 2016-08-16 Microsoft Technology Licensing, Llc. Transaction processing for database in persistent system
US10037348B2 (en) 2013-04-08 2018-07-31 Nuodb, Inc. Database management system with database hibernation and bursting
CN104375995A (zh) * 2013-08-13 2015-02-25 苏州广海信息科技有限公司 一种数据库管理***
US9361351B2 (en) * 2013-09-11 2016-06-07 International Business Machines Corporation Data management via active and inactive table space containers
EP3058475A4 (en) * 2013-10-18 2017-05-31 New York Air Brake LLC Dynamically scalable distributed heterogenous platform relational database
US9600551B2 (en) 2013-10-24 2017-03-21 Sap Se Coexistence of message-passing-like algorithms and procedural coding
US9684685B2 (en) 2013-10-24 2017-06-20 Sap Se Using message-passing with procedural code in a database kernel
CN103679615A (zh) * 2013-12-26 2014-03-26 广西科技大学 一种基于分布式***架构的高可用物流信息管理***
US10169440B2 (en) * 2014-01-27 2019-01-01 International Business Machines Corporation Synchronous data replication in a content management system
US10296371B2 (en) * 2014-03-17 2019-05-21 International Business Machines Corporation Passive two-phase commit system for high-performance distributed transaction execution
GB2524540A (en) 2014-03-26 2015-09-30 Ibm Replication of a relational database
CN104978344B (zh) * 2014-04-09 2018-11-20 华为技术有限公司 一种数据运算方法及装置
US10031934B2 (en) 2014-09-30 2018-07-24 International Business Machines Corporation Deleting tuples using separate transaction identifier storage
US10255304B2 (en) * 2014-09-30 2019-04-09 International Business Machines Corporation Removal of garbage data from a database
US20160117318A1 (en) * 2014-10-28 2016-04-28 Salesforce.Com, Inc. Facilitating dynamically unified system of record in an on-demand services environment
US9767168B2 (en) 2014-11-21 2017-09-19 Red Hat, Inc. Federation optimization using ordered queues
US10296611B2 (en) 2014-11-25 2019-05-21 David Wein Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes
US10725987B2 (en) 2014-11-25 2020-07-28 Sap Se Forced ordering of a dictionary storing row identifier values
US9965504B2 (en) 2014-11-25 2018-05-08 Sap Se Transient and persistent representation of a unified table metadata graph
US10474648B2 (en) 2014-11-25 2019-11-12 Sap Se Migration of unified table metadata graph nodes
US10558495B2 (en) 2014-11-25 2020-02-11 Sap Se Variable sized database dictionary block encoding
US10255309B2 (en) 2014-11-25 2019-04-09 Sap Se Versioned insert only hash table for in-memory columnar stores
US10042552B2 (en) 2014-11-25 2018-08-07 Sap Se N-bit compressed versioned column data array for in-memory columnar stores
US10552402B2 (en) * 2014-11-25 2020-02-04 Amarnadh Sai Eluri Database lockless index for accessing multi-version concurrency control data
US10445187B2 (en) * 2014-12-12 2019-10-15 Actifio, Inc. Searching and indexing of backup data sets
GB2534373A (en) 2015-01-20 2016-07-27 Ibm Distributed system with accelerator and catalog
WO2016117032A1 (ja) * 2015-01-20 2016-07-28 株式会社日立製作所 データベースシステム、計算機システム、及び、データベース管理方法
EA027808B1 (ru) * 2015-01-22 2017-09-29 Кирилл Андреевич Сурков Система управления базой данных
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US9842052B2 (en) * 2015-04-20 2017-12-12 Sap Se Selective allocation of CPU cache slices to database objects
CN104809199B (zh) * 2015-04-24 2018-11-16 联动优势科技有限公司 一种数据库同步的方法和装置
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10496669B2 (en) 2015-07-02 2019-12-03 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
WO2017049317A1 (en) * 2015-09-18 2017-03-23 Able Device, Inc. Secure data link for subscriber identification module (sim)-based processor
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10394822B2 (en) 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10423626B2 (en) 2015-09-25 2019-09-24 Mongodb, Inc. Systems and methods for data conversion and comparison
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10025947B1 (en) * 2015-11-30 2018-07-17 Ims Health Incorporated System and method to produce a virtually trusted database record
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10776220B2 (en) 2016-06-27 2020-09-15 Mongodb, Inc. Systems and methods for monitoring distributed database deployments
US10534856B2 (en) 2016-10-17 2020-01-14 International Business Machines Corporation Atom-based sensible synchronization for information indexing
US10915413B2 (en) * 2017-01-19 2021-02-09 Sap Se Database redo log optimization by skipping MVCC redo log records
US10817334B1 (en) * 2017-03-14 2020-10-27 Twitter, Inc. Real-time analysis of data streaming objects for distributed stream processing
US11481321B2 (en) * 2017-03-27 2022-10-25 Sap Se Asynchronous garbage collection in parallel transaction system without locking
US10853347B2 (en) * 2017-03-31 2020-12-01 Microsoft Technology Licensing, Llc Dependency-based metadata retrieval and update
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
EP3669286A4 (en) 2017-08-15 2021-06-23 NUODB Inc. DIVISION OF INDEX INTO DISTRIBUTED DATABASES
US11182378B2 (en) 2017-11-08 2021-11-23 Walmart Apollo, Llc System and method for committing and rolling back database requests
CN107918671A (zh) * 2017-11-29 2018-04-17 郑州云海信息技术有限公司 全局序列号应用于分布式数据库中间件的方法
CN107862090A (zh) * 2017-12-04 2018-03-30 中企动力科技股份有限公司 数据库的水平扩展方法及装置
US11423003B2 (en) * 2017-12-11 2022-08-23 Micro Focus Llc Optimistic concurrency control for database transactions
RU2673019C1 (ru) * 2017-12-14 2018-11-21 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ обеспечения доступа к разделяемому ресурсу в распределенной вычислительной системе
US11593395B2 (en) * 2018-04-11 2023-02-28 Trimble Inc. Environmental lifecycle data management system
CN112241276B (zh) * 2019-07-19 2022-04-22 华为技术有限公司 一种设备的升级方法及装置
US11216441B1 (en) 2020-11-25 2022-01-04 Coupang Corp. Systems and methods for managing a highly available and scalable distributed database in a cloud computing environment
US11263206B1 (en) * 2021-03-02 2022-03-01 Coupang Corp. Systems and methods for multi-nodal stream processing framework for partitioned database
CN113672558B (zh) * 2021-08-29 2023-08-29 中盾创新数字科技(北京)有限公司 一种基于soa的档案管理方法
US11438224B1 (en) 2022-01-14 2022-09-06 Bank Of America Corporation Systems and methods for synchronizing configurations across multiple computing clusters

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US7028043B2 (en) * 1998-04-10 2006-04-11 International Business Machines Corporation Creation of customized trees
US6499036B1 (en) * 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
WO2000014618A2 (en) * 1998-08-24 2000-03-16 Fujitsu Limited Workflow system and method
US6401096B1 (en) * 1999-03-26 2002-06-04 Paul Zellweger Method and apparatus for generating user profile reports using a content menu
US6748394B2 (en) * 2000-04-27 2004-06-08 Hyperion Solutions Corporation Graphical user interface for relational database
US6523036B1 (en) * 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
US6862589B2 (en) * 2001-05-10 2005-03-01 Ranco Incorporated System and method for performing diagnostics using a portable device displaying diagnostic data using templates
US7089002B2 (en) * 2001-05-11 2006-08-08 Telefonaktiebolaget Lm Ericsson (Publ) Releasing plural radio connections with omnibus release message
US6480857B1 (en) * 2001-06-07 2002-11-12 David Chandler Method of organizing hierarchical data in a relational database
US7233960B1 (en) * 2001-10-31 2007-06-19 Numoda Corporation System and method for mobile wireless electronic data capture and distribution of a merchant card-processing application
US7146564B2 (en) * 2001-12-21 2006-12-05 Xmlcities, Inc. Extensible stylesheet designs using meta-tag and/or associated meta-tag information
US7062502B1 (en) * 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
JP4036661B2 (ja) * 2002-03-01 2008-01-23 日本電信電話株式会社 複製データ管理方法、ノード、プログラム、記録媒体
US7096216B2 (en) * 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
CN1323515C (zh) * 2003-01-28 2007-06-27 华为技术有限公司 基于生成树协议的多节点网络管理方法
US7219102B2 (en) * 2003-12-22 2007-05-15 International Business Machines Corporation Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees
US7293039B1 (en) * 2004-03-12 2007-11-06 Network Appliance, Inc. Storage resource management across multiple paths
US7395352B1 (en) 2004-03-12 2008-07-01 Netapp, Inc. Managing data replication relationships
US7657529B2 (en) 2004-03-26 2010-02-02 Oracle International Corporation Method of providing shared objects and node-specific objects in a cluster file system
JP2006048507A (ja) * 2004-08-06 2006-02-16 Nippon Telegr & Teleph Corp <Ntt> ファイル検索方法、端末、プログラム、および記録媒体
US7890508B2 (en) * 2005-08-19 2011-02-15 Microsoft Corporation Database fragment cloning and management
JP4747733B2 (ja) * 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
FR2895102B1 (fr) 2005-12-19 2012-12-07 Dxo Labs Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
US7853624B2 (en) * 2006-05-02 2010-12-14 International Business Machines Corporation System and method for optimizing distributed and hybrid queries in imperfect environments
RU2324974C1 (ru) * 2006-09-07 2008-05-20 Комитет финансов Санкт-Петербурга Система взаимодействия баз данных автоматизированной системы управления
US20080077635A1 (en) * 2006-09-22 2008-03-27 Digital Bazaar, Inc. Highly Available Clustered Storage Network
CN101251843B (zh) * 2007-11-23 2010-06-30 华中科技大学 一种用于数据网格的全分布式副本定位方法
JP5312776B2 (ja) * 2007-11-28 2013-10-09 株式会社野村総合研究所 ネットワークシステム及び更新情報の共有方法
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
CN101471845B (zh) * 2007-12-27 2011-06-15 ***通信集团公司 数据块副本数量调整方法及元数据服务器节点
US8667031B2 (en) * 2008-06-13 2014-03-04 Oracle International Corporation Reuse of shared metadata across applications via URL protocol
US8108343B2 (en) * 2009-04-23 2012-01-31 Microsoft Corporation De-duplication and completeness in multi-log based replication
RU2016122623A (ru) * 2010-03-18 2018-11-29 НУОДиБи ИНК. Система управления базой данных

Also Published As

Publication number Publication date
JP2013522778A (ja) 2013-06-13
AU2011227121A1 (en) 2013-01-24
MY155432A (en) 2015-10-15
ES2811106T3 (es) 2021-03-10
CA2793429A1 (en) 2011-09-22
CN103026355B (zh) 2016-06-08
IL252687A0 (en) 2017-08-31
RU2012144349A (ru) 2014-04-27
EP2548135B1 (en) 2020-05-13
IL245361A0 (en) 2016-06-30
CN103026355A (zh) 2013-04-03
US20120254249A1 (en) 2012-10-04
WO2011116324A3 (en) 2012-11-29
CN105956176A (zh) 2016-09-21
CN105956176B (zh) 2020-07-03
US20130297565A1 (en) 2013-11-07
RU2016122623A (ru) 2018-11-29
SG183996A1 (en) 2012-10-30
US20110231447A1 (en) 2011-09-22
IL252687B (en) 2019-03-31
US8504523B2 (en) 2013-08-06
BR112012023552A2 (pt) 2018-06-05
AU2011227121B2 (en) 2015-12-17
ZA201207678B (en) 2013-06-26
CA2793429C (en) 2019-10-29
IL245361A (en) 2017-06-29
US8224860B2 (en) 2012-07-17
WO2011116324A2 (en) 2011-09-22
IL221872A (en) 2016-05-31
NZ603057A (en) 2014-10-31
RU2591169C2 (ru) 2016-07-10
EP2548135A2 (en) 2013-01-23

Similar Documents

Publication Publication Date Title
JP5801375B2 (ja) データベース管理システム
US6523036B1 (en) Internet database system
CA2578666C (en) Method and system for load balancing a distributed database
US9009116B2 (en) Systems and methods for synchronizing data in a cache and database
EP1840766B1 (en) Systems and methods for a distributed in-memory database and distributed cache
US5878434A (en) Transaction clash management in a disconnectable computer and network
US8117153B2 (en) Systems and methods for a distributed cache
US5991771A (en) Transaction synchronization in a disconnectable computer and network
US9218405B2 (en) Batch processing and data synchronization in cloud-based systems
EP1840768A2 (en) Systems and method for a distributed in-memory database
US8600933B2 (en) Multi-master attribute uniqueness
US20190196918A1 (en) Methods and systems of operating a database management system dmbs in a strong consistency mode
Dey et al. Scalable distributed transactions across heterogeneous stores
US20080195615A1 (en) Recursive lock-and-propagate operation
WO2021022396A1 (en) Transaction processing for database distributed across regions
EA027808B1 (ru) Система управления базой данных
CN117539841B (zh) 一种分布式文件***元数据管理***及其操作方法
Litwin et al. An overview of a scalable distributed database system SD-SQL server
Narasani Clustering implementation for H2 database

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150727

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150826

R150 Certificate of patent or registration of utility model

Ref document number: 5801375

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250