<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ronny Mwenda</title>
    <description>The latest articles on DEV Community by Ronny Mwenda (@ronny_mwenda_8b2e8cfe1fa9).</description>
    <link>https://dev.to/ronny_mwenda_8b2e8cfe1fa9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3265767%2Fd2967f02-5be7-4675-803a-f1122b36cb99.jpg</url>
      <title>DEV Community: Ronny Mwenda</title>
      <link>https://dev.to/ronny_mwenda_8b2e8cfe1fa9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ronny_mwenda_8b2e8cfe1fa9"/>
    <language>en</language>
    <item>
      <title>15 major concepts of Data Engineering.</title>
      <dc:creator>Ronny Mwenda</dc:creator>
      <pubDate>Mon, 11 Aug 2025 23:47:49 +0000</pubDate>
      <link>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/15-major-concepts-of-data-engineering-3aik</link>
      <guid>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/15-major-concepts-of-data-engineering-3aik</guid>
      <description>&lt;p&gt;Data Engineering can be defined as designing, building, and maintaining infrastructure that allows organizations to collect, store, process, and analyze large volumes of data. Data engineering can be subdivided into 15 major concepts, namely;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch vs Streaming Ingestion&lt;/li&gt;
&lt;li&gt;Change Data Capture (CDC)&lt;/li&gt;
&lt;li&gt;Idempotency&lt;/li&gt;
&lt;li&gt;OLTP vs OLAP&lt;/li&gt;
&lt;li&gt;Columnar vs Row-based Storage&lt;/li&gt;
&lt;li&gt;Partitioning&lt;/li&gt;
&lt;li&gt;ETL vs ELT&lt;/li&gt;
&lt;li&gt;CAP Theorem&lt;/li&gt;
&lt;li&gt;Windowing in Streaming&lt;/li&gt;
&lt;li&gt;DAGs and Workflow Orchestration&lt;/li&gt;
&lt;li&gt;Retry Logic &amp;amp; Dead Letter Queues&lt;/li&gt;
&lt;li&gt;Backfilling &amp;amp; Reprocessing&lt;/li&gt;
&lt;li&gt;Data Governance&lt;/li&gt;
&lt;li&gt;Time Travel &amp;amp; Data Versioning&lt;/li&gt;
&lt;li&gt;Distributed Processing Concepts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  1. BATCH VS. STREAMING INGESTION
&lt;/h4&gt;

&lt;p&gt;Batch and streaming ingestion are two distinct methods of loading data.Batch ingestion handles collected data in large sets at scheduled intervals while streaming ingestion handles data that is generated and processed in real time.&lt;/p&gt;

&lt;p&gt;Batch ingestion is most commonly seen in processing sales reports,or generating monthly bank statements.&lt;/p&gt;

&lt;p&gt;Batch ingestion is mostly favourable when processing large volumes of historical data due to its latency thus making it not suitable for real-time applications.&lt;/p&gt;

&lt;p&gt;Stream ingestion on the other hand processes data in real time with each data set handled individually.Its therefor suitable for real time insights.&lt;/p&gt;

&lt;p&gt;With stream ingestion the latency is low to non-existent thus allowing immidiate action based on incoming data.&lt;/p&gt;

&lt;p&gt;stream ingestion can be seen while streaming live match scores,thermostats in a smart home and also car parking sensors.&lt;br&gt;
factors to consider when choosing between batch and stream ingestion include;&lt;/p&gt;

&lt;p&gt;-latency&lt;br&gt;
-volume of the data&lt;br&gt;
-source of the data&lt;br&gt;
-cost&lt;/p&gt;

&lt;h4&gt;
  
  
  2.CHANGE DATA CAPTURE(CDC)
&lt;/h4&gt;

&lt;p&gt;Change data capture, or CDC, is a technique for identifying and recording data changes in a database. CDC delivers these changes in real-time to different target systems, enabling the synchronization of data across an organization immediately after a database change occurs.&lt;/p&gt;

