Avro 개요

    Avro란?

    Avro는 데이터 직렬화와 관련된 시스템이다. 한국 개발자들은 /에이브로/라고 발음하곤 하지만, 외국 개발자 커뮤니티에서는 주로 /아브로/라고 발음하고 있다. Avro는 JSON 형태로 기록한다. 따라서, Avro는 스키마를 표현하는 JSON이라 생각할 수 있다.

     

    Avro의 장단점

    • 장점
      • 데이터의 타입을 알 수 있다.
      • 데이터가 압축되어 효율성이 높다.
      • 스키마에 설명을 포함하여 구조를 이해하는데 도움을 줄 수 있다.
      • 데이터를 여러 언어로 액세스할 수 있다.
      • 향후 스키마 변경에 유연하게 대응할 수 있다. (schema evolution)
      • Hadoop 계열과 궁합이 좋다.
      • Confluent Schema Registry에 쓸 수 있다. (유일)
    • 단점
      • 바이너리 형태로 직렬화(serialize) 되므로 JSON을 직접 쓸 때와 비교했을 때 대비 데이터를 쉽게 들여다 보기 어렵다. (디버깅하거나, 개발할 때 불편함 증가)

     

    Avro Data Type 상세

    표기할 수 있는 데이터형(data type)은 아래와 같이 세분화할 수 있다.

    Primitive Data Type

    Avro의 Primitive Data Type은 다음과 같다.

    • null: no value
    • boolean: binary value
    • int: 32bit signed integer
    • long: 64bit signed intteger
    • float
    • double
    • bytes: 8bits unsigned
    • string
    {"type": "string"}
    {"type": "int"}
    {"type": "boolean"}
    {"type": "long"}

     

    Complex Data Type

    Avro의 Complex Data Type은 다음과 같다.

    • Record
      • name: 스키마 이름
      • namespace: 패키지
      • doc: 스키마 설명/문서
      • aliases: 별칭
      • fields
        • name: 필드명
        • doc: 필드 설명
        • type: 필드의 데이터형 (data type)
        • default: 기본 값
    {
      "type": "record",
      "name": "Students",
      "fields": [
        {"name": "id", "type": "long"},
        {"name": "name", "type": "string"},
        {"name": "majors", "type": "array", "values": "string"},
        {"name": "phone", "type": "string"}
      ]
    }
    • Enum: 한 번 설정하면 바꾸지 말자. 장애난다.
    • {"type": "enum", "name":"colors", "symbols":["RED", "BLUE", "GREEN"]}
    • Array
    • {"type":"array", "items":"string"}
    • Map: 키는 string이다. value의 타입을 지정한다.
    • {"type":"map", "values":"string"}
    • Union: string, int, boolean 등과 같은 여러 개의 서로 다른 타입을 수용할 수 있게 함, 선택적인 값을 저장하도록 하는 용도

    참고

    공식 홈페이지: https://avro.apache.org/

     

    Welcome to Apache Avro!

    Welcome to Apache Avro! Apache Avro™ is a data serialization system. To learn more about Avro, please read the current documenta

    avro.apache.org

     

    'Development > Hadoop, NoSQL, BigData' 카테고리의 다른 글

    Memcached vs. Redis - 특징 비교  (0) 2021.05.03
    Redis 개요  (0) 2021.04.28
    Avro 개요  (0) 2021.04.23
    Redis 설치 방법 - 여러 가지  (0) 2021.04.21
    Docker기반 Spark Cluster 설치하기  (6) 2020.12.15
    Local AirFlow 설치하기  (0) 2020.12.09

    댓글(0)

    Designed by JB FACTORY