더북(TheBook)

추상화 수준이 높은 엔터티 타입은 피하라

시스템 이벤트 엔터티는 실질적인 모델링에는 너무 추상적일 것이다. 이는 웹 접속 정보 데이터와 서버 로그 데이터에 공통 필드가 거의 없기 때문이다. ID 필드와 시간 필드 정도는 공유하겠지만, 다른 공유할 만한 속성은 거의 없다. 웹 접속 정보 데이터는 필드에 웹 페이지, 사용자, 한 페이지에서 다른 페이지로 이동한 내역과 같은 정보를 담는다. 서버 로그 문서에는 서버, 이벤트 타입, 중요도 수준과 약간의 설명 텍스트와 같은 세부 정보가 저장된다. 웹 접속 정보 데이터가 서버 로그 데이터와 어떻게 다른지 살펴보자.


{ "id" : 12334578,
  "datetime" : "201409182210",
  "session_num" : 987943,
  "client_IP_addr" : "192.168.10.10",
  "user_agent" : "Mozilla / 5.0",
  "referring_page" : "http://www.example.com/page1"
}
{ "id" : 31244578,
  "datetime" : "201409172140",
  "event_type" : "add_user",
  "server_IP_addr" : "192.168.11.11",
  "descr" : "User jones added with sudo privileges"
}

이렇게 서로 유형이 다른 두 문서를 단일 컬렉션에 저장하면 타입 지시자를 추가해야 코드에서 웹 접속 정보 문서와 서버 로그 이벤트 문서를 쉽게 구분할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.