Node js/Syntax

Stream

오늘도개발 2023. 3. 8. 22:33

 

1. node Stream 이란?

 

 - 순차적인 데이터 집합체 (data pipeline) data buffer 로 볼 수 있다.

 

 - 커넥션을 생성하고 데이터를 실시간대로 읽거나 쓸 수 있으며 사용 후에는 커넥션을 해제(종료) 한다.

 

2. 동작 예시

 

 - 2GB 의 데이터가 있을 때, stream 을 생성한 후 특정 크기 만큼만 RAM에 로드해서 사용할 수 있다.

 

 - 또한, RAM의 특정 크기 만큼의 데이터를 파일로 Write 할 수 있다.

 

 - 비동기적으로만 얻을 수 있는 데이터 처리시 유용

 

3. Stream 의 종류

 

 - Readable : 스트림으로 부터 읽음

 

 - Writeable : 스트림으로 부터 출력

 

 - Duplex : 스트림에 입력 및 출력 ( ex> TCP sockes )

 

 - Transform : 입력 받은 스트림을 새로운 스트림으로 변환

 

3. 주로 사용하는 기능 

 

 - __dirname 현재 코드가 있는 파일의 디렉토리 주소를 반환한다. ( ex> console.log(__dirname) )

 

 - __filename 현재 코드가 있는 파일의 주소를 반환한다. ( ex> console.log(__filename) )

 

 - setInterval( "실행할 내용", 인터벌 간격(ms; millisecond 단위). 특정 시간 단위로 실행한다. (ex> setInterval(() =>{ console.log("read")} , 1000)

 

 - setTimeout("실행할 내용", 타임아웃 시간(ms;millisecond 단위). 특정 시간이 지나면 실행한다. (ex> setTimeout(()=>{ console.log("timeout")}, 1000)

 

 - clearTimeout("setTimeout()") 타임아웃을 초기화 한다.

 

 

https://nodejs.org/api/stream.html

 

Stream | Node.js v19.7.0 Documentation

 

nodejs.org

 

4. 스트림을 통한 파일 입출력

 

 - highWaterMark 를 통하여 chunk 의 크기를 조절할 수 있다. ( default : 65536 )

 

 

5. Pipline을 사용한  순서 지정

 

 - 스트림을 통한 데이터 입력 후 압축, 압축 후 저장을 할 때, 비동기 처리가 필요한데 이때 pipeline 을 사용하여 순서를 지정(동기)할 수 있다.

 

 

6. Promisify 를 사용한 리펙토링

 

 - pipeline 코드를 promisify 를 사용해서 좀 더 재활용성, 가독성이 높은 코드로 작성할 수 있다.

 

'Node js > Syntax' 카테고리의 다른 글

Standard library  (0) 2023.03.08
Buffer  (0) 2023.03.08
node convention  (0) 2023.03.08
npm  (0) 2023.03.08
module  (0) 2023.03.08