1) ์ง๋ ฌํ (Serialization) ๋ฐ ์ญ์ง๋ ฌํ (Deserialization)
(1) ์ง๋ ฌํ, ์ญ์ง๋ ฌํ๋
- ๋ฐ์ดํฐ ์ง๋ ฌํ๋ ์ปดํจํฐ์ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ ์ฅ ๋งค์ฒด์ ์ ์ฅํ ์ ์๋ ํ์ or ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ ์ ์๋ ๊ฒ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋งํ๋ค.
- ๋ฐ๋๋ก ๋ฐ์ดํฐ ์ญ์ง๋ ฌํ๋ ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ๋คํธ์ํฌ ํต์ ์ผ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ฒ์ ๋งํ๋ค.
- ์ง๋ ฌํ ๊ณผ์ ์์ด ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ์๋ฐ ์ ์ง๋ ฌํ๋ผ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋์ง ์์๋ณด์!
(2) ์ง๋ ฌํ๊ฐ ํ์ํ ์ด์
โ ๋ฐ์ดํฐ ํ์ ์ข ๋ฅ
- ์ด๋ ํ ๊ฐ๋ฐ ์ธ์ด๋ฅผ ์ ํํ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋๊ฒ ๋๋ค.
* ๊ฐ ํ์ ๋ฐ์ดํฐ (Primitive Type)
int, float, char ๋ฑ ๊ฐ ํ์ ๋ฐ์ดํฐ๋ Stack ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ด๊ณ ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
* ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ (Reference Type)
๊ฐ์ฒด์ ๊ฐ์ ์ฐธ์กฐ ํ์
๋ณ์๋ฅผ ์ ์ธํ๋ฉด Heap ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๊ณ , Stack ์์ญ์์๋ ์ด Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค.
โก ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์
- ์๋ฅผ ๋ค์ด, Java์์ ๊ฐ์ฒด A๋ฅผ ๋ง๋ค๊ณ ํด๋น ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ์ด 0x00123123 ์ด๋ฉฐ ํด๋น ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ ๊ณผ์ ์์ด ํ์ผ์ ์ ์ฅํ๋ค๊ณ ๊ฐ์ ํด๋ณด์!
- ์ดํ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๊ณ ๋ค์ Java ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ํด๋น ํ์ผ์ ๋ถ๋ฌ์ ์ฃผ์ ๊ฐ 0x00123123์ ๊ฐ์ ธ์ค๋๋ผ๋ ๊ธฐ์กด A ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ ๊ฐ์ ธ์ฌ์ ์๋ค.
- ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ๊ธฐ์กด์ ํ ๋น๋์๋ ๋ฉ๋ชจ๋ฆฌ (0x00123123)๋ ํด์ ๋๊ณ ์์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก ๋คํธ์ํฌ ํต์ ๋ํ ๋์ผํ ๋งฅ๋ฝ์ผ๋ก ์ดํดํ ์ ์๋ค.
โข ์ง๋ ฌํ๋ฅผ ํตํด ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ ํ์ ๋ฐ์ดํฐ๋ก ๋ณ๊ฒฝ
- ๋์คํฌ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ํต์ ํ ๋์ ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ธ ์ ์๊ณ ๊ฐ ํ์์ ๋ฐ์ดํฐ๋ง ์ธ ์ ์๋ค.
- ๋ฐ๋ผ์, ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์ง๋ ฌํ๋ฅผ ํตํด ํด๋น ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ์ด ๊ฐ์ง๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ๊ฐ ํ์ ๋ฐ์ดํฐ๋ก ๋ณํํด์ผ ํ๋ค.
- ์ง๋ ฌํ๊ฐ ๋ ๋ฐ์ดํฐ๋ ์ธ์ด์ ๋ฐ๋ผ ํ ์คํธ ๋๋ ๋ฐ์ด๋๋ฆฌ ๋ฑ์ ํํ๊ฐ ๋๊ณ , ์ด๋ฌํ ํํ๊ฐ ๋์์ ๋๋ ์ ์ฅํ๊ฑฐ๋ ํต์ ํ ๋ ํ์ฑ์ด ๊ฐ๋ฅํ ์ ์๋ฏธํ ๋ฐ์ดํฐ๊ฐ ๋๋ค!
(3) ๋ฐ์ดํฐ ์ง๋ ฌํ ๋ฐฉ์
- ์ง๋ ฌํ์ ๋ฐฉ์์ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์๋ค.
โ ํ ์คํธ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ง๋ ฌํ (Text-Based Data Serialization)
- ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ๋ก, ์ ์ฅ ๊ณต๊ฐ์ ํจ์จ์ฑ์ด ๋จ์ด์ง๊ณ ํ์ฑํ๋ ์๊ฐ์ด ์ค๋ ์์๋๋ค.
- ๋ฐ์ดํฐ์ ์์ด ์ ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ, ์ต๊ทผ์๋ JSON ํํ๋ก ๋ฐ์ดํฐ ์ง๋ ฌํ๋ฅผ ๋ง์ด ํ๋ค.
- ex. XML, CSV, JSON, YAML ๋ฑ
โก ๋ฐ์ด๋๋ฆฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ง๋ ฌํ (Binary Data Serialization)
- ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ๋ก ์ ์ฅ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ ํ์ฑํ๋ ์๊ฐ์ด ๋น ๋ฅด๋ค.
- ๋ฐ์ดํฐ์ ์์ด ๋ง์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ex. ํ๋กํ ์ฝ ๋ฒํผ, Apache Avro, ์ด๋ฏธ์ง (JPG, PNG, GIF), ์ค๋์ค (WAV, MP3, OGG, AAC), ์์ (AVI, MP4, MKV) ๋ฑ
[Reference]
- https://devopedia.org/data-serialization
- https://bentist.tistory.com/75
- https://steady-coding.tistory.com/576
- https://code-lab1.tistory.com/289
๋ฐ์ํ
'๐ ์ฐ์ฌ ์๋ฆฌ์ฆ > ์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ์๋ฉด ์ข์ ๋ด์ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[1/31] ๊น์ํ๋ ์จ๋ผ์ธ ๋ฐ์ - Q&A ์ ๋ฆฌ (2) | 2024.02.13 |
---|---|
๋ธ๋์น ๊ด๋ฆฌ ์ ๋ต (Git-Flow)์ ๋ํด ์์๋ณด์! (0) | 2023.09.26 |
VSCode ์ ์ฉํ Extension ๋ชจ์ (์ ๋ฆฌ์ค) (0) | 2023.07.30 |
Git ์์ฃผ ์ฐ์ด๋ ๋ช ๋ น์ด ๋ชจ์ (0) | 2023.07.28 |
๋ฉํฐ ์ค๋ ๋ - ์์์ฑ (Atomicity) (0) | 2023.05.03 |