general
Snapshot
Snapshot Snapshot이란 특정 시점의 컴퓨터의 상태(데이터, 파일 시스템 등)를 사진 찍듯이 별도의 파일으로 저장하는 기술. 많은 데이터를 백업하려면 시간적 제약이 있거나 시스템을 중단해야 하므로 O(1)이 소요되는 스냅샷을 이용. 백업에 필요한 시간 및 공간은 데이터 양에 영향을 받지만, 스냅샷에 필요한 시간 및 공간은 데이터 양과 무관. 방식 Split mirror 기존 데이터를 통째로 다른 저장소에 복사하는 방식. (백업과 동일) 원본에 문제가 생겨도 복원 가능하지만 성능과 공간 효율이 낮음. 스냅샷의 이점이 없음. Copy on Write (COW) 스냅샷 생성 시 메타데이터만 만들고 원본과 데이터를 공유하는 방식.
read moregeneral
OLTP / OLAP
OLTP / OLAP OLTP Online Transaction Processing의 약자. 다수의 사용자가 요청하는 트랜잭션을 DB 서버에서 처리하고, 결과를 실시간으로 반환하는 과정. 최신 데이터를 유지 및 데이터 무결성 보장. OLAP Online Analytical Processing의 약자. DB에 저장된 데이터를 분석하고 정보를 제공하는 과정. 동일한 데이터를 여러 기준으로, 다차원적인 데이터 분석을 제공함으로 인해 의사 결정에 도움. OLTP와 OLAP 비교 구분 OLTP OLAP 목적 트랜잭션 실시간 처리 데이터 분석, 정보 제공 주 트랜잭션 CRUD 작업 조회 작업 응답 속도 ms 단위 초 ~ 분 단위 데이터 시점 실시간 데이터 과거 데이터 관리 단위 테이블 분석된 정보 최적화 방법 트랜잭션 최적화, 무결성 보장 조회 속도 증가 DB 기존 DBMS Data Warehouse AWS RDS / Aurora Redshift 설계 정규화 기반 ER 모델링 디멘션 모델링 References https://too612.
read moregeneral
Hash Join
Hash Join Hash Join 이란 키 값을 해싱해서 동일한 값에 대해 join을 수행하는 방법.
동작 방식 먼저 접근할 테이블 (선행 테이블, Build Input) 과 나중에 접근할 테이블 (후행 테이블, Probe Input)로 구분 선행 테이블에서 각 행에 접근해 조건에 맞는 행을 찾음. (Full scan) 해당 행들에서 조인 키 값에 hash를 적용해서 해시 테이블 생성. 후행 테이블에서 각 행에 접근해 조건에 맞는 행을 찾음. (Full scan) 해당 행들에서 조인 키 값에 해당하는 해시 테이블의 버킷을 찾음.
read moregeneral
Sort Merge Join
Sort Merge Join Sort Merge Join 이란 두 개의 테이블을 각각 접근하고 결과를 정렬해서 join을 수행하는 방법.
동작 방식 첫 번째 테이블에서 각 행에 접근해 조건에 맞는 행을 찾음. (Full scan) 해당 행에서 조인 키 값을 기준으로 행들을 정렬. 두 번째 테이블에서 각 행에 접근해 조건에 맞는 행을 찾음. (Full scan) 해당 행에서 조인 키 값을 기준으로 행들을 정렬. 정렬된 두 개의 행들을 이용해 조인 조건에 맞는 행들을 추출 버퍼에 넣음.
read moregeneral
NL Join
NL Join NL Join 이란 Nested Loop Join의 약자로, 두 개의 루프를 통해 join을 수행하는 방법.
동작 방식 먼저 접근할 테이블 (선행 테이블, Driving table) 과 나중에 접근할 테이블 (후행 테이블, Driven table)로 구분 선행 테이블의 각 행에 접근해 조건에 맞는 행을 찾음. (Full scan) 조건의 맞는 행에서 조인에 필요한 키 값이 후행 테이블에 존재하는 지 확인하기 위해 인덱스에 접근. 키 값이 인덱스에 존재한다면 해당 값에 대한 행을 후행 테이블에서 찾음.
read moregeneral
Data Storage Structure
Data Storage Structure DB의 데이터 저장 공간 DB에서 데이터를 저장하는 공간은, 다음과 같은 논리적 개념 요소들로 구성된다.
테이블 스페이스 ⊇ 세그먼트 ⊇ 익스텐트 ⊇ 블록 테이블 스페이스 DB는 한 개 이상의 테이블 스페이스로 구성됨. 데이터를 저장하는 공간이며, 여러 개의 세그먼트로 구성됨. 세그먼트 저장 공간이 필요한 DB 객체이며, 여러 개의 익스텐트로 구성됨. 파티션 구조가 아닌 경우에는 테이블, 인덱스 등이 그 자체로 하나의 세그먼트. 익스텐트 각 세그먼트에 할당된 공간이며, 연속된 블록들의 집합. 테이블스페이스로부터 추가로 할당받을 수 있기 때문에 확장 가능하다는 의미의 익스텐트라고 명명.
read moregeneral
DB Failure & Recovery
DB Failure & Recovery DB Failure DB 시스템이 제대로 동작하지 않는 상태. 다음과 같이 세 가지 유형 존재.
트랜잭션 장애: 트랜잭션 수행 중 오류가 발생한 경우. 시스템 장애: 하드웨어의 결함으로 인해 메인 메모리 정보가 손실돼 수행할 수 없는 경우. 미디어 장애: 디스크의 결함으로 인해 데이터베이스가 손상된 경우. DB Recovery DB에 장애가 발생한 경우 장애가 발생하기 전의 일관된 상태로 복구시키는 것. 미리 복사된 데이터 사본을 이용해 복구. 다음과 같은 연산들 존재.
read moregeneral
Two-phase Commit
Two-phase Commit Two-phase Commit 이란 분산 데이터베이스에서 여러 노드들 상에서 트랜잭션의 원자성을 달성하기 위한 프로토콜. 시스템 장애에도 트랜잭션을 수행 가능하기 때문에 많은 곳에서 사용됨. 마스터 노드 역할을 수행하는 코디네이터 존재. 이를 이용해 다른 여러 참가자 노드의 트랜잭션 관리. Algorithm 트랜잭션을 커밋하기 위해 다음과 같은 두 개의 단계를 수행.
Commit-request phase (voting) Commit phase (completion) Commit-request phase 코디네이터가 모든 참가자 노드에게 커밋 메시지에 대한 쿼리를 보내고 모든 응답을 받을 때 까지 대기.
read moregeneral
Two-phase Locking
Two-phase Locking Two-phase Locking 이란 DB 트랜잭션에서 동시성 제어를 수행하기 위한 방법, 2PL이라고도 함. Serializability를 보장함. Lock을 이용해 한 트랜잭션 동안 다른 트랜잭션의 데이터 접근을 막음. 이 때문에 deadlock 발생 가능. Data-access Lock DB에서 lock은 트랜잭션이 DB의 객체로부터 획득해야 하는 시스템 오브젝트. 사용 후에는 lock을 해제. 한 트랜잭션이 어떤 DB 객체에 대한 lock을 획득하면, 다른 트랜잭션이 해당 객체에 접근 시 접근 가능 여부를 체크해야함. 만약 다른 트랜잭션이 접근이 불가능하다고 확인되면, 해당 트랜잭션을 block 함.
read moregeneral
DB Normalization
DB Normalization Database Normalization 이란 관계형 데이터베이스를 데이터의 중복성을 줄이고 무결성을 높이기 수행. Noraml form이라는 일련의 형태로 데이터를 구조화하는 작업. Anomlay가 발생할 확률을 감소시킴. Anomaly 정규화가 진행되지 않은 테이블에서 삽입, 갱신, 삭제를 할 때 일어나는 부작용. 다음과 같이 세 가지 종류 존재.
Insertion Anomaly Update Anomaly Deletion Anomaly Insertion Anomaly 삽입될 때 모든 내용이 다 들어있지 않기 때문에 발생하는 문제. 학과, 학생으로 이루어진 테이블이 있을 때 학생이 없는 신설 학과를 생성하는 경우 고려.
read more