21년 4월 26일

한 일

  • DB

    • 인덱스

      • 칼럼을 쉽게 찾기 위해 만드는 색인

      • 인덱스를 만드는 것을 인덱싱이라고 한다.

      • 기본적으로 자료구조는 B+ Tree를 사용하나, 해쉬 색인과 같이 다른 자료구조도 사용될 수 있다.

      • count(*) 쿼리의 경우 인덱스의 사이즈를 확인하여 빠르게 개수확인이 가능하다.

      • 여러 칼럼에 대해 만드는 인덱스를 복합 인덱스라고 한다.

        • a와 b에 복합 인덱스를 만들면 where 절에 a와 b를 조건으로 찾을때 인덱스를 탈 수 있다.

        • a와 b에 각각 인덱스를 만들면, selectivity가 낮은쪽(카디널리티가 높은쪽)의 인덱스로

          필터링한 후에 (쿼리 최적화) 남은 조건으로 스캔한다.

    • 통계정보

      • 쿼리최적화를 위하여 테이블에 대한 통계정보를 저장하고 있는 것
      • insert할 때 갱신할 수도, 일정 주기로 갱신할 수도 있지만 둘다 위험할 수 있음
      • 통계 정보를 적절하게 갱신하는 옵션이 있다.(궁금하면 나중에 찾아볼 것)
  • 반찬가게 사이트 만들기(Spring boot, Spring data jdbc)

    • GET 으로 필요한 데이터들을 가져올 수 있게 API 구현하였다.
    • Spring Data JDBC에서 M:N을 구현하기 위한 방법 을 시청하고 반영하였다.
    • Spring Data JDBC를 사용하면 프로젝트가 복잡해질수록 생길 수 있는 순환 참조, 데이터 간의 정합성 문제 등을 JPA보다 쉽게 해결할 수 있다고 한다.(aggregate root 만을 통해 접근하도록 설계되었기 때문)

느낌

  • 후 너무 오랜만에 쓰는 TIL이다. 기록을 안하니 남는게 없는것 같아서 불안하군 ㅠㅠ
  • JPA를 사용할 때보다 spring data jdbc를 사용하니 훨씬 불편하고 복잡하다.
  • 지금 프로젝트가 너무 작아서 spring data jdbc가 불편하게 느껴지는 것 같기도 하다.(이점을 못느끼나?)

할 일

  • 코드스쿼드 미션하기
  • 프로그래머스 문제 풀기