MySQL 10

모임 목록 조회 API 트러블슈팅: 커서 기반 페이징과 N+1을 설계 구조로 해결하기

🎯학습 목표1. 모임 목록 조회 API가 어떤 스펙(요청/응답/무한 스크롤)으로 동작해야 하는지 설명할 수 있다.2. V1 구현을 읽으며 N+1이 발생하는 실행 흐름(쿼리 1번처럼 보이는데 왜 늘어나는지)을 재현/설명할 수 있다.3. V2 개선안(Projection + IN 쿼리 + Map 조립)으로 N+1을 구조적으로 제거하고, 목록+페이징에서 안정적인 설계를 선택할 수 있다.문제와 결론 살펴보기1. 문제 요약모임 목록 조회는 “화면에서 가장 자주 호출되는 API”인 경우가 많고, 데이터가 쌓일수록 호출 비용이 그대로 서비스 비용과 UX로 이어집니다. 그래서 목록 API는 처음 설계부터 페이징 방식, 검색 방식, 응답 구조(카드형 DTO) 를 잘 잡아야 합니다. 그런데 구현을 조금만 엔티티 중심으로 ..

💭Retrospective 2025.12.16

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 08 트랜잭션, 동시성 제어, 회복

🔥학습목표 1. 트랜잭션의 개념을 이해하고 데이터베이스에서 이 개념이 왜 중요한지 알아본다. 2. 트랜잭션 실행 시 동시성 제어가 필요한 이유를 알아보고, 락킹을 이용한 동시성 제어 기법을 살펴본다. 3. 락킹보다 완화된 방법으로 트랜잭션의 동시성을 높이는 트랜잭션 고립 수준에 대해 알아본다. 4. 데이터베이스 시스템에 문제가 생겼을 때 쓸 수 있는 복구 방법을 알아본다.PREVIEW일상생활에서 비즈니스는 거래를 중심으로 일어난다. 상품을 주문하고 입금하면 배송이 이루어지고, 판매처에서 배송 확인을 마치민 거래가 완료된다. 그러나 만약 거래가 중간에 멈추어. 입금했는데도 상품이 배송되지 않으민 문제가 된다. 다시 말해, 모든 거래는 배송 확인이 완료되거나 아예 취소되어야 한다. 마..

📚Read 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 07 정규화

🔥학습목표 1. 데이터베이스 설계 과정에서 발생할 수 있는 이상현사으이 종류와 원인을 알아본다. 2. 함수 종속성의 개념을 이해하고 관련 규칙을 알아본다. 3. 함수 종속성을 이용한 정규화 과정을 알아본다.PREVIEW데이터베이스 설계 과정을 거쳐 테이블이 생성되지만, 잘못 설계된 테이블로 데이터 조작 작업을 하면 이상현상이 발생할 수 있다. 이상현상은 데이터베이스의 일관성을 손상시켜 데이터의 무결성을 깨뜨리는 현상을 의미한다. 이 문제를 해결하려면 속성 간의 함수 종속성을 파악하여 테이블올 몇 가지 규칙에 따라 분해해야 한다. 이러한 과정을 정규화라고 한다. 정규화는 잘못 설계된 테이블을 수정하여 데이터의 일관성과 무결성을 회복시키는 프로세스다. 정규화를 통해 테이블을 분해하면 데이터..

📚Read 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 06 데이터 모델링

🔥학습목표 1. 데이터 모델링의 개념을 이해한다. 2. 개념적 모델링 단계에 사용하는 ER 모델을 이해하고 작성 방법을 알아본다. 3. MySQL Workbench를 사용하여 ER 몯레을 작성해 본다. 4. 마당대학 데이터베이스를 ER 모델로 직접 설계해 본다.PREVIEW지금까지 데이터베이스 시스템과 SQL의 개념을 살펴보았다. 함께 언급한 마당서점 데이터베이스는 설명을 위한 예시였지만, 실제 서점에서 사용하는 데이터베이스와 유사하다. 이 장에서는 마당서점 데이터베이스가 어떻게 만들어졌는지를 살펴보자. 건축에 비유하면, 서점의 판매관리 소프트웨어는 건물 설계와 유사하고, 데이터베이스는 지반 설계와 같다. 건물을 지을 때와 마찬가지로 소프트웨어가 사용하는 데이터베이스에도 설계가 필..

📚Read 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 05 데이터베이스 프로그래밍

