Arhitektura toka podatkov je niz funkcij v računalniški programski opremi, kjer je vsak korak samodejno generiran z dejanji prejšnje funkcije. Znano je tudi kot reaktivno programiranje. Ker je vsaka funkcija eksplicitno programirana, ni treba preračunavati vrednosti ene spremenljivke, ko se spremeni druga spremenljivka. To omogoča delovanje vzporednih operacij podatkovnega toka, saj viri niso osredotočeni na prilagajanje potrebam vsakega novega ukaza.
Koncept arhitekture toka podatkov so primerjali s tovarniško montažno linijo. Tako kot pri tovrstnem sistemu je vsak paket informacij posebej optimiziran za vrhunsko delovanje, hkrati pa je integriran v celoten sistem. Informacije so razporejene v nekakšen cevovod, kjer napredujejo od ene funkcije do druge. Pomemben način, v katerem se sistem razlikuje, je ta, da vsak paket vsebuje informacije, potrebne za povezavo z naslednjo povezavo v verigi podatkovnega toka.
Ker arhitektura pretoka podatkov velja za dokaj preprosto obliko programiranja, jo pogosto uporabljajo manj izkušeni programerji. S to metodo je mogoče sistem programirati en paket naenkrat. Nekatere programerje privlači tudi arhitektura pretoka podatkov, ker je preprost način za organiziranje kompleksnih skupin informacij.
Čeprav je arhitektura pretoka podatkov relativno enostavna za uporabo, ima tudi nekatere omejitve. S paketi, namenjenimi določenim nalogam, lahko sistem deluje učinkovito, vendar le z določeno mero prilagodljivosti. Vsak paket je mogoče programirati drugače, a če naj sistem deluje, mora slediti določeni poti. Ker arhitektura pretoka podatkov rešuje številne težave, povezane s pretokom podatkov in organizacijo, bodo mnogi programerji poskušali uporabiti njene osnovne koncepte, medtem ko bodo prilagajali bolj izpopolnjene programske potrebe.
Koncept arhitekture toka podatkov je v nasprotju s tradicionalnim slogom, znanim kot von Neumannova arhitektura. Pri tej vrsti programiranja obstaja razdelek za vsako funkcijo in ne serija paketov z informacijami, ki omogočajo več vrst funkcij. Glavna razlika s to obliko programiranja je, da ne more obvladovati vzporednih procesov. Sistem je poimenovan po računalniškem znanstveniku Johnu von Neumannu, ki je o osnovah koncepta pisal v članku iz leta 1945. Kljub omejitvam je to tudi dokaj preprost in razširjen slog programiranja.