[[분류:데이터 직렬화 형식]] [목차] == 개요 == 다양한 종류의 데이터를 기계가 쓰고 읽기 편리하게 직렬화(serialize)하여 나타낸 형식을 말한다. 데이터를 저장하거나 기기 간에 주고받을 때 일정한 형식으로 직렬화함으로서 데이터의 손실을 방지하고 올바르게 해석할 수 있게 한다. 일반적으로 사람이 읽을 수 있는 문자만을 사용한 텍스트 기반 형식과, 컴퓨터가 쉽게 처리할 수 있게 2진법으로 데이터를 저장하는 형식이 있다. [[마크업 언어]]와는 '기계가 읽을 수 있는 데이터를 다룬다'는 점이 비슷하나 그 목적이 다르다. 마크업 언어는 본격적으로 형식과 모양을 갖추어 사람이 보기 위한 문서를 다루는 데 반해, 데이터 직렬화 형식은 '데이터를 저장한다'는 목적에 더 충실하다. XML은 두 개념 사이에 걸친 언어인데, 문서를 나타내는 용도로도, 데이터를 저장하는 용도로도 쓸 수 있다. == 텍스트 기반 형식 == 다양한 소프트웨어 간의 호환성을 유지하기 위해 [[인코딩]]을 제약하는 경우가 많다. 과거에는 [[ASCII]] 문자만 허용하는 경우도 많았지만, [[UTF-8]]이 널리 쓰이게 되면서 이를 허용하는 경우도 많다. * [[CSV]] * [[JSON]] * [[XML]] [[YAML]][* 사실 YAML은 json의 수퍼셋이기 때문에 json이 직렬화 형식이라면 yaml도 직렬화 형식이 맞다. 다만 실제로 yaml serialization을 지원하는 라이브러리가 없다시피 하고, 파싱 전용 [[설정 파일]]로 쓰이는 경우가 많기 때문에 예외로 친다.]이나 [[TOML]]등은 이론적으로는 데이터 직렬화가 가능하더라도, 해당 기능을 염두에 두고 만들어진 포맷이 아니기 때문에 보통 [[설정 파일]]로 분류한다. 자세한 목록은 해당 문서 참고. == 이진 형식 == * CBOR * BSON - [[MongoDB]]에서 사용하는 타입이 추가된 [[JSON]] 형식. 바이너리로 직렬화되기 때문에 공간을 적게 차지한다. * [[LEB128]] - 대용량의 정수들을 무손실 압축해 저장하는 용도로 사용하는 바이너리 형식. * MessagePack * Pickle: [[Python]]에서 객체를 직렬화하는 용도로 사용하는 전용 형식이다. * [[https://developers.google.com/protocol-buffers/|Protocol Buffers]]: [[구글]]에서 개발한 형식이다. == 둘러보기 == * [[설정 파일]]