클라이언트와 서버, 클라우드 서버일상생활에서 서버(server)는 서비스하는 사람을 가리키고, 클라이언트(client)는 서비스 받는 사람을 가리킨다. 컴퓨터에서 서버는 특정한 임무를 수행하는 컴퓨터 시스템을 뜻하고, 클라이언트는 서버로부터 서비스를 받는 프로그램이나 컴푸터 시스템을 뜻한다.데이터베이스를 서비스하는 DBMS가 설치된 컴퓨터를 데이터베이스 서버라고 한다. 데이터베이스 서버와 클라이언트가 같은 컴퓨터이거나 같은 컴퓨터 안에 있는 경우는 드물다. 그래서 다음과 같은 구조가 된다. 서버 시스템(데이터베이스) ↔ 클라이인트 시스템 실제로는 서버 시스템과 클라이언트 시스템 사이에 데이터베이스 서버로부터 받은 데이터를 처리하는 응용 프로그램이 존재하는데, 이것을 비즈내스 로직(business logi..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 04 SQL 고급

🔥학습목표 1. 내장 함수의 의미를 알아보고 자주 사용되는 내장 함수 몇 가지를 직접 실습해 본다. 2. 부속질의의 의미와 종류를 알아보고 직접 실습해 본다. 3. 뷰의 의미를 알아보고 뷰를 직접 생성 · 수정 · 삭제해 본다. 4. 데이터베이스의 저장 구조와 인덱스 간 관계, 인덱스의 구조를 이해한다. 5. MySQL 인덱스 종류를 알아보고 인덱스를 직접 생성 · 수정 · 삭제해 본다.PREVIEW3장에서 SQL 기초 문법에 대해 알아보았다. SQL 기초 문법은 기본적인 데이터베이스 운영에 충분히 사용할 수 있으나 업무가 복잡해지고 처리해야 할 자료가 많아지면 기초 문법이 제공하는 기능만으로는 한계가 있다. 이 장에서는 복잡한 질의를 해결할 때 사용하는 SQL 고급 문법에..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 03 SQL 기초

🔥학습목표 1. SQL의 개념과 주요 명령어를 알아본다. 2. SELECT 문으로 질의를 처리하는 방법을 알아본다. 3. 집계 함수와 GROUP BY 문으로 질의를 처리하는 방법을 알아본다. 4. 두 개 이상의 테이블을 조회하여 질의를 처리하는 방법을 알아본다. 5. DDL로 테이블의 구조를 정의하고 변경하는 방법을 알아본다. 6. DML로 데이터를 삽입 · 수정 · 삭제하는 방법을 알아본다.PREVIEWSQL은 크게 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 나뉜다. 데이터 정의어는 테이블의 구조를 만들 때, 데이터 조작어는 저장된 데이터를 검색 · 삽입 · 수정 · 삭제할 때, 데이터 제어어는 데이터에 대한 접근 권한을 제어할 때 사..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 02 관계 데이터 모델

🔥학습목표 1. 관계 데이터 모델의 개념을 이해한다. 2. 관계 데이터 모델의 제약조건을 알아본다. 3. 관계 데이터 모델의 연산인 관계대수의 종류와 작성법을 알아본다.PREVIEW데이터베이스 시스템에서 가장 중요한 것은 데이터다. 데이터 간 관계 설정과 저장 방법에 관한 여러 이론이 제시되었는데, 이를 데이터 모델이라고 한다. 데이터 모델에는 네트워크 데이터 모델, 계층 데이터 모델, 관계 데이터 모델, 객체-관계 데이터 모델 등이 있다. 이 중에서 관계 데이터 모델을 가장 많이 사용한다. 관계 데이터 모델은 사용자들이 데이터에 접근하기 쉬운 테이블 형태로 데이터 간의 관계를 표현한다. 네트워크 데이터 모델과 계층 데이터 모델이 자료를 레코드 단위로 복잡하게 처리하였다면, 관계 데이터..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 01 데이터베이스 시스템

🔥 학습목표 1. 데이터베이스의 유형을 알아보고 개념 및 특징을 이해한다. 2. 정보 시스템의 발전 과정을 통해 데이터베이스 시스템의 등장 배경을 이해한다. 3. 파일 시스템과 DBMS를 비교하여 DBMS의 장점을 이해한다. 4. 데이터베이스 시스템의 구성 요소를 알아본다.01 데이터베이스와 데이터베이스 시스템 데이터베이스(Database)는 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것이다.데이터(data): 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값정보(Information): 데이터에 의미(meaning)를 부여한 것지식(knowledge): 사물이나 현상에 대한 이해데이터베이스의 개념 및 특징데이터베이스는 '여러 사람이 공용으로..

📚Read 2025.11.23

MySQL: useSSL의 대안 sslMode

질문의 배경MySQL 데이터베이스 URL을 보면 늘 useSSL이 눈에 띄는데, “SSL = HTTPS처럼 CA 인증서를 두고 통신하는 거 아냐?”라는 의문이 먼저 떠올랐습니다. 정확히 어떤 인증·암호화 매커니즘으로 동작하는지, 그리고 MySQL 8.0 이상에서 이제는 useSSL 대신 사용하는 sslMode 을 올바르게 사용하는 방법을 정리하고 싶었습니다. useSSL과 sslMode는 데이터베이스 연결 시 SSL/TLS 암호화 방식을 설정하는 데 사용되는 옵션입니다. JDBC URL이나 DataSource 속성에서만 쓰는 연결(세션) 단의 정책입니다. MySQL Connector/J 8.0부터 useSSL은 더이상 권장되지 않는 구식 옵션이며, sslMode가 더 정교하고 안전한 연결을 위해 도입되었..

🐬MySQL 2025.10.21