나만의 작은 도서관

[TIL] 240716 캠프 93일차: protoBuf oneof 본문

Today I Learn

[TIL] 240716 캠프 93일차: protoBuf oneof

pledge24 2024. 7. 17. 00:10

오늘 배운 내용                                     

protoBuf oneof

많은 필드가 있고 동시에 최대 하나의 필드가 설정되는 메시지가 있는 경우 oneof를 사용하여 적용하고 메모리를 절약할 수 있습니다.

oneof 필드는 oneof 공유 메모리의 모든 필드를 제외하고 일반 필드와 같으며 최대 한 필드를 동시에 설정할 수 있습니다.

oneof의 member를 설정하면 다른 모든 member는 자동으로 지워집니다. oneof는 다음과 같은 경우에 사용합니다.

  1. 메모리 절약: oneof는 여러 필드 중 하나만 저장될 수 있도록 하여, 메모리 사용을 줄이는 데 도움이 됩니다. 이는 동시에 여러 필드를 저장할 필요가 없고, 하나의 필드만 활성 상태가 되므로 메모리 효율성을 높입니다.
  2. 메시지의 명확성: oneof를 사용하면 한 번에 하나의 필드만 설정될 수 있으므로, 메시지의 의미가 명확해집니다. 이는 메시지의 유효성을 검증하거나, 메시지를 처리할 때 혼동을 줄이는 데 도움이 됩니다.
  3. 구조화된 데이터 표현: 다양한 타입의 값을 가질 수 있는 필드를 정의할 때 유용합니다. 예를 들어, 서로 다른 타입의 값을 나타낼 수 있는 변수를 정의해야 할 때 oneof를 사용하면 보다 구조화된 방식으로 데이터를 표현할 수 있습니다.
  4. 백워드 컴패터블 변경: API나 데이터 구조가 변경될 때 새로운 필드를 추가하더라도 이전 클라이언트와의 호환성을 유지할 수 있습니다. 새로운 필드를 oneof에 추가하면, 이전 클라이언트는 기존 필드만 인식하고 처리하게 됩니다.

사용 예시

syntax = "proto3";

message Example {
  oneof test_oneof {
    string name = 4;
    int32 age = 5;
    bool is_student = 6;
  }
}

 

 

오늘 한 일                                       

더보기
더보기
  • 팀 프로젝트 필수 구현까지 완료