데이터 저장에 관해 공부하다 보니,
정리의 필요성을 느끼고 이렇게 글을 작성하게 되었습니다.
파일들을 자세히 보면 다양한 파일 확장자명을 확인할 수 있었을 것입니다.
이러한 다양한 확장자가 생기게 된 이유는 무엇일까요?
데이터의 저장 형식에 대해 설명하기에 앞서, 이를 이해하기 위해서는
먼저 "직렬화(Serialization)"와 "역직렬화(Deserialization)" 개념을 알아야 합니다.
직렬화(Serialization) / 역직렬화(Deserialization)
데이터를 인터넷으로 전송할 때,
컴퓨터가 이해하기 쉬운 텍스트 혹은 바이트 형태로 변환하는 과정으로 이해하시면 됩니다.
직렬화:
데이터를 보낼 때, 데이터를 텍스트/바이트 형태로 변환하는 과정입니다.
역직렬화:
데이터를 받을 때, 직렬화된 내용을 원래의 데이터 형태로 변환하는 과정입니다.
텍스트 형태 vs 바이트 형태(= 바이너리 형태)
텍스트 형태
장점:
사람이 쉽게 읽고 편집할 수 있으며, 다양한 시스템과 언어 간 호환성이 높습니다.
단점:
바이너리 형식에 비해 일반적으로 더 큰 크기를 가지며,
처리 속도가 상대적으로 느릴 수 있습니다.
또한 텍스트 형태이기 때문에 부동소수점 등에서 정밀도 손실 가능성이 존재합니다.
위의 특징을 살려서
설정 파일, 웹 API(예: REST API), 다른 시스템 간 데이터 교환 등에 주로 사용됩니다.
바이트 형태
장점:
텍스트 형태에 비해 더 작은 크기로 데이터 저장이 가능하며, 처리 속도가 빠릅니다.
또한 데이터 손실 없이 정확한 값 저장이 가능합니다.
단점:
사람이 직접 읽기 어려우며, 다른 시스템이나 언어 간 호환성이 낮을 수 있습니다.
위의 특징을 살려서
대용량 데이터 처리, 고성능이 요구되는 애플리케이션,
네트워크 통신에서 데이터 전송 등에 주로 사용됩니다.
데이터 직렬화 형식들
데이터 직렬화 형식들은 무척 많이 존재합니다.
특정 형식이 더 좋아서 사용한다기보다
각 산업 분야에 특화된 경우가 많기에,
대표 격이자 자주 사용되는 JSON, CSV, XML, YAML 이 4가지를 정리해 보았습니다.
참고로 4가지 모두 텍스트 형태의 방식입니다.
JSON (JavaScript Object Notation)
키-값 쌍과 배열 구조로 이루어져 있으며,
간결하고 파싱이 빠르기에 주로 웹 API, 설정 파일에 사용됩니다.
{
"name": "John Doe",
"age": 30,
"city": "New York"
}
CSV:
콤마로 구분된 텍스트 파일 형식으로, 구조가 단순한 형태로 이루어져 있습니다.
콤마를 통해 테이블 형식의 데이터를 표현하기 쉬워
보통 스프레드시트와 데이터베이스 간 데이터 교환에 자주 사용됩니다.
엑셀을 다뤄보셨다면 아마 한 번쯤 보셨을 것입니다.
Name,Age,City
John Doe,30,New York
Jane Smith,25,Los Angeles
XML (eXtensible Markup Language)
마크업 언어를 활용하여,
데이터의 구조와 의미를 정의하는 태그를 사용하여 표기하는 형태로 이루어져 있습니다.
마크업 언어를 활용하기에 확장성이 뛰어나며,
주로 웹 서비스, 구성 파일 등에서 사용됩니다.
<person>
<name>John Doe</name>
<age>30</age>
<city>New York</city>
</person>
YAML (YAML Ain't Markup Language):
원래는 XML의 복잡성에 대한 대안으로 개발되었으며,
데이터 표현에 중점을 둔 형식임을 강조하기 위해 현재의 이름이 되었습니다.
들여쓰기를 사용하여 데이터 구조를 표현하는 형태로 이루어져 있습니다.
보통 구성 파일, 데이터 저장 등에 사용됩니다.
person:
name: John Doe
age: 30
city: New York
오늘은 간단하게 데이터 직렬화와 역직렬화,
이를 처리하는 몇 가지 형식에 대해 알아보았습니다.
https://youtu.be/qrQZOPZmt0w?si=cAS_YqEGZp7NfN3Z
https://youtu.be/55FrHTNjTCc?si=k96RSo_GmNVWzUCn
'알아보자 시리즈' 카테고리의 다른 글
유니티 - Burst 컴파일러에 대해 알아보자 (2) | 2024.10.16 |
---|---|
'깃/커밋 컨벤션' 에 대해 알아보자 (0) | 2024.09.10 |
'깃허브'에 대해 알아보자 (0) | 2024.09.09 |
유니티 - Unity Visual Scripting에 대해 알아보자 (0) | 2024.09.04 |
유니티 : 오브젝트 풀링(Object Pooling)에 대해 알아보자 (0) | 2024.08.27 |