不变性改变一切 - ACM


存储和发送不可变数据是一个不可阻挡的趋势。我们需要不变性来进行远距离协调,并且随着存储变得更便宜,我们可以承受不变性。这篇文章是对利用不变性的重复计算模式的一个有趣的抽样。
不久之前,计算成本还是高昂都 ,磁盘存储成本高,DRAM(动态随机存取存储器)成本高,但锁存器的协调成本低;但是现在,使用廉价计算(多核)、廉价商品磁盘以及廉价 DRAM 和 SSD(固态驱动器),所有这些都发生了变化,而与锁存器的协调变得更加困难,因为锁存器延迟失去了很多指令机会。保留大量数据的不可变副本现在是负担得起的,而且它的一个回报是:减少竞争协调的挑战。
随着每 TB 磁盘成本的不断下降,存储正在增加。这意味着可以长时间保留大量数据。随着越来越多的数据和工作跨越很远的距离,分布正在增加。数据中心内的数据似乎“遥不可及”。众核芯片中的数据可能看起来“很遥远”。在尝试与遥远的系统进行协调时,分歧正在增加。
本文探讨了应用程序如何在其正在进行的工作中使用不变性,它们如何生成不可变数据集以供以后离线分析,SQL 如何公开和处理不可变快照,以及大规模并行大数据工作如何依赖于不可变数据集。
接下来,本文考虑了可更新性如何通过 LSF(日志结构文件系统)、COW(写时复制)和 LSM(日志结构合并树)等技术在创建新的不可变文件之上分层。复制和分布式文件系统如何依赖不变性来消除异常?通过在 SSD 和 HDD(硬盘驱动器)中利用这些技巧,硬件人员加入了这一行列。不
设计正在推动不变性,这是在不断增加的距离上进行协调所必需的。给定可以长期存储数据的空间,不变性是可以承受的。版本控制提供了一个不断变化的视图,而底层数据则用绑定到唯一标识符的新内容来表示。

  • •写时复制。许多新兴系统利用 COW 语义来提供变化的外观,同时将不可变文件写入底层存储。反过来,底层存储提供健壮性和可扩展性,因为它存储不可变文件。例如,许多键值系统是用 LSM 树实现的(例如,HBase、BigTable 和 LevelDB)。
  •  干净复制。当数据不可变且具有唯一标识符时,复制的许多挑战就得到缓解。永远不必担心找到数据的陈旧版本,因为不存在陈旧版本。因此,复制系统可能会更加流畅,并且对于允许副本放置的位置不那么挑剔。复制错误也更少。
  •  不可变数据集。不可变数据集可以通过引用与事务数据库数据相结合,并在数据集投影关系模式和表时提供清晰的语义。查看不可变数据集投射的语义,您可以创建它的新版本,针对不同的使用模式进行优化,但仍投射相同的语义。投影、冗余副本、非规范化、索引和列存储都是优化不可变数据同时保留其语义的示例。
  •  并行性和容错性。不变性和函数计算是实现大数据的关键。

更多点击标题