&lt;p&gt;Change data capture is a method of real-time data integration.It works by identifying and recording change events taking placein various data sources,these changes are then transfered in real time to target systems.&lt;/p&gt;

&lt;p&gt;Common use cases of cdc include;&lt;/p&gt;

&lt;p&gt;-fraud detection&lt;br&gt;
-internet of things enablement&lt;br&gt;
-inventory and supply chain management&lt;br&gt;
-regulatory compliance&lt;/p&gt;

&lt;p&gt;The common methods of CDC include;&lt;/p&gt;

&lt;p&gt;-log-based CDC&lt;br&gt;
-Timestamp-based cdc&lt;br&gt;
-Trigger-based CDC&lt;/p&gt;

&lt;p&gt;The various methods benefits of CDC include;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real time decision making&lt;/li&gt;
&lt;li&gt;Succesfull cloud migration&lt;/li&gt;
&lt;li&gt;ETL Process improvement&lt;/li&gt;
&lt;li&gt;bettter AI perfomance&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3.INDEMPOTENCY
&lt;/h4&gt;

&lt;p&gt;In data engineering,Indempotency is executing the same operation multiple times while it still has the same effect as executiing it once.Thia is crucial for building robust data pipelines.Indempotency ensures that data remains consistent and accurate even after multiple identical operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  importance of indempotency
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;data recovery and reduncancy&lt;/li&gt;
&lt;li&gt;maintain consistency&lt;/li&gt;
&lt;li&gt;batch processing
4.ressilience and testing&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  achieving indempotency in data pipelines
&lt;/h3&gt;

&lt;p&gt;indempotency can be achieved through the use of primary keys,upserts,deleting data before writing,staged data,event time vs ingest time,logging and auditing.&lt;/p&gt;

&lt;h4&gt;
  
  
  OLTP VS OLAP
&lt;/h4&gt;

&lt;p&gt;Online Transaction Processing systems,commonly refered to as OLTP systems are systems designed to handle real time operations that occur in day to day business activities.&lt;/p&gt;

&lt;p&gt;OLTP systems are primarily used to process individual business transactions in real time in institutions such as banks and ecomerce platforms.They focus on live data.&lt;/p&gt;

&lt;p&gt;Online Analytical Processing systems (OLAP) on the other hand are optimsed for complex analysis, reporting amnd business intelligence activities such as financial reporting systems and market analysis tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Differences and Implications
&lt;/h3&gt;

&lt;p&gt;Transaction vs. Analysis: OLTP systems excel at processing individual transactions quickly and accurately, while OLAP systems specialize in analyzing patterns across large datasets.&lt;/p&gt;

&lt;p&gt;Data Freshness: OLTP systems work with real-time data, whereas OLAP systems typically work with data that may be hours or days old, depending on the ETL schedule.&lt;/p&gt;

&lt;p&gt;Concurrency Requirements: OLTP systems must handle many simultaneous users performing transactions, while OLAP systems typically serve fewer concurrent users running complex queries.&lt;/p&gt;

&lt;p&gt;Failure Impact: OLTP system downtime directly affects business operations, while OLAP system unavailability impacts reporting and analysis capabilities.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. COLUMNAR VS ROW BASED STORAGE
&lt;/h4&gt;

&lt;p&gt;Columnar storage is where data is organised by columns while row based storage is where data is read and written row by row.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foyj9mxweuh166eflmu0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foyj9mxweuh166eflmu0n.png" alt=" " width="633" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  6. PARTITIONING
&lt;/h4&gt;

&lt;p&gt;Data partitioning in data engineering is the process of dividing a large dataset into smaller, more manageable chunks called partitions. This technique is used to improve the performance, scalability, and manageability of data storage and processing. &lt;/p&gt;

