在数字化时代,我们一直在处理数据,我相信大家已经看到了数据领域的一些结构性变化。不仅与架构相关,如今其大部分基于云而且还与团队和实施中涉及的某些角色相关。
从架构的角度来看实际的实现,我们可以有几种方法,但是我们越来越多地看到事件驱动的架构出现了!这些架构基于微服务和 API 驱动的实现,符合实时或近实时摄取和处理的目的。
下图可以说明使用微服务实时摄取数据并利用半结构化数据功能使其可用于 Data LakeHouse 或 Data Lake 的想法。
微服务层和事件队列
大多数新的源系统都是 API 驱动的,这意味着它们可以在推/拉逻辑下工作:
■推送逻辑使用流式 API 工作,这些 API 在事件发生时导出事件(通常以 JSON 格式)。
■拉取逻辑的工作方式与我们所说的“批处理”非常相似,数据管道负责从源系统请求信息,使用参数来减少通过数据管道(增量)移动的数据量。
主要关注推送逻辑,微服务(可以用多种语言构建,例如 Python、.NET、Java 等)将负责订阅端点/webhook 并将事件传递到定义的主题。这些主题特定于每个事件,并且需要具有唯一的命名约定或定义。对于这些部分,一些技术可以保证队列、复制和分区,例如 Apache Kafka、Confluent 或 Cloud Pub/Sub。
Data Lake / LakeHouse
数据湖是用于存储大量原始格式数据的存储库。组织和个人使用数据湖来存储不同类型的大数据,包括结构化、非结构化和半结构化数据。
数据湖使用平面架构,没有文件或文件夹层次结构。每条数据都与一组元数据相关联,并与一个唯一标识符相关联。它们使用各种各样的数据源,包括移动应用程序、物联网产品、网站和工业应用程序。
数据湖具有功能性、可扩展性和低成本的优势:
■作为功能,它具有与机器学习工具、人工智能算法、高级实时数据分析和预测模型配合良好的优势;
■在可扩展性范围内,它们用于管理大量数据,这些数据根据数据输入而增长和变化;
■该工具的低成本在于它允许使用开源技术。
另一方面,数据湖可能会变成数据沼泽,数据完整性和安全性较差,存在一定的劣势,包括:
■由于数据的大小,数据的复杂性意味着只有工程师和数据科学家才能导航和利用数据进行可能的分析。
■浏览数据湖可能很耗时,因为它们需要定期组织和维护数据完整性以避免数据质量问题。如果没有这些预防措施,数据湖最终会变成一个数据沼泽,其中包含杂乱无章且无法使用的数据。
■在数据湖中粗心会带来安全风险。由于存储了如此多的数据,安全和访问风险可能会增加。如果没有必要的预防措施,某些敏感数据最终可能会“存在”在数据湖中,并可供任何有权访问数据湖的人使用。
Data Lakehouse旨在接收结构化或非结构化数据。使用这种方法,企业可以从处理非结构化数据中受益,这些数据只需要存储库,而不需要像湖这样的仓库基础设施。
由于新的系统设计,Lakehouses 有可能被创建,为低成本开放格式的数据仓库实施类似的数据结构和数据操作工具。
作为 Data Lakehouse 应用程序的功能,可以实现以下能力:
■有利用价值的数据存储
■支持所有文件格式的所有类型的数据
■通过数据管理机制支持模式
■同时写入和读取数据
■优化对数据科学和机器学习工具的访问
■一个系统可帮助数据团队更高效、更快速地移动数据,而无需访问多个系统
■可以应用 ACID 事务,它允许同时读取和写入数据
■数据科学、机器学习和数据分析项目的实时分析
■可扩展性和灵活性
■成为开源的所有优势
这种方法的优点可以是:
■简化模式
■更好地处理和分析数据
■减少数据流量和冗余
■更快、更有效地利用团队时间
这种方法还可以利用无服务器处理在青铜层、白银层和黄金层之间移动数据。通常,黄金层随后在数据仓库中用于洞察力计算,并且所有现有数据都已通过数据质量检查、ETL 或使用文件/表连接的数据处理进行管理。
数据仓库
数据仓库是以结构化格式存储的大量业务数据,可帮助组织获取知识。在数据仓库中写入数据之前,有必要知道它的模式。它从各种来源获取数据并将其格式化以匹配定义的模式。
数据仓库经过优化,可以以高效的查询方式处理和存储。此外,它提供了良好的数据质量并快速获得查询结果。
数据仓库无法处理原始数据或非结构化数据。由于数据不断增长,它的维护非常昂贵。此外,它不是处理复杂数据(例如使用机器学习或预测分析)的最佳解决方案。
主要挑战:
■高成本
■不灵活的架构
■高复杂性和冗余
■性能缓慢且性能下降
机器学习与数据科学
机器学习和数据科学对于某些企业寻找用于预测客户行为或参与、欺诈、产品定制或简单推荐的模型非常有用。
在这个领域还有很多需要讨论和探索的方面,但在这一点上,机器学习工程师将需要数据,而这正是让数据工程师发挥作用的地方。为了向他们提供需要的数据,在这背后使用一个简单的存储库(Data Lake/ Lakehouse)或结构化数据(Data Warehouse)。
洞察力和 KPI
洞察力和 KPI 是每项业务的一些主要驱动力。它们代表历史或实时信息,对于跟踪模式、了解当前状态以及根据准确、非冗余和提供方向的数据做出明智的决策非常有用。
还有一些与数据质量相关的 KPI,这些 KPI 展示了需要在源系统上更正的信息或一些缺少关键洞察力的信息。
该层通常使用数据仓库和更传统的方式或关系模型,使用 3N 范式和数据建模的几种方法之一(Kimball、Inmon、Data Vault 等)来提供数据。