데이터베이스 시스템
파일처리시스템의 문제점을 해결하기 위해 등장
다양한 형태의 데이터를 모아놓은 데이터의 집합체
데이터 베이스 관리 시스템
데이터 베이스의 등장 배경
이전에는 구조화되지 않은 파일처리 시스템이었다.
하지만 파일처리에는 다양한 문제점들이 있어 데이터베이스 시스템이 등장하게 된다.
*파일 처리 시스템의 문제점
1) 중복 : 파일처리시스템은 각 파일마다 필요한 데이터를 각각 가지고 있어야 하므로 전체적인 시간과 노력, 경제비용에 있어서 효율이 없다.
2) 비일관성 : 데이터에 변경사항이 조금만 있어도 각 파일에서 해당되는 데이터를 모두 변경해야 하므로 수정에 문제가 있고, 한꺼번에 수정이 되지 않으면 데이터값이 서로 틀리게 되는 문제점이 있다.
3) 응용 프로그램 개발 문제 : 기존의 파일 시스템은 파일 용도에만 맞춰서 제작되기 때문에 다른 프로그램을 만들때는 다시 데이터베이스 작업을 해야 한다는 문제가 있다
4) 데이터 추가 및 검색의 문제 : 데이터가 여러 파일에 산재하고 또 그 파일마다 데이터베이스 양식이 다르기 때문에 일률적인 검색이나 단순 추가 작업이 어렵다.
데이터베이스의 특징
1. 데이터의 독립성
- 물리적 독립성 : 데이터베이스 크기를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가해도 관련 애플리케이션을 수정할 필요가 없다.
- 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 애플리케이션의 논리적 요구를 만족시켜준다.
2. 데이터의 무결성
- 데이터는 여러 경로를 통해서 들어오는데, 데이터에서 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성을 검사해서 무결성을 구현한다.
3. 데이터의 보안성
- 인가된 사용자들만 데이터베이스나 데이터베이스 내에 자원을 접근할 수 있도록 계정 관리 또는 접근 권한을 설정
4. 데이터의 일관성
- 연관된 정보를 논리적인 구조로 관리해서, 어떤 하나의 데이터만 변경했을 경우에 발생할 수 있는 불일치성을 배제할 수 있다.
- 또 작업 중에 일부 데이터만 변경되서 나머지 데이터와 일치하지 않는 경우를 방지한다.
5. 데이터의 중복 최소화
- 데이터베이스는 데이터를 통합해서 관리함으로써, 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 최소화할 수 있다.
데이터베이스의 장점
1. 데이터 공유
2. 데이터 중복의 최소화
3. 계속적 변화에 대한 적응
4. 보안성
데이터베이스의 성능
디스크 I/O를 어떻게 줄이냐에 따라 달려있다.
데이터를 읽는데 디스크 헤더의 위치 이동없이 얼마나 많은 데이터를 한번이 기록하느냐에 따라 결정된다.
따라서 순차적으로 I/O를 수행하는게 랜덤 I/O보다 빠르다.
쿼리 최적화, 빠른 쿼리를 위한 7가지 체크리스트
1. SELECT 시에는 꼭 필요한 칼럼만 불러와야 한다.
- 너무 많은 필드값을 불러올 수록 DB는 더 많은 로드를 부담하기 때문에
2. 조건 부여시, 가급적 기존 DB값에 별도의 연산을 걸지 않는 것이 좋다.
- 조건 검색이 필요할때 굳이 모든 필드 값을 탐색할 필요 없게 쿼리를 짜주자
3. LIKE 사용시 %(와일드카드문자열)를 string 앞부분에 배치하지 않는 것이 좋다.
- 위의 2번과 마찬가지로 full table scan을 막게 다른 형태의 조건절을 사용하는것이 효과적이다.
4. SELECT DISTINCT, UNION DISTINCT와 같이 중복 값을 제거하는 연산은 최대한 사용하지 않아야한다.
- 중복 값을 제거하는 연산은 시간이 많이걸리기 때문이다.
- 차라리 EXISTS를 사용하자.
5. 같은 내용의 조건이라면, GROUP BY 연산 시에는 가급적 HAVING보다는 WHERE 절을 사용하는 것이 좋다.
- WHERE 절이 HAVING절보다 먼저 실행되기 때문에 WHERE로 미리 데이터 크기를 줄여 놓는게 좋다.
6. 3개 이상의 테이블을 INNER JOIN 할 때는, 크기가 가장 큰 테이블을 FROM 절에 배치하고, INNER JOIN 절에는 남은 테이블을 작은 순서대로 배치하는 것이 좋다.
- INNER JOIN 과정에서 최소한의 Combination을 탐색하도록 FROM & INNER JOIN의 순서를 배열하면 좋다는 이야기인데, 항상 통용되지는 않다.
7. 자주 사용하는 데이터의 형식에 대해서는 미리 전처리된 테이블을 따로 보관, 관리하는 것도 좋다.
<참고>
https://velog.io/@redgem92/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%ED%8A%B9%EC%A7%95 https://yang1650.tistory.com/28
'🔥 > Database' 카테고리의 다른 글
[데이터베이스] SQL Injection (0) | 2021.10.13 |
---|---|
[데이터베이스] NoSQL (0) | 2021.09.09 |
[데이터베이스] 트랜잭션 Transaction 이란 (0) | 2021.08.25 |
[데이터베이스] 정규화에 대해서 (0) | 2021.08.18 |
[데이터베이스] Index란 무엇인가 (0) | 2021.08.11 |