CS_면접대비_DB

아이작·2022년 1월 11일
0

CS 공부

목록 보기
5/10

Database

트랜잭션이란?

"하나의 작업을 수행하기위한 데이터베이스의 연산을 모아놓은 것"

더 이상 쪼갤 수 없는 논리적 작업 실행 단위.

특징: ACID

1. atomicity: 원자성. 더 이상 쪼갤 수 없는 최소 단위로서, 작업이 도중에 오류가 발생하면, 전부다 원상태로 복구해야 한다. 
	즉, 모 아니면 도 /  100퍼 완성, 혹은 0 퍼 완성 
    
2. consistency: 일관성. 작업 실행 이전과 이후의 데이터간의 관계는 일관되어야 한다. 
3. isolation: 고립성. 각각의 실행 작업 단위는 독립적이고 고립되어야 한다. 
4. durability: 지속성. 작업 실행의 결과는 이후 영구적으로 저장되어야 한다. 

트랜잭션의 연산:

commit: 트랜잭션이 완료되면, 그때 결과를 db에 반영하고 commit 신호를 날린다.
rollback: 트랜잭션 연산이 실패했음을 선언, 초기상태로 되돌아간다.

트랜잭션의 상태

  1. active -- 현재 실행중
  2. failed -- 트랜잭션 오류로 인한 중단된 상태
  3. commited-- 트랜잭션 완료/성공
  4. paritially commited -- 트랜잭션 완료하고, 아직 커밋을 날리기 전 상태
  5. aborted -- 비정상적으로 실행된 트랜잭션을 종료하고, rollback 연산을 수행한 상태

index

인덱스란? RDBMS 에서 데이터의 select 연산을 조금 더 빨리 처리하기 위한 방법.

1. clustered index          특정 칼럼 자체를 기준으로, 테이블의 entity를 직접 정렬한 것. 직접 참조 
2. non-clustered index      테이블의 entity를 직접 정렬한 것이 아닌, 정렬된 별도의 인덱스 테이블을 생성. ---> 메모리 낭비 

인덱스의 장단점

장점: 조회에 있어서 매우 빠른 성능. 
단점: insert, update, delete 연산이 자주 발생하는 경우 --> 매 연산마다 재정렬 작업이 추가로 들어, 매우 큰 연산 부담. 

인덱스 구현

B+트리 자료구조를 이용.
왜 트리를 이용하는가? 해시테이블이 아닌?
해시테이블은 데이터의 순서를 알 수 없다. 이 때문에 부등호 연산을 논리적으로 수행할 수 없기에 트리 구조를 이용해야 한다.

** B 트리 자료구조 --> 심화 학습. 꼬리 질문 가능성

b 트리란? balanced tree 라는 가설,,,  

이진탐색트리가 균형이 무너질경우 최악의 성능을 내는 것에서 개선하여, 균형을 이루는 탐색트리를 만든 것! 

이진탐색트리와 달리 하나의 노드에 여러 값이 들어갈 수 있고---> 배열로 구성된다.(따라서 포인터 접근을 사용하는 red-black tree보다 빠르다),  노드에 들어간 값의 개수+1 만큼 자식 노드를 갖는다. 

노드에 들어갈 수 있는 데이터의 개수가 최소~최대 정해져있다. 최대가 m이라면, m 차 b 트리라 부른다. 이때 최소값은 m/2 이다. 

*** B+ 트리는?

B 트리가 각각의 노드에 데이터 값이 있다면, B+ 트리는 리프노드에만 키와 값이 몰려있는 트리. 
리프노드가 링크드 리스트로 연결된다. 따라서, 리프노드에서 바로 옆의 리프노드로 선형적 이동 가능.(B 트리는 루트까지 올라가야한다) 

0개의 댓글