-
Schema evolutionprogramming 2020. 6. 29. 14:00
Schema evolution 라는 용어는 Avro schema가 데이터가 쌓이고 난 이후에 변경되었을때, 즉 이전 스키마 버전으로 데이터가 쌓여있고 스키마가 변경되었을때 어떻게 데이터를 저장하는지에 대한 메커니즘 용어이다.
Avro는 데이터 직렬화 포맷중에 하나이고 Protocol Buffers(Protobuf), JSON등이 있다.
다시 Schema evolution으로 돌아와서 스키마를 변경할때, 새로운 필드는 반드시 default value를 가지고 있어야 한다.
이것은 이전버전 스키마를 참고하는 클라이언트로 부터 에러를 방지하게 된다.Rules for changing schema
1. 모든 필드에 default value를 설정하는것이다. 이건 나중에 필드를 삭제 필요하며 만약 default value를 설정하지 않으면 field를 삭제할 수 없다.
2. 데이터 type을 변경할 수 없다. 만약 이러한 작업을 하고 싶다면 새 field를 추가하는 방향으로 해야 한다.
3. 새로운 field를 추가할때는 무조건 default value를 설정해야한다.
4. field의 이름은 바꾸는 것은 불가능하다. 그러나 만약 다른이름으로 field를 접근하고 싶으면 aliases를 사용하여 새로 정의한 이름으로 접근할 수 있다.
schema evolution은 deserialize때 발생하게 되며 자동으로 현재 대상의 schema로 변환이 일어나고 이를 위해 유저가 해줄 부분은 없다.
즉, 데이터를 읽을때 deserialize할때 스키마를 기준으로 retrieval 하는것이니 스키마만 잘 정의되어 있다면 저장된 데이터와 현재 데이터의 스키마가 일치하지 않아도 룰에 의해 정리되어 사용할 수 있다.반응형'programming' 카테고리의 다른 글
윈도우10에서 zsh(oh-my-zsh) 설치 및 VScode에 기본쉘로 설정 (0) 2021.04.12 how-to-enlarge-a-virtual-machines-disk-in-virtualbox-or-vmware (0) 2021.04.11 [Spark tip] struct type을 csv로 저장시 에러 (0) 2019.04.08 Gevent / Celery 에 대하여 (0) 2019.03.13 Timsort python sorted 알고리즘 (0) 2019.03.13 댓글