Database 8일차
·
Database
🔧 트랜잭션 + 반정규화 기반 "좋아요" 실습사용자가 강의에 좋아요를 누르면,👉 likes 테이블에 기록하고👉 course 테이블의 likes 수치를 +1 증가시킴⚠️ 이 작업은 트랜잭션으로 묶여 있음 → 하나라도 실패하면 전부 롤백✅ 2. 테이블 구조 및 맥락📌 관련 테이블 구성🧾 likes 테이블  → 학생 ID, 강의 ID 저장 (Many-to-Many 관계)📚 course 테이블  → 강의 정보 + likes 컬럼 포함 (좋아요 수 직접 보관)✅ 3. 쿼리 기능 요약단계기능 설명⚙️ SET AUTOCOMMIT = FALSE;자동 커밋 해제 (직접 커밋하기 전까지 반영 안됨)🚦 START TRANSACTION;트랜잭션 시작➕ INSERT INTO likes(...)누가 어떤 강의에 좋아..
Database 7일차
·
Database
🔨 단계별 실습 요약1. DB 생성 (ERD 기반)sql복사편집CREATE DATABASE web;USE web;CREATE TABLE courses ( course_id INT PRIMARY KEY, course_name VARCHAR(100));CREATE TABLE sections ( section_id INT PRIMARY KEY, section_name VARCHAR(100), course_id INT, FOREIGN KEY (course_id) REFERENCES courses(course_id));CREATE TABLE lectures ( lecture_id INT PRIMARY KEY AUTO_INCREMENT, lecture_name VARCHAR(100), sectio..
Database 6일차
·
Database
📘 3계층 웹 아키텍처 실습 기반 정리🧱 1. 3계층 아키텍처란?웹 서비스를 구성할 때, 각 역할을 나누어 유지보수성, 확장성, 보안성을 확보하기 위한 구조🔹 구성Presentation Layer (프론트엔드): 웹 브라우저, 사용자 인터페이스→ Nginx, HTML, JS, CSSApplication Layer (WAS): 사용자 요청 처리 및 로직 수행→ Tomcat, JSP, Spring 등Data Layer (DB): 데이터 저장 및 관리→ MariaDB, MySQL, PostgreSQL 등🔹 장점역할별 분리로 유지보수가 쉬움특정 계층만 확장 가능 (ex. WAS만 늘리기)부하 분산 구조로 성능과 안정성 확보🛡 2. MariaDB의 외부 접속 설정외부에서 DB에 접속하려면 IP 제한 해제..
Database 5일차
·
Database
✅ 갈레라 클러스터(Galera Cluster)란?여러 대의 데이터베이스 서버(MariaDB/MySQL)를 하나의 클러스터처럼 묶어, 실시간으로 동일한 데이터를 공유하는 기술입니다.💡 왜 필요한가요?하나의 서버만 사용하는 DB는 고장 나면 끝입니다.Galera를 사용하면 여러 서버가 동시에 DB 역할을 하면서,하나가 죽어도 다른 서버가 역할을 대신함 → 고가용성여러 서버에서 읽고 쓰기 가능 → 성능 향상데이터가 항상 똑같이 유지됨 → 데이터 일관성 유지“갈레라 클러스터가 무조건 좋은 게 아니라,시스템의 목적과 성격에 따라 적절한 구조를 선택하는 것이 중요하다.”읽기 작업이 많은 서비스 → 슬레이브 노드 확장으로 효율적고가용성 쓰기, 무중단 장애복구가 필수 → Galera Cluster 활용서버의 개수가..
Database 4일차
·
Database
✅ 기본 명령어 및 설정 요약🧩 apt : 프로그램 설치 명령어🧩 systemctl : 서비스 실행/중지 명령어🧩 systemctl enable [서비스명] : 재부팅 시 자동 실행 등록🧩 vi /etc/hostname : 컴퓨터 이름 변경🧩 init 6 : 변경된 설정 저장 후 시스템 재부팅🔧 실습 환경 세팅🖥️ db1실행: mariadb, prometheus-node-exporterIP: X.X.X.X🖥️ prometheus실행: prometheus, prometheus-node-exporter🖥️ grafana실행: grafana-server접속 주소: http://X.X.X.X:3000대시보드 ID: 12062⚙️ CPU/RAM 설정 변경🧠 CPU: 1 → 4 Core💾 RAM..
Database 3일차
·
Database
📌 01. 트랜잭션 개념🧾 트랜잭션: 여러 작업을 하나의 논리적 단위로 묶은 것🔗 예: 회원가입 시 → 회원 정보 저장 + 포인트 지급 + 메시지 전송🔄 02. 트랜잭션 4대 원칙 (ACID)⚛️ Atomicity(원자성): 모두 성공 or 모두 실패📏 Consistency(일관성): 트랜잭션 전후, DB 상태는 일관🔒 Isolation(고립성): 트랜잭션은 서로 간섭 없이 독립적💾 Durability(지속성): 트랜잭션 결과는 영구 반영💥 문제 상황 예시java복사편집//1. 회원 저장//2. 포인트 지급 ← ❌ 오류 발생!//3. 메시지 전송😱 → 회원은 저장됐지만, 포인트는 없음!🧩 데이터 불일치 발생✅ @Transactional 사용 시java복사편집@Transactionalpu..
Database 2일차
·
Database
1️⃣ DB 서버 설치🧩 apt update🧩 apt install -y mariadb-server2️⃣ MariaDB 설정 변경 (전체 IP 허용)🛠 vi /etc/mysql/mariadb.conf.d/50-server.cnf📝 27번 줄 수정 →bind-address = 0.0.0.03️⃣ MariaDB 재시작🔄 systemctl restart mariadb4️⃣ 실행 상태 및 포트 확인🔍 systemctl status mariadb🔍 apt install -y net-tools🔍 netstat -anlp | grep :3306✅ 3306 포트가 열려 있어야 접속 가능5️⃣ 보안 설정 (root 계정 초기화)🔐 mysql_secure_installation입력 순서:엔터 → n → Y..
Database 1일차
·
Database
📌 1. 레플리케이션 (Replication)같은 데이터를 여러 서버에 복제해서 저장하는 것목적: 장애 발생 시에도 데이터를 잃지 않고 빠르게 복구구조: 보통 Master(Primary) → Slave(Secondary) 구조예시: MySQL Replication, MongoDB Replica Set장점:읽기 성능 향상 (Slave에서 읽기 처리 가능)장애 복구 가능 (Master가 다운되어도 Slave가 대체 가능)📌 2. 클러스터링 (Clustering)여러 서버를 하나의 시스템처럼 묶어 데이터베이스 서비스를 제공하는 것목적: 고가용성(HA), 로드밸런싱종류:Active-Active: 모든 노드가 동시에 동작Active-Passive: 하나는 동작, 나머지는 대기예시: Oracle RAC, Kub..