CS

[mySQL] 면접 예상 질문

KJihun 2023. 11. 7. 16:40
728x90

 

 

 

 

 

noSQL 과 SQL의 차이

 

noSQL

RDB가 아닌 다른 형태의 데이터 저장과 처리를 지원하는 데이터베이스 시스템

  • 유연성이 높아서 비구조적인 데이터, 다양한 형태의 데이터를 처리하기 용이하다.
  • 대량의 데이터를 처리하는 데 뛰어난 성능을 가진다.
  • ACID (원자성, 일관성, 고립성, 지속성) 특성을 보장하지 않을 수 있어 데이터 무결성이 보장되지 않을 수 있다.
  • 복잡한 쿼리 작성이 어렵다.
  • 데이터 모델링에 유연성이 있기 때문에 비교적 데이터 일관성 유지가 어렵다.

 

SQL

  • 관계를 통해 데이터를 구조화하기 때문에 복잡한 쿼리 작성을 간단하게 할 수 있다.
  • 스키마가 고정되어 있어 데이터 구조 변경이 어렵다.
  • 대량의 데이터를 처리할 때 성능이 저하될 수 있다.
  • 비구조적인 데이터를 다루는 데 적합하지 않다.
  • SQL 기반의 관계형 데이터베이스를 사용하는 케이스
    • 쇼핑몰: 상품 및 이용자 정보 등을 테이블 형태로 저장
    • 은행: 이용자의 정보 및 잔액 등을 저장하여 관리

 

 

 

NoSQL 기반의 비관계형 데이터베이스를 사용하는 케이스

  • SNS의 실시간 피드, 센서 데이터 등 대량의 실시간 데이터 처리시 사용
  • 분산된 서버 환경에서 확장성을 중요시 하는 경우

 

 

트랜잭션의 4가지 특징

  • Atomicity: 원자성
    • 트랜잭션을 구성하는 연산 전체가 모두 정상 실행되거나 모두 취소되어야 한다
  • Consistency: 일관성
    • 시스템이 가진 고정요소는 트랜잭션 수행 전과 후의 상태가 같아야 한다
  • Isolation: 격리성, 고립성
    • 동시에 실행되는 트랜잭션은 서로 영향을 미치지 않아야 한다
  • Durability: 영속성
    • 성공된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 한다

 

 

 

 

정규화와 반정규화

  • 정규화: 잘못 설계된 관계형 스키마를 쪼개어 바람직한 스키마로 만들어 가는 과정
  • 반정규화: 성능 상승을 위해 고의로 정규화를 위배하는 방법(테이블 통합, 중복 테이블 추가 등)

 

 

 

 

데드락 (교착상태)

  • 교착상태는 임계영역에 있는 공유자원 접근 시도 시, 접근 권한을 가질 수 없어서 무한정 대기하는 상태이다.
  • 상호 배제, 점유와 대기, 환형 대기, 비선점 중 하나만 만족하지 않더라도 교착상태는 발생하지 않는다.

 

 

 

 

데이터 베이스 분산 전략 ( 복제, 페더레이션, 파티셔닝, 샤딩)

데이터베이스 분산 전략은 대규모의 데이터를 효율적으로 관리하고 처리하기 위한 방법들을 의미한다.

  1. 복제 (Replication): DB를 여러 개의 노드로 복사하는 전략이다.
    • 동기식 복제와 비동기식 복제 두 가지 방법이 있다.
    • 쓰기 작업의 경우 모든 복제본에 기록해야 하므로 쓰기 성능은 떨어진다.
  2. 페더레이션 (Federation): 데이터를 여러 개의 독립적인 데이터베이스에 분산하여 저장하고 처리하는 전략
    • 각 DB는 독립적으로 운영되며 필요할 때마다 쿼리를 전달하고 결과를 통합한다.
    • 데이터의 일관성은 어플리케이션에서 관리해야 한다.
  3. 파티셔닝 (Partitioning): 데이터를 논리적 또는 물리적으로 분할하여 여러 저장소에 나눠 저장하는 전략
    • 파티셔닝은 데이터를 분산하여 병렬 처리를 가능케 하며, 성능 향상과 확장성을 제공한다.
  4. 샤딩 (Sharding): 데이터를 특정 기준에 따라 분할하고 각각을 별도의 물리적 저장소에 저장하는 전략
    • 대규모 시스템에서 확장성을 확보하기 위한 방법으로 사용된다.

'CS' 카테고리의 다른 글

[Spring] Filter와 Interceptor  (0) 2023.11.20
[Spring]Front Controller, Dispatcher Servlet  (0) 2023.11.16
[Network] websocket & stomp, 실시간 통신  (0) 2023.11.07
[JPA] N+1  (0) 2023.10.30
[JPA] ORM, JPA  (1) 2023.10.30