데이터베이스
데이터베이스는 통합하여 관리되는 데이터의 집합체를 의미한다. 이는 중복된 데이터를 없애고, 자료를 구조화하여 효율적인 처리를 할 수 있도록 관리된다. 이런 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리되며 이를 데이터베이스 관리 시스템 (DBMS)라고 한다.
데이터 베이스를 사용하는 이유
- 파일 시스템을 사용했을 때의 문제점
- 데이터의 중복과 비일관성
- 데이터 접근 시 필요한 데이터를 편리하고 효율적으로 검색하기 힘듬
- 데이터가 여러 파일에 흩어져 있고 파일 형식이 서로 다를 수 있음
- 데이터 동시 접근 시 데이터가 잘못 업데이트 될 수 있음
- 무결성 문제
- 보안 문제
- 데이터베이스의 장점
- 데이터의 논리적, 물리적 독립성, 일관성, 무결성, 보안성 보장
- 데이터의 중복 최소화
- 저장된 자료를 공동으로 이용 가능
- 데이터를 통합하여 관리 가능
- 데이터읫 실시간 처리가 가능
- 데이터베이스의 단점
- 전산화 비용 증가
- 대용량 디스크로의 집중적인 access로 과부하가 발생할 수 있음
데이터베이스 용어 정리
긍정적 단어
- 독립성 (Data Independence)
- 논리적 독립성 : 응용 프로그램과 데이터베이스를 독립시킴으로써, 데이터의 논리적 구조를 변경시키더라도 응용 프로그램은 변경되지 않는다.
- 물리적 독립성 : 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립시킴으로써, 데이터베이스 시스템의 성능 향상을 위해 새로운 디스크를 도입하더라도 응용 프로그램에는 영향을 주지 않고 데이터의 물리적 구조만을 변경한다.
- 무결성 (Data Integrity) : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야 한다.
- 일관성 (Data Consistency) : 데이터베이스에 저장된 데이터와 특정 질의에 대한 응답이 변함 없이 일정해야 한다.
부정적 단어
- 종속성 (Data Dependency) : (⇔ 독립성) 응용 프로그램의 구조가 데이터의 구조에 영향을 받는다.
- 중복성 (Data Redundancy) : 같은 데이터가 중복되어 저장되는 것으로, 데이터 수정/삭제 시 연결된 모든 데이터를 수정/삭제해줘야 하는 문제점이 있다.
- 비일관성 (Data Inconsistency) : 동일한 데이터의 여러 사본이 서로 다른 값을 보유하고 있는 상태로, 데이터 중복성에 이어서 발생할 수 있다.
데이터베이스의 성능
데이터베이스의 성능 이슈는 디스크 I/O를 어떻게 줄이느냐에서 시작된다.
성능 개선을 위한 방법으로는 인덱스, 옵티마이저, 분산기법 등이 있다.
관계형 데이터베이스 시스템 (RDBMS)
- 테이블 기반 DBMS로, 테이블의 집합으로 데이터의 관계를 표현
- 데이터를 테이블로 관리
- 중복 데이터 최소화 (정규화)
- 여러 테이블에 분산되어 있는 데이터 검색 시 테이블 간의 관계(join)을 이용해 필요한 데이터를 검색
- 언어 종류
- DDL(Data Definition Language): 데이터 정의어 CREATE, ALTER, DROP, RENAME
- DML(Data Manipulation Language): 데이터 조작어 INSERT, SELECT, UPDATE, DELETE
- DCL(Data control Language): 데이터 제어어 GRANT, REVOKE
- TCL(Transaction Control Language): 트랜잭션 제어어 COMMIT, ROLLBACK, Savepoint
Index
- 데이터가 저장된 레코드의 주소
- 항상 정렬되어 있음
- 중복이 많은 데이터에는 인덱스 추가를 안하는게 좋음
- 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능임
- 장점
- 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있음
- 전반적인 시스템의 부하를 줄일 수 있음
- 단점
- Index 생성시, .mbd 파일 크기가 증가함
- 한 페이지를 동시에 수정할 수 있는 병행성이 줄어듬
- 인덱스 된 field에서 데이터를 업데이트하거나, Record를 추가 또는 삭제시 성능이 떨어짐
- 데이터 변경 작업이 자주 일어나는 경우, index를 재작성해야 하므로 성능에 영향을 미침
- 사용하면 좋은 경우
- Where 절에서 자주 사용되는 column
- 외래키가 사용되는 column
- JOIN에 자주 사용되는 column
- ORDER BY절에서 자주 사용되는 column
- 항상 =으로 비교되는 column
- 중복되는 데이터가 최한인 column
- 사용을 피해야 하는 경우
- Data 중복도가 높은 column
- DML이 자주 일어나는 column
- DBMS의 인덱스 자료구조: B+-Tree (최상위에 root, 최하위에 leaf, 중간에 branch 노드로 구성)
- B-Tree
- 한 노드당 자식노드가 2개 이상 가능
- key값을 이용해 데이터를 찾음
- 데이터를 찾는 속도가 비슷함
- 균형트리
- 브랜치 노드에 key, data담기 가능
- B+Tree
- 오직 리프노드에만 key, data 담기 가능
- 브랜치 노드에서는 key만
- 리프노드는 링크드 되어 있음
- 리프노드만 데이터를 담아 메모리 손실 줄여 더 많은 key 수용
- B-Tree
참고
https://github.com/Seogeurim/CS-study/tree/main/contents/database
728x90
반응형