[DB] SQL & NoSQL

함민혁·2023년 9월 5일
0

cs면접준비

목록 보기
41/43

SQL Injection

SQL Injection
악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위

공격방법
인증 우회, 데이터 노출, 해커는 GET방식 쿼리 스트링을 추가하여 에러를 발생시키고 이에 해당하는 오류가 발생하면 이를 통해 해당 웹앱 데이터베이스 구조 유츄하고 해킹에 활용

방어방법
input받을때, 특수문자 여부 검사
SQL 서버 오류 발생시, 해당하는 에러 메시지 감추기

SQL(관계형 DB)

SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색할 수 있음

관계형 데이터베이스의 핵심적인 두 가지 특징

데이터는 정해진 데이터 스키마에 따라 테이블에 저장됨.
데이터는 관계를 통해 여러 테이블에 분산됨.

즉 SQL은 데이터의 중복을 피하기 위해 '관계'를 이용

SQL의 장단점에 대해서 설명해보세요

SQL의 장점은 관계를 맺음으로써, 데이터의 무결성을 보장하고, 중복없이 데이터를 한번만 저장한다는 것임
단점은 덜 유연하고, 나중에 수정이 힘들다는 점이다. 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음. 대체로 단순시 데이터베이스 서버의 성능을 향상시키는 것인 수직적 확장만이 가능함.

NoSQL(비관계형 DB)

말그대로 관계형 DB의 반대
스키마도 없고, 관계도 없음
Json과 비슷한 형태
조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일때 NoSQL을 쓰면 효울적임

NoSQL의 장단점에 대해서 설명해보세요

장점은 스카마가 없어서 유연하고 언제든 저장된 데이터를 조정하고 새로운 필드 추가가 가능하다는 점과 애플리케이션이 필요로하는 형식으로 데이터가 저장되어있어서 읽어오는 소곧가 빠르다는 점이다. 그리고 수직, 수평 확장이 둘다 가능하다. 단점으로는 데이터가 여러 컬렉션에 중복되어 있기 떄문에 수정이 일어나면 모든 컬렉션에서 수정을 해야함.

SQL의 어떠한 특징 때문에 NoSQL에 비해 부하가 많이 걸릴 수 있을까요?

SQL은 테이블 간의 관계를 맺고 있어 이로 인해 JOIN문이 필요하다. 이때 JOIN문이 많아지게 되면 여러 테이블을 조회해야해 많은 부하가 걸릴 수 있음.

profile
Born to be FE developer 🧑🏻‍💻

0개의 댓글