我正在阅读不同的并发模型和不同的并发特性,但没有文字谈论如何实现简单的 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:我想了解它是如何以通用方式实现的。请不要解释它是如何在特定数据库中实现的。