TIL/TIL

[CS] 데이터베이스 관련

JoJobum 2022. 9. 25.

데이터베이스에서 인덱스를 사용하는 이유 및 장단점

검색 성능을 향상시키기 위해 사용 

=> 별도의 메모리 공간에 인덱스가 된 컬럼들을 기준으로 정렬하여 저장함

=> 이미 정렬되어 있기 때문에 특정 조건 검색시 풀 스캔이 아닌 방법으로 더 빠르게 찾을 수 있음, 정렬 필요 없음

 

인덱스를 사용하는 단점으로는 

인덱스를 구성하는 비용 발생

정렬 상태를 유지하기 위한 비용 발생 즉, CRUD시 인덱스를 형성하기 위한 추가적인 연산이 수행됨

 

인덱스를 사용하는 것이 효율적이기 위해서는 쿼리가 index를 사용하는지, Cardinality, Selectivity 같은 요소들이 고려된 인덱스가 생성되어야 함

 

 

트랜잭션(Transaction)

데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위

1개의 트랜잭션에서 여러개의 연산 수행될 수 있음, But 하나의 작업 단위이기에 모두 성공해야 결과를 적용하고 1개의 연산이라도 실패하면 모두 실패 처리한다.

 

ACID

ACID는 트랜잭션의 안정성을 보장하기 위한 성질

  • Atomicity(원자성): 한 트랜잭션의 연산들이 모두 성공해야 성공이고, 하나라도 실패시 전부 실패하는 성질
  • Consistence(일관성): 트랜잭션 이전과 이후의 데이터베이스 상태가 유효해야한다는 것 
  • Isolation(고립성): 모든 트랜잭션은 다른 트랙잭션과 독립적이여야 한다
  • Durability(내구성): 하나의 트랙잭션이 성공적으로 수행되었다면 로그가 남아야한다, 만약 런타임 오류나 시스템 오류나도 기록은 영구적이여야 함

 

트랙잭션 격리 수준

 

고립도와 성능의 Trade-off 관계

  • READ UNCOMMITED: 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있음
  • READ COMMITED: 다른 트랜잭션에서 커밋된 내용만 참조할 수 있음
  • REPEATABLE READ: 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있음
  • SERIALIZABLE: 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 한다 (성능 매우 떨어짐)

 

정규화

정규화는 데이터의 중복방지, 무결성을 충족시키기 위해 데이터베이스를 설계하는 것

 

Join 연산

2개 이상의 테이블들을 연결 또는 결합해서 데이터 출력

일반적으로 PK나 FK 값으로 연결하여 Join, 이런 관계 없어도 논리적인 값들의 연결로 성립 가능하기도 함

 

RDBMS vs NOSQL 

RDBMS는 데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스

SQL를 사용하여 데이터의 CRUD 수행, 데이터를 효율적으로 보관하는 것이 목적, 구조화가 중요

=> 명확한 데이터 구조 보장, 중복 회피 가능

 

NOSQL은 RDBMS에 비해 자유로운 형태로 데이터를 저장. 수평확장할 수 있고, 분산처리 지원함.

여러 형태 존재 ex) key-value store, bigtable, document db, graph db...

 

상호 보완적 관계

 

Reids

Redis는 key-value store NOSQL DB, 싱글 쓰레드로 동작, 자료구조 지원다양한 용도로 사용될 수 있게 다양한 기능 제공 데이터의 스냅샷 혹은 AOF 로그를 통해 복구가 가능해 어느정도의 영속성도 보장

 

*스냅샷: 특정 시점에 스토리지의 파일 시스템을 포착해 보관하는 기술

*AOF 로그: Append Only File, 명령이 실행될 때마다 해당 명령을 파일에 기록 

 

Elastic Search

자바로 개발된 오픈소스 검색엔진, 보통 ELK 스택(Logstash, Kibana, Beats)를 추가적으로 사용Inverted Index 구조로 데이터를 저장하여, 전문 검색시에 RDBMS 보다 뛰어난 성능 보장이외로도 데이터 저장, 문서 검색, 위치 검색, 로그 분석... 등 다양한 용도로 사용 가능

 

Elastic Search의 인덱스 구조와 RDBMS의 인덱스 구조의 차이

 

Elastic Search는 Inverted-Index 구조, 특정 단어가 출현하는 doc을 저장

RDBMS 는 B-Tree or B-Tree와 비슷한 구조, 데이터가 어디 존재하는지 어떤 순서로 저장하는지 저장

 

MongoDB

 

 

CAP 이론, Eventual Consistency

CAP 이론은 분산 환경에서 아래의 C,A,P 모두를 만족하는 시스템은 없다 라는 이론

  • Consistency: 모든 노드가 같은 시간에 같은 데이터를 보여줘야 한다
  • Availability: 모든 동작에 대한 응답이 리턴되어야 한다
  • Partition Tolerance: 시스템 일부가 네트워크에서 연결이 끊기더라도 동작해야 한다

 

Eventual Consistency는 Consistency를 완전히 보장해주지 못하지만 결과적으로 언젠가는 보장됨을 의미

 

참고자료 

ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) (github.com)

 

GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질

백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문,

github.com

+ 구글링 기타 자료들...

반응형

댓글