본문 바로가기

질문과 답변/DB

DB, Concurrency Control, Transaction (2)

MySQLWorkbench 나 DBeaver 같은 프로그램을 무엇이라고 부르는가?

더보기

DB Client로, DB 서버에 접속해 쿼리를 실행하고 데이터를 조회하거나 수정할 수 있는 도구이다.

 

관계형 데이터베이스는 어떤 특징을 갖고있는지 간단히 설명하라

더보기

2차원 행렬, 테이블로 구성되어있는 Fixed Schema를 가진 데이터 베이스이며

Table과 사이의 FK와 PK를 통한 관계가 형성되어있다.

 

고신뢰성, 데이터 무결성을 지향하며

이를 위해서 Guaranteed Consistency, 보장된 일관성을 위해 Isolation Level과 Transaction을 사용한다.

ACID 조건을 충족하는 Transaction을 지원한다.

 

비관계형 데이터베이스는 왜 등장하였는가?

더보기

빅데이터 시대에 빅데이터 특성에 따른 무한 확장 가능한 DB의 필요성때문에 등장하였다.

이에 따라 비관계형 데이터베이스는 확장성과 가용성을 중시하고

비정형성, 대용량 데이터 구조형태인 트리 구조 데이터를 갖는 DB이다.

 

고신뢰성 혹은 데이터 무결성의 정의는 무엇인지 간단히 설명하라

더보기

데이터 무결성이란 정의한 대로의 데이터가 현재 저장되어 있고,

모든 제약 사항에 깔끔하게 떨어지는 값들만이 존재하는 상태를 말한다.

다시 말해, 데이터가 유효하고 신뢰할 수 있는 상태임을 보장하는 개념이다.

 

Transaction 은 무엇인가, 간단한 사례도 함께 설명하라

더보기

Transaction이란 RDBMS에서 데이터 무결성을 보장하고

Operation의 독립성을 보장하기 위해 논리적인 작업 단위로 묶어서 처리하는 것을 말한다.

 

패키지 여행 예약 서비스와 같은 경우,

항공편, 기차표, 숙소를 예약한다고 할 때

숙소에서 transaction을 통해 예약 commit에 실패하고 rollback할 경우,

성공했던 모든 예약을 rollback해 취소하는 식으로 Transaction을 통해 일관성을 유지한다.

 

ACID 원칙은 무엇에 대한 원칙인가? 그리고 각각 ACID 요소에 대해 길지 않은 선에서 설명하라

더보기

ACID 원칙은 Transaction에 대한 원칙이다. Transaction은 ACID 요소를 만족해야 한다.

Atomic : 원자성, Transaction은 온전히 성공하거나 온전히 실패하는 두 가지의 경우만 존재해야 한다.

Consistency : 일관성, 제약조건을 만족하는 data가 유지되어야한다. 즉, 트랜잭션 전에도 무결한 상태이고

트랜잭션 후에도 무결한 상태가 되도록 유지되어야 하는 것을 말한다.

Isolation : 격리성, 모든 쿼리 당 트랜잭션은 독립되어야 한다. 적절한 isolation level을 설정할 수 있다.

Durability : 지속성, 어떠한 이슈에도 데이터는 지속적으로 존재해야 한다. (로그, 백업을 통한 보완)

 

BASE 원칙 각각 알파벳에 대해 길지 않은 선에서 설명하라

더보기

Basically Available : 기본적인 가용성, 분산 시스템의 특징으로, 부분 고장 시 나머지가 커버 할 수 있어야 한다.

Soft state : Eventual consistency : 최종적으로 일관적, 일부에선 최신 상태를 가지나 나머지 일부에서는 아닐 수 있음. 그러나 일정 시간 후에는 전체 분산 시스템이 동기화되어 일관성이 있는 상태가 되는 성질.

 

비관계형 데이터베이스 종류를 아는 선에서 나열해보아라

더보기

Key-Value 기반의 Redis

Document(JSON) 기반의 MongoDB

 

Consistency 보장을 위해 관계형 데이터베이스와 비관계형 데이터베이스는 각자 어떤 솔루션을 제공하는가

더보기

전자는 Pessimistic Lock과 MVCC를 제공, Transaction을 통한 일관성을 보장

후자는 Optimistic Lock등의 동시성 방식을 사용, MVCC를 통해서 어느정도의 consistency를 보장

 

현대 관계형 DB 에서 제공하는 MVCC 를 기반으로 Read Commited 와 Repeatable Read 를 설명하라

더보기

Read Committed는 트랜잭션이 커밋된 데이터만 읽을 수 있도록 보장한다.

MVCC를 사용시, 트랜잭션이 시작될 때, 해당 시점에 커밋된 최신 데이터를 읽고,

트랜잭션 도중 다른 트랜잭션이 커밋한 변경사항은 즉시 반영된다.

 

Repeatable Read는 트랜잭션이 시작될 때의 스냅샷을 기준으로 데이터 조회를 수행하고,

해당 트랜잭션이 끝날 때 까지 스냅샷이 고정된다. (커밋되더라도 현재는 볼 수 없다.)

 

NoSQL에서 말하는 CAP Theorem이란 무엇인가?

더보기

분산 시스템은 Consistency, Availability, Partition Tolerance 이 3개의 요소 모두를 만족할 수 없다는 이론이다.

이 3개중 최대 2개까지의 보장만이 가능하다는 것이다.

Availability는 서버가 일부 다운되더라도 시스템은 여전히 응답할 수 있어야 함. (즉, 노드중 어느 하나가 장애)

Partition Tolerence(파티션 허용성)은 노드 간 통신이 끊어져도 각각의 노드가 작동은 해서 시스템이 정상적으로 작동된다는 것.

'질문과 답변 > DB' 카테고리의 다른 글

ERD, Normalization, Index  (3) 2024.11.15
DB, Concurrency Control , Transaction  (0) 2024.11.14