BackEnd 서적
「SQL 레벨업」, 「오브젝트」를 챕터별로 정리한 노트
- 01
SQL 레벨업 Ch.1 — DBMS 아키텍처
버퍼와 로그, 워킹 메모리, 옵티마이저가 실행 계획을 고르는 과정까지 DBMS 내부 구조를 정리했다.
- 02
SQL 레벨업 Ch.3 — SQL의 조건 분기
UNION으로 나누던 조건 분기를 CASE 식으로 바꿔 테이블 접근을 줄이는 방법과 UNION이 유리한 경우를 정리했다.
- 03
SQL 레벨업 Ch.4~5 — 집약과 자르기, 반복문
GROUP BY와 PARTITION BY의 차이, 반복계와 포장계의 장단점, 윈도우 함수와 재귀 CTE로 반복을 대신하는 방법을 정리했다.
- 04
SQL 레벨업 Ch.6 — 결합
Nested Loops, Hash, Sort Merge 세 가지 결합 알고리즘의 동작 방식과 각각이 유리한 상황을 정리했다.
- 05
SQL 레벨업 Ch.7 — 서브쿼리
서브쿼리가 성능을 떨어뜨리는 이유와, 윈도우 함수로 결합과 테이블 접근 횟수를 줄이는 방법을 정리했다.
- 06
SQL 레벨업 Ch.8 — SQL의 순서
윈도우 함수의 순번으로 중앙값과 단절 구간을 구하는 쿼리, 시퀀스 객체와 IDENTITY 필드의 성능 문제를 정리했다.
- 07
SQL 레벨업 Ch.9 — 갱신과 데이터 모델
상관 서브쿼리, 다중 필드 할당, 윈도우 함수로 UPDATE와 INSERT SELECT를 효율적으로 작성하는 방법을 정리했다.
- 08
SQL 레벨업 Ch.10 — 인덱스 사용
B-Tree 인덱스의 특징, 카디널리티와 선택률 기준, 인덱스가 듣지 않는 조건과 커버링 인덱스로 대처하는 방법을 정리했다.
- 09
오브젝트 Ch.1 — 객체, 설계
캡슐화와 의존성 관점에서 객체지향 설계를 정리하고, TicketOffice 예제를 인터페이스 분리로 직접 개선해 본다.
- 10
오브젝트 Ch.2 — 객체지향 프로그래밍
메시지와 메서드, 컴파일·실행 시점 의존성의 차이, 상속과 합성, 추상화를 영화 예매 예제로 정리한다.
- 11
오브젝트 Ch.3~4 — 역할, 책임, 협력 / 설계 품질과 트레이드오프
협력이 책임을, 메시지가 객체를 결정한다는 책임 주도 설계의 관점과 데이터 중심 설계의 문제점을 정리한다.
- 12
오브젝트 Ch.5 — 책임 할당하기
책임 중심 설계와 GRASP의 CREATOR 패턴, 그리고 코드에서 변경의 이유를 찾아 클래스를 분리하는 방법을 정리한다.
- 13
오브젝트 Ch.6 — 메시지와 인터페이스
메시지·오퍼레이션·메서드의 구분, 디미터 법칙과 그 한계, 명령-쿼리 분리 원칙을 예제 코드와 함께 정리한다.
- 14
오브젝트 Ch.8 — 의존성 관리하기
런타임·컴파일타임 의존성의 차이와 의존성 해결 방법, 추상화에 의존해야 하는 이유와 new의 해로움을 정리한다.
- 15
오브젝트 Ch.9 — 유연한 설계
개방-폐쇄 원칙, FACTORY와 PURE FABRICATION, 의존성 주입과 SERVICE LOCATOR, 의존성 역전 원칙을 정리한다.
- 16
오브젝트 Ch.10, 12 — 상속과 코드 재사용, 다형성
코드 재사용을 위한 상속이 위험한 이유와, 동적 메서드 탐색과 self 참조로 다형성이 동작하는 방식을 정리한다.
- 17
오브젝트 Ch.13 — 서브클래싱과 서브타이핑
is-a 관계의 한계와 행동 호환성, 인터페이스 분리 원칙, 리스코프 치환 원칙으로 올바른 타입 계층의 기준을 정리한다.