본문 바로가기

DB13

HDD와 SSD, 랜덤 I/O, 순차 I/O HDD와 SSD CPU의 처리 속도나 RAM과 같은 전기적인 원리로 동작하는 메모리의 I/O 속도는 매우 빠른 속도로 발전했다. 하지만 디스크 같은 기계적 장치는 CPU, RAM 대비 제한적으로 발전했다. 특히 HDD는 마치 LP판 같이 특정 위치에 디스크 헤드를 위치시켜 플래터(원판)을 회전시켜 읽거나 쓰는 원리로 매우 성능이 느리다. 이를 플래시 메모리로 보완하여 HDD 대비 속도가 빠른 SSD가 등장하였다. 메모리와 HDD의 처리 속도는 10만배 이상 차이난다. 반면 플래시 메모리를 사용하는 SSD와 메모리의 차이는 1,000배 가량 차이난다. 또한 순차 I/O 에서는 SSD가 HDD 대비 조금 빠른 수준이나, 랜덤 I/O에서는 SDD가 HDD 대비 훨씬 빠르다. DBMS에서 발생하는 대부분의 I/.. 2023. 9. 29.
SQL 안티패턴, SQL Injection 공격 SQL 안티패턴 1. 무단횡단(제이워크) 1개의 컬럼에 컴마 구분의 값을 넣으면 안된다. 검색하기 어렵다. 문자열 칼럼의 문자 수 제한이라는 암묵적 제약을 받는다. validation을 걸기 어렵다. 해결방법은 교차 테이블을 생성하는 것 2. 순진한 트리 트리형태의 계층 구조를 1개의 테이블로 표현하면 안된다. 그 이유는 다음과 같다. 계층 구조가 깊어지면 그만큼 SQL을 써야한다. 노드를 삭제하기 어려워진다. 해결방법은 대체 트리 모델을 사용하는 것이다. 3. 아이디가 필요해 모든 테이블에 id를 만드는 것을 만들 필요없다. 그 이유는 다음과 같다. 장황해질 가능성이 있다. 아무 생각없이 id 칼럼을 만들면 논리적 일관성 문제가 생길 수 있다. 시퀀스로 생성된 id == 주키가 아니다. 해결책은 다음과.. 2023. 9. 21.
JOIN 과 서브쿼리, 데이터 삭제 쿼리 종류, DISTINCT JOIN 데이터베이스에서 데이터는 다수의 테이블에 나뉘어 저장되어 있습니다. 데이터의 중복을 제거하고 무결성을 보장하기 위해서 데이터 성격에 따라 분류하여 테이블에 저장을 하는 겁니다. 이렇게 테이블별로 분리되어 있는 데이터를 연결하여 하나의 결과 데이터 셋으로 출력해야 할 때가 반드시 존재합니다. 이럴때 사용하는 것이 조인(Join)입니다. 1. INNER JOIN Inner join은 교집합( A ∩ B ) 연산과 같습니다. 조인 키 컬럼 값이 양쪽 테이블 데이터 집합에서 공통적으로 존재하는 데이터만 조인해서 결과 데이터 집합으로 추출하게 됩니다. 2. OUTER JOIN OUTER JOIN은 조인하는 여러테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의.. 2023. 9. 21.
VIEW 와 SELECT 실행 순서 VIEW 뷰 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블이다. - 기본 테이블은 디스크에 공간이 할당되어 데이터를 저장함 - 뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장되어 디스크 저장 공간 할당이 이루어지지 않음. - 전체 데이터 중에서 일부만 접근할 수 있도록 함 - 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용됨 - 뷰를 정의한 기본 테이블에서 정의된 무결성 제약조건은 그대로 유지됨 뷰는 왜 필요한가? - 사용자 마다 특정 객체만 조회할 수 있도록 할 필요가 있음 (모든 직원에 대한 정보를 모든 사원이 볼 수 있도록 하면 안 됨) - 복잡한 질의문을 단순화 할 수 있음 - 데이터의 중복성을 최소화할 수 있음 장점 - 논리적 독립성을 제공함 - 데이터의 접근.. 2023. 9. 21.