-
Avro VS JSON시리즈/Avro 2024. 10. 2. 03:43
이번 포스트에서는 Avro와 우리가 흔히 사용하는 JSON를 비교 해보겠습니다.
Avro의 강점
- 효율적인 데이터 처리: 컴팩트한 바이너리 인코딩으로 데이터 크기 감소, 네트워크 전송 및 저장 공간 효율성 향상 (요금절약)
- 스키마 진화 지원: 데이터 구조 변경에 유연하게 대응, 시스템 확장성 용이
- 빅데이터 환경에 적합: 빠른 처리 속도와 효율적인 저장 방식으로 대용량 데이터 처리에 유리
JSON의 강점
- 사람이 읽기 쉬운 형식: 텍스트 기반, 데이터 구조 직관적 파악 가능, 디버깅 및 문제 해결 용이
- 웹 개발 및 NoSQL 데이터베이스에 적합: 웹 서비스 및 NoSQL 데이터베이스와의 호환성 우수
선택 기준
- 데이터 효율성: 저장 공간 및 전송 속도 중요 → Avro
- 가독성: 사람이 쉽게 읽고 이해해야 하는 경우 → JSON
- 스키마 관리: 데이터 구조 변경 가능성 고려 → Avro
- 빅데이터 처리: 대용량 데이터 처리 및 빠른 속도 요구 → Avro
- 웹 개발 및 NoSQL 데이터베이스: JSON
Avro VS JSON 공간 효율성 비교
다음표를 보시면 Trip data 기준 압축하지 않은 데이터의 경우 JSON 은 222GB, AVRO는 55.2GB 를 사용하며, JSON-Bzip을 제외한 나머지에서 모두 JSON보다 더 적은 용량을 차지합니다.
- JSON-Bzip
- avro보다 더 좋은 저장 공간 효율성을 나타낸 JSON-Bzip의 경우는 CPU Time(s)가 avro에 비해 크게는 4~5배정도 시간이 더 들기 때문에 실시간 데이터 처리로는 적합해 보이지 않습니다.
Dataset Format-codec Compressed Raw size (GB) Storage ratio Duration time (s) CPU Time (s) Trip data JSON no 222.0 100% 282 6848 Trip data JSON-Lz4 yes 22.3 10% 281 6402 Trip data JSON-Snappy yes 26.7 12% 292 7222 Trip data JSON-Gzip yes 11.5 5% 324 9196 Trip data JSON-Bzip yes 6.5 3% 2020 60201 Trip data AVRO no 55.2 25% 273 7459 Trip data AVRO-Snappy yes 9.2 4% 321 9613 Trip data AVRO-Deflate yes 9.2 4% 417 9808 Wikimedia JSON no 43.8 100% 2824 Wikimedia JSON-Lz4 yes 5.9 21% 1978 2743 Wikimedia JSON-Snappy yes 6.5 15% 1928 2567 Wikimedia JSON-Gzip yes 3.6 8% 2620 2824 Wikimedia JSON-Bzip yes 2.4 5% 7610 8007 Wikimedia AVRO no 17.4 40% 1969 2341 Wikimedia AVRO-Snappy yes 3.7 8% 2412 2891 Wikimedia AVRO-Deflate yes 3.7 8% 2850 3121 Avro VS JSON 직렬화/역직렬화 성능 비교
AVRO는 JSON에 비해 직렬화/역직렬화에서 JSON 보다 2배 더 좋은 성능을 제공합니다.
1 mln s/d json time 5633 ms
1 mln s/d avro time 2618 ms
2 mln s/d json time 10173 ms
2 mln s/d avro time 5093 ms
3 mln s/d json time 15252 ms
3 mln s/d avro time 7695 ms
4 mln s/d json time 20484 ms
4 mln s/d avro time 10304 ms
5 mln s/d json time 25553 ms
5 mln s/d avro time 13275 ms- ** mln ** -> 백만을 뜻함
총정리
Avro는 JSON 보다 저장 용량과 CPU 자원을 적게 소모합니다.
Avro를 Kafka, Hadoop등 빅데이터 처리시에 사용하여 인프라 비용을 크게 절감할 수 있습니다.개인적인 생각
이전에 Bson으로 게임 서버를 만든 것을 본적이 있는데, Bson을 Avro로 대체한다면 좀더 빠른 게임 서버를 만들 수 있지 않을까?
Ref
'시리즈 > Avro' 카테고리의 다른 글
Avro Gradle source, outputDir (사용자 지정) (0) 2024.10.02 Avro Gradle Plugin (디폴트 설정) (2) 2024.10.02 Avro 란? (0) 2024.10.02 댓글