- Format Binary Serialization yang efisien
- Seperti JSON, dapat digunakan untuk pertukaran data lintas berbagai bahasa
- Bilangan bulat kecil dikodekan dalam satu byte, dan string pendek hanya memerlukan satu byte tambahan di samping string itu sendiri
- Didukung di lebih dari 50 bahasa pemrograman dan lingkungan
- Contoh penggunaan:
- Redis: menambahkan ekstensi C MessagePack untuk Lua dan memanfaatkannya untuk serialisasi data
- Fluentd: menggunakan MessagePack untuk representasi data internal, memungkinkan pemrosesan berkecepatan tinggi
- Treasure Data: membangun basis data multi-tenant yang dioptimalkan untuk kueri analitik
- Pinterest: mengompresi cache feed dan memprosesnya dengan cepat menggunakan MessagePack dan Memcache
Dua konsep: "Type System" dan "Format"
- Sistem tipe
- Integer: bilangan bulat
- Nil: nilai
null
- Boolean:
true atau false
- Float: bilangan floating point IEEE 754
- Raw: string atau array byte
- Array: array objek
- Map: pasangan kunci-nilai
- Extension: tipe kustom
- Timestamp: informasi waktu
- Format
- positive fixint, negative fixint, fixmap, fixarray
- nil, false, true
- bin 8/16/32, ext 8/16/32, float 32/64
- uint 8/16/32/64, int 8/16/32/64, fixext 1/2/4/8/16, str 8/16/32
- array 16/32, map 16/32
- Contoh format
fixint: bilangan bulat 7-bit (positif 0x00–0x7F, negatif 0xE0–0xFF)
fixstr: string hingga 31 byte
array 16: array dengan hingga (2^16)-1 elemen
map 16: hingga (2^16)-1 pasangan kunci-nilai
Kelebihan MessagePack
- Meminimalkan ukuran data dan mengoptimalkan kecepatan
- Dapat menggantikan dan meningkatkan aplikasi berbasis JSON yang ada
- Implementasinya sederhana sehingga fleksibel digunakan di berbagai lingkungan
4 komentar
Saya sempat mencoba menerapkan MessagePack saat berkomunikasi dengan server game.. tetapi fleksibilitas di berbagai lingkungan seperti yang dijelaskan ternyata tidak berjalan dengan baik. Jadi saya memakai protobuf.
Mungkin saya kurang paham, tapi kalau mau serialisasi dalam bentuk hex demi ukuran dan kecepatan alih-alih json.. apa bedanya dengan zaman dulu saat orang langsung memakai serialisasi biner?
Kalau hanya dikeluarkan sebagai biner, itu biasanya hanya berlaku di bahasa dan runtime yang menghasilkan biner tersebut, tetapi format seperti itu umumnya dibuat dengan asumsi untuk saling bertukar data lintas bahasa dan lingkungan yang berbeda.
Aha. Begitu ya. Terima kasih atas jawabannya.