Table of Contents
Buffer
- 버퍼는 데이터를 어딘가로 이동시키기 전에 잠시 모아두는 바구니 같은 역할을 한다
- Node.js의
Buffer
클래스는 바이너리 데이터 스트림을 다루는데 유용한 기능을 제공한다 - 바이너리 데이터 스트림은 데이터의 끝이 정해져 있지 않은 0과 1로 이루어진 데이터 집합을 말한다
- 데이터의 끝이 정해져 있지 않기 때문에, 데이터를 일정 양만큼 나눠서 보내야 한다
- 데이터를 스트림 방식으로 처리하는 것은, 메모리 크기를 초과하는 큰 파일도 오류없이 빠르게 읽을 수 있도록 해준다
- 버퍼에 데이터 청크들이 충분히 쌓이면, 해당 버퍼 안의 데이터로 작업을 수행하고,버퍼를 비운 후, 다시 데이터 청크를 받는다
- Node.js의 버퍼는 크기를 중간에 수정할 수 없으며, 1바이트 단위로 요소에 접근할 수 있도록 해준다
Stream
- 스트림은 끝이 정해지지 않은 일련의 데이터를 말한다
- Node.js에서는 파일을 읽거나 쓸 때, 스트림 방식으로 작업을 수행할 수 있다
- 스트림 방식은, 엄청나게 큰 용량의 데이터를 읽거나 쓸 때에도 메모리 초과 오류 없이 작업을 처리하도록 해준다
- 스트림 방식은 해당 스트림을 위해 임시로 만든 버퍼 안에 데이터를 담아 작업을 수행하기 때문에, 해당 작업을 수행하는데 결과적으로 버퍼의 크기만큼의 메모리만 있으면 된다
- 또한 스트림 방식은 작은 용량을 반복하는 작업의 경우, 버퍼에 담아 작업을 수행하기 때문에 훨씬 빠르고 효율적이다
- 스트림 방식은 결론적으로 큰 용량의 데이터를 처리하는 경우, 그리고 작은 용량의 데이터를 반복 처리하는 경우 모두에 적합한 솔루션이다