ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
ダウンロード
ブラウザよりも高速アクセス!
 

2相コミット

索引 2相コミット

2相コミット(Two-Phase Commit)とは、コンピュータネットワークやデータベースにおいて、分散システム内の全ノードがトランザクションのコミットに合意するための分散アルゴリズムあるいはプロトコルである。ネットワーク障害やノード故障の場合も考慮され、結果としてトランザクションはコミットされるか失敗するかのいずれかの状態となる。しかし、Dale Skeen とマイケル・ストーンブレーカーの研究によれば、2相コミットは同時に複数のサイトが(無作為に)障害に陥った場合に対応できない。このアルゴリズムの2相とは、「調整者; coordinator」が全「参加者; cohorts」の調整を行う「コミット要求相; commit-request phase」と、調整者の決定によって全参加者がトランザクションを完了させる「コミット相; commit phase」である。.

13 関係: マイケル・ストーンブレーカーログ先行書き込みトランザクションプロトコルデータベース分散コンピューティングアルゴリズムアトミックコミットコミットコンピュータネットワークX/Open XA木構造 (データ構造)3相コミット

マイケル・ストーンブレーカー

マイケル・ストーンブレーカー(Michael Stonebraker, 1943年10月11日 - )はデータベースの研究開発で知られた計算機科学者。関係データベース業界に多大な影響を与えた。Ingres、Illustra、Cohera、StreamBase といったシステム構築に携わり、かつてはInformixのCTOも務めた。また、Readings in Database Systems の著者としても知られている。.

新しい!!: 2相コミットとマイケル・ストーンブレーカー · 続きを見る »

ログ先行書き込み

ログ先行書き込み(ログせんこうかきこみ、write ahead logging, WAL)とは、データベースシステムにおいて原子性と永続性を実現するためのテクニックのひとつである。 ログ先行書き込みを採用したシステムでは、データベースに対する変更は全て実際の操作の前にログに記録される。通常、ログにはアンドゥとリドゥ用の情報が含まれている。 この処理の目的について例を挙げて説明する。プログラムがある処理を実行中にマシンの電源が落ちた場合を考える。マシンが再起動した後、プログラムは電源断の前に実行していた処理が成功したのか、途中まで進んでいて中断されたのか、失敗したのかを検知する必要がある。ログ先行書き込みが行われていた場合、プログラムはログをチェックして、電源が落ちたときに本来行われていなければならなかった内容と、実際に行われた内容とを比較する。この比較によって、プログラムは処理の開始時までアンドゥするか、中断された処理を再開して完了させるか、そのままの状態にしておくかを判断することができる。 ログ先行書き込みを使えばデータベースの更新をin-placeで行うことが可能である。アトミックな更新処理を実装する方法としては他にシャドウページングがあるが、これはin-placeなアルゴリズムではない。更新をin-placeで行う利点は主にインデックスとブロックリストの変更を少なくできることにある。 よく知られたログ先行書き込みアルゴリズムの一つとしてARIES(Algorithm for Recovery and Isolation Exploiting Semantics)が挙げられる。 ファイルシステムの分野では、ログ先行書き込みのことをジャーナリングと呼ぶ。 ろくせんこうかきこみ.

新しい!!: 2相コミットとログ先行書き込み · 続きを見る »

トランザクション

トランザクション (transaction) とは、データベース管理システム(または類似のシステム)内で実行される、分けることのできない一連の情報処理の単位である。トランザクション内では、ユーザインタフェース、アプリケーションプログラム、永続性記憶資源、各種I/Oが実行される。 ユーザインタフェースには、トランザクション実行の有無を明確に表示する必要がある。 永続性記憶資源には、自分自身のローカルトランザクションを管理するトランザクショナルなファイルやデータベースが使われる。その理由は、複数の不揮発性データが更新の途中で処理が中断した場合に不揮発性データ値が中途半端な状態で残ってしまい、データを正常値に戻すことができなくなるためである。 永続性記憶資源の管理には、複数のデータ項目の更新操作列をすべて実行するか、まったく実行しないように制御する必要がある。これをアトミック実行という。バッチジョブのような処理形態でも、出力結果はアトミック実行の概念を満たさなければならない。たとえば、月末の領収証の一括印刷処理を行っているときにプリンタエラーでジョブが中断した場合でも、安易な位置から再実行してはならない。 また、分散トランザクションとは、ユーザインターフェイス端末、各種処理サーバ、永続性記憶資源、I/O装置を複数の遠隔装置として構成する処理形態である。論理的な狭義では、複数の永続性記憶資源の管理を使うトランザクション処理の事を指す。ユーザインターフェイス端末が永続性記憶域を分担しないで集中処理サーバにつながっている形態は、単にオンライントランザクション処理 (OLTP) と呼ぶ。 トランザクションが満たすべき技術的要件にACID特性がある。.

