The Data Engineering Book
website·Indexed 31 days ago
https://www.thedataengineeringbook.online/A comprehensive guide to data engineering covering core concepts including data pipelines, data warehousing, SQL, and data validation. The documentation provides a roadmap for the profession, discusses best practices like idempotency and reproducibility, and explores tools such as Apache Airflow, Debezium, Elasticsearch, and various dashboarding options.
What's inside The Data Engineering Book
- Apache Airflow is an open-source task orchestrator platform used to manage and organize data pipelines. It allows developers to schedule workflows, manage task queues efficiently, and monitor the entire execution process from start to finish. Airflow workflows are defined using the Python programming language.
Analyze logs and time-series data with Kibana
Kibana is a visualization and exploration tool used for analyzing logs and time-series data. It provides a web UI that connects to Elasticsearch and Logstash to create dashboards from Elasticsearch data.Implement a Kimball (Dimensional) Data Warehouse architecture
The Kimball approach, known as a Dimensional Data Warehouse, involves denormalizing source data into a flat structure, typically using Star Schemas or Snowflake Schemas.
Advantages:
- Faster reporting and queries due to fewer table joins.
- User-friendly for business users as the flat structure is easier to navigate.
Disadvantages:
- Complex ETL processes are required to perform the denormalization.
- Risk of data duplication across different data marts, potentially compromising the 'single source of truth'.
- Requires ongoing design adjustments as the business evolves.
Use Luigi for complex batch data pipelines
Luigi is an open-source Python package designed for building complex batch data pipelines. It is suitable for long-running jobs and integrates with Hadoop ecosystems such as Hive and Spark.Perform distributed search and analysis with Elasticsearch
Elasticsearch is an open-source search engine database used for searching and analyzing distributed data.Manage JSON documents with MongoDB
MongoDB is a high-performance, high-availability NoSQL document database that stores data as JSON objects and supports automatic scaling.Compare ETL and ELT data pipeline patterns
Data pipelines typically follow one of two primary patterns: ETL or ELT. The difference lies in the sequence of the Transform and Load steps.
- Extract (E): Retrieving data from various source systems.
- Load (L): Moving data (either raw or transformed) into a destination such as a Data Warehouse, Data Lake, or other systems.
- Transform (T): Converting raw data into a format suitable for analysis or visualization.
While Extract and Load are often grouped together as 'Data Ingestion' due to similar capabilities, it is recommended to design them as separate stages because their complexities differ.
Build SQL pipelines with Snowflake
Snowflake is a columnar database data warehouse. It allows users to build data pipelines directly using SQL without the need for Python for data ingestion.Use Flyte for container-based workflow orchestration
Flyte is an open-source workflow engine designed for containerized environments and integrates with Kubernetes. It provides a Flyte SDK that supports Python, Java, and Scala for pipeline creation.Understand Data Pipelines in analytics and ML
Data Pipelines are the foundation for Data Analytics and Machine Learning. A data pipeline is a set of processing steps that move and transform data from various disparate sources to a destination where its value can be extracted and analyzed.Visualize SQL and NoSQL data with Redash
Redash is a browser-based data visualization tool. It features a Query Editor for managing data sources (supporting both SQL and NoSQL), and includes alerting and scheduled refresh systems to keep data up-to-date.Perform data transformation with DuckDB
DuckDB is a data processing engine that uses SQL for transformations. A key advantage is its ability to read files directly without requiring a prior import step (unlike SQLite). It is ideal for SQL-proficient teams handling moderately sized datasets and can write output directly to files without a separate export step.