CS/DB(10)
-
RDB와 NoSQL의 차이
RDB와 NoSQL의 차이 RDB 특징 기존의 테이블에 컬럼을 변경하고자 할 경우, 스키마를 변경해야줘야한다. 이미 기존에 대용량의 데이터가 저장된 경우에 스키마를 변경한다면, 상당히 위험 부담이 크다. → 유연한 확장성이 부족하다. 중복 제거를 위해 정규화를 진행함으로써, 데이터 중복을 최소화할 수 있지만, join을 함으로써 응답시간이 길어진다. → 복잡한 join은 Read성능을 하락시킨다. RDB는 기본적으로 한대의 컴퓨터에 저장한다. Read/Write요청이 매우 많아진다면, 기존 RDB를 저장한 서버는 부하가 많이 발생한다. 위 경우, scale up을 통해 DB 성능을 향상시킨다. (컴퓨터 자체를 성능 좋은 컴퓨터로 바꾼다는 의미임.) 혹은, 컴퓨터를 여러대 둔다.(scale-out) 그러나..
2024.02.23 -
인덱스 동작 방식과 clustered Index vs non-clustered Index (MYSQL기준)
인덱스란?인덱스는 DB에서 데이터를 조회할 때 결과를 빠르게 추출하도록 도와주는 ‘데이터베이스 개체’이다. 마치 사전의 ‘찾아보기’와 같은 역할을 한다고 생각하면 된다.장점적절한 인덱스를 생성하고 조회하면 조회 성능을 획기적으로 개선할 수 있다.단점인덱스는 대략 테이블 크기의 10%공간이 추가로 필요 (인덱스 페이지 때문)SELECT가 아닌 데이터의 변경작업(INSERT, UPDATE, DELETE)이 자주 일어나면 성능에 악영향→ 페이지 분할 작업 때문인덱스 종류인덱스의 종류는 크게 클러스터형 인덱스와 보조 인덱스로 나뉜다.클러스터형 인덱스 (Clustered Index)테이블당 1개만 존재할 수 있다.기본키로 지정된 컬럼은 자동으로 클러스터링 인덱스가 생성된다.실제 저장된 데이터와 같은 무리의 페이지..
2024.02.21 -
인덱스로 BTree계열이 자주 사용되는 이유
인덱스로 BTree계열이 자주 사용되는 이유 BTree, AVL Tree, Red-Black-Tree 시간복잡도 BTree Binary Search Tree(BST)를 일반화한 트리 Self-Balancing BST BST중에서 한쪽으로 치우치는 것이 있는데, 이를 보완하기 위해 스스로 규형을 잡는 트리인 AVL트리, RedBlackTree가 있다. 세개 모두 시간복잡도가 O(logN)인데 왜 굳이 BTree를 DB INDEX로 자주 쓰일까? 위를 이해하기 앞서, computer system을 이해할 필요가 있다. computer system computer system에는 총 3가지로 나눠서 설명할 수 있다. cpu 프로그램 코드가 실제로 실행되는 곳 main memory(RAM) 실행 중인 프로그램의..
2024.02.02 -
DB Index(MySQL기반)
DB Index(MySQL기반) 위 그림에서 보다시피, 인덱스를 사용하지 않는다면, first_name이 "Minsoo"인 사람들을 full scan하여서 결과값을 추출해야한다. first_name에 index가 걸려있었다면? full scan이 아닌 O(logN) (B-tree based index)의 시간이 소요될 수 있다. 즉, B-tree기반의 인덱스라면 O(logN)의 시간이 소요될 수 있다. 따라서, index를 사용하는 이유를 아래와 같이 정의할 수 있다. Index를 쓰는 이유 조건을 만족하는 튜플들을 빠르게 조회하기 위해! 위 그림은, index에 대한 쿼리문을 작성한 것이다. 첫번째 쿼리문은, name attribute가 중복을 허용하기때문에 UNIQUE INDEX가 아닌 INDEX키워..
2024.01.19