데이터베이스

    [DB] Transaction 트랜잭션

    [DB] Transaction 트랜잭션

    트랜잭션(Transaction)이란? 트랜잭션이란 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용하는 단위이다. 즉, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. 💡 데이터베이스의 상태 변화 질의어(SQL)를 이용하여 데이터베이스에 접근하는 것 ex) SELECT, INSERT, DELETE, UPDATE 등 트랜잭션 특징 ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 트랜잭션의 특징을 말한다. 원자성(Atomicity) All or Nothing 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다. 일관성(Consistency) 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다. 독립성(Isolation) 둘 이상의 트랜잭션이 동..

    [DB] Index & B-Tree

    [DB] Index & B-Tree

    데이터베이스 인덱스는 왜 B -Tree 자료 구조를 선택하였는가? 해당 이유를 확인하기 전에 우선 인덱스에 대해 알아보자. 인덱스란 DB 내 저장된 데이터의 '주소'를 갖고 있는 것이다. 대용량 데이터를 담고 있는 데이터베이스에서 필요한 데이터를 빨리 찾으려면 인덱스가 필요하다. 인덱스는 DB 데이터 조회 성능 향상을 위해 사용된다. 만약 인덱스가 없으면 특정 값을 찾기 위해 모든 데이터 페이지를 확인하는 TABLE SCAN이 발생한다. TABLE SCAN : 테이블에 읽는 모든 레코드를 순차적으로 읽는 것 Index 장단점 1. 장점 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다. 전반적인 시스템의 부하를 줄일 수 있다. 2. 단점 인덱스를 관리하기 위해 DB의 추가 저장 공간이 필요하다..

    [DB] SQL vs NoSQL

    [DB] SQL vs NoSQL

    SQL vs NoSQL SQL은 '구조화된 쿼리언어(Structured Query Language'의 약자이다. 그러므로 SQL은 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호 작용하는데 사용하는 쿼리 언어다. 반면, NoSQL은 관계형 데이터베이스의 한계점을 해결하기 위해 등장한 새로운 데이터베이스로, 기본적으로 SQL과 반대되는 접근 방식을 따르기 때문에 NoSQL이라고 이름 지어졌다. SQL 1. 특징 SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다. 이러한 관계형 데이터베이스의 데이터는 정해진 데이터 스키마를 따라 데이터베이스 테이블에 저장되며, 관계를 통해 연결된 여러 개의 테이블에 데이터가 분산되는 ..

    [DB] SQL Injection

    [DB] SQL Injection

    SQL Injection SQL 인젝션이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적으로 동작을 하도록 조작하는 행위이다. 인젝션 공격은 비교적 쉬운 편이지만, OWASP Top10 중 첫 번째에 속해 있으며 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격이다. 공격 방법 1. Error based SQL Injection 논리적 에러를 이용한 SQL Injection SELECT * FROM Users WHERE id = 'INPUT1' AND password = 'INPUT2'; SELECT * FROM Users WHERE id = '' OR 1=1 -- ' AND password = 'INPUT2' > 과정 싱글쿼터를 닫아주기 ..

    [DB] 조인(JOIN) 정리

    [DB] 조인(JOIN) 정리

    조인 ( JOIN ) 두 개 이상의 테이블을 결합하여 데이터를 검색하는 방법이다. 자신이 검색하고 싶은 데이터가 한 개의 테이블이 아니라 여러 개의 테이블에 나누어져 있다면 각 테이블 컬럼을 한 개씩 가져와서 그 컬럼을 접점으로 이용하여 여러 테이블에 나누어져 있는데 데이터를 한번에 검색한다. 조인은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능이다. 유형은 크게 아래와 같다. 논리적 조인 : 사용자 SQL문에 표현되는 테이블 결합 방식 물리적 조인 : 데이터베이스 옵티마이저에 의해 내부적으로 발생하는 테이블 결합 방식 [ 논리적 조인 ] - 내부 조인(Inner Join) : 공통 존재 컬럼의 값이 같은 경우를 추출 - 외부조인(Outer Join) : Left Outer Join, Ri..

    [DB] 키(KEY) 정리

    [DB] 키(KEY) 정리

    키(KEY) 키는 DB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성을 말한다. 무엇인가를 유일하게 식별한다는 의미가 있으며, 키의 종류로는 슈퍼키, 후보키, 기본키, 대체키, 외래키가 있다. [ 유일성 ] - 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질 - 여러 개의 튜플이 존재할 때 각각의 튜플을 서로 구분할 수 있어야한다. 즉, 각각의 튜플은 유일해야 한다. [ 최소성 ] - 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질 - 키를 구성하는 속성들이 각 튜플을 구분하는데 곡 필요한 속성들로 구성되어 있는가? 슈퍼키 (Super Key) [유일성 O, 최소성 X] 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집..