CS/Database 13

Trigger

🔫Trigger트리거는 데이터베이스에서 특정 이벤트(INSERT, UPDATE, DELETE)가 발생했을 때 자동으로 실행되는 저장 프로시저 또는 기능이다.🔧 트리거의 주요 특징구분설명자동 실행사용자가 직접 호출하지 않아도, 특정 이벤트 발생 시 자동으로 실행됨테이블 단위 설정특정 테이블에 대해 설정됨주로 사용하는 이벤트INSERT, UPDATE, DELETE🧬 트리거 유형행(Row) 트리거트리거 대상이 되는 테이블의 각 행마다 실행OLD, NEW 라는 가상 변수로 이전/변경된 값을 참조 가능문장(Statement) 트리거한 번의 SQL문에 대한 단 한 번 실행INSERT, UPDATE, DELETE 문에 대해 한 번만 실행됨⏰ 트리거 실행 시점BEFORE : 본 연산 전에 실행AFTER : 본 연..

CS/Database 2025.08.12

DB Connection

🏛 DB Connection애플리케이션과 DB 사이에 통신을 가능하게 하는 연결 수단Java에서는 주로 JDBC(Java Database Connectivity) API를 통해 DB 연결을 수행DB 연결 정보 (URL, ID, PW 등)와 JDBC 드라이버가 필요🏗️ DB Connection 구조🔹 2-Tier 구조클라이언트의 자바 프로그램(JSP)가 직접 DB와 연결하여 데이터 처리구조 단순클라이언트 수 증가 시 확장성 및 보안 취약🔹 3-Tier 구조클라이언트 ↔ 미들웨어(서버) ↔ DB미들웨어가 비즈니스 로직 처리, 트랜잭션 관리, 보안, 리소스 관리 등을 담당대부분의 웹 애플리케이션이 이 구조 사용📦 JDBC (Java Databse Connectivity)자바에서 SQL을 사용해 RDB..

CS/Database 2025.08.12

Transaction Schedule & 병행 제어 기법

🔄 트랜잭션 병행 수행이란?여러 트랜잭션을 동시에 수행하기 위해트랜잭션의 연산들을 교차(인터리빙) 시켜 실행하는 방식이를 통해 시스템 성능과 자원 활용도 향상하지만 데이터 무결성에 문제가 생길 수 있음 → 스케줄 관리가 중요!🗂️ 트랜잭션 스케줄 (Transaction Schedule)트랜잭션에 포함된 연산들을 어떤 순서로 실행할지를 정의한 것 1️⃣ 직렬 스케줄 (Serial Schedule)인터리빙 방식을 이용하지 않고 각 트랜잭션이 독립적으로 차례대로 완전히 실행되는 스케줄🧠 특징하나의 트랜잭션이 완료된 후에 다른 트랜잭션 시작항상 정확한 결과 보장병행성 X → 성능 저하 (한 트랜잭션이 진행하는동안 다른 트랜잭션이 진행X → cpu가 놀고 있음)📌 예시T1의 모든 연산 → T2의 모든 연산..

CS/Database 2025.08.12

Clustering & Replication & Sharding

📚 데이터베이스 구성 방식데이터베이스는 기본적으로 데이터베이스 서버, 데이터베이스가 저장되는 스토리지가 1:1로 구성된다.하지만 서비스 운영 시 DB 서버에서 트랜잭션을 수용하지 못하거나, DB 스토리지에 저장된 데이터가 손상될 경우가 존재한다.클러스터링과 리플리케이션은 이러한 문제점을 해결하기 위한 DB 서버,DB 스토리지 구성 방식이다.🧩 Clustering (클러스터링)여러 개의 DB서버가 하나의 스토리지를 나눠서 처리하는 방식즉, 여러 개의 DB를 수평적인 구조로 구축한다. ❓ 클러스터링을 사용하는 이유고가용성 (HA)하나의 서버에 장애가 발생해도 서비스가 중단되지 않는 구조부하 분산 (Load Balancing)장애 대응 (Fail Over)SPOF(단일 장애점) 회피 및 제거에 효과적서버 ..

CS/Database 2025.07.25

저장 프로시저 (Stored Procedure, SP)

🗂️ 저장 프로시저(Stored Procedure, SP)일련의 쿼리들을 마치 함수처럼 DB에 저장하고 실행하는 기능, 즉 쿼리의 집합이다. ✔️ 특정 로직의 쿼리들을 묶어두는 것🔍 저장 프로시저와 함수의 차이 프로시저 : 여러 쿼리문을 묶어 고급언어처럼 분기/반복 제어하는 묶음함수 : 간단하고 짧은 계산 또는 변환 후 단일 값 반환하는 용도 저장 프로시저저장 함수🛠️ 기능일련의 작업 (절차적 처리)반환 값 중심의 기능🔄 리턴값없음 또는 여러 개반드시 RETURN으로 1개 값 반환⚡ 실행 위치DB 서버DB 서버 🧩 호출 방식CALL 프로지서명()SELECT 함수명()🚀 속도뻐름상대적으로 느릴 수 있음📚 용도복잡한 로직 처리계산, 변환, 조회 등 간단한 처리 🗂️ 일반 쿼리문 vs 저장 프..

