패스트캠퍼스 챌린지

패스트캠퍼스 환급 챌린지 31일차 : 9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online 강의 후기

ssoonearth 2025. 5. 1. 22:39

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

 

 

패스트캠퍼스의 '9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online' 강의 수강 31일차!
오늘은 커뮤니티 피드 서비스의 admin 기능 구현을 위한 기획 확인 및 대시보드 설계 작업을 진행하였다.

 

 

우선, admin 페이지의 프론트 부분은 'bootstrap'을 사용하여 작업하기로 했다.

HTML, CSS, JavaScript로 작성된 오픈소스 프론트엔드 프레임워크로, 반응형 웹사이트나 웹 애플리케이션을 빠르게 만들 수 있게 도와주는 기능을 한다.

또한, thymeleaf를 이용하여 일별 유저 가입 수를 시각화한 그래프 대시보드와, 유저 목록을 보여주는 리스트 화면을 구현할 예정이다.

 

 

커버링 인덱스

: 쿼리를 충족시키는 데에 필요한 모든 데이터를 가지고 있는 인덱스

- select, where, order by, group by 등에 사용되는 모든 컬럼이 인덱스에 포함되어있으면 커버링 인덱스가 된다.

# 일반 인덱스
# id 이외의 컬럼을 모두 가져와야 한다.
SELECT * FROM user WHERE id = 1;


# 커버링 인덱스
# 조회하는 값이 이미 primary key 인덱스에 포함되기 때문에, 커버링 인덱스가 적용된다.
SELECT id FROM user WHRER id = 1;

커버링 인덱스는 인덱스만으로도 원하는 데이터를 조회할 수 있다는 장점이 있다.

즉, 실제 데이터가 저장된 테이블에 직접 접근하지 않아도 되기 때문에 조회 속도가 빨라진다.

이러한 특성 덕분에, 대량의 데이터를 대상으로 limit-offset 방식의 페이징 처리가 필요한 admin 페이지에서 자주 활용된다.

 

table 'employees'
- id (PK)
- first_name
- last_name
- address
- salary


index1 (first_name, last_name)

위와 같은 구조의 테이블과 인덱스가 있다.

SELECT id, first_name, last_name
FROM employees
WHERE first_name = 'LEE';

만약 이 쿼리를 실행한다면, 커버링 인덱스가 적용이 될까?

index1에 포함되지 않은 컬럼인 id가 있기 때문에 적용이 되지 않을 것 같지만, 위 쿼리에는 커버링 인덱스가 적용된다.

 

이유는 B-Tree 구조의 인덱스의 리프 노드에는 데이터값이 아닌 PK값이 들어있고, 이 PK값을 통해 데이터에 접근하는 방식이기 때문이다.

모든 인덱스는 사실상 id값을 저장하고 있는 것이다.

그렇기에 PK는 index1에 포함되어 있고, 결국 위 쿼리는 커버링 인덱스 조건을 만족시키는 것이다.

 

 

강사님이 강의 중 위 질문을 하셨을 때, 전 강의에서 인덱스의 구조에 대해 배웠던 것을 떠올려 스스로 답변을 할 수 있었다!

사용하려는 것이 어떤 구조로 이루어져 있고, 어떻게 동작하는지 알면 확실히 이해하고 활용하기가 쉬워지는 것 같다.