본문 바로가기

전체 글11

기록하는 것 공부하고 새롭게 알게된 내용을 정리하면서 기록하는 행위는 단순히 적어두고 추후에 정리된 내용을 보고 쉽게 이해하는 목적 뿐만 아니라, 기록이라는 행위를 통해서 지식의 이해도가 높아지고, 더 오래 체화되기 때문이라고 생각한다. 어려운 내용은 종이에 펜으로 적고, 어느정도 이해하기 쉬운 내용은 텍스트 편집기나 툴로 정리하자. 쉬운 내용, 이미 아는 내용이라도 중요하고 오래 기억하고 싶다면 기록하자. 개발관련된 지식은 양이 방대해서 금방 잊어버릴 수 있기 때문이다. 이 글을 쓰는 이유 역시도, 이런 학습 방법을 내 머리가 기억했으면 해서.. 이다. 2022. 3. 24.
2022-3-7 - Query DSL으로 데이터를 가져올 때 DTO로 데이터를 꺼내는 방법을 알게 되었다. 지정된 엔티티 타입이 아닌 DTO 타입으로 데이터를 반환할 수 있고 @QueryProjection을 사용했다. 여러 테이블에서 원하는 컬럼만 꺼내는 것도 장점이지만, 복잡한 요구사항과 정렬 조건때문에 이 방법을 선택했다. 정렬 1순위로 지정해야하는 조건이 여러개의 컬럼 값과 외부 다른 값으로의 연산결과도 만족해야했다. order by에 case문을 사용해서 연산결과대로 정렬해도 되지만, DB에서 복잡한 연산을 하기 보다는 애플리케이션단에서 정렬을 하는 것이 더 좋다고 판단했다. DTO에 정렬 조건으로 가지는 필드를 추가했고, 이 필드로 애플리케이션 단에서 정렬을 구현했다. - 항상 학습 범위를 욕심내서 정해두니 부.. 2022. 3. 7.
Real MySQL 04 서버 아키텍처 (1) - MySQL 서버는 MySQL 엔진과 스토리지 엔진으로 이루어져 있음 MySQL 엔진 - 커넥션 핸들러 : 클라이언트의 접속과 쿼리 요청을 처리함 - SQL 파서, 전처리기 - 옵티마이저 : 쿼리 최적화 담당 스토리지 엔진 - 실제 디스크 스토리지에 데이터 저장 - 디스크 스토리지로부터 데이터 읽어오기 MySQL 엔진은 하나지만, 스토리지 엔진은 동시에 여러개 사용 가능 테이블 생성 시 다음과 같이 스토리지 엔진을 지정할 수 있다. 해당 테이블에 대한 읽기, 변경 작업은 지정된 스토리지 엔진으로 처리하게 된다. CREATE TABLE test (id INT, name VARCHAR(30)) ENGINE=INNODB; - MySQL 엔진이 스토리지 엔진에서 데이터를 읽어오거나 저장하기 위해 핸들러를 거친.. 2022. 3. 7.