본문 바로가기
카테고리 없음

데이터의 직렬화(serialization)

by 흰색남자 2022. 5. 8.

말이 좀 어려운데, 직렬화란 무엇일까?

프로그램 내부에서 사용되는 메모리 주소에 담긴 데이터들을 byte 형태의 데이터로 변환하여 다른 시스템에서도 사용할 수 있게 만들어주는 기술을 의미한다.

데이터는 2가지로 나뉜다. 

1. reference : 참조

2. value  : 값

참조 변수란, 예를들면 포인터가 있을 것이다. 주소를 참조하여 그 주소에 들어있는 값을 가지고 오는 변수를 의미한다.

우리가 통신, 저장할때 참조 형식의 데이터는 사용이 불가능하다.

python을 예시로 들어보자.

클래스를 하나 만들어주고, 그 클래스에 대한 인스턴스를 하나 만들면, 인스턴스의 print해보면 주소값이 나온다.

저 메모리 주소 값은 프로그램을 종료 후 다시 실행하면 다른 메모리 주소에 데이터가 쓰인다.

이 메모리 주소는 다른 메모리에서는 사용할 수 없다. >> 유의미한 데이터가 아님.

그래서 매번 달라지므로, 통신 및 저장에는 사용할 수 없다. 그래서 serialization을 하는 것이다. // reference -> value

아무리 생각해도 왜 작명을 직렬화로 했는지 이해는 가지 않지만, 누군가 이 블로그를 보면 좀 알려줬으면 좋겠다.

 

 

python에는 pickle 등 여러가지 직렬화 도구들이 있고, java의 경우에는 java.io.Serializable을 상속받아 직렬화를 진행한다.