맨위로가기

데이터 흐름

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

데이터 흐름은 계산을 노드로, 데이터를 노드 간을 흐르는 방향 그래프로 표현하는 소프트웨어 패러다임이다. 이는 스트림 처리 또는 반응형 프로그래밍과 관련이 있으며, 데이터 흐름 프로그래밍은 변수 값 변경 시 다른 변수를 자동으로 재계산하는 아이디어를 기반으로 한다. 데이터 흐름도는 시스템 내 데이터 흐름을 시각적으로 표현하는 도구이다.

하드웨어 아키텍처에서 데이터 흐름은 1970년대와 1980년대 초반 컴퓨터 아키텍처 연구의 주요 주제였으며, 폰 노이만 구조와 반대되는 개념으로, 명령 실행이 입력 인수가 사용 가능해지는 시점에 수행되는 데이터 구동 방식을 사용한다. 데이터 흐름 아키텍처는 잭 데니스가 개척한 정적 데이터 흐름 아키텍처와 아르빈드가 제안한 동적 데이터 흐름 아키텍처로 나뉜다.

병렬 처리에서 데이터 흐름 네트워크는 채널을 통해 데이터를 주고받으며 동시에 실행되는 프로세스 또는 오토마톤의 네트워크로, 칸 프로세스 네트워크는 데이터 흐름 네트워크의 중요한 클래스 중 하나이다. Power BI 데이터 흐름과 구글 클라우드 데이터플로우는 각각 클라우드 기반의 데이터 변환 도구이며, 정적 프로그램 분석을 위한 도구도 존재한다.

더 읽어볼만한 페이지

데이터 흐름

2. 소프트웨어 아키텍처

데이터 흐름 컴퓨팅은 계산을 노드(계산)와 가장자리(데이터)를 따라 흐르는 방향 그래프로 표현하는 아이디어를 기반으로 하는 소프트웨어 패러다임이다. 데이터 흐름은 스트림 처리 또는 반응형 프로그래밍이라고도 불린다.

분산 데이터 흐름은 분산 다중 프로토콜의 역학을 포착하는 프로그래밍 추상화로 제안되었다. 데이터 흐름 프로그래밍의 데이터 중심 관점은 상위 수준의 기능 사양을 촉진하고 시스템 구성 요소에 대한 형식적 추론을 단순화한다.

2. 1. 데이터 흐름 프로그래밍

데이터 흐름 언어는 특정 변수의 값이 변경될 때 다른 변수의 값을 자동으로 다시 계산하는 아이디어(반응형 프로그래밍)에 기반한다. 스프레드시트가 가장 일반적인 예시인데, 특정 셀에 다른 셀의 값을 사용한 계산식을 연결할 수 있다. 임의의 셀 값을 변경하면 자동으로 그 값에 의존하는 다른 셀의 재계산이 이루어지며, 이는 종속 관계가 있는 한 계속된다.

데이터 흐름 기술은 수치 재계산에만 국한되지 않는다. 예를 들어, 마우스 움직임에 따라 그림을 다시 그리거나, 주변 밝기 변화에 따라 로봇이 반응하는 것도 데이터 흐름적 사고방식에 기반한다.

데이터 흐름의 장점 중 하나는 프로그램 내 코드의 결합도를 줄일 수 있다는 점이다. 변수 X가 변수 Y에 종속되어 있다고 가정할 때, 데이터 흐름을 도입하지 않으면 Y가 변경될 때 명시적으로 X를 다시 계산해야 한다. 이는 Y가 X와 밀접하게 결합되어 있음을 나타낸다. X의 값은 Y의 값에 의존하므로, X도 Y에 결합된다. 이 종속 관계에서 프로그램 내에 순환 종속 관계가 발생할 수 있다. 이러한 상황에 대처하는 방법으로 옵저버 패턴이 있지만, 이를 위한 코드 양은 결코 적지 않다. 데이터 흐름에서는 X의 재계산을 자동으로 수행함으로써 Y에서 X로의 결합을 해소하여 이 상황을 개선한다. 즉, 데이터 흐름은 보통 많은 코드를 필요로 하는 것을 암묵적으로 실현한다.

데이터 흐름을 지원하기 위해 만들어진 프로그래밍 언어도 몇 가지 존재한다. 특히 비주얼 프로그래밍 언어에는 데이터 흐름의 사고방식에 기반한 것이 많다.

2. 2. 데이터 흐름도

'''데이터 흐름'''이라는 용어는 시스템 내의 데이터 흐름을 나타내는 말로도 사용되며, 데이터 흐름도 내의 화살표가 데이터 흐름이라고 불린다. 데이터 흐름도의 데이터 흐름은 외부 실체, 프로세스, 데이터 저장소 사이의 데이터 흐름을 표현한 것이다.

3. 하드웨어 아키텍처

'''데이터 흐름 아키텍처'''폰 노이만 구조제어 흐름 아키텍처와 반대되는 컴퓨터 아키텍처이다. 프로그램 카운터가 없거나, 개념적으로 입력 인수가 사용 가능해지는 시점에 명령이 실행된다. 이러한 계산 방식을 '''데이터 구동'''이라고 한다.

