데이터베이스
데이터베이스가 존재하기 이전에는 파일 시스템을 이용해서 데이터를 관리하였다. (이는 현재도 부분적으로 사용되고 있다.) 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 한다. 이 때의 문제점은 데이터 종속성 문제와 중복성, 데이터 무결성이다.
데이터베이스의 특징
즉 사용하는 이유
- 데이터의 독립성
- 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
- 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.
- 데이터의 무결성
여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다. - 데이터의 보안성
인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다. - 데이터의 일관성
연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다. - 데이터 중복 최소화
데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.
데이터베이스의 특성
- 실시간 접근
사용자의 데이터 요구에 실시간으로 응답
- 계속 변화
데이터의 계속적인 삽입, 수정, 삭제를 통해 현재의 정확한 데이터를 유지
- 동시 공유
서로 다른 데이터의 동시 사용뿐만 아니라 같은 데이터의 동시 사용(공용데이터)도 지원
- 내용 기반 참조
데이터가 저장된 주소나 위치가 아닌 내용으로 참조
ex) 재고량이 300개 이상인 제품의 이름을 검색하시오
데이터베이스의 구성요소
- 개체(Entity) : 개체 정보를 가지고있는 하나의 단위, 대상
- 개체 타입 : 속성
- 개체 인스턴스 : 각각의 데이터
- 개체 집합 : 개체 인스턴스들의 집합
데이터베이스의 구조
논리적 구조 (logical organization)
- 사용자의 관점에서 본 데이터의 개념적 구조
- 데이터의 논리적 배치
- 논리적 레코드
물리적 구조 (physical organization)
- 저장 관점에서 본 데이터의 물리적 배치
- 저장 장치에 저장된 데이터의 실제 구조
- 추가 정보를 포함 (인덱스, 포인터 체인, 오버플로 구역 등)
- 저장 레코드
데이터베이스의 성능
데이터베이스의 성능 이슈는 디스크 I/O를 어떻게 줄이느냐에서 시작된다. 디스크 I/O란 위 그림의 물리적 구조와 같이 디스크 드라이브의 플래터(원판)을 돌려서 읽어야 할 데이터가 저장된 위치로 헤더를 이동시킨 다음 데이터를 읽는 것을 위미한다. 이 때 데이터를 읽는데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치로 옮기는 단계에서 결정된다. 즉 디스크의 성능은 디스크 헤더의 위치 이동 없이 얼마나 많은 데이터를 한 번에 기록하느냐에 따라 결정된다고 볼 수 있다.
그렇기 때문에 순차 I/O 가 랜덤 I/O 보다 빠를 수 밖에 없다. 하지만 현실에서는 대부분의 I/O 작업이 랜덤 I/O 이다. 랜덤 I/O 를 순차 I/O 로 바꿔서 실행할 수는 없을까? 이러한 생각에서부터 시작되는 데이터베이스 쿼리 튜닝은 랜덤 I/O 자체를 줄여주는 것이 목적이라고 할 수 있다.
'DataBase(MySQL)' 카테고리의 다른 글
트랜잭션(Transaction)이란? + Spring transactional (1) | 2023.05.01 |
---|---|
RDBMS, NoSQL + RDBMS와 NoSQL의 차이, 장단점 (1) | 2023.03.08 |