さまざまな同時実行モデルとさまざまな同時実行機能について読んでいますが、単純な MVCC データ構造を実装する方法についてのテキストはありません。MVCC ベースの同時実行性を提供する単純な配列ベースのデータ構造を実装する必要があるとしましょう。私のコードはどのように見えるべきですか?
MVCC が基本的に次のことを意味することを理解しています: (マルチバージョン同時実行制御)
1) 読み取りの分離 - 書き込みによって読み取りがブロックされないようにする必要があります
2) 先行発生関係/順序付けを確立するためのタイムスタンプに基づく順序付け。
他の側面に注意する必要がありますか?
また、以下のコードは最初の要件を処理しますが、タイムスタンプの順序を実装するにはどうすればよいですか?
class MVCCArray{
private int[] arr;
MVCCArray(int n){
arr = new int[n];
}
//unblocking reads
public int getItem(int index){
return arr[index];
}
//blocking writes
public synchronized void setItem(int index, int value){
arr[index]=value;
}
}
PS : 一般的な方法で実装されている方法を理解したいです。特定のデータベースでの実装方法の説明は控えてください。