- एक कुशल Binary Serialization फ़ॉर्मैट
- JSON की तरह कई भाषाओं के बीच डेटा एक्सचेंज संभव
- छोटे integers को single byte में encode किया जाता है, और छोटी strings के लिए string के साथ केवल एक अतिरिक्त byte की ज़रूरत होती है
- 50 से अधिक programming languages और environments में supported
- उपयोग के मामले:
- Redis: Lua के लिए MessagePack C extension जोड़कर data serialization में उपयोग
- Fluentd: internal data representation के लिए MessagePack का उपयोग, जिससे high-speed processing संभव
- Treasure Data: analytics queries के लिए optimized multi-tenant database का निर्माण
- Pinterest: MessagePack और Memcache से feed cache compression और तेज़ processing
दो concepts: "Type System" और "Format"
- type system
- Integer: पूर्णांक
- Nil:
null मान
- Boolean:
true या false
- Float: IEEE 754 floating point
- Raw: string या byte array
- Array: objects की array
- Map: key-value pairs
- Extension: user-defined type
- 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
- format उदाहरण
fixint: 7-bit integer (positive के लिए 0x00–0x7F, negative के लिए 0xE0–0xFF)
fixstr: अधिकतम 31-byte string
array 16: अधिकतम (2^16)-1 elements वाली array
map 16: अधिकतम (2^16)-1 key-value pairs
MessagePack के फायदे
- data size को न्यूनतम करना और speed को optimize करना
- मौजूदा JSON-आधारित applications का विकल्प और सुधार
- सरल implementation के साथ विभिन्न environments में लचीले ढंग से उपयोग संभव
4 टिप्पणियां
गेम सर्वर के साथ कम्युनिकेशन करते समय MessagePack लागू करने की कोशिश की थी.. लेकिन जैसा बताया जाता है, अलग-अलग environments में उसकी flexibility उतनी अच्छी तरह काम नहीं कर रही थी। इसलिए protobuf इस्तेमाल किया।
शायद मुझे ठीक से समझ नहीं आ रहा, लेकिन अगर JSON की जगह size और speed के लिए hex में serialize करना है, तो फिर... यह पहले वाले binary serialization इस्तेमाल करने से अलग आखिर क्या है?
अगर आप बस binary में निकालते हैं, तो वह आमतौर पर सिर्फ उसी भाषा और runtime में मान्य होता है जिसमें उसे निकाला गया था, लेकिन ऐसे format आम तौर पर अलग-अलग भाषाओं और अलग-अलग environments के बीच data का आदान-प्रदान करने को ध्यान में रखकर बनाए जाते हैं।
अच्छा। समझ गया। जवाब के लिए धन्यवाद।