> Terms > Single Source Of Truth

Single Source Of Truth

대강 번역을 하자면 “현존하는 단일 자료” 정도로 봐줄 수 있을 것 같다.
Single Source Of Truth는 정보시스템에서 사용되는 이론(설계)인데
같은 자료가 여러군데 존재하는 경우에 발생되는 자료의 중복, 비정합성 등의 문제를 해결하고자 하는 방식이다.

개념을 이해하기 위해 DB를 예로 들어보자.
개인 정보를 저장하는 PERSON table에는 user_id, email column이 있고
게시글을 저장하는 POST table에는 post_id, title, user_id, email column이 있다고 하자.
(일반적으로는 POST table의 user_id를 통해 PERSON table과 join하여 email을 추출하기 때문에 이렇게 작성하지 않지만 개념을 설명하기위해 일부러 작성했다.)

[PERSON]
user_id       email
—————————————————-
chris            chris@email.com
jane              jane@email.com

[POST]
post_id       title              user_id       email
——————————————————————————————
1                   blahblah      chris            chris@email.com
2                  hahaha         jane              jane@email.com

만약 chris의  email이 chris@email.com에서 funnychris@email.com으로 변경되었다고 하면 PERSON table과 POST table의 email column을 모두 UPDATE해야 한다.

하지만 POST와 같은 table이 하나가 아니라 여러개라면 해당되는 모든 table을 찾아 UPDATE해야하고 만약 하나라도 빠뜨리게되면 어떤 화면에서는 chris@email.com으로 표시되고 어떤 화면에서는 funnychris@email.com으로 표시되는 경우가 발생될 것이다.

이를 해결하기 위해 email정보는 PERSON table에서만 유지하고 POST table에서는 user_id를 활용하여 PERSON table을  참조하도록 정규화하면 되는데 이 개념이 하나의 자료는 한 곳에만 저장한다는 single source of truth개념이다.

다른 예를 들자면 file 공유 서비스를 들 수 있다.
chris라는 사용자가 captain_america_cast_list.txt라는 file을 저장하였고
jane이라는 사용자가 이 file을 자신의 folder에 담았다고 하자.
만약 single source of truth를 따르지 않는다면 jane이 folder에 담는 과정에서 해당 file은 copy가 될 것이다.
그렇게 되면 chris가 이후 captain_america_cast_list.txt를 수정하여 저장하여도 jane이 가진 file에는 반영되지 않을 것이다.
이를 해결하기 위해서는 jane이 folder에 담는 과정에서 해당 file을 copy하는 것이 아닌 참조를 하도록 처리한다면 나중에 chris가 수정한 내용도 jane에게 똑같이 반영될 것이다.

angularJS의 data binding역시 single source of truth로써 model을 사용하고 있다.

카테고리:Terms
  1. 댓글이 없습니다.
  1. No trackbacks yet.

댓글 남기기