[데이터 중심 애플리케이션 설계] 2장

khj2872·2022년 3월 11일
1

📖 오늘 읽은 범위

2장

💡 책에서 기억하고 싶은 내용을 써보세요.

  • 데이터 모델은 그 위에서 소프트웨어가 할 수 있는 일과 할 수 없는 일에 큰 영향을 주므로 애플리케이션에 적합한 데이터 모델을 선택하는 작업은 중요하다. (p.28)
  • 데이터를 관계형 테이블에 저장하려면 애플리케이션 코드와 데이터베이스 모델 객체 사이에 전환 계층이 필요하다. 이런 모델 사이의 분리를 임피던스 불일치(impedance mismatch)라고 부른다. (p.30)
  • RDB에서 보통 데이터를 조회하려면 다중 조인을 수행해야하는 반면 JSON 표현에서는 모든 관련 정보가 한 곳에 있어 질의 하나로 충분하다. (p.32)
  • 다대일 관계는 문서 모델에 적합하지 않다. (p.34)
  • 데이터베이스 자체가 조인을 지원하지 않으면 데이터베이스에 대한 다중 질의를 만들어 애플리케이션 코드에서 조인을 흉내 내야 한다. (p.34)
  • 문서 데이터베이스는 별도 테이블이 아닌 상위 레코드 내에 중첩된 레코드를 저장한다. 하지만 다대일과 대다다 관계를 표현할 때 관계형 모델과 같이 고유한 식별자를 참조한다.(p.38)
  • 애플리케이션에서 데이터가 문서와 비슷한 구조라면 문서 모델을 사용하는 것이 좋다. 문서와 비슷한 구조를 여러 테이블에 나누어 찢는(shredding) 관계형 기법은 다루기 힘든 스키마와 불필요하게 복잡한 애플리케이션 코드를 발생시킨다. (p.39)
  • 데이터베이스는 문서의 작은 부분에만 접근해도 전체 문서를 적재해야 하기 떄문에 큰 문서에서는 낭비일 수 있다. 문서를 갱신할 때도 보통 전체 문서를 재작성해야 하기 때문에 일반적으로 문서를 아주 작게 유지하면서 문서의 크기가 증가하는 쓰기를 피하라고 권장한다. 이 제한 때문에 문서 데이터베이스가 유용한 상황이 많이 줄어든다. (p.41)
  • 관계형 데이터베이스와 문서 데이터베이스는 시간이 지남에 따라 각 데이터 모델이 서로 부족한 부분을 보완해 나가고 있다. (p.42)
  • 맵리듀스(MapReduce)는 많은 컴퓨터에서 대량의 데이터를 처리하기 위한 프로그래밍 모델이다. (p.47)
  • 맵리듀스는 선언형 질의 언어도 완전한 명령형 질의 API도 아닌 그 중간 정도에 있다. (p.47)
  • 몽고DB의 map과 reduce 함수는 순수(pure) 함수여야 한다. 즉 입력으로 전달된 데이터만 사용하고 추가적인 데이터베이스 질의를 수행할 수 없어야 하며 부수 효과(side effect)가 없어야 한다. (p.49)
  • 관계형 모델은 단순한 다대다 관계를 다룰 수 있지만 데이터 간 연결이 복잡해지면 그래프로 데이터를 모델링하는 편이 더 자연스럽다. (p.50)
  • 관계형 데이터베이스에서도 그래프 데이터를 표현할 수는 있긴 하지만 사이퍼(Cyper) 질의 언어에 비해 문법이 매우 복잡하다. 동일한 질의를 사이퍼 질의로는 4줄로 작성할 수 있는 반면 SQL은 29줄로 작성이 가능하다. (p.56)
  • 문서 및 그래프 데이터베이스가 가진 공통점은 일반적으로 저장할 데이터를 위한 스키마를 강제하지 않아 변화하는 요구사항에 맞춰 애플리케이션을 쉽게 변경할 수 있다는 점이다. (p.65)

✏️ 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.

관계형 데이터베이스와 문서 데이터베이스의 장단점에 대해 다시 한번 정리할 수 있었다. 그래프 데이터베이스는 지나가는 말로만 들어보고 접해본 기회가 없어 별도로 학습이 필요하다고 느꼈다.

❓ 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 그래프 데이터베이스

0개의 댓글