이론 6

[MySQL] 인덱스를 사용하는 이유, B-Tree 구조 및 동작 방식

개요MySQL InnoDB 엔진이 데이터를 디스크에 읽고 쓰는 방식을 알아보고, 인덱스를 적용하면 왜 성능이 개선되는 것인지 살펴보고자 합니다. 1. 데이터 읽기/쓰기와 디스크 드라이브 데이터베이스에서 작성한 데이터는 디스크 드라이브에 저장되어 영속됩니다. 컴퓨터에서 CPU나 메모리 등의 주요 장치는 전자식 장치지만, HDD는 기계식 장치입니다. 디스크에 데이터를 쓰고 읽는 데 걸리는 시간은 디스크 헤더를 물리적으로 움직이는 단계에서 결정됩니다. 때문에 데이터베이스 서버에서는 데이터를 읽어올 때 하드 디스크 드라이브가 병목지점이 됩니다. 이러한 단점을 개선하기 위해 SSD가 출시되었습니다. 솔리드 스테이트 드라이브는 기존의 HDD에서 플래터(원판)를 제거하고 그 대신 플래시 메모리를 장착하고 있습니다. ..

[네트워크] 쿠키와 세션이란? + 스프링 MVC에서 사용법

1. 쿠키 (Cookie)쿠키란?쿠키는 사용자의 브라우저에 저장되는 데이터입니다. 웹사이트는 쿠키를 사용해 사용자가 이전에 방문했을 때의 정보를 유지할 수 있습니다.장단점장점상태 유지: 사용자가 웹 사이트를 다시 방문할 때 이전 상태를 유지할 수 있습니다.간편한 구현: 브라우저에서 쿠키를 관리하기 때문에 서버 측에서 쿠키를 지정하기만 하면 되어 간단합니다.클라이언트에 저장: 서버 자원을 절약할 수 있습니다.단점보안: 쿠키는 클라이언트 측에 저장되므로 민감한 정보를 암호화하지 않으면 보안 취약점이 생길 수 있습니다.저장 용량 제한: 각 쿠키의 크기는 4KB로 제한되며, 브라우저 당 저장 가능한 쿠키 수에도 제한이 있습니다.브라우저 종속적: 브라우저 설정에 따라 쿠키 사용이 제한될 수 있습니다.사용방법서버에..

이론/네트워크 2024.07.01

[MySQL] 서버 구조와 동작 원리 - MySQL 엔진, 스토리지 엔진

1. MySQL 서버 전체 구조MySQL 엔진MySQL 엔진은 커넥션 관리, SQL 명령어 처리, 캐시 & 버퍼 관리, 스레드 관리 등을 담당합니다.커넥션 핸들러: MySQL 서버 사용자인 응용 프로그램과 커넥션을 체결합니다.SQL 인터페이스: 사용자가 작성한 SQL 명령어를 DBMS 서버 내부로 전달합니다.SQL 파서: SQL 명령어를 분석해 Syntax Tree를 형성한 뒤 옵티마이저에게 전달합니다.SQL 옵티마이저: SQL 명령어를 최적화해 실행 계획을 세웁니다.캐시 & 버퍼: 데이터를 메모리에 저장하여 성능을 향상시킵니다. 스토리지 엔진데이터 저장 방식을 관리하고 실제 물리적 디스크에 접근합니다.InnoDB와 MyISAM 등이 대표적인 스토리지 엔진입니다. 핸들러 APIMySQL 엔진과 스토리지 ..

[디자인 패턴] Adapter 패턴 구성 요소 및 Spring Security 사례

개요 스프링 시큐리티 6.x 버전 출시 이후로 더이상 사용되지 않는 deprecated된 클래스들이 생겨났습니다. 그에 따라 기존 프로젝트에 적용했던 코드들은 직접적으로 활용하지 않을 것이 권장되었습니다. Spring Security 측이 제공한 해결책 코드에 어댑터 패턴이 적용됨을 발견했고, 해당 코드로 변경하며 공부한 내용을 정리하겠습니다. 1. 어댑터 패턴 어댑터 패턴이란 클라이언트가 호출하는 인터페이스는 정해져 있지만, 실제로 활용할 코드의 인터페이스가 일치하지 않을 때 활용하는 패턴을 말합니다. 클라이언트가 호출할 API와 무관하게 기존의 클래스를 변경하지 않고도 재활용할 수 있도록 하기 때문입니다. 이미 구현이 완료된 클래스를 재사용하고 싶은데 클라이언트가 호출할 API가 클래스의 API와 다..

이론/유지보수 2024.05.30

[Network] HTTP 상태코드

1. HTTP 상태코드란 HTTP 상태코드는 클라이언트가 보낸 요청에 대한 처리 상태를 응답으로 알려주는 기능이다. 1xx 부터 5xx 까지 5가지의 상위 상태코드로 분류할 수 있다. 1xx Informational은 요청이 수신되어 처리 중이라는 의미인데, 거의 사용하지 않으므로 넘어간다. 2. 2xx Successful 2.1 200 OK 요청이 정상 처리되었다는 의미이다. 2.2 201 Created 요청의 결과로 새로운 리소스가 생성되었다는 의미이다. 응답 HTTP 메시지 헤더에 Location 필드에 새롭게 생성된 리소스의 URI를 값으로 응답한다. 2.3 202 Accepted 요청은 접수되었으나 처리를 완료하지 않았다는 의미이다. 2.4 204 No Content 서버가 요청을 정상적으로 수..

이론/DevOps 2024.01.30

[Network] JWT란 무엇이고 어떻게 동작하는가?

1. JWT 란 JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA. 위는 JWT 공식 웹페이지 https://jwt.io/int..

이론/DevOps 2023.07.04