数据加载通常以旨在存储、处理和分析大量数据的系统为目标。 最常见的目标是数据仓库和数据湖,它们各自服务于不同的目的。 第三种类别是数据湖仓,它已成为一种混合方法。 了解这些系统有助于开发人员为其用例选择正确的工具和流程。
数据仓库专为结构化数据和分析工作负载而构建。 它们强制执行模式(如星型或雪花型),并针对快速 SQL 查询进行了优化。 示例包括 Amazon Redshift、Google BigQuery 和 Snowflake。 数据在转换 (ETL) 后加载到仓库中,从而确保商业智能 (BI) 工具的一致性。 例如,一家零售公司可能会将销售交易加载到仓库中,清理数据并将其聚合以用于仪表板。 数据仓库擅长处理来自事务系统(例如,ERP 或 CRM)的关系数据,并支持 ACID 事务,使其对于报告而言非常可靠。
数据湖存储原始数据 - 结构化、半结构化(JSON、XML)或非结构化(图像、日志)- 无需预先定义模式。 像 AWS S3、Azure Data Lake Storage 和 Hadoop HDFS 这样的平台是常见的目标。 数据通常先加载然后再转换 (ELT),这适合探索性分析或机器学习。 例如,医疗保健提供商可能会将患者记录、传感器数据和 MRI 图像提取到湖中以供后续分析。 但是,如果没有治理(例如,元数据管理),湖可能会变得杂乱无章。 像 Delta Lake 或 Apache Iceberg 这样的现代工具添加了结构和事务功能,从而弥合了湖和仓库之间的差距。
其他目标包括用于实时应用程序的运营数据库(例如,PostgreSQL、MongoDB)和用于事件处理的流式处理系统(例如,Apache Kafka、Apache Pulsar)。 但是,由于其可扩展性和分析重点,仓库和湖仍然是主要的。 开发人员应优先考虑用于结构化报告的仓库和用于原始数据灵活性的湖,并在两者都需要时使用湖仓。 选择正确的系统取决于数据结构、用例和处理要求。