加入收藏 | 设为首页 | 会员中心 | 我要投稿 肇庆站长网 (https://www.0758zz.cn/)- 数据分析、分布式云、安全管理、云计算、物联设备!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2022-08-25 11:53:22 所属栏目:大数据 来源:互联网
导读:像Uber、Facebook和Amazon这样成功的数据驱动型公司依靠的是实时数据分析,为电子商务提供个性化的客户体验,管理车队和供应链,以及实现内部运营的自动化,都需要对最新鲜的数据进行即时洞察。 为了提供实时分析,公司需要一个现代技术基础设施,包括这三点
  ​像Uber、Facebook和Amazon这样成功的数据驱动型公司依靠的是实时数据分析,为电子商务提供个性化的客户体验,管理车队和供应链,以及实现内部运营的自动化,都需要对最新鲜的数据进行即时洞察。
 
 
 
  为了提供实时分析,公司需要一个现代技术基础设施,包括这三点。
 
  一个实时数据源,如网络点击流、传感器产生的物联网事件等。
  一个平台,如 Apache Kafka/Confluent, Spark或 Amazon Kinesis用于发布该事件数据流。
  一个实时分析数据库,能够连续摄取大量的实时事件,并在几毫秒内返回查询结果。
  事件流/流处理已经存在了近十年。它已被充分理解。而实时分析则不然。实时分析数据库的技术要求之一是可变性。可变性是一种超级能力,它能够对数据存储中的现有记录进行更新或变异。
 
  可变和不可变数据之间的区别
  在我们谈论为什么可变性是实时分析的关键之前,重要的是了解什么是可变性。
 
  可变数据是指存储在表记录中的数据,可以被擦除或用更新的数据来更新。例如,在一个雇员地址的数据库中,假设每条记录都有个人的姓名和他们当前的居住地址。如果雇员从一个地方搬到另一个地方,当前的地址信息将被覆盖。
 
  传统上,这些信息会被存储在交易型数据库中----。 Oracle Database, MySQL, PostgreSQL等--因为它们允许可变性。存储在这些交易型数据库中的任何字段都是可更新的。对于今天的实时分析,我们还有很多其他的原因需要可变性,包括数据的丰富性和回填数据。
 
  不可变的数据则相反--它不能被删除或修改。更新不是写在现有的记录上,而是只做追加。这意味着更新被插入到不同的位置,或者你被迫重写新旧数据以正确存储它。稍后会有更多关于这个缺点的内容。不可变的数据存储在某些分析场景中是很有用的。
 
  不变性的历史作用
  数据仓库普及了不变性,因为它减轻了可扩展性,特别是在分布式系统中。分析性查询可以通过在RAM或SSD中缓存大量访问的只读数据来加速进行。如果缓存的数据是易变的,并且有可能发生变化,那么就必须不断地与原始数据进行核对,以避免变得陈旧或错误。这将增加数据仓库的操作复杂性;另一方面,不可变的数据则不会产生这样的问题。
 
  不变性也减少了意外删除数据的风险,这在某些用例中是一个重要的好处。以医疗保健和病人健康记录为例。像新的医疗处方会被添加,而不是写在现有的或过期的处方上,这样你总是有一个完整的医疗记录。
 
  最近,一些公司试图将Kafka和Kinesis等流发布系统与用于分析的不可变的数据仓库配对。这些事件系统捕获物联网和网络事件,并将其存储为日志文件。这些流式日志系统很难查询,所以人们通常会将日志中的所有数据发送到一个不可变的数据系统,如 Apache Druid来执行批量分析。
 
  数据仓库将把新流的事件附加到现有的表格中。由于过去的事件在理论上是不会改变的,因此不可更改地存储数据似乎是一个正确的技术决定。虽然一个不可变的数据仓库只能按顺序写入数据,但它确实支持随机数据读取。这使得分析性商业应用能够有效地查询数据,无论何时何地,它都被存储起来。
 
  不变数据的问题
  当然,用户很快发现,由于许多原因,数据确实需要更新。这对于事件流来说尤其如此,因为多个事件可以反映现实生活中物体的真实状态。或者网络问题或软件崩溃会导致数据延迟交付。晚到的事件需要被重新加载或回填。
 
  公司也开始接受数据丰富化,将相关数据添加到现有表格中。最后,公司开始不得不删除客户数据,以履行消费者隐私法规,如GDPR和其 "被遗忘的权利"。"
 
  不可变的数据库制造商被迫创造变通方法,以便插入更新。一个流行的方法是由 Apache Druid和其他公司使用的一种流行方法被称为写时复制。数据仓库通常将数据加载到一个暂存区域,然后再分批摄入数据仓库,在那里进行存储、索引并为查询做好准备。如果有任何事件延迟到达,数据仓库将不得不写入新的数据,并将其保存在数据仓库中。 重写临近数据以便以正确的顺序正确地存储所有数据。
 
  在一个不可改变的数据系统中处理更新的另一个糟糕的解决方案是将原始数据保留在分区A(上面),并将晚到的数据写入不同的位置,即分区B。应用程序,而不是数据系统,将不得不跟踪所有链接但分散的记录的存储位置,以及任何由此产生的依赖关系。这个过程被称为参考完整性,必须由应用软件来实现。
 
 

(编辑:肇庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读