cc-5-1
还有一类并发控制的方法:多版本控制(multivesion concurrency control, MVCC)。每个写操作,都会产生一个新的版本,而不是覆写。这样做的好处是,一般不会reject一个操作(事务),即使按照history来说这个操作已经来迟了。而且也不会有太多额外的开销,因为对于下层的DM来说,为了支持recovery,也一般需要存储多个版本。只不过之前DM维护这些版本,对Scheduler不可见而已。
还有一类并发控制的方法:多版本控制(multivesion concurrency control, MVCC)。每个写操作,都会产生一个新的版本,而不是覆写。这样做的好处是,一般不会reject一个操作(事务),即使按照history来说这个操作已经来迟了。而且也不会有太多额外的开销,因为对于下层的DM来说,为了支持recovery,也一般需要存储多个版本。只不过之前DM维护这些版本,对Scheduler不可见而已。
NVML是Intel提供的一个操作NVM的库。背景是把NVM硬件当成一个文件,通过mmap映射到内存空间中来。为了方便使用,在裸的NVM的基础上包装了一些函数,类似于libc中malloc、free等函数,来方便程序员进行内存、事务等管理。其中,libpmem是NVML里面最基础的一个库,也是比较简单的。本文分析了libpmem的源码。
MapReduce、Drayd包括本文的Spark,都是高级的集群编程模型。前两者都是基于非循环的数据流模型,从物理存储加载;经过DAG的一系列操作,写回到稳定存储。但是这种方式对于迭代式计算、交互式程序效率很低,需要不断地重复读写磁盘。Spark就是针对这种应用方式,提出了一种新的数据模型——RDD(resilient distributed datasets)。
MapReduce 是google提出的一套计算框架。灵感来源于一些函数式语言。Map 指的是对一个数组所有的元素,全都执行一遍Map函数,得到一个解的数组;Reduce指的是给定一个数组,对数组里的元素两两进行Reduce操作,最后得到一个解。现在在python里面就有map reduce的用法。这里google把它应用到分布式系统里来了,用来处理大规模的数据问题。
分布式共享内存,Distributed Shared Memory(DSM),是一种构架,多个机器共享所有的内存,看到的是同一块地址空间。这样就像使用同一个机器一样,操作不同机器上的内存了。