인터뷰 대비 DBMS 정리(3)

seulg1004·2024년 4월 11일
0

RDBMS 뽀개기

목록 보기
5/5

🩷 SQL Injection의 의미와 해결방법에 대해 설명해주세요.

SQL Injection은 보안상의 취약점을 이용해, 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스를 공격할 수 있는 방식을 의미합니다.
대응 방법은 다음과 같습니다.

  1. 서버단에서 입력값에 대한 검증을 거칩니다.
  2. Prepared Statement 구문을 사용하여 데이터베이스의 파라미터로 들어가기 전에 DBMS가 먼저 컴파일하도록 만듭니다.
  3. Error 메세지가 노출되지 않도록 제작합니다. (테이블 컬럼명 노출 방지)
  4. 웹 방화벽을 사용합니다.

❤️ DB의 Connection Pool

애플리케이션에서 데이터베이스에 연결이 필요할 경우, 준비된 Connection 객체를 사용하여 애플리케이션의 성능을 높이는 방법입니다.

Java에서 데이터베이스 연결을 위해서 JDBC Driver를 로드하고 Connection 객체를 받아오는데, 매번 사용자가 요청할 때마다 해당 작업을 반복 시 비효율적이므로 해당 문제를 해결하기 위해서 사용합니다.

  • Connection Pool 특징
    • Connection을 생성하는 데 드는 요청마다 연결 시간이 지연되지 않습니다.
    • 생성되는 Connection 개수를 제한적으로 설정해 Connection을 재사용합니다.
    • WAS에서 Connection Pool을 크게 설정하면 메모리 소모가 큰 대신 동시접속자수가 늘어나며, 작게 설정하면 동시접속 가능자수가 줄어듭니다. (대기시간이 오래 걸립니다)

🧡 Table Full Scan 방식과 Index Range Scan에 대해 설명해주세요.

✅ Table Full Scan
인덱스를 사용하지 않고 테이블에 속한 블록 전체를 읽어서 원하는 데이터를 찾는 방식이며, DW 용도로 데이터베이스가 사용될 경우 종종 사용되는 테이블 스캔 방식이라고 합니다.
모든 테이블을 읽기 때문에 디스크 I/O의 비용이 많이 발생하며 대량의 데이터를 처리할 경우 시스템 성능에 부정적인 영향을 미칠 수 있습니다.
-> 데이터베이스의 Partitioning 기능을 사용하여 이를 방지할 수 있습니다.

✅ Index Range Scan
인덱스를 사용하여 테이블을 읽는데, B-tree의 가장 일반적인 형태로 데이터를 읽는 방식입니다. Non-Unique Index로 접근하는 경우나 Unique Index에 Range 조건(Between, >, <)을 걸었을 경우 주로 사용됩니다.
인덱스의 스캔 범위, 테이블 Access 횟수를 얼마나 줄였는지로 성능이 결정됩니다.

  • 실행계획 : INDEX (RANGE SCAN) OF '인덱스명' (INDEX)

💛 View 란 무엇이고, 어떻게 사용할 수 있나요?

View는 사용자에게 접근이 허용된 데이터만을 제한적으로 보여주기 위해 사용하는 가상의 테이블입니다. View는 논리적으로 실제 테이블과 독립되어있어 데이터의 변경에 영향을 끼치지 않습니다.
복잡한 쿼리를 단순화해서 사용이 가능하나 인덱스를 구성할 수 없고, Join을 사용하기 어렵고 한 번 정의된 View는 수정이 불가능하다는 단점이 있습니다.

💚 리플리케이션과 클러스터링에 대해 설명해주세요.

✅ 리플리케이션(Replication)
여러 개의 DB를 권한에 따라 수직구조로 구축하는 방식입니다.
-> 읽기 작업이 많은 DB 요청에서는 Replication만으로 충분한 성능 향상이 가능합니다.
-> Master 노드가 다운되면 복구가 어렵습니다.

✅ 클러스터링(Clustering)
여러 개의 DB를 수평구조로 구축하는 방식입니다.
-> 노드들 간의 데이터를 동기화하여 데이터 신뢰도를 일관성있게 유지 가능합니다.

0개의 댓글

관련 채용 정보