직렬화

JJStone·2022년 2월 16일
0

Google protocol buffer

목록 보기
1/2

회사에서 Google protocol buffer를 사용해서 개발하고 있다. 자바에서 객체 직렬화부터 알아보고 다음 문서에서 protocol buffer에 대해서 알아보도록 하자.

직렬화란?

  • 쉽게 말해 데이터를 바이트의 형태로 변환하는 것.

객체 직렬화

  • 객체의 직렬화는 객체의 내용을 바이트 단위로 변환해 파일 또는 네트워크를 통해서 송수신이 가능하도록 하는것을 의미
  • 자바의 경우 객체의 내용을 자바 I/O가 자동으로 바이트 단위로 변환해 저장,복원하고 네트워크 전송이 가능하록 하는 기능을 제공
  • 객체의 멤버변수가 다른 객체를 참조하고 있더라도 이 객체를 직렬화.

참조: https://weicomes.tistory.com/63

객체 직렬화의 장점

  • 장점

    1. 객체를 네트워크를 통해 손쉽게 교환 가능
    2. 객체 내용을 입출력형식에 구애받지 않고 객체를 파일에 저장함으로써 영속성을 제공
  • 단점

    1. 사람이 이해하기 힘든 구조로 되어있음. 역직렬화를 통해 변환해야함.
    2. 직렬화된 데이터를 역직렬화 시킬때, 시스템이 다르면 자바의 경우 java.io.InvalidException 발생. (이 경우 serialVersionUID를 통해 해결 가능)

데이터 직렬화의 종류

  • Java의 Serializable 인터페이스 상속 - 같은 자바 시스템에서만 사용 가능.
  • CSV: 데이터를 표현하는 방식중 하나로, 콤마(,)를 기준으로 데이터를 구분
  • JSON: 최근 가장 많이 사용하는 포맷으로 JavaScript로 쉽게 사용이 가능하고 다른 포맷방식에 비해 오버헤드가 적기때문에 인기가 많다.
  • Protocol bufffer (이진 직렬화) : 직렬화를 하기 위한 데이터 표기 문서가 따로 존재. (ex. .proto).
profile
java, scala 개발자 입니다.

0개의 댓글