목록DB (20)
쏭의 개발 블로그

1. SQL Injection이란? 공격자가 악의적인 의도를 갖는 SQL구문을 삽입하여 데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격 기법 웹 애플리케이션이 백엔드에서 구동 중인 데이터베이스에 질의를 하는 과정에서 사용되는 SQL 쿼리를 조작하여 데이터베이스를 대상으로 공격자가 의도한 악의적인 행위를 할 수 있는 injection 기반의 웹 취약 1) 대표적인 공격 방법 (1) Error based SQL injection - 논리적 에러를 이용한 SQL injection 싱글 쿼드(’), 세미콜론(;)과 같이 SQL 문법 오류를 유발하는 특수문자를 사용하고 오류메세지를 통해 데이터베이스 정보를 유출하거나 의도치 않은 결과를 실행시킬 수 있는 공격 설명 더보기 입력값에 대한 검증이 없음을 확인, ..
1. Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS) in-memory로 cache 방식으로 빠르게 원하는 데이터를 가져올 수 있는 방식의 DB in-memory 방식 데이터를 디스크에 저장하는 것이 아닌 RAM에 저장하는 방식 (장점) 디스크 스캐닝이 필요없어 매우 빠름 (단점) RAM : 휘발성 → 백업 과정이 존재 캐싱이 가능 → 실시간 채팅에 적합하며 세션공유를 위해 세션 클러스터링에도 활용됨 데이터 타입 문자열 (text, binary data) 가장 일반적인 key-value 구조의 형태 집합 (String 집합) 여러개의 값을 하나의 value에 넣을 수 있음 정렬된 집합(sorted set) 빠르게..

1. 트랜잭션 고립 수준(Transaction Isolation Level)? 트랜잭션들끼리 일관성 있는 데이터를 얼마나 허용할 것인지 정해놓은 수준 트랜잭션 수행 중 다른 트랜잭션이 해당 데이터를 조회하는 것이 가능한 정도를 결정해 놓은 것 고립수준이 높을수록 일관성 보장 but 동시성 떨어져 성능이 하락 2. 트랜잭션 고립 수준의 종류 1) Read uncommitted (Level 0) 각 트랜잭션에서의 변경 내용이 COMMIT이나 ROLLBACK 여부에 상관없이 다른 트랜잭션에서 값을 읽을 수 있다. 일관성 유지 어려움 동시성은 향상 Dirty Read, Non-Repeatable Read, Phantom Read 발생 2) Read committed (Level 1) 트랜잭션수행이 완료되고 co..

1. 트랜잭션이란 데이터베이스의 상태를 변경시키기위해 수행하는 작업 단위 💡 데이터베이스 상태 변경 = SELECT, UPDATE, INSERT, DELETE와 같은 행동 작업단위 : 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 DB 작업 A의 계좌에서 만원 차감 - UPDATE B의 계좌에 만원 추가 - UPDATE 현재 작업 단위 : 출금 UPDATE + 입금 UPDATE ⇒ 하나의 트랜잭션 A가 B에게 만원을 송금하는 상황 특징 데이터베이스 시스템에서 병행 제어 및 회복 작업이 처리되는 작업의 논리적 단위 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위 하나의 트랜잭션은 Commit되거나 Rollback 2. 트랜잭션의 특징 원자성 (Acid..
TCL(Transaction Control Language) 트랜잭션을 제어하는 명령어 1. ROLLBACK 보류중인 모든 데이터 변경사항을 폐기. 현재 트랜잭션 종료 직전 commit 직후 단계로 회귀 2. COMMIT 보류중인 모든 데이터 변경사항을 영구적으로 적용. 현재 트랜잭션 종료 3. SAVEPOINT rollback할 포인트 지정 단계별 특징 1. COMMIT전/ROLLBACK전 이전 데이터 상태 복구(ROLLBACK)가능 현재 사용자 : SELECT - FROM으로 DML 작업 결과 확인 가능 다른 사용자 : COMMIT 전 DML 작업결과 확인 불가 행 잠금 : 다른 사용자가 영향을 받는 행의 데이터 변경 불가 2. COMMIT 후 보류 중인 변경사항들을 확정, 영구적용 → DB에 저장 ..
1. DDL CREATE CREATE TABLE EMPLOYEE{ NAME VARCHAR(15) NOT NULL, SSN CHAR(9) NOT NULL, SUPER_SSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY(SSN) ); CREATE TABLE DEPARTMENT( DNAME VARCHAR(15) NOT NULL, DNUMBER INT NOT NULL, MGR_SSN CHAR(9) NOT NULL, PRIMARY KEY(DNUMBER), UNIQUE(DNAME) ) CREATE TABLE DEPT_LOCATION( DNUMBER INT NOT NULL, DLOCATION VARCHAR(15) NOT NULL, PRIMARY KEY(DNUMBER,DLOCATION), FO..

1. 정규화(Normalization) 관계형 데이터베이스의 설계에서 데이터 중복을 최소화 하기 위해 데이터를 구조화하는 프로세스 목표 중복 최소화 (minimize redundancy) 무결성을 유지, 이상현상(anomaly)를 방지 이상현상(anomaly) 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용 종료 삽입 이상(insert anomaly) : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입 갱신 이상(update anomaly) : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 삭제 이상(delete anomaly) : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 정규화의..

이상현상이란? 불필요한 데이터 중복으로 인해 릴레이션에 대해 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용 1. 삽입 이상 (Insert Anomaly) 새로운 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입 {학번, 강의번호} : Primary Key 수강하는 학생이 없는 강의 COMP963 삽입 → 학번이 null → primary key는 null이 될 수 없으므로 테이블에 추가 불가능 강의를 수강하지 않는 학생 2021555555 를 삽입 → 강의번호가 null → primary key는 null이 될 수 없으므로 테이블에 추가 불가능 2. 갱신 이상 (Update Anomaly) 중복 튜플 중 일부만 변경하여 데이터가 불일치하게되는 모순의 문제 김철수 학생(2018111..