-
CS : DB : 인덱스, 리플리케이션, 클러스터링Computer Science/DB 2021. 4. 1. 19:01728x90
Index (인덱스)
- 인덱스 : 테이블의 동작 속도를 높여주는 자료 구조
- 테이블 내의 1개 이상의 컬럼을 이용하여 인덱스를 생성할 수 있다.
- 사용 이유
- WHERE절과 일치하는 열을 찾기 위해
- join 시, 다른 테이블의 열을 추출하기 위해
- min(), max() 값을 찾기 위해
- 데이터 열을 참조하지 않는 상태로 값을 추출하기 위해서 쿼리를 최적화 하기 위해
- DELETE, UPDATE 연산이 빈번하다면, 인덱스는 비효율적일 수 있다.
- 위의 연산은 기존의 인덱스를 삭제하는 것이 아니라, '사용하지 않음' 처리하기 때문이다.
- 인덱스의 자료구조
- 해시 테이블
- Key와 Value로 데이터를 저장하는 자료구조
- O(1)로써 매우 빠르다.
- '=' 연산에 특화되어 있기 때문에, '<', '>' 연산과 같은 연속적 데이터를 위한 순차 검색이 불가능하다.
- B-Tree 구조
- B-Tree 구조의 개선형으로, 리프노드를 linkedlist로 연결하여 순차 검색이 가능하다.
- O(log2n)으로써, 해시 테이블보다는 느리지만, 더 많이 사용된다.
- 해시 테이블
Replication VS Clustering (리플리케이션 vs 클러스터링)
- 리플리케이션
- 여러 개의 DB를 권한에 따라 수직적인 구조로 구축하는 방식이다.
- 여기서 수직적 구조란, 'Master - Slave' 구조이다.
- 데이터 무결성 검사를 하지 않는 '비동기방식'으로 데이터를 동기화 한다.
- 장점 : 비동기방식으로 동기화 되어 지연이 거의 없다.
- 단점 : 노드들 간 데이터 무결성을 보장할 수 없다.
- 클러스터링
- 여러 개의 DB를 수평적인 구조로 구축하는 방식이다.
- Single Point of Failure와 같은 문제를 해결할 수 있는 'Fail Over'한 시스템을 구축하는 방식이다.
- '동기방식'으로 노드들 간 데이터를 동기화 한다.
- 장점 : 무결성을 보장할 수 있다.
- 단점 : 동기화로 인한 시간때문에, 리플리케이션에 비해, 쓰기 성능이 떨어진다.
728x90'Computer Science > DB' 카테고리의 다른 글
CS : DB : RDBMS vs NoSQL (0) 2021.04.20 CS : DB : Block vs Non-Block, Sync vs Async (0) 2021.04.13 CS : DB : paging, no offset, covering index (0) 2021.04.13 CS : DB : 트랜잭션과 격리 수준 (0) 2021.04.13 Question : DB (0) 2021.04.06