为什么可变性对于实时数据分析至关重要

2022/11/1 2:24:51

本文主要是介绍为什么可变性对于实时数据分析至关重要,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

可变数据和不可变数据之间的差异

在我们讨论为什么可变性是实时分析的关键之前,了解它是什么很重要。

可变数据是存储在表记录中的数据,可以使用较新的数据擦除或更新。例如,在员工地址数据库中,假设每条记录都有人员的姓名及其当前居住地址。如果员工将住所从一个地方搬到另一个地方,则当前地址信息将被覆盖。

传统上,这些信息将存储在事务数据库中 - Oracle Database,MySQL,PostgreSQL等 - 因为它们允许可变性:存储在这些事务数据库中的任何字段都是可更新的。对于当今的实时分析,我们需要可变性还有许多其他原因,包括数据扩充和回填数据。

不可变数据正好相反——它不能被删除或修改。更新不是覆盖现有记录,而是仅追加。这意味着更新入到不同的位置,或者您被迫重写新旧数据以正确存储它。稍后会详细介绍其缺点。不可变数据存储在某些分析方案中非常有用。

不变性的历史用处

数据仓库普及了不变性,因为它简化了可扩展性,尤其是在分布式系统中。通过在 RAM 或 SSD 中缓存频繁访问的只读数据,可以加速分析查询。如果缓存的数据是可变的并且可能发生变化,则必须根据原始源不断检查它,以避免过时或错误。这将增加数据仓库的操作复杂性;另一方面,不可变的数据不会造成这样的麻烦。

不变性还降低了意外删除数据的风险,这在某些用例中是一个显着的好处。记录医疗保健和患者健康记录。像新的医疗处方这样的东西将被添加,而不是写在现有或过期的处方上,这样你总是有一个完整的病史。

最近,公司试图将Kafka和Kinesis等流发布系统与不可变的数据仓库配对进行分析。事件系统捕获物联网和 Web 事件,并将其存储为日志文件。这些流日志系统很难查询,因此通常会将所有数据从日志发送到不可变的数据系统(如 Apache Druid)以执行批处理分析。

数据仓库会将新流式处理的事件追加到现有表。由于过去的事件在理论上不会改变,因此一成不变地存储数据似乎是正确的技术决策。虽然不可变数据仓库只能按顺序写入数据,但它确实支持随机数据读取。这使得分析业务应用程序能够随时随地高效地查询数据。

不可变数据的问题

当然,用户很快发现,由于许多原因,数据确实需要更新。对于事件流尤其如此,因为多个事件可以反映真实对象的真实状态。此外,网络问题或软件崩溃可能会导致数据延迟交付。延迟到达的事件需要重新加载或回填。

公司也开始接受数据丰富,将相关数据添加到现有表中。最后,公司开始不得不删除客户数据,以满足GDPR等消费者隐私法规及其“被遗忘权”。



这篇关于为什么可变性对于实时数据分析至关重要的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程