데이터는 입력 장치에서 들어오고 출력 장치(프린터 등)를 통해 나가는 등 컴퓨터 구성 요소를 통해 흐른다.

데이터 흐름 아키텍처를 채택한 컴퓨터 중 상업적으로 성공한 사례는 없지만, 데이터베이스 엔진 설계나 병렬 컴퓨팅 프레임워크 등 각종 소프트웨어 아키텍처는 개념적으로 데이터 흐름 아키텍처를 채택하고 있다. 그러나 부분적으로는 아웃 오브 오더 실행으로 큰 성공을 거두고 있다.

3. 1. 역사

데이터 흐름을 위한 하드웨어 아키텍처는 1970년대와 1980년대 초반 컴퓨터 아키텍처 연구의 주요 주제였다. 매사추세츠 공과대학교(MIT)의 잭 데니스는 정적 데이터 흐름 아키텍처 분야를 개척했다. 데이터 종속성 태그로 일반적인 메모리 주소를 사용하는 설계를 정적 데이터 흐름 머신이라고 한다. 이러한 머신은 단순한 태그가 동일한 루틴의 여러 인스턴스를 구별할 수 없었기 때문에 동시에 실행할 수 없었다. 내용 주소 지정 가능 메모리를 사용하는 설계를 아르빈드는 동적 데이터 흐름 머신이라고 부른다. 이들은 메모리의 태그를 사용하여 병렬 처리를 용이하게 한다.

데이터 흐름형 하드웨어 아키텍처는 1970년대부터 1980년대 초반까지 활발히 연구되었다. 데이터 흐름 아키텍처의 개념은 스탠퍼드 대학교의 D.A. Adams(1968년)와 MIT의 J.E. Rodriguez(1969년)가 발표한 것을 시작으로, MIT의 잭 데니스 등이 연구를 진행했다.

3. 2. 컴퓨터 아키텍처 분류

컴퓨터 아키텍처는 처리를 진행시키는 핵심 요소에 따라 다음과 같이 분류할 수 있다.

구분방식설명해당 아키텍처
프로세서 구동기능 집중형범용적인 프로세서가 스스로 명령이나 데이터를 저장 위치에서 가져오는 방식폰 노이만 구조
기능 분산형프로세서 군에 명령이나 데이터가 보내져 오는 방식정적 데이터 흐름 아키텍처
토큰 구동프로세서 중개형다른 프로세서로부터 토큰(데이터나 제어)이 보내져 오는 방식동적 데이터 흐름 아키텍처
통신 중개형통신망을 통해 토큰이 보내져 오는 방식


  • 프로세서 구동: 프로그램이나 데이터가 먼저 준비되고, 프로세서에 의해 처리 진행이 구동되는 방식이다.
  • 기능 집중형: 범용적인 프로세서가 스스로 명령이나 데이터를 저장 위치에서 가져오는 방식이다. 폰 노이만 구조가 이에 해당한다.
  • 기능 분산형: 프로세서 군에 명령이나 데이터가 보내져 오는 방식이다. 정적 데이터 흐름 아키텍처가 이에 해당한다.
  • 토큰 구동: 프로세서 군에 프로그램의 명령을 할당해 두고, 토큰(데이터나 제어)이 도착한 시점에 처리가 이루어지는 방식이다. 동적 데이터 흐름 아키텍처가 이에 해당한다.
  • 프로세서 중개형: 다른 프로세서로부터 토큰이 보내져 오는 방식이다.
  • 통신 중개형: 통신망을 통해 토큰이 보내져 오는 방식이다.

3. 3. 정적 데이터 흐름 아키텍처

정적 프로그램 분석 시 프로그램 실행 상 존재하는 수많은 데이터 흐름들까지 체크해주는 정적 분석 도구를 사용한다면 사람이 직접 분석 할 때의 수고를 절감할 수 있을 것이다.

데이터 흐름을 위한 하드웨어 아키텍처는 1970년대와 1980년대 초반 컴퓨터 아키텍처 연구의 주요 주제였다. 매사추세츠 공과대학교(MIT)의 잭 데니스는 정적 데이터 흐름 아키텍처 분야를 개척했다. 데이터 종속성 태그로 일반적인 메모리 주소를 사용하는 설계를 정적 데이터 흐름 머신이라고 한다. 이러한 머신은 단순한 태그가 동일한 루틴의 여러 인스턴스를 구별할 수 없었기 때문에 동시에 실행할 수 없었다.

3. 4. 동적 데이터 흐름 아키텍처

