2025/11 3

[CS/Database] DBMS에서의 B-Tree 인덱스

우리가 데이터를 찾을 때에는 인덱스가 필요하다. 인덱스는 특정 열 값을 가진 행을 빠르게 찾는 데에 사용되는 자료구조이다. 인덱스가 없다면 테이블 전체를 순차적으로 스캔해야하므로, O(N)의 시간복잡도가 발생하며, 이에 대하여 인덱스를 통해 O(logN)으로 개선할 수 있다. 그렇다면 대표적인 RDBMS에서 채택하는 인덱스에 대하여 알아보자. B-Tree 인덱스 B-Tree(Balaced Tree)는 이진 탐색 트리를 확장한 자기 균형 트리 자료구조로, 다음과 같은 특징을 가진다. 차수(Order)인 m의 정의 : m차 B-Tree, 이는 한 노드가 가질 수 있는 최대 자식의 수가 m개라는 의미이다키의 개수: 각 노드는 최소 ⌈m/2⌉-1개 (위는 반올림), 최대 m-1개의 키를 가진다 (키에 대해선 ..

백엔드/Database 2025.11.21

[MyBatis] SpringBoot에서 MyBatis와 Enum 클래스를 매핑하기

최근 MyBatis를 기반으로 ORM을 사용하는 계기가 생겨서 작업하게 됐는데, 삽질을 많이 해서 트러블 슈팅에 대하여 기록해보도록 하겠다!MyBatis란?SQL 기반의 Persistence Framework다. Entity에 대하여 직접 DB의 컬럼과 매핑하는 JPA와 다르게, MyBatis에서는 Java 클래스가 DB의 정보를 담는 DTO 역할을 하며, SQL을 직접 작성하여 매핑한다.( 직접 구현하는 쿼리문이 있기 때문에 N+1에 대하여 자동으로막아준다는 장점이 존재하지만개인적으로는 JPA가 좋다...)사용한 스택은 다음과 같다.MyBatisDB Flyway : DB 스키마를 작성하고 구성해야 하므로 미리 작성하기로 하였다. 개인적으로는 MyBatis에서 매우 편리하게 사용생긴오류나의 경우 Java..

카테고리 없음 2025.11.20

[SpringBoot] 통합 테스트(Integeration Test) 알아보기

통합테스트란?애플리케이션의 여러 모듈(레이어)를 실제 환경에 가깝게 "통합" 한 상태에서 동작을 검증하는 테스트이다.Unit Test가 "메서드 하나" 또는 "클래스 하나"에 집중했다면,통합테스트는 Controller → Service → Repository → Database와 같은 여러 레이어 간의 협력과 데이터 흐름과 애플리케이션의 조합을 테스트하는 것을 의미한다.즉, 단위테스트가 최소한의 기능 조각들을 검증하는 작은 단위들에 대한 것이라면,통합테스트란 여러 컴포넌트가 함께 동작할 때 문제없음을 검증하는 것이다. 과거에는?과거에는 통합테스트라고 하면"시스템 전체를 한 번에 돌려보는 형태"에 가까웠다.SQL 스크립트를 직접 수동으로 돌리고 화면에서 클릭해보며 테스트화면을 클릭하면서 테스트해보기테스트..