메시지 팩
MessagePack![]() |
원저작자 | 후루하시 사다유키 |
---|---|
저장소 | |
기입처 | 다양한 언어 |
운영 체제 | 조금도 |
플랫폼 | 크로스 플랫폼 |
유형 | data 교환 |
면허증. | Apache 라이선스 |
웹 사이트 | msgpack |
MessagePack은 컴퓨터 데이터 교환 형식입니다.이는 배열 및 연관 배열과 같은 단순한 데이터 구조를 나타내기 위한 이진 형식입니다.MessagePack은 가능한 한 컴팩트하고 심플한 것을 목표로 하고 있습니다.공식 구현은 C, C++, C#, D, Erlang, Go, Haskell, Java, JavaScript(NodeJS), Lua, OCaml, Perl, PHP, Python, Ruby, Scala, SmallTalk, [1]Swift 등의 다양한 언어로 제공됩니다.
데이터 유형 및 구문
MessagePack에 의해 처리되는 데이터 구조는 JSON 형식에서 사용되는 구조와 거의 일치합니다.이들은 다음 요소 유형으로 구성됩니다.
- 제로
- bool, boolean (
true
그리고.false
) - int, integer(최대 64비트 서명 또는 부호 없음)
- 부동소수점수(IEEE 단일/이중 정밀도)
- str, UTF-8 문자열
- bin, 바이너리 데이터(최대32 2 ~1 바이트)
- 배열
- 맵, 연관 배열
- ext(어플리케이션 정의 형식의 데이터를 최대32 2 ~1 바이트)
- 타임스탬프(ext type = -1)(최대 32비트 및 64비트 나노초)
다른 형식과의 비교
MessagePack은 JSON보다 콤팩트하지만 배열 및 정수 크기에 제한이 있습니다.한편, 바이너리 데이터와 UTF-8 이외의 부호화 스트링을 사용할 수 있습니다.JSON에서는 맵키는 문자열이어야 하지만 MessagePack에서는 이러한 제한이 없으며 맵이나 어레이 등의 유형, YAML과 같은 숫자를 포함한 모든 유형이 맵키일 수 있습니다.
BSON에 비해 MessagePack은 공간 효율이 높습니다.BSON은 메모리 내에서의 고속 처리를 위해 설계되었으며 MessagePack은 회선을 통한 효율적인 전송을 위해 설계되어 있습니다.예를 들어 BSON에서는 모든 문자열 끝에 늘 터미네이터가 필요하며 목록 요소의 문자열 인덱스가 삽입되지만 MessagePack에서는 삽입되지 않습니다.BSON은 내부적으로 배열과 맵을 모두 문서(맵)로 나타냅니다.여기서 배열은 키가 0부터 카운트업되는 10진수 문자열인 맵입니다.한편 MessagePack은 맵과 배열을 모두 배열로 나타냅니다.각 맵 키와 값의 쌍은 연속되어 홀수 항목 키와 짝수 항목 값이 됩니다.
Protocol Buffers 형식은 MessagePack과 동등한 소형화를 목표로 합니다.단, JSON과 MessagePack은 타입 태그를 사용하여 임의의 데이터 구조를 시리얼화하는 것을 목표로 하고 있습니다만, Protocol Buffers에서는 데이터 유형을 정의하기 위한 스키마가 필요합니다.Protocol Buffers 컴파일러는 응용 프로그램코드에 시리얼라이제이션의 통합을 용이하게 하기 위해 타겟 언어로 보일러 플레이트 코드를 작성합니다.MessagePack은 동적 유형의 데이터 구조만 반환하며 자동 구조체크를 제공하지 않습니다.
MessagePack은 에서 참조됩니다. CBOR의 RFC7049.
「 」를 참조해 주세요.
레퍼런스
- ^ "Languages". Retrieved 4 Jan 2022.