[인프런 김영한] 실전 데이터베이스 기본편 2

1. 인덱스 개념특정 컬럼의 데이터를 기반으로 생성되는, 원본 테이블과는 별개의 특수한 자료 구조.지정된 컬럼의 값과, 해당 값을 가진 실제 데이터 행의 위치(주소 값, 포인터, PK 값 등)를 한 쌍으로 저장한다. 즉, 인덱스를 통해 해당 테이블의 행을 빠르게 찾을 수 있다.가장 중요한 점은, 인덱스 내부의 데이터는 항상 정렬된 상태를 유지한다는 점이다.보조 인덱스 (idx_age)인덱스 키인 age 순으로 정렬되어 있으며, 원본을 찾기 위한 PK(id)를 갖고 있다.age (인덱스 키)id (PK 값)2510128102 (Target)28104 (Target)32103⬇️ [1차 탐색] PK(102, 104) 획득 후 클러스터 인덱스로 이동 (Double Lookup)클러스터 인덱스 (실제 테이블 데..

2026.08.10

[인프런 김영한] 실전 데이터베이스 기본편 1

1. 내부 조인 (INNER JOIN)두 테이블의 교집합을 찾는 것과 같다.어느 한쪽에만 존재하는 데이터는 제외하고, 두 테이블 모두에 명확하게 연결고리가 있는 경우에만 포함한다.양방향으로, A -> B로 조인한 결과와 B -> A로 조인한 결과는 항상 동일하다. 그래서 기본 조인이 INNER JOIN이다. (방향성 X)따라서 조인의 순서는 쿼리를 읽는 사람의 입장에서 중심이 되는 데이터에 따라 순서를 정해서, 가독성을 높이는 방향으로 설정하면 된다. 2. 외부 조인 (OUTER JOIN)LEFT JOIN은 왼쪽 테이블(FROM 절)에 있는 테이블이 기준이 된다.RIGHT JOIN은 오른쪽 테이블(JOIN 절)에 있는 테이블이 기준이 된다.LEFT JOIN과 RIGHT JOIN은 위치를 바꿔서 사용할 ..

2026.08.06
레디스 String, List 썸네일

레디스 String, List

※ 이 글은 Hong님의 인프런 강의 '초당 500,000+건 트래픽을 처리하는 카카오 면접관의 Redis'을 기반으로 학습한 내용을 정리한 것입니다. Redis String 개요레디스에서 가장 기본적이고, 실제로 레디스를 사용할 때 80~90% 비중으로 가장 많이 사용되는 핵심 데이터 타입 실제 구현 형태: 타입 이름은 String이지만, 내부적으로는 바이트 배열 형태로 구현되어 있다.Key-Value의 기본: 레디스의 모든 Key는 기본적으로 String 타입이다. 그리고 그 Key에 매핑되는 Value 값 역시 String으로 지정하여 가장 단순한 키-값 저장소 형태로 활용한다. 핵심 특징: Binary Safe레디스 String의 가장 강력한 장점은 어떤 형태의 데이터든 깨지거나 손실 없이 안전..

2026.04.28
레디스 (Remote Dictionary Server) 입문 썸네일

레디스 (Remote Dictionary Server) 입문

※ 이 글은 Hong님의 인프런 강의 '초당 500,000+건 트래픽을 처리하는 카카오 면접관의 Redis'을 기반으로 학습한 내용을 정리한 것입니다. 레디스 (Remote Dictionary Server) 개요 레디스는 대표적인 Key-Value 기반의 NoSQL 데이터베이스다.데이터를 디스크가 아닌 메모리(RAM)에 저장하는 인메모리(In-Memory) 방식을 사용하여 속도가 매우 빠르다.기본적으로 휘발성인 메모리를 사용하지만, 영속성을 보장하기 위해 메인 스레드를 방해하지 않고 백그라운드에서 주기적으로 스냅샷을 찍거나 로그를 남겨 디스크에 저장하는 기능을 지원한다.다만, 디스크에 비해 비싼 메모리를 주 저장소로 사용하기 때문에 저장 용량 대비 구축 비용이 비싸다. 레디스를 사용하는 이유 DB ..

2026.04.22

서비스 구조

본 포스팅은 인프런 널널한 개발자님의 강의 [면접 전에 알고 가면 좋을 것들 - 신입 Java 백엔드 개발자편]을 참고하여 재구성한 글입니다. 서비스 구조와 필수 고려사항 초기 접속 및 네트워크 흐름사용자의 URL 입력: 브라우저 주소창에 URL을 입력한다.DNS 지리 (Query): 도메인 네임을 IP 주소로 변환하기 위해 DNS 서버에 질의하고 응답을 받는다.TCP/IP 접속: 확보한 IP를 바탕으로 서버와 최초의 네트워크 연결(Handshake)을 맺는다. 사용자 인증 (Authentication) 및 세션 관리지식 기반 인증: 아이디와 패스워드를 이용한 기본적인 인증 과정을 거친다.중복 접속 이슈 고려:하나의 계정으로 여러 기기에서 동시 재생하는 것을 허용할 것인가?이를 제어하기 위해 계정 정..

2026.04.15
CS

데이터베이스, 운영과 보안

본 포스팅은 인프런 널널한 개발자님의 강의 [면접 전에 알고 가면 좋을 것들 - 신입 Java 백엔드 개발자편]을 참고하여 재구성한 글입니다. 인덱스자료구조와 인덱스의 관계데이터베이스는 결국 데이터를 특정 구조에 맞춰 집합해 놓은 것이다.따라서 자료구조를 명확히 이해하고 있다면, 데이터베이스에서 인덱스가 왜 필요한지, 어떤 원리로 동작하는지 자연스럽게 도출할 수 있다.인덱스는 이러한 선형 탐색의 비효율을 해결하기 위해 트리 구조를 사용한다. 디스크 저장 방식과 선형 구조의 한계물리적 저장: DB 엔진이 관리하는 데이터는 결국 2차 메모리(SSD 등)에 파일 형태로 저장된다.선형 구조: 파일 메모리는 기본적으로 연속된 평면적인 선형(Sequential) 구조를 띤다.최악의 상황: 선형 구조의 가장 큰..

2026.04.14
CS

WAS와 JVM

본 포스팅은 인프런 널널한 개발자님의 강의 [면접 전에 알고 가면 좋을 것들 - 신입 Java 백엔드 개발자편]을 참고하여 재구성한 글입니다. 머신(Machine)과 가상 머신(VM)의 실행 방식 차이 애플리케이션이 구동되는 기반 환경을 이해하려면, 먼저 일반 프로그램과 Java 프로그램의 실행 구조를 비교해야 한다.네이티브 코드 (C/C++): 컴파일러가 소스 코드를 해당 하드웨어 CPU와 운영체제(OS)가 이해할 수 있는 0과 1의 Machine Code로 번역한다. 하드웨어와 직접 맞닿아 있어 속도가 매우 빠르지만, CPU 아키텍처나 OS가 달라지면 코드를 다시 컴파일해야 하는 플랫폼 종속성을 가진다.자바 바이트 코드 (Java): Java는 OS 위에 JVM이라는 가상의 컴퓨터(Virtual C..

2026.04.13
CS

Web Server와 HTTP

본 포스팅은 인프런 널널한 개발자님의 강의 [면접 전에 알고 가면 좋을 것들 - 신입 Java 백엔드 개발자편]을 참고하여 재구성한 글입니다. HTTP 1.0매 요청/응답마다 새로운 TCP 연결을 맺어야 해서 3-Way Handshake 비용이 크다. HTTP 1.1HTTP1.0의 연결 비용을 해결하기 위해 Persistent Connection(Keep-Alive) 기능이 기본화되었다.즉, 한 번의 요청으로 다 가져오는 것이 아니라, 한 번 맺은 TCP 연결을 재사용해서 여러 요청과 응답을 처리할 수 있게 되었다.하지만, 응답을 순차적으로 받아야 하는 HTTP 계층의 HOL 블로킹(Head-Of-Line Blocking)으로 인해 앞선 요청의 처리가 지연되면 뒤따르는 응답을도 모두 대기해야 하는 단점..

2026.04.12
CS