2022 Masters Course/Project Course

2022 마스터즈 코스(백엔드) 88일차 회고(2022. 5. 18.) - "이론과 실습의 균형"

ikjo 2022. 5. 18. 23:51

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

이번 2주간의 개인 학습 정리 주간 동안 가장 중점적으로 학습하고자 했었던 것은 JPA 프로그래밍 부분이었다. 지난주부터 어제까지 인프런에 김영한님의 JPA 프로래밍 강의를 들으면서 이론을 위주로 학습하고 있었는데, 뭔가 공부가 되는 것 같기도 하고 제대로 되고 있지 않은 것 같기도 한 마음이 들곤했다. 사실 그동안 프로그래밍을 학습하면서 늘 느끼는 것은 프로그래밍은 역시 "직접 해보는 것이 제일 와닿다는 것"이다.

 

이번 JPA 프로그래밍을 학습하는데 있어서도 이론만 공부하다보니 뭔가 확 와닿는 게 없어서 오늘부터 JPA 프로젝트를 생성한 후 실습 강의를 들으면서 하나하나 따라 쳐보기 시작했다. 확실히 간단한 기능일지라도  배운 것들(이론을)을 기반으로 직접 프로그래밍을 해보니 좀 더 와닿을 수 있었다. 그렇다고 내가 아무 이론을 듣지 않은 채로 무지성(?)으로 따라친다고 한들 와닿을 것 같다는 생각은 들지 않는다. 역시 인생에 있어 마법의 단어인 이론과 실습의 적당한 균형이 중요할 것 같다는 생각이 들었다.

 

 

학습 정리

클러스터링 인덱스

클러스터링이란 여러 개를 하나로 묶는다는 의미로 주로 사용되는데 MySQL 서버에서 클러스터링 인덱스(= 클러스터링 테이블)는 테이블을 생성할 때 B+Tree 구조로 생성되며 테이블의 레코드를 프라이머리 키(= 클러스터링 키) 값이 비슷한 것들끼리 묶어서 저장하는 형태로 구현된다. 이로 인해 레코드들의 범위 검색에는 유리 리하나 레코드 저장에는 불리하다는 특징이 있다. 이때 레코드의 저장 위치는 프라이머리 키 값에 의해 결정되며 프라이머리 키 값이 변경된다면 해당 레코드의 물리적인 저장 위치도 바뀌어야 한다.

 

클러스터링 인덱스의 Key 값으로는 프라이머리 키 값이 나오며, Value 값으로는 레코드의 주소(자식노드의 주소)가 나온다. 이러한 레코드의 주소는 데이터 페이지에 대한 참조와 같은데, 이는 #RID(#PAGE 페이지 넘버와 #SLOT 레코드의 위치)을 의미한다. 이처럼 클러스터링 인덱스는 인덱스 알고리즘이라기보다는 테이블 레코드의 저장 방식이며 디스크의 효율적인 읽고 쓰기 작업을 위한 디스크용 자료구조이다.

 

 

학습 참고자료

  • 위키북스 "Real MySQL 8.0 - 1"
  • 호눅스 마스터 클래스 강의

 

 

좋았던 점

  • JPA 프로그래밍 관련 이론 수업을 듣다가 아주 간단한 프로젝트를 하나 만들어 작성해보니 좀 더 재밌게 학습할 수  있었습니다. 👍

 

 

아쉬웠던 점

  • 지난주부터 어제까지 너무 JPA 프로그래밍 이론 학습에 매몰되어 있었던 것 같아 아쉬웠습니다. 💦

 

 

이전 보다 개선되었던 점

  • 저번 주 보다는 나름 시간을 잘 쓰고는 있는 것 같습니다. (다만, 성과가 저번 주 보다 낫다는 건 아님..😂)