CS/Database 2025.07.14

인덱스 (Index)

🔖 Index (인덱스)인덱스(Index)는 데이터베이스에서 검색 속도를 높이기 위해 사용하는 자료구조이다.즉, 테이블의 특정 컬럼의 값을 기준으로 정렬된 별도의 자료구조(B-Tree, Hash 등)로, **데이터의 위치(주소)**를 빠르게 찾아갈 수 있게 도와주는 목차 역할이다.📚 비유로 이해하기도서관에서 책을 찾는 과정과 비슷하다.책 제목 순서대로 정리된 목차(인덱스)가 있다면 → 빠르게 책 위치 찾음목차 없이 처음부터 하나하나 살펴보면 → 전체 검색(Full Scan)Full Scan (=table scan) : row를 하나하나씩 모두 확인하는 것을 의미 시간 복잡도 : O(N)Index를 사용한다면 시간복잡도 O(logN) - B-Tree based index🛠️ 인덱스의 특징🔎 조회 성..

CS/Database 2025.07.14

RDBMS vs NoSQL

📦 RDBMSRelational Database Management System이다. RDBMS는 관계형 데이터베이스 관리 시스템으로, 1970년대에 개발된 DBMS이다. 데이터를 행(Row)과 열(Column)로 구성된 테이블 형식으로 저장한다. 테이블 간 관계는 외래키(Foreign Key)를 통해 표현대표 RDBMS : MySQL, Oracle, PostgreSQL, SQLite 등📌 RDBMS 특징 및 장점1️⃣ 정형화된 데이터 저장데이터 구조(스키마)를 사전에 정의테이블 단위로 명확하게 구분하여 저장2️⃣ SQL 기반 조작표준 SQL을 사용해 데이터 삽입, 조회, 갱신, 삭제 가능복잡한 조건의 쿼리와 조인 처리에 강함3️⃣ ACID 보장트랜잭션 처리에서 ACID(원자성, 일관성, 격리성, 지..

CS/Database 2025.07.06

Transaction(3) - Isolation Level (격리 수준)

🔐 격리 수준과 이상 현상트랜잭션의 ACID 속성 중 Isolation은 여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않고 독립적으로 작동해야 함을 의미한다. 하지만 완벽한 격리를 구현하려면 성능 저하가 발생할 수 있어DBMS는 다양한 Isolation Level을 제공하여 성능과 정합성 사이의 트레이드오프를 가능하게 한다. 💥 Isolation이 약할 때 발생하는 이상 현상1️⃣ Dirty Read (더티 리드)커밋되지 않은 데이터를 읽는 현상아직 확정되지 않은 변경값을 읽어 잘못된 결과를 낼 수 있음🧪 예시:A사용자가 키를 171 → 177로 변경 (커밋 전),B사용자가 조회 → 177로 보임→ 나중에 A가 롤백하면 B는 존재하지 않는 값을 읽은 셈 2️⃣ Non-Repeatable Rea..

CS/Database 2025.06.23

Transaction (2) - 동시성 제어

🔒 Serializability & Recoverability트랜잭션의 ACID 속성 중 'Isolation(격리성)'을 보장하기 위한 두 핵심 개념인 Serializability와 Recoverability에 대해 알아보자.🧩 동시성 제어 (Concurrency Control)여러 트랜잭션이 동시에 실행되더라도 데이터 정합성과 무결성을 보장하는 기능DBNS는 이 기능을 위해 2가지 속성을 보장해야 한다.✅ Serializability (직렬 가능성)✅ Recoverability (회복 가능성)1️⃣ Serializability (직렬 가능성)📌 개념여러 트랜잭션이 병렬로 실행되더라도, 결과는 마치 순차적으로 실행된 것처럼 나와야 한다. 즉, non-serial schedule이라 하더라도 seri..

CS/Database 2025.06.23

Transaction (1)

🔄 트랜잭션(Transaction)이란? 데이터베이스에서 하나의 논리적 작업 단위여러 SQL 쿼리를 묶어 하나의 작업처럼 처리할 수 있게 한다. ✅All or Nothing트랜잭션 내의 작업은 모두 성공(Commit)하거나,하나라도 실패하면 모두 취소(Rollback) 해야 한다. 📌 트랜잭션의 목적데이터 정합성 유지부분 적용 방지장애/예외 상황에서의 복구 가능성 확보✅ 트랜잭션 제어 명령어명령어설명START TRANSACTION트랜잭션 시작 (autocommit 비활성화)COMMIT지금까지의 작업을 DB에 반영하고 트랜잭션 종료ROLLBACK지금까지의 작업을 취소하고 이전 상태로 복원SET AUTOCOMMIT = 1/0트랜잭션 자동 커밋 여부 설정 (MySQL은 기본값이 1)🏦 예시: 계좌 이체 ..

CS/Database 2025.06.23