general
Join
Join Join 이란 여러 테이블(보통 2개)의 열들을 조합하여 새로운 테이블을 만드는 것. ANSI SQL은 다음과 같이 5가지의 join을 명시.
Cross join Inner join Left outer join Right outer join Full outer join 테이블 예시 다음 두 테이블을 이용해 설명.
Table A id a_name 1 a1 2 a2 NULL a0 Table B id b_name 1 b1 3 b3 NULL b0 Implicit vs Explicit join notation SQL에서는 조인을 표현하기 위해 다음과 같이 두 가지 방법을 사용.
read moregeneral
Transaction
Transaction Transaction이란 데이터베이스에 수행되는 작업의 논리적 단위. 다음과 같이 네 가지 속성을 가짐
Atomicity Consistency Isolation Durability Atomicity 트랜잭션은 하나의 단위로써 실행됨. 완전히 실행되어 DB에 반영되거나 아무것도 반영되지 않아야 함.
Consistency 트랜잭션은 DB의 불변성을 유지하면서 상태를 변화시킴. 트랜잭션 실행 결과는 모두 일관적으로 규칙을 따라야 함.
Isolation 완료되지 않은 트랜잭션의 결과는 다른 트랜잭션에서 볼 수 없음. 즉, 한 트랜잭션 중 다른 트랜잭션이 끼어들 수 없음.
다만 동시성 문제 때문에 완벽하게 보장하지는 않고 실제로는 완화됨.
read moregeneral
ER model
ER model Data modeling 주어진 개념으로부터 데이터 모델을 구성하는 작업
개념적 데이터 모델링: 데이터 간의 관계를 구상하는 단계. 논리적 데이터 모델링: 구체화된 데이터 모델을 만드는 단계. Key, 속성등을 표시하며 정규화 진행. 물리적 데이터 모델링: DB를 선택하고, 실제 테이블을 만들고 저장하는 단계. ER model이란 실제 세계의 정보들을 Entity, Attribute, Relation의 구조로 표현한 개념적 데이터 모델. ER diagram을 통해 구체화.
Entity 단독으로 존재하는 객체. 엔티티들의 집합을 entity type이라고 하며 ER diagram에서 네모로 표시.
read moregeneral
CAP Theorem
CAP Theorem CAP Theorem이란 분산 데이터 시스템이 다음과 같은 세 조건을 한 번에 만족하지 않는다는 정리.
Consistency Availability Partition tolerance Consistency 모든 읽기는 가장 최근에 기록된 내용 혹은 오류를 받음.
Availability 모든 요청은 오류가 없는 응답을 받지만, 가장 최근에 기록된 내용이라는 보장은 없음.
Partition tolerance 네트워크가 한 노드에서 다른 노드로 보낸 임의의 메시지를 잃어버리는 것(단절)을 허용. 단절을 해결하기 위해 network partition 사용.
Network Partition 네트워크의 오류로 인해 네트워크를 독립적인 서브넷으로 분리하는 것.
read moregeneral
DB Index-2
DB Index-2 DB Index-1
Multicolumn Index DB의 인덱스를 설정하는 경우 하나의 column이 아닌 여러 개의 column을 이용하는 것.
Column 순서 Multicolumn Index를 만들 때 작성된 column의 순서대로 만들어지게 됨. Where 조건문에 빈번하게 사용되는 column일 수록 만들 때 앞에 둬야 함.
동작 방식 만약 두 열 c1, c2에 대해 c1, c2 순으로 인덱스를 만든 경우, c1에 대한 인덱스에 먼저 접근됨. 각 인덱스는 c2에 대한 인덱스의 포인터를 가지고 있고, 해당 포인터로 c2에 접근해서 조회 가능.
read moregeneral
Sharding
Sharding Sharding 이란 DB의 데이터를 여러 개의 DB로 분리해 저장하는 것. 분리된 DB를 shard라고 한다. 분리하는 기준이 되는 키(컬럼)을 샤딩 키라고 함.
테이블의 행을 나누는 horizontal partitioning 방법과 동일하다고 볼 수 있다.
Partitioning 큰 테이블을 관리하기 쉬운 단위로 분리하는 것.
Vertical: 테이블의 열을 기준으로 나누는 것으로, 정규화된 데이터도 분리 가능. Horizontal: 테이블의 행을 기준으로 나누는 것으로, 각 테이블의 index와 데이터 갯수가 줄어듦. 방법 Modular sharding (Hash sharding) Range sharding (Dynamic sharding) Directory sharding Modular Sharding 샤딩 키를 해시(모듈러 연산)한 결과를 통해 shard를 특정하는 방식.
read moregeneral
Database
Database Database란 전자적으로 저장되는 데이터의 조직화된 집합. 데이테베이스를 관리하기 위해 DBMS를 사용.
Language DCL: 데이터 접근 제어 담당 DDL: 테이블 생성, 변경, 삭제 등 데이터 정의 담당 DML: 데이터 삽입, 삭제, 수정 등 담당 특징 데이터의 독립성 (물리적, 논리적): 프로그램에서 데이터를 신경쓰지 않아도 됨. 데이터의 무결성: 데이터의 유효성 검사를 통해 정확함 보장. 데이터의 보안성: 허가된 사용자만 데이터에 접근 가능. 데이터의 일관성: 논리적 구조를 통해 일부 데이터가 불일치하는 현상 방지. 데이터 중복 최소화 DBMS DBMS는 사용자가 데이터베이스를 정의하고 생성, 유지, 제어할 수 있는 SW 시스템.
read moregeneral
DB Index-1
DB Index-1 Index란 파일 혹은 테이블에서 탐색 속도를 증가시키기 위해 사용하는 보조 자료 구조.
특정 field (혹은 column)의 값들을 이용해서 만듦. Field 값이 key이고, 해당 record에 대한 포인터가 value인 key-value 형식.
Single level ordered index 인덱스를 key-value의 리스트 형태로 저장하는 방식. 어떤 field를 선택하냐에 따라 다음과 다른 방식들 존재.
Primary Index Index로 설정한 field의 값이 정렬되어 있고, 값이 모두 다른 경우 사용.
Clustering Index Index로 설정한 field의 값이 정렬되어 있지만, 중복된 값이 존재하는 경우 사용.
read moregeneral
In-memory DB
In-memory DB In-memory DB란 디스크를 사용하는 기존 DBMS와 달리 메모리에 데이터를 저장하는 DBMS. 디스크에 접근 시간이 오래 걸리기 때문에 디스크를 이용하는 것 보다 속도가 빠름.
Feature 지연 시간이 적음 저장 공간이 한정됨 임시 데이터에 적합 Durability 보장 X Durability RAM이 휘발성이기 때문에 데이터베이스의 durability가 보장되지 않음. 따라서 다음과 같은 방식으로 보강.
Snapshot: 특정 시간의 데이터를 디스크에 백업 Transaction Logging: 트랜잭션을 매 번 기록 Non-volatile RAM: 비 휘발성 RAM 사용 REDIS key-value 구조의 데이터를 다루는 NoSQL, in-memory DBMS.
read more