We will find a way, we always have.

-interstellar

Computer Science/데이터 베이스 7

[DB] Flyway

Flyway Flyway란 오픈소스 데이터베이스 마이그레이션 툴이다. 다시말해 데이터베이스의 DDL 이력을 쌓아서 관리하는 툴이다. 이를 통해 데이터베이스 형상관리 및 마이그레이션을 할 수 있다. 사용 이유 개발을 진행하다보면 엔티티의 구조가 변경되고 이로 인해 데이터베이스의 스키마도 변경되는 일이 발생한다. 소프트웨어 소스 코드는 Git과 같은 형상관리 툴을 사용하여 버전관리를 진행했다면, 데이터베이스는 그러지 못했다. 일일히 스키마 수정을 위한 DDL을 각 환경별로 모두 실행해주어야 했다. 로컬 개발 환경이나 개발 서버에서는 하이버네이트 설정 중 ddl-auto 에서 create나 create-drop, update 옵션을 사용하여 엔티티 구조를 맞춰 실행이 가능하나, 운영 환경에서는 해당 설정이 불..

[DB] SQL Injection

SQL Injection SQL 인젝션은 악의적인 사용자가 보안상의 취약점을 이용하여, 조작된 쿼리문을 DB에 그대로 전달하여 비정상적 명령을 실행시키는 공격 기법이다. 공격 목적 정보 유출 저장된 데이터 유출 및 조작 원격 코드 실행 일부 데이터베이스의 경우 확장 프로시저를 이용하여 원격으로 시스템 명령의 실행 가능 시스템 명령의 실행은 원격 자원 접근 및 데이터 유출, 삭제 가능 인증 우회 공격의 대표적인 경우는 로그인 폼에서 발생 이때 상위 권한을 가진 사용자의 권한으로 인증 절차를 우회하여 로그인 발생 조건 사용자 입력값의 신뢰성 부족 사용자로부터 입력 받은 값(폼 데이터, URL 파라미터)을 적절히 검증 또는 이스케이프하지 않은 경우 발생 동적 SQL 쿼리 생성 동적으로 SQL 쿼리를 생성하고 ..

[DB] 스키마 (Schema)

스키마 (Schema) 스키마는 데이터베이스의 구조와 제약 조건에 관하여 전반적인 명세를 기술한 메타데이터의 집합이다. 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 뿐만 아니라 데이터들의 제약 조건까지 포함되어 있다. 속성의 데이터 타입을 나타내지는 않는다. 스키마는 시간에 따라 불변인 특징을 가지고 있다. 스키마의 3계층 스키마는 사용자의 관점에 따라 3계층으로 나뉜다. 외부 스키마 (View Schema) 사용자 관점에서의 논리적인 구조이다. 사용자와 데이터베이스 간의 상호 작용을 정의할 수 있는 뷰 레벨이다. 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브스키마라고도 불린다. 때문에 하나 이상의 외부 스키마가 존재할 수 있으며 하나의 외부 스키..

[DB] 트랜잭션

트랜잭션 이해 트랜잭션 - 개념 이해 트랜잭션은 데이터베이스의 작업 단위이다. ACID 트랜잭션이 안전하게 수행된다는 것을 보장하기 위해서는 ACID가 만족해야 한다. Atomicity(원자성): 설정된 트랜잭션 범위 안의 내용들이 마치 하나의 작업처럼 모두 성공하거나 모두 실패해야 한다. Consistency(일관성): 모든 트랜잭션은 일관성 있는 DB 상태를 유지해야 한다. 트랜잭션은 DB에서 정한 무결성 제약 조건을 항상 만족해야 한다. Isolation(독립성): 여러 트랜잭션이 있을 때, 각각의 트랜잭션은 다른 트랜잭션의 연산에 끼어들지 못하고 독립적이다. Durability(영구성): 트랜잭션이 성공했다면 그 결과가 항상 기록되어야 한다. 문제가 발생하여도 DB 로그 등을 사용해서 성공한 트랜..

[DB] 뷰

뷰 (View) 물리적인 테이블을 근거한 논리적인 가상 테이블이다. 테이블에는 데이터가 있지만 뷰에는 데이터가 없고 SQL만 저장되어 있다. 조인문 사용의 최소화로 사용상의 편의성을 최대화 한다. 뷰 사용시 장단점 장점 논리적 데이터 독립성을 제공한다. 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원한다. 복잡하고 긴 쿼리문의 접근을 단순화시킨다. 접근 제어를 통한 자동 보안을 제공한다. 단점 독립적인 인덱스를 가질 수 없다. ALTER VIEW 문을 사용할 수 없다. 즉, 뷰의 정의를 변경할 수 없다. 뷰로 구성된 내용에 대한 삽입, 갱신, 연산에 제약이 따른다. 뷰 문법 뷰 정의문 --문법-- CREATE VIEW 뷰이름[(속성이름[,속성이름])]AS SELECT문; --고객 테..

[데이터베이스] 정규화 (이상현상, 함수적 종속성, 1NF, 2NF, 3NF, BCNF)

DB 정규화 (Normalization) 데이터 중복과 삽입, 수정, 이상 현상을 최소화하기 위해 일련의 정규형에 따라 관계형 DB를 구성하는 과정 제일 처음 초기 테이블이 있고 순차적으로 정규형을 만족시키도록 테이블 구조를 조정하는 과정 정규형(normal form, NF)이란 정규화 되기 위해 준수해야하는 규칙 1NF 부터 BCNF 까지는 함수적 종속성과 키(Key)만으로 정의되는 정규화 일반적으로 3NF까지 도달하면 정규화 성립 이상현상 (Anomaly) 이상현상이란 데이터 중복으로 인한 부작용을 말한다. 삽입 이상 (Insertion Anomaly): 데이터를 삽입하는데 불필요한 속성도 함께 추가해야하는 경우 기본키가 {Student_id, Course_id} 인 경우 Course를 수강하지 않는..