OS

[개발상식] IT 기술면접 준비 - 4 (데이터 베이스)

이손안나 2022. 10. 25. 23:47

Q1. 데이터베이스를 사용하는 이유?

- 데이터베이스가 등장하기 전까지는 데이터를 각각의 파일 단위로 저장하는 파일처리 시스템 방식이었습니다. 데이터베이스를 이용하면 데이터의 변경 시 응용 프로그램에 영향을 미치지 않는 독립성과 데이터의 중복 문제와 보안 문제를 해결할 수 있습니다.

 

Q2.  인덱스란?

- 데이터베이스에서 특정 컬럼값을 가지고 있는 열 혹은 값을 찾기 위해서 사용하는 방법입니다.

 이를 위해 컬럼의 값과 해당 레코드의 주소를 키와 값의 쌍으로 인덱스를 만들어 둡니다. DBMS의 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 찾는 속도가 빠릅니다.

 

Q3.  B-트리 인덱스 알고리즘과 해시 인덱스 알고리즘 비교?

- 둘 다 DBMS가 인덱스를 관리하는 방법에 대한 알고리즘입니다.

  • B-트리 인덱스 알고리즘: 이진 검색 트리의 형태로 인덱스를 관리하여 데이터 접근시 O(log n) 의 시간복잡도로 접근이 가능합니다.
  • 해시 인덱스 알고리즘: 컬럼의 값을 해시화한 값을 인덱싱하는 알고리즘으로 원하는 데이터 접근 시 O(1)의 시간복잡도로 접근이 가능합니다.

Q4.  정규화란?

- 정규화란 함수 종속성을 이용하여 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여, 이상 현상이 발생하지 않은 올바른 릴레이션을 만드는 것을 말합니다. 이상 현상으로는 다음과 같은 문제가 있습니다.

  • 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야하는 삽입 이상 문제
  • 중복 튜플 중 일부만 변경되엉 데이터가 불일치하게 되는 갱신 이상 문제
  • 튜플 삭제시 꼭 필요한 데이터까지 함께 삭제되는 삭제 이상 문제

Q5.  트랜잭션이란?

-트랜잭션이란 데이터베이스 작업의 완전성을 보장해주는 역할을 합니다. 논리적인 작업 여러 개를 모두 완벽하게 처리하면 문제 없지만 문제가 발생할 경우 이를 원상태로 복구하여 일부만 작업이 완료된 상태를 방지합니다.

 

💡 트랜잭션 4가지 특성

  • 원자성: 트랜잭션을 구성하는 연산들이 모두 정상적으로 실행되거나 문제가 발생할 경우 하나도 실행되지 않은 상태로 복구됩니다.
  • 일관성: 트랜잭션이 완료된 다음 상태에도 트랜잭션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야 합니다.
  • 고립성: 각각의 트랜잭션은 서로 간섭 없이 독립적으로 수행해야 합니다.
  • 지속성: 현재 수행중인 트랜잭션이 완료될 때까지 트랜잭션이 생성한 중간 연산 결과에 다른 트랜잭션이 접근할 수 없습니다.

Q1.  RDMBMS와 NoSQL의 차이?

- RDBMS는 엄격한 스키마에 따라 데이터를 저장하므로 명확한 데이터 구조를 보장하는 데이터 베이스입니다. 중복 데이터가 존재하지 않아 저장 공간을 절약할 수 있으며 테이블간의 JOIN을 통해 데이터를 분산 저장할 수 있습니다. 이러한 RDBMS는 일관성을 중요시하며 항공사 예약 시스팀의 비행기 표에 관한 정보와 같이 모든 항공사에서 일관성 있게 전달되는 상황에 쓰이면 좋습니다.

- NoSQL 은 스키마 없이 유연하게 데이터를 저장/관리하는 데이터베이스입니다.데이터의 중복이 허용되는 자유로운 데이터 입력과 컬렉션 간 JOIN을 지원하지 않는 데이터에 대한 규격화된 값을 얻을 수 없습니다. 이러한 NoSQL에는 대표적으로 mongoDB가 있으며 확장성과 가용성에 용이하다는 특징으로 빅데이터, 메시징, 세션 관리 등에 사용에 유리합니다.