기술 면접 준비

DB

  1. 트랜잭션
답변보기 ▾
데이터베이스의 상태를 변환시키는 하나의 논리적인 작업 단위를 구성하는 연산들의 집합
ACID

원자성 Atomicity
- 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장
- 즉 All or Nothing

일관성 Consistency
- 트랜잭션이 성공적으로 완료되면 일관적인 디비 상태를 유지하는 것
- 예를들어 은행 송금 예제에서 금액 데이터 타입이 정수형이었는데 갑자기 문자열이 되지 않는 것

독립성 Isolation
- 트랜잭션 수행시 다른 트랜잭션 작업이 끼어들지 못하도록 보장

지속성 Durability
- 성공적으로 수행된 트랜잭션은 영원히 반영


  1. SQL과 NoSQL
답변보기 ▾
SQL
- 정해진 데이터 스키마에 따라 데이터가 저장
- 데이터는 관계를 통해 여러 데이터에 분산된다
- 데이터는 테이블에 레코드로 저장되는데 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다. 따라서 스키마를 준수하지 않은 데이터는 저장될 수 없다.

NoSQL
- 스키마도, 관계도 없다.
- 관계형 디비 처럼 여러 테이블에 나눠 담지 않고 관련 데이터를 동일한 컬렉션에 담는다
- 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 사용하면 좋다

SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 데이터를 중복없이 한번만 저장

SQL 단점
- 덜 유연함
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어 질 수 있음
- 대체로 수직적 확장만 가능

NoSQL 장점
- 스키마 없어서 유연함. 언제든지 저장된 데이터 조정하고 새로운 필드 추가 가능
- 데이터는 애플리케이션이 필요로 하는 형태로 저장됨. 편함
- 수직 및 수평 확장 가능

NoSQL 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터 중복을 계속 업데이트 해야 함
- 데이터가 여러 컬렉션에 중복되어 있기에 수정시 모든 컬렉션 수정해야 함


  1. 카디널리티
답변보기 ▾
카디널리티(Cardinality)는 특정 데이터 집합의 유니크(Unique)한 값의 개수이다. 예를 들어 데이터베이스에 '성별' 컬럼의 경우 남자와 여자라는 값을 갖는다. (생물학적인 성별만 고려하자면) 이 경우 카디널리티는 2다.