&lt;p&gt;Data partitioning improves perfomance,enhances scalability,simplifies management and optimises cost.&lt;/p&gt;

&lt;p&gt;common partitioning methods include;&lt;br&gt;
-range partitioning&lt;br&gt;
-hash partitioning&lt;br&gt;
-list partitioning&lt;br&gt;
-composite partitioning&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
E-commerce: Partitioning by date, region, or customer ID to optimize order processing, sales analysis, and customer support.&lt;br&gt;
Log Analysis: Partitioning by timestamp to analyze log data for specific time periods.&lt;br&gt;
Social Media: Partitioning by user ID or geographic location to optimize user-specific data access and social network analysis. &lt;/p&gt;

&lt;h4&gt;
  
  
  7. ELT VS ETL
&lt;/h4&gt;

&lt;p&gt;The main difference between ELT and ETL lies in the order of data transformation. ETL (Extract, Transform, Load) transforms data before loading it into a data warehouse or target system. ELT (Extract, Load, Transform) loads data first, then transforms it within the target system.&lt;/p&gt;

&lt;p&gt;ETL (Extract, Transform, Load):&lt;/p&gt;

&lt;p&gt;Data is extracted from various sources. &lt;br&gt;
Data is transformed in a staging area, often outside the target data warehouse, using specialized tools. &lt;br&gt;
Transformed data is then loaded into the target system. &lt;br&gt;
ETL is well-suited for complex transformations and data cleaning, and is often used when data quality is a top priority. &lt;br&gt;
It can be beneficial for scenarios with stringent data security and compliance requirements. &lt;/p&gt;

&lt;p&gt;ELT (Extract, Load, Transform):&lt;/p&gt;

&lt;p&gt;Data is extracted from various sources. &lt;br&gt;
Extracted data is loaded directly into the target data warehouse or data lake without prior transformation. &lt;br&gt;
The transformation process happens within the target system using the processing power of the data warehouse or lake. &lt;br&gt;
ELT is often favored for its scalability and ability to handle large volumes of data, especially in cloud environments. &lt;br&gt;
It's particularly useful when dealing with unstructured data or when real-time analytics are needed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtjsqjlkd4722963170s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtjsqjlkd4722963170s.png" alt=" " width="548" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In essence, ETL prioritizes data quality and upfront transformation, while ELT prioritizes speed and scalability, leveraging the power of modern data warehouseS.&lt;/p&gt;

&lt;h4&gt;
  
  
  8.CAP THEOREM
&lt;/h4&gt;

&lt;p&gt;The CAP theorem says that a distributed system can deliver only two of three desired characteristics:&lt;br&gt;
consistency, availability and partition tolerance (the ‘C,’ ‘A’ and ‘P’ in CAP).Its also called Brewer's Theorem.&lt;/p&gt;

&lt;p&gt;Let’s take a detailed look at the three distributed system characteristics to which the CAP theorem refers.&lt;/p&gt;

&lt;p&gt;Consistency&lt;/p&gt;

&lt;p&gt;Consistency means that all clients see the same data at the same time, no matter which node they connect to. For this to happen, whenever data is written to one node, it must be instantly forwarded or replicated to all the other nodes in the system before the write is deemed ‘successful.’&lt;/p&gt;

&lt;p&gt;Availability&lt;/p&gt;

&lt;p&gt;Availability means that any client making a request for data gets a response, even if one or more nodes are down. Another way to state this—all working nodes in the distributed system return a valid response for any request, without exception.&lt;/p&gt;

&lt;p&gt;Partition tolerance&lt;/p&gt;

&lt;p&gt;A partition is a communications break within a distributed system—a lost or temporarily delayed connection between two nodes. Partition tolerance means that the cluster must continue to work despite any number of communication breakdowns between nodes in the system.&lt;/p&gt;

&lt;h4&gt;
  
  
  9.WINDOWING IN STREAMING
&lt;/h4&gt;

