직렬화와 역직렬화
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