자바스크립트는 비동기적인 특성을 활용하여 스트림 처리와 같은 데이터 처리를 위한 다양한 방법을 제공합니다. 파이프라인과 스트림은 데이터를 효율적으로 처리하는 방법으로, 이러한 기술을 사용하면 데이터를 일괄적으로 처리하거나 변환할 수 있습니다.
파이프라인
파이프라인은 데이터처리에서 한 단계의 출력이 다음 단계의 입력으로 연결되는 구조를 말합니다. 이전 단계의 결과가 연이어 다음 단계로 전달되어 처리되기 때문에 파이프라인은 효율적인 데이터 처리를 가능케 합니다. 자바스크립트에서는 Array.prototype
의 메서드인 map
, filter
, reduce
등을 활용하여 데이터 파이프라인을 구축할 수 있습니다.
다음은 배열에서 필터링과 변환을 거친 후 합산하는 파이프라인의 예제입니다.
const data = [1, 2, 3, 4, 5];
const result = data
.filter(num => num % 2 === 0) // 짝수 필터링
.map(num => num * 2) // 각 항목을 2배로 변환
.reduce((acc, cur) => acc + cur, 0); // 값들을 합산
// result: 12
스트림
스트림은 데이터 처리에서 연속적으로 생성되는 데이터를 처리하기 위한 개념으로, 일부 데이터 처리 작업은 모든 입력 데이터가 사용 가능한 상태로부터 시작할 필요가 없습니다. Node.js는 스트림을 효과적으로 처리하기 위한 Readable
, Writable
, Transform
과 같은 클래스를 제공합니다.
아래는 Node.js의 스트림을 통해 파일을 읽고 콘솔에 출력하는 예제입니다.
const fs = require('fs');
const readStream = fs.createReadStream('input.txt');
const writeStream = fs.createWriteStream('output.txt');
readStream.pipe(writeStream);
이 예제에서는 파일을 읽어와서 다른 파일로 출력하는 스트림 처리를 보여줍니다. pipe
메서드를 통해 데이터를 효율적으로 스트림으로 전달할 수 있습니다.
결론
파이프라인과 스트림은 자바스크립트에서 데이터를 처리하고 변환하는 데 필수적인 기술입니다. 이러한 기술을 활용하여 데이터 처리를 효율적으로 수행할 수 있으며, Node.js의 스트림을 활용하면 파일 및 네트워크와 같은 입출력 작업을 효율적으로 처리할 수 있습니다.
참고 문헌: