Computer Science/DB
-
CS : DB : 트랜잭션과 격리 수준Computer Science/DB 2021. 4. 13. 18:46
Transaction (트랜잭션) 여러 작업들을 하나로 묶은 단위이다. 때문에, 하나로 묶인 여러 작업들은 모두 실행 되거나, 모두 실행 되지 않거나 둘 중 하나이다. 트랜잭션의 성질 (A) atomicity : 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않음을 보장한다. (C) consistency : int 타입 컬럼에 string 타입이 저장되지 않도록 보장한다. (I) isolation : 트랜잭션 수행 중에는 다른 트랜잭션이 끼어들지 않도록 보장한다. (D) durablility : 성공적으로 수행된 트랜잭션은 영원히 반영됨을 보장한다. 트랜잭션의 병행 처리 시 문제점 갱신 내용 손실 현황 파악 오류 모순성 연쇄 복귀 : 두 트랜잭션이 하나의 레코드를 갱신할 때, 하나의 트랜잭션이 롤백하면..
-
Question : DBComputer Science/DB 2021. 4. 6. 16:56
partitioning과 sharding을 비교해주세요. 1. 대용량 데이터를 다룰 경우, 하나의 DB에 모두 저장한다면 제대로 된 응답성을 기대하기는 어렵다. 때문에, Master-Slave 구조를 활용하여 DB 부하를 분산하는 방법을 떠올리게 된다. Master-Slave 구조는 read 연산의 경우 부하를 줄일 수 있지만, write 연산의 경우 그렇지 못하다. 따라서, 여러 개의 DB에 동일한 데이터를 저장하는 것이 아닌, 전체 데이터를 분할하여 저장하도록 구성하는 방법을 떠올릴 수 있고, 이러한 기법을 partitioning이라고 한다. 2. partitioning은 '단편화', '분할'이라고 해석되고, 방식에 따라 '수평 단편화', '수직 단편화'로 구분된다. 3. 수평 단편화는, 말 그대로 ..
-
CS : DB : 인덱스, 리플리케이션, 클러스터링Computer Science/DB 2021. 4. 1. 19:01
Index (인덱스) 인덱스 : 테이블의 동작 속도를 높여주는 자료 구조 테이블 내의 1개 이상의 컬럼을 이용하여 인덱스를 생성할 수 있다. 사용 이유 WHERE절과 일치하는 열을 찾기 위해 join 시, 다른 테이블의 열을 추출하기 위해 min(), max() 값을 찾기 위해 데이터 열을 참조하지 않는 상태로 값을 추출하기 위해서 쿼리를 최적화 하기 위해 DELETE, UPDATE 연산이 빈번하다면, 인덱스는 비효율적일 수 있다. 위의 연산은 기존의 인덱스를 삭제하는 것이 아니라, '사용하지 않음' 처리하기 때문이다. 인덱스의 자료구조 해시 테이블 Key와 Value로 데이터를 저장하는 자료구조 O(1)로써 매우 빠르다. '=' 연산에 특화되어 있기 때문에, '' 연산과 같은 연속적 데이터를 위한 순차..