230606 TIL #103 기술 면접 스터디 - 6

김춘복·2023년 6월 6일
0

TIL : Today I Learned

목록 보기
104/550

230606 Today I Learned

현충일이라 기술면접 스터디를 쉬는날이지만 개인적으로 공부했다.


1. 트랜잭션에 대해 얘기해보세요.

트랜잭션은 DB에서 하나의 논리적인 작업을 수행하기 위한 작업의 단위입니다. 여러개의 쿼리문이 포함될 수 있으며, 모든 쿼리가 성공적으로 수행되면 DB에 영구적인 변경을 커밋하고, 하나라도 실패한다면 모든 작업을 롤백합니다. 트랜잭션을 통해 데이터의 일관성과 신뢰성을 지킬 수 있습니다.

2. 트랜잭션의 4대 요소에 대해 얘기해보세요.

ACID. 먼저 A는 원자성을 말합니다. 트랜잭션의 모든 단계는 하나의 원자적인 작업으로 간주되어야 합니다. 모든 단계가 다 성공해서 커밋되거나, 하나라도 실패되서 모두 롤백이 되어야 합니다.
C는 일관성을 말합니다. 트랜잭션 이전과 이후에 데이터베이스는 일관된 상태를 유지해야 합니다. 트랜잭션이 데이터베이스의 무결성원칙이나 제약조건을 위반하면 안됩니다.
I는 고립성을 말합니다. 동시에 실행되는 트랜잭션은 서로 영향을 주지않고 독립적으로 시행되어야 합니다. 하나의 트랜잭션이 다른 트랜잭션의 중간 상태를 볼 수 없어야 합니다.
D는 지속성입니다. 트랜잭션이 성공적으로 커밋되었다면 해당 변경사항이 영구적으로 반영되어야 합니다. 시스템 장애 같은 예외 사항이 생겨도 데이터는 손실되지 않아야 합니다.

3. 트랜잭션의 격리수준에 대해 얘기해보세요

여러 트랜잭션이 동시에 수행될 때 각각의 트랜잭션이 다른 트랜 잭션의 변경작업을 어디까지 볼 수 있는지 결정합니다. 격리수준이 높을수록 DB의 일관성과 무결성이 보장되지만 성능이 저하됩니다.
Read Uncommitted는 커밋되지 않은 데이터 변경사항을 볼 수 있습니다. Dirty Read 문제가 발생할 수 있습니다.
Read Committed는 변경 내용이 커밋되어야 값을 읽을 수 있습니다. Non-Reapeatable Read 문제가 발생할 수 있습니다.
Repeatable Read는 트랜잭션 내에서 같은 쿼리를 실행하면 항상 같은 결과가 반환되도록 보장합니다. 트랜잭션에서 읽은 데이터를 공유잠금을 걸어 다른 트랜잭션에서 변경하지 못하게 합니다. Phantom Read 문제가 발생할 수 있습니다.
Serializable은 최고수준의 격리수준으로 한 트랜잭션이 다 끝날 때 까지 다른 트랜잭션에서 해당 데이터를 변경할 수 없습니다. 모든 읽기와 쓰기작업이 테이블 단위 락으로 진행됩니다.

4. API가 무엇인가요?

API는 프로그램간의 상호작용을 위한 인터페이스입니다. 애플리케이션, 라이브러리, 운영체제 등이 서로 통신하고 상호작용할 수 있도록 정해진 규칙과 프로토콜의 모음입니다. API는 다양한 형태로 존재할 수 있으며, 일반적으로 웹 API가 있습니다. 웹 API는 HTTP를 통해 클라이언트와 서버가 통신하는 인터페이스를 제공합니다.

  • 프로토콜 :통신을 위해 사용되는 규칙의 집합.
profile
Backend Dev / Data Engineer

0개의 댓글