CS/데이터베이스 4

DTO 사용 이유

1.엔티티 내부 구현을 캡슐화 DTO 대신 domain 모델을 계층간 전달에 사용하면, UI 계층에서 도메인 모델의 메소드를 호출하거나 상태를 변경시킬 수 있다. 즉, DTO를 사용하여 domain 모델을 캡슐화 하여 보호할 수 있다. 또한 domain 모델을 계층간 전송에 사용하면 model과 view의 결합이 강해질 수 있다. view의 요구사항 변화로 domain의 코드를 변경해하는 일이 생길 수 있다. 2.필요한 데이터를 선별 요청과 응답으로 Entity를 사용한다면, 요청하는 화면에 필요하지 않은 속성까지도 함께 보내지게 된다. 예를 들어 USER의 ID만 보여주면 되는 상황에서 USER가 가지고 있는 다른 값들까지 데이터에 포함 되는 것이다. 이처럼 원하지 않은 API 요청과 응답에서 Enti..

Index

Index의 정의 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조입니다. 예시) 두꺼운 책 → 원하는 내용을 알기위하여 모든 페이지를 찾아보는것은 오랜시간이 걸리기 때문에 책의 앞쪽에 목차를 추가하는데 이는 테이블의 칼럼을 색인화 하는것과 같습니다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터 위치를 포함한 자료구조(인덱스)를 생성하여 빠르게 조회할수 있도록 하고 있습니다.(인덱스가 잘 설정되었을때) 인덱스를 활용한다면 테이블의 데이터를 조회하는 SELECT외에도 연산을 수행하려면 해당 대상을 조회해야 작업이 가능한 UPDATE, DELETE의 성능이 향상됩니다. Index의 특징 인덱스는 WH..

SQL Injection

SQL Injection 개요 악의적인 사용자가 보안산의 취약점을 이용해 임의의 SQL문을 주입하고 실행되게 하여 데이터 베이스가 비정상적인 동작을 하도록 조작하는 행위 OWASP에서 발표한 웹 어플리케이션 취약점 TOP 10에서 상위권에 위치 공격이 비교적 쉬운편이지만 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격 인증 우회, 시스쳄 명령어 삽입, 웹 쉘 생성 등의 공격방법이 SQL Injection에 속함 공격 방식 Normal SQL Injection //정상 입력 SELECT user FROM user_table WHERE id='admin' AND password='1234'; //SQL Injection SELECT user FROM user_table WHERE id='admin' AND..

이상현상과 정규화

이상현상 이상현상이란? 테이블 내의 데이터들이 불필요하게 중복되고 잘못 설계하여, 테이블의 삽입, 삭제, 수정할 때 논리적으로 생기는 데이터 불일치 현상입니다. 삽입 이상 원치 않는 데이터가 삽입되거나 , 특정 데이터가 존재하지 않아 DB에 삽입할 수 없을 때 발생하는 경우입니다. → 즉, 불필요한 데이터를 추가해야 삽입할 수 있는 경우 삭제 이상 삭제를 시도하는 경우 그 데이터를 포함하는 튜플 전체가 삭제되어 정보손실이 발생하는 경우입니다. → 즉, 삭제로 인해 필요한 데이터까지 같이 삭제되는 경우 갱신 이상 부정확한 설계로 인하여 일부 튜플 갱신시 일관성이없고 정보가 모호해 정확하게 파악이 되지 않는 경우와 너무 많은 행을 업데이트하는 경우입니다. → 즉, 일부분만을 변경해 데이터가 불일치 하는 모순..