読み取り/書き込みセマンティクスとオブジェクトセマンティクスの意味は(簡単に言えば)何ですか?次の記述が正しいのはなぜですか?
銀行口座への借方/貸方の書き込みであり、読み取り/書き込みセマンティクスでは競合するように定義されていますが、オブジェクトセマンティクスでは競合しません。
読み取り/書き込みセマンティクスとオブジェクトセマンティクスの意味は(簡単に言えば)何ですか?次の記述が正しいのはなぜですか?
銀行口座への借方/貸方の書き込みであり、読み取り/書き込みセマンティクスでは競合するように定義されていますが、オブジェクトセマンティクスでは競合しません。
これ以上の文脈がなければ、これが質問に答えるかどうかはわかりません。
以下のPDFのセクション2.1-2に概要が記載されています。
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.4184&rep=rep1&type=pdf
ここにいくつかの重要なポイントがあります。
読み書き
「読み取り/書き込みモデルの2フェーズロックプロトコルは、オブジェクトごとに2種類のロック、つまり読み取りロックと書き込みロックを維持します。トランザクションは、データオブジェクトを読み取り(書き込み)する前に、読み取り(書き込み)ロックを取得する必要があります。2つのロック両方のロックが同じデータオブジェクトに適用され、そのうちの少なくとも1つが書き込みロックである場合、異なるトランザクションからのロックが競合します。ロックがそのデータオブジェクトの他のロックと競合する場合、トランザクションはロックを取得できません。」
したがって、別の人が書いている場合は読むことも、別の人が読んでいる場合は書くこともできません。しかし、他の人が読んでいる場合は読むことができます。
物体
「オブジェクトは状態を維持し、トランザクションがオブジェクトの状態にアクセスして変更するための唯一の手段として機能する一連の操作を提供します。...両方の操作が更新操作である場合でも、2つの可換操作を同時に実行できます。」
これで、操作の順序が重要ではないものに対して読み取り/書き込みを許可できます。
彼らは続けて、預金と引き出しが通勤しない方法を説明します(資金が不足しているために引き出しが拒否される可能性があります)が、2つの預金は通勤できます。これらの2つのデポジットは互いにブロックし、読み取り/書き込みでは順番に発生する必要がありますが、オブジェクトのセマンティクスでは同時に発生する可能性があります。
さて、あなたが「(簡単に)」を入れたことを考えると...私はこれを突き刺します。
まず、この質問は、「値」または「データ」をオブジェクトとして参照する場合に最も意味があります。これは、OODB内のデータについて議論するための一般的な方法です。したがって、保存された銀行口座の残高は「データオブジェクト」と呼ばれ、その値にアクセスするためのロックを取得できます(読み取り、書き込み、削除など)。
そのコンテキストを考えると、読み取り/書き込みセマンティクスは「データを変更する意味」であり、これに基づいて、ロックされたトランザクション内で発生する可能性のある読み取りまたは書き込みを決定できます。対照的に、オブジェクトのセマンティクスでは、関連するロックを保持している限り、適切と思われる方法で値を変更できます。
銀行口座の場合、同じトランザクションで借方と貸方の両方(または複数の借方、または複数の貸方)が発生しないようにロックする必要があります(したがって、これらは引き続き別個の操作と見なされます)。これは、読み取り/書き込みセマンティクスが競合する複数の貸方/借方を定義することを意味します。
たとえば、単一のトランザクションの範囲で、銀行口座に10ポンドを入金し、銀行口座から7ポンドを引き落とす場合(つまり、オブジェクトセマンティクスを使用して)、結果の銀行取引明細書には、 2つの別々のエントリ。
読み取り/書き込みセマンティクスを使用してロックロジックを定義することにより、トランザクションがこのように結合されないようにすることができます。