데이터베이스 기술면접 준비
- candidate key : 튜플을 유일하게 식별하기 위해 사용하는 속성 부분 집합
유일성 : key 하나로 튜플을 유일하게 식별 / 최소성 : 꼭 필요한 속성으로만 구성
- primary key : 후보키 중 선택한 메인 키
null값을 가질 수 없고, 동일한 값이 중복되면 안됨
-alternate key : 후보키 중 기본키를 제외한 나머지키 = 보조키
- super key : 유일성은 만족하지만 최소성을 만족하지 못하는 키
- 조인 : 두 개 이상의 테이블이나 디비를 연결해서 데이터를 검색하는 방법
적어도 하나의 컬럼을 공유하고 있어야 함
- inner join : 교집합, 기준테이블과 join 테이블의 중복된 값을 보여줌
- left outer join : 기준테이블과 조인테이블의 중복된 값, 왼쪽 테이블을 기준으로
- right outer join : left outer join 과 반대로 오른쪽 테이블을 기준으로 조인
- full outer join : 합집합
- cross join : 모든 경우의 수를 전부 표현해주는 방식
- self join : 자기자신과 조인, 자신이 가진 컬럼을 변형시켜서 활용할 때 사용
- SQL injection : 해커에 의해 조작된 sql 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격기법
인증 우회 : 로그인 시 비밀번호와 동시에 다른 쿼리문을 함께 입력
데이터 노출 : 에러 메시지를 이용해서 공격하는 방법, 해커가 get방식으로 동작하는 url 스트링을 추가해서 에러 발생시킴
방어 방법 : input을 받을 때 특수문자 여부 검사, sql 서버 오류 발생시 에러미시지 감추기, preparestatement 사용
- statement : 쿼리 자체에 조건이 들어가는 dynamic sql 이 사용됨
- preparedstatement : 변수를 설정하고 바인딩하는 static sql이 사용됨, 파싱타임을 줄여주지만 성능저하 가능성 있음
쿼리를 수행하기 전에 이미 쿼리가 컴파일 되어 있어서 반복 수행의 경우 이미 컴파일된 것을 사용해서 prepared가 더 빠름
- sql(관계형 db) : 정해진 데이터 스키마에 따라 테이블을 저장, 관계를 통해 여러 테이블에 데이터 분산
- nodql(비관계형 db) : 데이터 구조 변화에 유연, 확장이 쉬움, 방대한 데이터 저장에 유리, 트랜잭션이 안되거나 완전성 보장x
- 삽입이상 : 삽입 시 primary key에 null 값이 들어가게 되는 경우, 불필요한 데이터를 추가해야지 삽입이 가능함
- 갱신이상 : 일부만 변경해서 데이터 불일치가 발생하는 경우
- 삭제이상 : 튜플 삭제로 꼭 필요한 데이터까지 함께 삭제되는 경우
- 정규화 : 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업
- 1NF : 애트리뷰트 도메인이 오직 원자값만 포함
- 2NF : 다른 속성들이 기본키에 완전 함수적 종속
- 3NF : 기본키 외 속성들이 기본키에 대해서 이행적으로 종속되지 않는 경우
- BCNF : 기본키 외 속성들이 후보키의 일부를 결정하는 경우 분해를 함
- 반정규화 : 성능 향상과 개발 운영 단순화를 위해 중복 통합, 분리 등을 수행함
- 반정규화 대상 : 액세스하는 프로세스가 많고, 항상 일정 범위만 조회하는 경우, 대량 데이터 대량 범위 처리, 지나치게 조인
과도하게 반정규화하면 무결성이 깨질 수 있음
- 인덱스 : RDBMS에서 검색속도를 높이기 위한 기술, colum을 색인화하고 색인화된 인덱스 파일 검색으로 검색 속도 향상
MYD : 실제 데이터가 있는 파일, MYI : index 정보가 들어있는 파일, FRM : 테이블 구조가 저장된 파일
한 페이지를 동시에 수정할 수 있는 병행성이 줄어듦, 추가나 삭제시 성능이 떨어짐, 변경시 index 재작성
where절에 자주 사용되는 컬럼, 외래키가 사용되는 컬럼, join에 자주 사용되는 컬럼에 사용하면 좋음
데이터 중복이 높은 컬럼, dml이 자주 일어나는 컬럼은 피하는 것이 좋음
- B+트리 인덱스 알고리즘 : 원래의 값을 이용해서 인덱싱 하는 알고리즘
- hash 인덱스 알고리즘 : 컬럼 값을 해시 값으로 계산해서 인덱싱함. 매우 빠른 검색 지원, prefix 검색 같은 건 안됨, 부등호 안됨
- 트랜잭션 : 데이터베이스 상태를 변화시키기 위해 수행하는 작업 단위
원자성, 일관성, 독립성, 지속성
- DBMS 구조 : 질의 처리기, 저장 시스템으로 구성
입출력 단위는 고정 길이의 page 단위로 disk에 읽거나 씀
저장공간은 disk, 일부분은 main memory에 저장함
- 버퍼매니저(페이지버퍼매니저) : DBMS 저장 시스템에 속하는 모듈, main memory에 유지하는 페이지를 관리
버퍼 관리 정책으로 undo나 redo가 요구됨 트랜잭션 관리에 매우 중요한 결정을 가져옴
- undo : 수정된 페이지들이 버퍼 교체 알고리즘에 따라 디스크에 출력될 수 있음
버퍼 교체는 트랜잭션과 무관하게 버퍼의 상태에 따라 결정됨, 이 때 정상적으로 종료되지 않은 트랜잭션이 변경한 페이지 복구
- redo : 이미 commit한 트랜잭션의 수정을 재반영하는 복구 작업
'CS' 카테고리의 다른 글
운영체제 기술면접 준비 (0) | 2020.11.20 |
---|---|
컴퓨터네트워크 기술면접 준비 (0) | 2020.11.20 |