什么是不可变数据?

不可变数据是数据库中不能(或不应该)删除或修改的信息。大多数传统数据库都以可变格式存储数据,这意味着当有新数据可用时,数据库将覆盖旧数据。例如,在雇员数据库中,当员工更改住所时,地址信息将被覆盖。

不可变数据图

相比之下,当有新信息可用时,存储不可变数据的数据库不会覆盖旧项目。他们使用各种技术来保留数据的历史值和当前值。不可变数据对于审计和调试非常有用。

不可变数据的一个真实示例是某人的病历。多年来,一个人可能已经为不同的疾病寻求治疗。病历包括各种处方、外科手术和检查报告。这些数据文件是不可变的。例如,当一个人收到新的医疗处方时,他们的旧处方不应被覆盖。相反,数据库应将新数据附加到现有数据中。历史医学数据是不可变数据的典型示例。

为什么组织需要不可变数据?

随着云数据和物联网 (IoT) 的出现,组织会收到大量交易数据。这些数据需要快速存储在数据库中。不可变文件是存储高速事务日志的合适解决方案。组织还需要考虑对历史数据的需求。随着数据隐私法规越来越严格,许多组织选择保留其历史数据。如果客户或政府要求过去的数据,这将有助于满足要求。以不可变格式存储数据的数据库最适合这种用例。

组织通常需要将其当前数据与历史数据进行比较,以了解用户趋势或衡量增长。在这种情况下,覆盖历史数据不是一个好主意。不可变数据还可以帮助组织跟踪多年来所经历的变化;它在软件系统中尤其有用。

O'Reilly 报告:构建统一的数据基础架构
O'Reilly 报告:构建统一的数据基础架构
只有三分之一的企业发展成为数据驱动型组织。解决方案是什么?在这本电子书中找到答案!

不可变数据库的用途是什么?

存储流数据

随着信息的爆炸式增长和物联网的出现,组织每秒都会收到大量数据。他们无法承受存储数据的延迟。大多数使用可变文件的传统数据库都有一定的延迟,因为它们会擦除先前的数据、写入新数据并检查完整性。但是,对于流数据(例如来自物联网传感器的数据),数据库应快速存储数据。当数据库使用不可变数据文件时,它只是追加新数据。这使得不可变数据库存储数据的速度大大加快,因此更适合存储流数据。

保留历史背景

个人数据(例如个人的病史)需要永久存储,以便为新数据提供背景信息。例如,当一个人接受疾病治疗时,需要考虑他们所有的旧药物和治疗方法。虽然传统数据库可以提供历史背景,但它们不能保证数据得到保存。不可变数据库就其本质而言,确保不会删除任何数据。

审计和调试

经常更改的系统(例如网站或软件)需要保留系统的主要快照以跟踪更改。大多数版本控制系统将数据存储在不可变文件中,这样就不会有覆盖的风险。金融机构还需要一个不可变的数据库来保存其所有历史交易。其他需要提供数据以进行频繁审计的组织也可以从不可变数据库中受益。

不可变数据库工作原理

与基于记录的传统关系数据库(可变数据库)不同,不可变数据库是基于日志的。当有新的数据项可用时,可变数据库会重写数据表中的特定单元格。不可变数据库将数据存储在日志中,并为每条新数据创建一个新日志。

要了解不可变数据库的工作方式,可以以存储博客文章详细信息的简单数据库为例。经典的关系数据库将以可变格式存储这些数据,并将博客文章的详细信息存储在表中。假设永久链接、标题和内容是此表的三列。在可变数据库中,当标题或内容发生更改时,数据库将执行更新操作。新数据将覆盖之前的条目。较旧的标题和内容将永远丢失。标准的不可变数据库存储与日志相同的信息。

可变数据库只存储博客的当前状态。不可变数据库存储博客的历史记录以及当前状态。不可变数据库只执行插入操作,从不更新现有数据字段。

不可变数据库如何存储数据?

继续以博客文章为例,不可变数据库使用与可变数据库不同的表结构。每个博客文章修订都会作为表中的新行插入到数据库中。表中的字段如下所示:

  • 修订号:这是表的主键。每个博客修订版都应该有一个唯一的修订号。
  • 时间戳:修订发生的时间。它应该是一个唯一的值。
  • 永久链接、标题和内容

与可变数据库中每个博客文章的修订都会覆盖博客的数据不同,不可变数据库会为博客文章中的每一次更改创建一个新的修订条目。通过这种方式,有关博客文章之前每次编辑的信息都会被保留,并且可以根据时间戳或修订号随时检索。

不可变数据的优势是什么?

操作更快

当数据以不可变方式存储时,新数据会附加到前一个数据后面,并附上时间戳。这意味着数据库可以简单地插入数据,而不会阻碍系统执行完整性检查。对于流数据和传感器数据,这种不可变数据的质量至关重要。在这些情况下,数据会源源不断,并需要以最小的延迟进行存储。

历史背景

许多组织需要将历史数据与最新版本进行比较,以获得更好、更具情境性的分析。不可变数据库保留所有历史数据。它有助于在系统可以恢复到的过去创建的检查点。

可审核性

许多行业,尤其是医疗保健和金融行业,可能面临随机审计。对于他们来说,保留所有数据至关重要,以便在审计需要时可方便地获得历史数据。

合规性

在全球范围内,数据隐私规则非常严格。用户有权要求提供组织从他们那里收集的所有数据的副本。将数据存储为不可变数据有助于组织遵守此类要求。

不可变数据资源
参考数据的有效管理能在何处为业务增加价值?
了解四个 R 的参考数据管理,立即开始创建业务案例。

不可变数据的缺点是什么?

存储要求更高

与传统的可变数据库相比,存储不可变数据的存储要求更高。每次更新都存储为不同的日志,这会增加数据库的大小。

复杂性

不可变数据库更为复杂,因为它们存储历史上下文。数据库需要处理存储每笔交易的复杂性。

数据合规性

根据设计,不可变数据库从不删除任何数据。但是,大多数数据法规都规定,如果用户提出要求,系统就应删除数据。对于基于不会删除任何数据的假设而构建的不可变数据库来说,这是一个巨大的挑战。

不可变数据库如何提供删除功能?

从本质上讲,不可变数据库不提供删除功能,因为数据库本身的设计原则是永不删除数据。但是,正如我们在上一节中看到的那样,数据隐私法规赋予用户被 “遗忘” 的权利。这就要求删除/覆盖数据。

加密粉碎是一种可用来 “覆盖” 不可变数据的解决方案。在具有加密粉碎功能的数据库中,不可变数据以加密格式存储。解密存储在数据库中的个人数据需要加密密钥。所有这些密钥都存储在可变数据库中。当有覆盖数据的请求时,数据不会被删除。相反,关联的加密密钥会被覆盖。加密密钥消失后,数据就不再有用了。这相当于删除与加密密钥关联的数据。对于欧盟的数据隐私规则来说,这是一个可以接受的解决方案。