&lt;p&gt;windowing used to divide a continuous data stream into smaller, finite chunks called streaming windows. &lt;/p&gt;

&lt;p&gt;Benefits and applications of streaming windows include&lt;/p&gt;

&lt;p&gt;They provide a way to process unbounded data incrementally, by breaking the stream into manageable, finite chunks. &lt;br&gt;
The structured nature of streaming windows makes it easier to identify and rectify errors or anomalies within specific time frames, enhancing data quality and reliability.&lt;br&gt;
By limiting the data volume that needs to be processed at any given time, streaming windows can help reduce computational load, leading to faster processing times and more efficient use of system resources.&lt;/p&gt;

&lt;p&gt;Additionally, streaming windows have numerous applications across various industries. For example, we can leverage them to:&lt;/p&gt;

&lt;p&gt;Detect patterns indicative of financial fraud.&lt;br&gt;
Monitor equipment performance to predict maintenance needs before failures occur.&lt;br&gt;
Streamline traffic flow by analyzing vehicle data streams for congestion patterns.&lt;br&gt;
Personalize online shopping experiences by recommending products based on real-time purchasing and clickstream data.&lt;br&gt;
Provide real-time statistics and performance metrics during live sports events.&lt;br&gt;
Analyze surveillance footage in real time to detect and respond to emergencies or public disturbances.&lt;/p&gt;

&lt;p&gt;streaming window types include &lt;br&gt;
-tumbling windows&lt;br&gt;
-hopping windows&lt;br&gt;
-sliding windows&lt;br&gt;
-session windows&lt;/p&gt;

&lt;h4&gt;
  
  
  10. DAGS AND WORKFLOW ORCHESTRATION
&lt;/h4&gt;

&lt;p&gt;A DAG is a way to represent a workflow as a graph where tasks are nodes and dependencies are directed edges, ensuring a specific order of execution without circular dependencies. Workflow orchestration tools, like Apache Airflow, utilize DAGs to automate and manage the execution of these workflows. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Directed Acyclic Graphs (DAGs):&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A DAG is a data structure that visualizes a workflow as a graph with nodes and edges.&lt;br&gt;
Directed: Edges have a direction, showing the flow of execution from one task to another.&lt;br&gt;
Acyclic: The graph cannot contain any cycles or loops, meaning a task cannot be executed multiple times due to circular dependencies.&lt;br&gt;
Nodes: Represent individual tasks or operations within the workflow.&lt;br&gt;
Edges: Represent dependencies between tasks, indicating which tasks must be completed before others can start. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Workflow Orchestration:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Purpose: Workflow orchestration manages the execution of tasks defined in a DAG, ensuring they run in the correct order and with the appropriate dependencies. &lt;br&gt;
Key Functions:&lt;br&gt;
Scheduling: Triggering workflows based on predefined schedules (e.g., daily, hourly). &lt;br&gt;
Task Execution: Running individual tasks on compute resources. &lt;br&gt;
Dependency Management: Ensuring tasks run only when their dependencies are met. &lt;br&gt;
Error Handling: Handling task failures and potentially retrying failed tasks. &lt;br&gt;
Monitoring and Logging: Tracking the progress of workflows and logging events. &lt;br&gt;
Examples of Orchestration Tools: Airflow, Argo, Google Cloud Composer, AWS Step Functions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why Use DAGs and Workflow Orchestration?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Automation:&lt;br&gt;
Automates complex data pipelines, reducing manual intervention and potential errors.&lt;br&gt;
Reliability:&lt;br&gt;
Ensures workflows execute reliably and consistently, even with complex dependencies.&lt;br&gt;
Scalability:&lt;br&gt;
Enables workflows to scale to handle large datasets and complex computations.&lt;br&gt;
Observability:&lt;br&gt;
Provides insights into workflow execution, allowing for monitoring and troubleshooting.&lt;br&gt;
Maintainability:&lt;br&gt;
DAGs and orchestration tools make it easier to manage and update workflows as requirements evolve&lt;/p&gt;