토큰 구동형에서 프로세서들은 네트워크를 통해 상호 연결된다. 네트워크의 토폴로지에 따라 각 프로세서가 임의의 다른 프로세서와 직접 통신이 가능하다면 "통신 중개형", 그렇지 않은 경우에는 "프로세서 중개형"이라고 불린다. 네트워크상의 각 프로세서에는 각각 여러 개의 노드가 할당된다. 여기에 토큰이 입력되면, 그 토큰을 처리하는 노드가 처리를 실행하고, 결과를 토큰으로 네트워크상에 흘려보낸다. 더 나아가 그 토큰을 입력으로 하는 노드가 그것을 처리하는 방식으로 동작한다. 토큰에 입력 데이터를 사용하는 경우에는 데이터 흐름이지만, 노이만형과의 친화성을 높이기 위해 (노이만형을 위한 집적 회로 등을 유용하게 사용하기 위해) 데이터는 메모리에 저장해두고, 데이터가 사용 가능하다는 것을 나타내는 제어 토큰을 사용하는 경우도 있다 (이것을 정확히는 제어 흐름이라고 한다).

3. 5. 문제점

초기 설계에서는 태그로 해당 패킷의 주소 등을 사용했다. 그러나 이 방식으로는 동일한 서브루틴을 병렬적으로 여러 번 호출하거나 재귀적으로 호출하는 경우, 패킷의 의존 관계 해석에 혼란이 발생했다. 마찬가지로 루프를 실행하는 경우에도 동일한 문제가 발생했다.

해결되지 않은 문제는 다음과 같다.

  • 초병렬 시스템에서의 데이터 토큰 브로드캐스트 효율화
  • 초병렬 시스템에서의 명령 토큰 효율적인 분배
  • 실용적인 프로그램을 저장할 수 있을 정도로 큰 연상 메모리 구축


또한, 시스템이 거대해질수록 개별 명령 및 의존 관계 정보를 통신으로 주고받는 비용이 증가하여 계산에 드는 비용에 비해 무시할 수 없게 된다. 즉, 분할의 입자가 너무 세분화되었던 것이다.

4. 병렬 처리

데이터 흐름 네트워크는 채널(메시지 전달)을 통해 데이터를 전송하여 통신하는, 동시에 실행되는 프로세스 또는 오토마톤의 네트워크이다.

데이터 흐름 네트워크의 개념은 액터 모델이라고 불리는 병행성 모델과도 밀접하게 관련되어 있다.

4. 1. 칸 프로세스 네트워크

질 칸의 이름을 딴 칸 프로세스 네트워크에서 프로세스는 ''결정적''이다. 이는 각 결정적 프로세스가 입력 스트림에서 출력 스트림으로의 연속 함수를 계산하고, 결정적 프로세스 네트워크 자체가 결정적이어서 연속 함수를 계산한다는 것을 의미한다. 이는 이러한 네트워크의 동작이 고정점 이론을 사용하여 해결할 수 있는 일련의 재귀 방정식으로 설명될 수 있음을 의미한다. 데이터의 이동과 변환은 일련의 모양과 선으로 표현된다.

칸 프로세스 네트워크는 데이터 흐름 네트워크 중에서도 특히 중요한 클래스이다. 이 경우, 각 프로세스는 지속적으로 들어오는 데이터에 어떤 변환을 가하여 출력한다. 신호 처리의 추상 모델로서 중요하게 여겨진다.

5. 기타

정적 프로그램 분석 도구를 사용하면 프로그램 실행 시 존재하는 수많은 데이터 흐름을 확인하여 분석 시간을 단축할 수 있다.

데이터 흐름 컴퓨팅은 계산을 노드로, 데이터를 가장자리를 따라 흐르는 방향 그래프로 표현하는 소프트웨어 패러다임이다. 데이터 흐름은 스트림 처리 또는 반응형 프로그래밍이라고도 불린다.

데이터 흐름 하드웨어(데이터 흐름 아키텍처)는 폰 노이만 아키텍처의 대안이다. 데이터 흐름 프로그래밍의 예로는 스프레드시트와 함께 반응형 프로그래밍이 있다. 사용자가 새 값을 입력하면 즉시 다음 논리적 "액터" 또는 계산 공식으로 전달된다.

분산 데이터 흐름은 분산 다중 프로토콜의 역학을 포착하는 프로그래밍 추상화로 제안되었다. 데이터 흐름 프로그래밍의 데이터 중심 관점은 상위 수준의 기능 사양을 촉진하고 시스템 구성 요소에 대한 형식적 추론을 단순화한다.

데이터 흐름은 다음을 참조할 수도 있다.


  • Power BI 데이터 흐름: Microsoft Dataverse를 통해 Power BI 보고서 개발자가 사용할 수 있도록 소스 데이터를 데이터 정리된 Power BI 데이터 세트로 변환하는 데 사용되는 클라우드의 Power Query 구현이다.
  • 구글 클라우드 데이터플로우: 구글 클라우드 플랫폼 생태계 내에서 아파치 빔 파이프라인을 실행하기 위한 완전 관리형 서비스이다.

6. 도구

정적 프로그램 분석 시 프로그램 실행 상 존재하는 수많은 데이터 흐름을 효율적으로 분석할 수 있도록 도와주는 정적 분석 도구를 사용하면 사람이 직접 분석할 때의 수고를 덜 수 있다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com