J_Log
article thumbnail
반응형

 

직렬화(Serialization)란 컴퓨터 과학에서 데이터를 저장하거나 전송할 수 있는 형식으로 변환하는 과정입니다. 직렬화된 데이터는 이 과정을 통해 얻어진 결과물로, 구조화된 데이터(예: 객체, 배열, 리스트 등)를 일련의 바이트(byte)나 텍스트 형식으로 변환한 데이터를 의미합니다. 직렬화된 데이터는 파일로 저장되거나 네트워크를 통해 전송될 수 있으며, 이후에 다시 원래의 형태로 복원할 수 있습니다. 이 복원 과정을 역직렬화(Deserialization)라고 합니다.

직렬화의 예시

  1. 객체 직렬화:
    • 객체는 메모리 내에서 여러 필드와 속성으로 구성됩니다. 직렬화는 이 객체의 상태를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크로 전송할 수 있게 합니다.
    • 예를 들어, C++에서 객체를 바이너리 파일에 저장하려면 그 객체의 모든 멤버 변수를 연속된 바이트 스트림으로 변환해야 합니다.
  2. JSON, XML:
    • JSON(JavaScript Object Notation)과 XML(eXtensible Markup Language)은 데이터 구조를 텍스트 형식으로 직렬화하는 방법입니다. JSON과 XML은 흔히 웹 API나 데이터 교환 포맷으로 사용됩니다.
    • 예를 들어, 복잡한 객체 구조를 JSON 형식으로 직렬화하면, 해당 데이터를 파일로 저장하거나 HTTP를 통해 전송할 수 있습니다.
  3. TensorRT 엔진 직렬화:
    • TensorRT와 같은 딥러닝 프레임워크에서는 신경망 모델을 직렬화하여 저장하거나 다른 시스템으로 전송합니다. 이 경우 직렬화된 데이터는 모델의 구조, 가중치, 파라미터 등을 포함하는 바이너리 파일이 됩니다.
    • 직렬화된 TensorRT 엔진은 나중에 역직렬화되어 다른 환경에서 추론에 사용될 수 있습니다.

직렬화된 데이터의 사용 사례

  1. 데이터 저장:
    • 복잡한 데이터 구조를 파일에 저장하기 위해 직렬화를 사용합니다. 예를 들어, 게임의 상태를 저장하거나, 데이터베이스에 객체를 저장할 때 직렬화된 데이터를 사용합니다.
  2. 네트워크 전송:
    • 객체나 데이터를 네트워크를 통해 전송하려면 직렬화가 필요합니다. 직렬화된 데이터는 네트워크를 통해 전달되며, 수신된 데이터를 역직렬화하여 원래의 객체나 데이터 구조로 복원할 수 있습니다.
  3. 원격 프로시저 호출 (RPC):
    • 서로 다른 시스템 간의 통신에서, 함수 호출의 매개변수를 직렬화하여 네트워크를 통해 전송하고, 수신 측에서 이를 역직렬화하여 원래의 매개변수로 복원한 후 호출하는 방식입니다.

직렬화된 데이터의 예:

만약 C++에서 Person이라는 객체를 직렬화한다면, 다음과 같은 필드가 있을 수 있습니다:

struct Person {
    std::string name;
    int age;
};

이 객체를 직렬화하면, 예를 들어 name과 age 필드가 바이너리 형식으로 변환되어 파일에 기록됩니다. 나중에 이 파일을 읽어들여 역직렬화하면, 원래의 Person 객체를 복원할 수 있습니다.

결론

직렬화된 데이터는 데이터를 저장하거나 전송하기 위해 구조화된 데이터를 연속적인 바이트 스트림이나 텍스트 형식으로 변환한 결과물입니다. 직렬화는 데이터를 효율적으로 저장하거나 전송할 수 있도록 돕고, 역직렬화를 통해 데이터를 원래의 형태로 복원할 수 있습니다.

반응형
profile

J_Log

@b2jay

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!