Serialization & Deserialization
๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ค๋ธ์ ํธ ์ํ๋ฅผ ๋์ผํ๊ฑฐ๋ ๋ค๋ฅธ ์ปดํจํฐ ํ๊ฒฝ์ ์ ์ฅ(์ด๋ฅผํ ๋ฉด ํ์ผ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ: persistence)ํ๊ณ ๋์ค์ ์ฌ๊ตฌ์ฑํ ์ ์๋ ํฌ๋งท์ผ๋ก ๋ณํํ๋ ๊ณผ์
์ฝ๊ฒ ์๊ฐํ๋ฉด, ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ด ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ด๋๊ฐ์ ์ ์ฅํ ์ ์๋๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋งํ๋ค. ์ผ๋จ ์ด ์ง๋ฌธ์ผ๋ก๋ถํฐ ์ถ๋ฐํด์ผ ํ๋ค.
๋ด๊ฐ ๊ตฌ์ฑํ ๊ฐ์ฒด ์ํ ๊ทธ๋๋ก๋ฅผ ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ ๋ฌํ ์ ์์๊น?
์ด๋ฌํ ์ง๋ฌธ์ ๋ํ ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก ๋์จ ๊ฒ์ด ์ง๋ ฌํ์ด๋ค. ์ด๋ฅผ ํตํด์ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ฅ(Serialization)ํ๊ณ ํน์ ์์น์ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ง๋ค ์ ์๋ค.(Deserialization) swift
์๋ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ archiving์ ํตํด ์ ์ฅํด ๋ ๋ค ์ด๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. NSKeyedArchiver
๋ผ๋ ์น๊ตฌ์ธ๋ฐ, ์ด๊ฑด ๋์ค์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ๋ค. ์ง๊ธ์ ๊ฐ๋
๋ง ์์๋ณด์. ๋ค์์ Persistence ์ ์ฒด์ ๋ํด ํ๋ฒ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
์ง๋ ฌํ๋ ์ ํ์ํ๊ฐ?
ํ์ ๋ฐ์ดํฐ(Int, Char, Float)๋ ํต์ ์ด ๊ฐ๋ฅํ๋, ๊ฐ์ฒด๋ ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ.
๊ฐ์ฒด ์ธ์คํด์ค๋ ๊ฒฐ๊ตญ ํ ์์ญ์ ํ ๋น๋์ด ์๊ณ , ์คํ์์ ์ด ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค. ๊ทธ๋ผ ์ด ์ธ์คํด์ค ์์ฒด๋ฅผ ๋ณต์ฌํด์ ๋๊ฒจ์ฃผ๊ณ ์ถ์ ๋, ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๋๊ฒจ์ค ๊ฒ์ธ๊ฐ? ๋ง์ฝ ๊ฐํ์ (Int, Char, Float)์ ๊ฒฝ์ฐ์๋ ๊ฐ์ ์ ๋ฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๋ค. ํ์ง๋ง ๊ฐ์ฒด์ ๊ฒฝ์ฐ์๋ ํน์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์์ฒด๊ฐ ์๋ฌด๋ฐ ์๋ฏธ๋ ๊ฐ์ง์ง ๋ชปํ๋ค. ๋ง ๊ทธ๋๋ก ์ธ์คํด์ค์ ๊ตฌ์กฐ์์ฒด๋ฅผ ๋๊ฒจ๋ฐ์์ผ ์๋ฏธ๊ฐ ์๋ค.
์ด๋ฌํ ์ ์์ ์ง๋ ฌํ๋ ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ ํ์ ๋ฐ์ดํฐ๋ก ๋ณํํด์ฃผ์ด, ์๋ก ํต์ ์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ๋ณํํ๋ค.
์ง๋ ฌํ ์ข ๋ฅ
csv, json, xml | binary | |
---|---|---|
์ฅ์ | - ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ - ์ต๊ทผ ๋ง์ด ์ฌ์ฉ | - ์ ์ฅ ๊ณต๊ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ - ํ์ฑ ์๊ฐ ๋น ๋ฆ(๋ฐ์ดํฐ ์ ๋ง์ ๋ ์ฌ์ฉ) - i.e: Protocol Buffer, Apache Avro |
๋จ์ | - ํ์ฑ ์๊ฐ ์ค๋ ๊ฑธ๋ฆผ(๋ฐ์ดํฐ ์ ์๋ ์ฌ์ฉ) - ์ ์ฅ ๊ณต๊ฐ ํจ์จ์ฑ ๋จ์ด์ง | - ์ฌ๋์ด ์ฝ์ ์ ์์ |
์์ฝ
- ์ง๋ ฌํ๋ ์ฐธ์กฐ ๋ฐ์ดํฐ์ ๋ํด ํต์ ๊ฐ๋ฅํ ํํ๋ก ๊ฐ๊ณตํ์ฌ ์ด๋ฅผ ํ์ฑํ์ฌ ํด๋น ์ํ๋ฅผ ๋ณต์ฌํ ์ ์๋๋ก ํ๊ธฐ ์ํด ํ์ํ ๊ฐ๋ ์ด๋ค.
- ์ง๋ ฌํ ์ข ๋ฅ์๋ csv, json, xml, binary ๋ฑ์ด ์๋ค. ๋ฐ์ดํฐ ์์ ๋ฐ๋ผ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ์.
ํ๋ค๋ณด๋, ๊ฐ๋ ์ ๊ต์ฅํ ๊ฐ๋จํด์ ํ ์๊ธฐ๊ฐ ์์๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ถํ Swift์์ ์ฌ์ฉํ๋ Persistence์ ๋ํด ์ ๋ฆฌํ ์์ ์ด๋ค. ๋!