Network

Avro란? JSON과 Avro의 차이 (아브로, 에이브로)

15호의 개발자 2022. 4. 4. 12:00
반응형

Avro란? JSON과 Avro의 차이 (아브로, 에이브로)

 


 

직렬화 / 역직렬화 (Serialization, Deserialization)

 

Avro에 대해서 알기 전에 우선 직렬화와 역직렬화가 무엇인지에 대해 먼저 알고있어야 한다.

 

디스크에 데이터를 저장하거나, 네트워크로 데이터를 전송하려면 객체를 직렬화한 후 사용해야한다. 직렬화(serialization)객체를 전송 가능한 형태로 만드는 것으로써, 데이터를 연속적인 형태로 변형하는 것이다.

 

반대로, 디스크에 저장된 데이터를 읽거나, 네트워크를 통해 전송된 데이터를 받아서 메모리에 재구축 하려면 다시 객체 형태로 만들어야하며 이 과정을 역직렬화(deserialization)라고 한다.

 

 

 

 

Avro란?

 

Avro(에이브로, 아브로)는 Apache에서 만든 프레임워크로써, 원격 프로시저 호출(RPC) 및 데이터 직렬화 기능을 제공한다. 언어 중립적인 데이터 직렬화 시스템으로, JSON과 비슷한 형식이지만 Avro는 스키마가 존재한다는 차이점이 있다.

 

kafka에서 Avro가 사용되는데, 프로듀서가 새로운 스키마로 전환되어도 컨슈머는 변경 없이 처리할 수 있다는 장점이 있다.

 

 

 

 

JSON과 Avro의 차이

 

데이터는 CSV, XML, JSON, binary 형식 등으로 다양하게 직렬화될 수 있다.

  • CSV, XML, JSON
    - 이 형식은 사람이 읽기에는 쉽지만, 데이터 저장시 공간 효율성이 떨어지고 파싱(parsing)하는 과정이 오래 걸린다.
  • binary
    - 사람이 읽을 수 없지만, 파싱 시간이 짧다는 장점이 있다.

 

데이터 양이 적을 때는 파싱하는 시간이 문제되지 않지만, 데이터 양이 많을 때는 파싱 시간을 줄이는 것이 중요하다. 이를 해결하기 위해 Avro(아브로, 에이브로), Thrift(쓰리프트), Protocol Buffer(프로토콜 버퍼), Sequence File(시퀀스 파일) 등이 사용된다.

 

 

 

 

출처

https://ko.wikipedia.org/wiki/아파치_아브로

https://hanbulkr.tistory.com/14

https://118k.tistory.com/740

https://data-engineer-tech.tistory.com/15

반응형