新しい!!: 2相コミットとトランザクション · 続きを見る »

プロトコル

プロトコルまたはプロトコール(protocol, 、protocole )とは、複数の者が対象となる事項を確実に実行するための手順について定めたもの。 もともとは「人間同士のやりとり」だけに関する用語であった。戦間期の学術的批判を経て、情報工学分野でマシンやソフトウェア同士のやりとりに関する取り決め(通信規約)を指すためにも用いられるようになった。 日本語に意訳した語として、「規定」、「議定書」、「儀典」などがある。.

新しい!!: 2相コミットとプロトコル · 続きを見る »

データベース

データベース(database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。.

新しい!!: 2相コミットとデータベース · 続きを見る »

分散コンピューティング

分散コンピューティング(ぶんさんコンピューティング、英: Distributed computing)とは、プログラムの個々の部分が同時並行的に複数のコンピュータ上で実行され、各々がネットワークを介して互いに通信を行いながら全体として処理が進行する計算手法のことである。複雑な計算などをネットワークを介して複数のコンピュータを利用して行うことで、一台のコンピュータで計算するよりスループットを上げようとする取り組み、またはそれを実現する為の仕組みである。分散処理(ぶんさんしょり)ともいう。並列コンピューティングの一形態に分類されるが、一般に並列コンピューティングと言えば、同時並行に実行する主体は同じコンピュータシステム内のCPU群である。ただし、どちらもプログラムの分割(同時に実行できる部分にプログラムを分けること)が必須である。分散コンピューティングではさらに、それぞれの部分が異なる環境でも動作できるようにしなければならない。例えば、2台の異なるハードウェアを使ったコンピュータで、それぞれ異なるファイルシステム構成であっても動作するよう配慮する必要がある。 問題を複数の部分問題に分けて各コンピュータに実行させるのが基本であり、素数探索や数多く試してみる以外に解決できない問題の対処として用いられているものが多い。分散コンピューティングの例としてBOINCがある。これは、大きな問題を多数の小さな問題に分割し、多数のコンピュータに分配するフレームワークである。その後、それぞれの結果を集めて大きな解を得る。一般的に処理を分散すると一台のコンピュータで計算する場合と比べ、問題データの分配、収集、集計するためのネットワークの負荷が増加し、問題解決の為のボトルネックとなるため、部分問題間の依存関係を減らすことが重要な課題となる。 分散コンピューティングは、コンピュータ同士をネットワーク接続し、効率的に通信できるよう努力した結果として自然に生まれた。しかし、分散コンピューティングはコンピュータネットワークと同義ではない。単にコンピュータネットワークと言った場合、複数のコンピュータが互いにやり取りするが、単一のプログラムの処理を共有することはない。World Wide Web はコンピュータネットワークの例であるが、分散コンピューティングの例ではない。 分散処理を構築するための様々な技術や標準が存在し、一部はその目的に特化して設計されている。例えば、遠隔手続き呼出し (RPC)、Java Remote Method Invocation (Java RMI)、.NET Remoting などがある。.

新しい!!: 2相コミットと分散コンピューティング · 続きを見る »

アルゴリズム

フローチャートはアルゴリズムの視覚的表現としてよく使われる。これはランプがつかない時のフローチャート。 アルゴリズム(algorithm )とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。 「問題」はその「解」を持っているが、アルゴリズムは正しくその解を得るための具体的手順および根拠を与える。さらに多くの場合において効率性が重要となる。 コンピュータにアルゴリズムをソフトウェア的に実装するものがコンピュータプログラムである。人間より速く大量に計算ができるのがコンピュータの強みであるが、その計算が正しく効率的であるためには、正しく効率的なアルゴリズムに基づいたものでなければならない。.

新しい!!: 2相コミットとアルゴリズム · 続きを見る »

アトミックコミット

アトミックコミットアトミック(英語:atomic)は「不可分な個体」という本来の意味で用いられている。ここでは「原子」(元素の最小構成単位)とは無関係。とは異なる変更の集合が一つの処理として実行されるような処理のことである。もし全ての変更が実行されれば、アトミックコミットが成功したと表現される。アトミックコミットが完了するまでに障害があった場合、"コミット"は中止され、実行された全ての変更は戻される(ロールバックされる)。この場合の障害の例として、ネットワークケーブルの接続が切れた場合や、自動的に解消できない競合が起きた場合などがある。どちらの場合でも、アトミックコミットによりシステムは整合性がある状態に置かれる。 二将軍の問題の証明をもって、この問題を解くアルゴリズムがないことが証明されている。しかし、2相コミットや3相コミットなどのアルゴリズムはアトミックコミットの問題の一部を解決することが可能である。 今日では、アトミックコミットはデータベースシステムにおいて、複数の変更処理を同時にコミットする場合に起きる。これらの変更処理は同じテーブルへの異なるupdate句である場合や、複数データベースに及ぶ変更である場合がある。 アトミックコミットは現在のバージョン管理システムにおいて使用され、コミットを可能にしたり、ソースにアップロードしたり、複数ファイルに変更をしつつ(これはチェンジセットと呼ばれる)、全てのファイルがアップロードされ、マージされることを保証する。アトミックコミットにおいて、同時にコミットされるファイルは単一の編集内容に関係し、その編集内容により変更された部分は全てコミットに含まれるべきである。このようにして、コードベースは常に安定である。つまり、ユーザが作業コピーを更新する際、他人の作業コピーにおいて未コミットである変更点を逃すことがなく、チェンジセットは読めないほどごちゃごちゃにならず、アトミックコミットがロールバックされた際は、単一の編集内容がコードベースより除去される。.

新しい!!: 2相コミットとアトミックコミット · 続きを見る »

コミット

ミット (commit) とは、データベースにおいてトランザクションによる内容更新を恒久的なものとして確定することを指す。 一般にトランザクションの終了時にその更新を確定するという意味で「コミットする」などと使用する。関係データベース管理システム (RDBMS) のSQLのCOMMIT文はトランザクションの完了時に使用され、そのトランザクションによる更新が他からも見えるようにする。逆に、更新を取り消す処理をロールバックと呼び、こうした制御をコミットメント制御と呼ぶ。SQLではROLLBACK文がその処理を行う。 バージョン管理システムはデータベースの一種であり、他者から自身の更新が見えるようにするという意味で「コミット」という用語を使用している。.

新しい!!: 2相コミットとコミット · 続きを見る »

コンピュータネットワーク

ンピュータネットワーク(computer network)は、複数のコンピュータを接続する技術。または、接続されたシステム全体。コンピュータシステムにおける「通信インフラ」自体、あるいは通信インフラによって実現される接続や通信の総体が(コンピュータ)ネットワークである、とも言える。.

新しい!!: 2相コミットとコンピュータネットワーク · 続きを見る »

X/Open XA

X/Open XA とは、X/Openが策定した分散トランザクション処理のための標準規格。各ノードのローカルなリソースマネージャと、それらを分散システムとして統合するトランザクションマネージャとの間のプログラムインタフェースを規定している。 XA は、トランザクションマネージャとリソースマネージャ間で2相コミットプロトコルを実行するためのC言語プログラムインタフェースを規定している。主にTXインタフェースおよびXAインタフェースがある。 本来の XA インターフェースは製品に依存せず同一であるが、XA 準拠の各 トランザクションマネージャ では、リソースマネージャ が製品固有の方法で組み込まれている場合がある。.

新しい!!: 2相コミットとX/Open XA · 続きを見る »

木構造 (データ構造)

親子構造 木構造(きこうぞう)とは、グラフ理論の木の構造をしたデータ構造のこと。.

新しい!!: 2相コミットと木構造 (データ構造) · 続きを見る »

3相コミット

ンピュータネットワークやデータベースにおいて、3相コミットプロトコル(3PC)は分散アルゴリズムであり、分散システムの全ノードがデータベーストランザクションのコミットに合意することを可能にするものである。しかし、2相コミット(2PC)とは違い、3PCはノンブロッキングである。より詳細には、3PCはトランザクションがコミットするか、中止するかのいずれかにかかる時間に上限を設ける。この性質により、もしあるトランザクションが3PCによりコミットしようとして、あるロックを行っている場合、タイムアウトによりそのロックが解除されることが保証される。.

新しい!!: 2相コミットと3相コミット · 続きを見る »

ここにリダイレクトされます:

ツーフェーズコミット

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »