직렬화와 역직렬화

1. 개념

  • 직렬화 : 외부의 시스템에서도 쓸 수 있도록 byte 형태로 데이터를 변환하는 기술

  • 역직렬화 : 내부의 시스템에서 쓸 수 있도록 객체 등의 형태로 변환하는 기술

  • javascript 예

    • JSON.parse : 문자열 -> 객체

    • JSON.stringify : 객체 -> 문자열

2. 직렬화/역직렬화는 결국 비용이다.

몽고 DB 에서 집적된 계산물을 만들어내는 함수는 aggregate 와 mapReduce 가 있다.

2개의 차이를 비교할 떄, 이 개념을 이용하여 설명할 수 있다.

  • aggregate 는 mapReduce 보다 빠르다. 그 이유는

    • mapReduce 는 BSON 이 지원하는 32, 64비트 정수에 대해서 자바스크립트 정수 타입인 64bit IEEE754 방식으로 변환해서 JSON 직렬화 과정을 거쳐 로직을 수행하고 다시 BSON 으로 변환하는 직렬화, 역직렬화 과정이 들어간다. 따라서 느리다.

    • 하지만 aggregate 는 BSON 타입 자체로 쿼리를 수행하기 때문에 변환과정이 없어서 약 3-5배정도 더 빠르다고 할 수 있다.

  • aggregate : BSON

  • mapReduce : BSON -> JSON -> BSON

Last updated