flowchart LR
access --> preprocess --> transform --> serve --> model:::highlight --> publish
classDef default fill:#00c0c3,stroke-width:0;
classDef highlight fill:#f9c437;
Centre for Advanced Research Computing
Data pipelines are an abstraction for thinking about data analysis workflows.
flowchart LR
access --> preprocess --> transform --> serve --> model:::highlight --> publish
classDef default fill:#00c0c3,stroke-width:0;
classDef highlight fill:#f9c437;
Can be visualised as a directed acyclic graph (DAG) showing how data ‘flows’ between different stages of analysis.
Defining all stages of a data pipeline programmatically allows us to reproduce the analysis.
Published data artefacts should aim to be FAIR - findable, accessible, interoperable and reusable.
Data version control is a way of systematically keeping track of models and datasets.
gitGraph
commit id: "a13fb"
commit id: "cb28d"
commit id: "2ef7c"
branch develop
commit id: "ff86a"
checkout main
commit id: "46cd3"
merge develop
commit id: "54eb9"
Builds on Git, a general version control system, which allows us to track changes in a directory of files.
DVC extends Git by
Databases are collections of data organized in a way that allows more efficient storage and retrieval.
erDiagram
direction LR
Person{
text id
text personal
text family
}
Visited{
integer id
text site
text dated
}
Site{
text name
real lat
real long
}
Person ||--|| Visited : " "
Visited ||--|| Site : " "
Relational databases store data in tables with columns with fixed names and types and relational constraints between primary and foreign keys across tables.
Structured Query Language (SQL) provides a standardized approach to extracting, aggregating and updating data in relational databases.
Non-relational databases offer an alternative approaches for working with less rigidly structured data.
When working with ‘big data’ the size of datasets and resources available limit the computations we can perform.
One option is to increase our available resources for a problem - for example by exploiting cloud compute services.
An alternative approach is to break down the problem in to smaller subtasks that can be distributed.
MapReduce offers one particular framework for efficiently breaking down tasks and combining results
Apache Hadoop, Apache Spark and Dash are three open-source frameworks for large scale data processing.
Hadoop provides a distributed file system and implementation of MapReduce framework.
Spark allows processing large amounts of data in-memory and supports more general workflows than Hadoop’s MapReduce.
Dask is modern native Python framework for distributed data processing that supports a generic task-scheduling paradigm.