&lt;h4&gt;
  
  
  11.RETRY LOGIC AND DEAD LETTER QUEUES
&lt;/h4&gt;

&lt;p&gt;Retry logic and Dead Letter Queues (DLQs) are essential mechanisms in distributed systems and message-driven architectures for handling message processing failures and ensuring system reliability.&lt;/p&gt;

&lt;p&gt;Retry Logic:&lt;br&gt;
Retry logic involves re-attempting an operation or message processing when a transient error or temporary failure occurs. This is done with the expectation that the issue might be resolved upon subsequent attempts. &lt;/p&gt;

&lt;p&gt;Key aspects of retry logic include:&lt;/p&gt;

&lt;p&gt;Retry Attempts&lt;br&gt;
Backoff Strategy&lt;br&gt;
Error Classification&lt;/p&gt;

&lt;p&gt;Dead Letter Queues (DLQs):&lt;/p&gt;

&lt;p&gt;A Dead Letter Queue (DLQ) is a designated queue or storage location where messages that could not be successfully processed after exhausting all retry attempts are sent.&lt;/p&gt;

&lt;p&gt;The purpose of a DLQ is to: &lt;/p&gt;

&lt;p&gt;Isolate Problematic Messages&lt;br&gt;
Enable Manual Inspection and Debugging&lt;br&gt;
Facilitate Error Handling and Recovery&lt;/p&gt;

&lt;h4&gt;
  
  
  12.BACKFILLING AND REPROCESSING
&lt;/h4&gt;

&lt;p&gt;In data engineering, backfilling refers to the process of retroactively loading or updating historical data in a data pipeline.it is used to fill gaps in historical data,correct errors or initialise systems with historical records.&lt;/p&gt;

