Serialization & Deserialization

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‚˜ ์˜ค๋ธŒ์ ํŠธ ์ƒํƒœ๋ฅผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์— ์ €์žฅ(์ด๋ฅผํ…Œ๋ฉด ํŒŒ์ผ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ: persistence)ํ•˜๊ณ  ๋‚˜์ค‘์— ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •

์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด, ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. ์ผ๋‹จ ์ด ์งˆ๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค.

๋‚ด๊ฐ€ ๊ตฌ์„ฑํ•œ ๊ฐ์ฒด ์ƒํƒœ ๊ทธ๋Œ€๋กœ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์—†์„๊นŒ?

์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜์˜จ ๊ฒƒ์ด ์ง๋ ฌํ™”์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ €์žฅ(Serialization)ํ•˜๊ณ  ํŠน์ • ์œ„์น˜์— ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.(Deserialization) swift์—๋Š” ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ archiving์„ ํ†ตํ•ด ์ €์žฅํ•ด ๋‘” ๋’ค ์ด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. NSKeyedArchiver๋ผ๋Š” ์นœ๊ตฌ์ธ๋ฐ, ์ด๊ฑด ๋‚˜์ค‘์— ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ง€๊ธˆ์€ ๊ฐœ๋…๋งŒ ์•Œ์•„๋ณด์ž. ๋‹ค์Œ์— Persistence ์ „์ฒด์— ๋Œ€ํ•ด ํ•œ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

์ง๋ ฌํ™”๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€?

ํ˜•์‹ ๋ฐ์ดํ„ฐ(Int, Char, Float)๋Š” ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‚˜, ๊ฐ์ฒด๋Š” ๋ถˆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ.

๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋Š” ๊ฒฐ๊ตญ ํž™ ์˜์—ญ์— ํ• ๋‹น๋˜์–ด ์žˆ๊ณ , ์Šคํƒ์—์„œ ์ด ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ด ์ธ์Šคํ„ด์Šค ์ž์ฒด๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋„˜๊ฒจ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ, ์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ๋„˜๊ฒจ์ค„ ๊ฒƒ์ธ๊ฐ€? ๋งŒ์•ฝ ๊ฐ’ํƒ€์ž… (Int, Char, Float)์˜ ๊ฒฝ์šฐ์—๋Š” ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ์—๋Š” ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ž์ฒด๊ฐ€ ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๋„ ๊ฐ€์ง€์ง€ ๋ชปํ•œ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์ธ์Šคํ„ด์Šค์˜ ๊ตฌ์กฐ์ž์ฒด๋ฅผ ๋„˜๊ฒจ๋ฐ›์•„์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ ์—์„œ ์ง๋ ฌํ™”๋Š” ์ฐธ์กฐ ํ˜•์‹ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ’ ํ˜•์‹ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์–ด, ์„œ๋กœ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

์ง๋ ฌํ™” ์ข…๋ฅ˜

csv, json, xmlbinary
์žฅ์ - ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ
- ์ตœ๊ทผ ๋งŽ์ด ์‚ฌ์šฉ
- ์ €์žฅ ๊ณต๊ฐ„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
- ํŒŒ์‹ฑ ์‹œ๊ฐ„ ๋น ๋ฆ„(๋ฐ์ดํ„ฐ ์–‘ ๋งŽ์„ ๋•Œ ์‚ฌ์šฉ)
- i.e: Protocol Buffer, Apache Avro
๋‹จ์ - ํŒŒ์‹ฑ ์‹œ๊ฐ„ ์˜ค๋ž˜ ๊ฑธ๋ฆผ(๋ฐ์ดํ„ฐ ์ ์„๋•Œ ์‚ฌ์šฉ)
- ์ €์žฅ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ ๋–จ์–ด์ง
- ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์—†์Œ

์š”์•ฝ

  • ์ง๋ ฌํ™”๋Š” ์ฐธ์กฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํ†ต์‹  ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•˜์—ฌ ์ด๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ํ•ด๋‹น ์ƒํƒœ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.
  • ์ง๋ ฌํ™” ์ข…๋ฅ˜์—๋Š” csv, json, xml, binary ๋“ฑ์ด ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ์–‘์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ž.

ํ•˜๋‹ค๋ณด๋‹ˆ, ๊ฐœ๋…์€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•ด์„œ ํ•  ์–˜๊ธฐ๊ฐ€ ์—†์—ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”ํ›„ Swift์—์„œ ์‚ฌ์šฉํ•˜๋Š” Persistence์— ๋Œ€ํ•ด ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค. ๋!

Reference