복합 인덱스 알아보기복합 인덱스는 단어 그대로 여러 개의 컬럼 조합으로 생성된 인덱스이다.(idx_col1, idx_col2) 에 대해 인덱스를 설정하면, 명시한 컬럼 순서대로 인덱스가 정렬됩니다.B+ Tree 구조를 만들 때 idx_col1 컬럼에 대해 먼저 정렬을 하고, 동일한 값이 있다면 idx_col2를 기준으로 정렬하여 인덱스를 관리합니다.복합 인덱스 구조를 보면 첫 번째 컬럼을 먼저 조회하고 그다음에 두 번째 컬럼을 조회하는 것을 알 수 있습니다. 그래서 해당 인덱스를 제대로 사용하기 위해서는 순서에 맞게 Query를 구성해야 합니다.만약, idx_col2를 먼저 탐색하고 idx_col1을 탐색하게 where 조건문을 설정했다면, 올바르게 인덱스 탐색이 이루어지지 않을 수 있습니다. CREAT..
머리말,실무를 진행하면서 개발했던 서비스에 추가 요구사항이 생겨 테이블 변경이 필요한 상황이었습니다.1:1 관계였던 테이블이 N:M 관계로 변해 반정규화나 매핑 테이블을 추가해서 요구사항에 맞게 재설계 과정이 필요했습니다. Why 일대일 관계가 다대다 관계가 됐는지,더보기기존 서비스에서는 특정 시간 대에 하나의 객실에 대해 문의 예약건을 받아 처리했습니다. (문의 하나당 객실 하나를 담당한다.)하지만, 해당 기능은 사용자뿐만 아니라 관리자(사내 임직원)들도 사용하는 기능이어서 문의 하나 당 하나의 객실을 담당하게 되면 문의를 등록하는 데 불편한 점이 있었습니다. 그래서 이를 하나의 문의에 여러 개의 객실을 관리할 수 있도록 ERD를 재설계하였습니다.* 1:N 관계로 하게 되는 경우 객실 정보를 제외한 나..
CTECTE란 Common Table Expression의 약자로 서브 쿼리로 사용되는 파생 테이블과 비슷한 개념입니다. 데이터베이스에서 view와 다른 점은 view는 가상 테이블을 생성하고 유지가 되지만, cte는 일회성 테이블로 하나의 쿼리문이 끝나면 자동으로 삭제됩니다. CTE 사용 상황View를 생성할 수 없는 권한일 때 대체제로 사용 가능합니다.일회성 가상 테이블을 생성할 수 있습니다.저는 CTE를 데이터 값 업데이트 하는 데 사용하였습니다.백업 데이터를 만들어야 하는 경우가 있었는데, 과거 데이터를 현재 데이터보다 id 값을 적게 해주어야 하는 요구사항이 있었습니다. Why? 그냥 id를 auto_increment로 증가하면 되지 않나,관리자 페이지에서 백업 데이터가 추가되는 테이블을 id ..
12월에 새로운 프로젝트를 진행하면서 세운 목표는 안 써본 기술을 사용해 보면서 해당 기술이 가진 장점과 기존 기술과의 차이를 파악하는 것이었습니다.가장 궁금하고 학습하고 싶었던 기술로는 1. NoSQL 2. GraphQL 통신방법이 있어서 해당 2가지 기술을 프로젝트 개발에 앞서 프로젝트 셋팅과 연결 및 통신을 적용해 보며 새로운 기술과 친해지는 시간을 가졌습니다.기본적인 세팅을 진행하면서 문서도 많이 바뀌고, 코틀린으로 적용하다 보니 서툰 점이 많았는데, 해당 글을 보는 사람들은 편하게 셋팅하면 좋겠다는 마음에 2024년 마지막 글을 작성해 봅니다.!!MongoDB 보안 적용하기mongosh에 접속합니다.사용할 데이터베이스로 use 합니다.데이터베이스에 사용자를 생성합니다.# 접속mongosh# DB..