회사에서 Google protocol buffer를 사용해서 개발하고 있다. 자바에서 객체 직렬화부터 알아보고 다음 문서에서 protocol buffer에 대해서 알아보도록 하자.
직렬화란?
- 쉽게 말해 데이터를 바이트의 형태로 변환하는 것.
객체 직렬화
- 객체의 직렬화는 객체의 내용을 바이트 단위로 변환해 파일 또는 네트워크를 통해서 송수신이 가능하도록 하는것을 의미
- 자바의 경우 객체의 내용을 자바 I/O가 자동으로 바이트 단위로 변환해 저장,복원하고 네트워크 전송이 가능하록 하는 기능을 제공
- 객체의 멤버변수가 다른 객체를 참조하고 있더라도 이 객체를 직렬화.
참조: https://weicomes.tistory.com/63
객체 직렬화의 장점
-
장점
- 객체를 네트워크를 통해 손쉽게 교환 가능
- 객체 내용을 입출력형식에 구애받지 않고 객체를 파일에 저장함으로써 영속성을 제공
-
단점
- 사람이 이해하기 힘든 구조로 되어있음. 역직렬화를 통해 변환해야함.
- 직렬화된 데이터를 역직렬화 시킬때, 시스템이 다르면 자바의 경우
java.io.InvalidException
발생. (이 경우 serialVersionUID
를 통해 해결 가능)
데이터 직렬화의 종류
- Java의 Serializable 인터페이스 상속 - 같은 자바 시스템에서만 사용 가능.
- CSV: 데이터를 표현하는 방식중 하나로, 콤마(,)를 기준으로 데이터를 구분
- JSON: 최근 가장 많이 사용하는 포맷으로
JavaScript
로 쉽게 사용이 가능하고 다른 포맷방식에 비해 오버헤드가 적기때문에 인기가 많다.
- Protocol bufffer (이진 직렬화) : 직렬화를 하기 위한 데이터 표기 문서가
따로
존재. (ex. .proto).