&lt;p&gt;Reprocessing involves re-running data pip[elines for past dates,often to fix errors or apply changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  13.DATA GOVERNANCE
&lt;/h4&gt;

&lt;p&gt;Data governance is a comprehensive framework that defines how an organization manages, protects, and derives value from its data assets. It encompasses the people, processes, policies, and technologies that ensure data is accurate, accessible, consistent, and secure throughout its lifecycle.&lt;/p&gt;

&lt;p&gt;The core objectives of data governance include&lt;br&gt;
-data quallity management&lt;br&gt;
-data security and privacy&lt;br&gt;
-data stewardship&lt;br&gt;
-reducing compliance&lt;/p&gt;

&lt;p&gt;Data governance frameworks include;&lt;/p&gt;

&lt;p&gt;1.DAMA-DMBOK Framework&lt;br&gt;
2.IBM Data Governance Framework&lt;br&gt;
3.Microsoft Data Governance Framework&lt;br&gt;
4.Google Cloud Data Governance Framework&lt;br&gt;
5.Enterprise Data Governance Framework&lt;/p&gt;

&lt;h4&gt;
  
  
  14.TIME TRAVEL AND DATA VERSIONING
&lt;/h4&gt;

&lt;p&gt;Data Versioning and Time Travel in cloud data platforms allow users to access and recover previous versions of data, enabling point-in-time recovery and historical analysis. These features provide the ability to track changes, roll back to previous states, and query data as it existed at a specific moment in time. Data Versioning and Time Travel capabilities are valuable for compliance, auditing, and understanding data evolution in cloud-based data lakes and data warehouses.&lt;/p&gt;

&lt;p&gt;Data Versioning&lt;br&gt;
Data versioning is a critical aspect of data management in cloud computing. It allows for the tracking and control of changes made to data objects, facilitating data recovery and ensuring data integrity. Each version of a data object represents a snapshot of that object at a specific point in time, providing a historical record of the object's state.&lt;/p&gt;

&lt;p&gt;Versioning is particularly useful in scenarios where multiple users or applications are modifying the same data object. It allows for the resolution of conflicts and the prevention of data loss due to overwrites. Furthermore, versioning enables the rollback of changes, providing a safety net in case of errors or unwanted modifications.&lt;/p&gt;

&lt;p&gt;Time Travel&lt;br&gt;
Time travel in cloud computing refers to the ability to view and manipulate data as it existed at any point in the past. This is achieved by maintaining a historical record of all changes made to the data. Time travel allows for the recovery of lost data, the auditing of changes, and the analysis of data trends over time.&lt;/p&gt;

&lt;p&gt;Some cloud-based data platforms provide time travel as a built-in feature, allowing users to query past states of the data without the need for manual version management. This can be particularly useful in scenarios involving data analysis and auditing, where understanding the historical state of the data is crucial.&lt;/p&gt;

&lt;h4&gt;
  
  
  15.DISTRIBUTED PROCESSING CONCEPTS
&lt;/h4&gt;

&lt;p&gt;Distributed Processing executes parts of a task simultaneously across multiple resources, improving efficiency and performance, especially with large data.IT enhanaces scalability, efficiency and reliability.&lt;/p&gt;

&lt;p&gt;Distributed Processing is useful in various fields like machine learning, data mining, and large-scale simulations. It can process vast datasets with high speed and reliability. Big tech companies like Google, Amazon, and Facebook utilize distributed processing to deal with their massive data.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>data warehouse</title>
      <dc:creator>Ronny Mwenda</dc:creator>
      <pubDate>Mon, 28 Jul 2025 04:57:28 +0000</pubDate>
      <link>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/data-warehouse-19ne</link>
      <guid>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/data-warehouse-19ne</guid>
      <description>&lt;h4&gt;
  
  
  what is a data warehouse?
&lt;/h4&gt;

&lt;p&gt;A Data Warehouse is a centralized repository designed specifically to store, manage, and analyze large volumes of historical and current data from various sources within an organization. &lt;/p&gt;

&lt;h4&gt;
  
  
  why do we need a data warehouse?
&lt;/h4&gt;

&lt;p&gt;a data warehoouse is useful for cleaning, storing and organising data .the data stored can be used to make better decisions, spot problems early and even save time.&lt;/p&gt;

&lt;h4&gt;
  
  
  analogy of a data warehouse
&lt;/h4&gt;

&lt;p&gt;Think about Amazon—one of the biggest online stores in the world. Every second, millions of customers are browsing, buying, and reviewing products. Amazon collects a massive amount of data, including:&lt;/p&gt;

&lt;p&gt;What you search for&lt;/p&gt;

&lt;p&gt;What you add to your cart&lt;/p&gt;

&lt;p&gt;What you buy&lt;/p&gt;

&lt;p&gt;Your reviews and ratings&lt;/p&gt;

&lt;p&gt;Delivery times and locations&lt;/p&gt;

&lt;p&gt;All this data comes from different places—mobile apps, websites, warehouses, and even Alexa. To make sense of it all, Amazon uses a data warehouse.&lt;/p&gt;

&lt;p&gt;With this system, Amazon can:&lt;/p&gt;

&lt;p&gt;Recommend products based on your shopping habits&lt;/p&gt;

&lt;p&gt;Track popular items and restock them faster&lt;/p&gt;

&lt;p&gt;Detect fraud by spotting strange purchase patterns&lt;/p&gt;

&lt;p&gt;Personalize your experience, like showing deals based on your location or interests&lt;/p&gt;

&lt;p&gt;Without a data warehouse, organizing this much data in real time would be nearly impossible.&lt;/p&gt;

&lt;p&gt;thus its correct to say that data warehouses offer a larger volume and scale than databases, better integration capabilities, historical data focus and structured data organisation.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Data Warehouse&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stores daily, real-time data&lt;/td&gt;
&lt;td&gt;Stores historical, analytical data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supports transactions&lt;/td&gt;
&lt;td&gt;Supports analysis and reporting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used by apps and staff&lt;/td&gt;
&lt;td&gt;Used by analysts and managers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frequently updated&lt;/td&gt;
&lt;td&gt;Updated in batches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smaller in size&lt;/td&gt;
&lt;td&gt;Much larger in size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Optimized for speed&lt;/td&gt;
&lt;td&gt;Optimized for complex queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Example: ATM withdrawal&lt;/td&gt;
&lt;td&gt;Example: 5-year transaction analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;at the end of the day,a data warehouse is just a smart way for companies to understand the stories their data is trying to tell,you might not see it but its helping make your everyday experiences smoother and faster.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Apache airflow and its use in data engineering.</title>
      <dc:creator>Ronny Mwenda</dc:creator>
      <pubDate>Mon, 21 Jul 2025 20:36:36 +0000</pubDate>
      <link>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/apache-airflow-and-its-use-in-data-engineering-54c1</link>
      <guid>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/apache-airflow-and-its-use-in-data-engineering-54c1</guid>
      <description>&lt;h4&gt;
  
  
  what is apache airflow
&lt;/h4&gt;

&lt;p&gt;--- Apache Airflow is an open-source platform for developing, scheduling, and monitoring batch-oriented workflows. Airflow’s extensible Python framework enables you to build workflows connecting with virtually any technology. A web-based UI helps you visualize, manage, and debug your workflows. You can run Airflow in a variety of configurations — from a single process on your laptop to a distributed system capable of handling massive workloads.&lt;/p&gt;

&lt;p&gt;With its core features like pipeline automation, dependency management, scalability, makes it a vital tool for data engineers.&lt;/p&gt;

&lt;h4&gt;
  
  
  core concepts of airflow
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DAGS - A Directed Acyclic Graph(DAG), according to the official workflow documentation, is a model that encapsulates everything needed to execute a workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Schedule: When the workflow should run.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tasks: tasks are discrete units of work that are run on workers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Task Dependencies: The order and conditions under which tasks execute.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Callbacks: Actions to take when the entire workflow completes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  common uses of airflow
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Automation of ETL pipelines &lt;/li&gt;
&lt;li&gt;Data validation and transformation tasks&lt;/li&gt;
&lt;li&gt;schedule data analytics reports&lt;/li&gt;
&lt;li&gt;machine learning, model training and deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  advantages of airflow
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It is Python-based based enabling writing of workflows as code.&lt;/li&gt;
&lt;li&gt;Its web-based UI provides real-time monitoring and debugging capabilities.&lt;/li&gt;
&lt;li&gt;Separation of the web server and scheduler components allows for better resource allocation.&lt;/li&gt;
&lt;li&gt;Airflow is modular and extensible, enabling creation of custom operators and plugins.
-Airflow's scalability supports distributed execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  disadvantages of airflow
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It has a steep learning curve.&lt;/li&gt;
&lt;li&gt;Airflow isn't built for streaming data.&lt;/li&gt;
&lt;li&gt;Airflow can be complex to set up for beginners.&lt;/li&gt;
&lt;li&gt;Windows users can't use Airflow locally, unless on WSL.&lt;/li&gt;
&lt;li&gt;Debugging on airflow can betime-consumingg.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despite the several disadvantages, airflow still proves to be a vital tool for data engineer,s especially when paired with other tools such aApache Kafkaka.&lt;/p&gt;

&lt;p&gt;P&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Classes in Python, a beginner's pov</title>
      <dc:creator>Ronny Mwenda</dc:creator>
      <pubDate>Mon, 21 Jul 2025 19:30:36 +0000</pubDate>
      <link>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/classes-in-python-a-beginners-pov-48p7</link>
      <guid>https://dev.to/ronny_mwenda_8b2e8cfe1fa9/classes-in-python-a-beginners-pov-48p7</guid>
      <description>&lt;p&gt;WHAT IS A CLASS&lt;/p&gt;

&lt;p&gt;A class is like a blueprint for creating objects or an object constructor. It defines what data (variables) and actions (functions/methods) an object should have.Classes are a good example of object oriented programming using python.&lt;/p&gt;

&lt;p&gt;Classes are used for grouping code, to enable code reusability and scalability, and to facilitate the writing of clean code.&lt;/p&gt;

&lt;p&gt;When creating classes we use a special function called a the &lt;u&gt;constructor method&lt;/u&gt;, this function  gets called automatically and creates a new object.Basically innitializing the objects attributes. &lt;/p&gt;

&lt;p&gt;constructors are used to automatically set up object data, avoid repetitive code and ensure that every object starts with valid values.&lt;/p&gt;

&lt;p&gt;In Python, a class is created using the CLASS keyword.When creating a class its advised to use the following naming conventions:snake_case for the variable and function, pascal case for the class name and upper snake case for the constant.Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variable :  my_nephew&lt;/li&gt;
&lt;li&gt;function : my_nephew()&lt;/li&gt;
&lt;li&gt;class : MyNephew&lt;/li&gt;
&lt;li&gt;constants : MY_NEPHEW&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  syntax of a class with a constructor.
&lt;/h2&gt;

&lt;p&gt;class MyNephew:&lt;br&gt;
    def &lt;strong&gt;init&lt;/strong&gt;(self, name, age):&lt;br&gt;
        self.name = name&lt;br&gt;
        self.age = age&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def info_details(self):
    print(f"Hello, my name is {self.name} and I am {self.age} years old.")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;my_nephew = MyNephew("John", 10)&lt;br&gt;
   my_nephew.info_details()&lt;/p&gt;

&lt;p&gt;---the code above creates a class called MyNephew,with a constructor(&lt;strong&gt;init&lt;/strong&gt;), parameters passed into the constructor(name, age),objects(my_nephew &amp;amp; my_cousin) and values assigned to the object(self.name, self.age) and an instance being created(self).Calling the function info.details() the objects use their passed data to print personalised message through an f-string.&lt;/p&gt;

&lt;p&gt;Another fitting example of an instance where classes can be used is when creating a mock bank account.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task:
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Create a class called BankAccount.
&lt;/h1&gt;

&lt;p&gt;class BankAccount:&lt;br&gt;
    def &lt;strong&gt;init&lt;/strong&gt;(self, account_holder):&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    self.account_holder = account_holder
    self.balance = 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  Attributes: account_holder, balance (default = 0).
&lt;/h1&gt;
&lt;h1&gt;
  
  
  Methods:
&lt;/h1&gt;
&lt;h1&gt;
  
  
  deposit(amount)
&lt;/h1&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def deposit(self, amount):
    self.balance = self.balance + amount
    print(f"you have deposited {amount}.")
    print(f"Your new balance is {self.balance}.")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  withdraw(amount)
&lt;/h1&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def withdraw(self, amount):
    if amount &amp;lt;= self.balance:
        self.balance = self.balance - amount
        print(f"You have withdrawn {amount}.")
        print(f"Your new balance is {self.balance}.")
    else:
        print("Insufficient funds for this withdrawal.")


#  show_balance()

def show_balance(self):
    print(f"{self.account_holder} Your current balance is {self.balance}.")

#Creating an account and testing all three methods.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;myaccount = BankAccount("JOHN DOE&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
")
myaccount.deposit(1000)
myaccount.withdraw(500) 
myaccount.show_balance().&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;my_nephew = MyNephew("John", 10)&lt;br&gt;
my_nephew.info_details()&lt;/p&gt;

&lt;h1&gt;
  
  
  my_cousin = MyNephew("Alice", 12)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  my_cousin.info_details()
&lt;/h1&gt;

</description>
      <category>python</category>
      <category>dataengineering</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
