데이터베이스

Onni·2022년 3월 13일
0

📌 DBMS (Database Management System)

✅ 정의

  • 데이터베이스 관리 시스템
  • 응용 프로그램과 데이터 사이의 중재자로서 모든 사용자들이 데이터베이스를 공용할 수 있게 관리해주는 범용 소프트웨어

✅ 발전 배경 – 파일 처리 시스템, 파일 관리 시스템

✔ 파일 처리 시스템

  • 운영체제가 지원
  • 각 응용 프로그램들이 ①논리적 파일 구조를 정의하고 ②직접 물리적 파일 구조로 구현
    ① 논리적 파일 구조: 파일이 논리적으로 어떻게 구성되었는가(이름, 주소 등)
    ② 물리적 파일 구조: 파일이 물리적으로 어떻게 구성되었는가(용량, 형식 등)
    😡 데이터의 종속성(dependency)과 중복성(redundancy)를 야기

✔ 파일 관리 시스템

  • 파일 관리 시스템(라이브러리) 통해 파일에 접근
  • 파일에 접근하는 형식이 공통
    😡 마찬가지로, 데이터의 중복성(redundancy)를 야기

🧐 그렇다면 여기서 말하는 데이터 종속성과 중복성이란?

1) 데이터 종속성 (data dependency)

  • 응용 프로그램과 데이터가 상호 의존관계를 맺고 있는 것
    → 데이터의 구성 방법이나 접근 방법을 변경하면 관련된 응용 프로그램도 함께 변경해야 함

2) 데이터 중복성 (data redundancy)

  • 한 시스템 내에 같은 내용의 데이터가 여러 파일에 중복 저장된 것
    → ①일관성, ②보안성, ③경제성, ④무결성에 악영향
    • ① 일관성(consistency): 데이터베이스가 항상 일관된 상태를 유지(정보 손실이 없는 상태)
    • ② 보안성(security)
    • ③ 경제성(economics): 저장장치를 더 많이 사용하게 됨
    • ④ 무결성(intergrity): 데이터의 정확성(일관성이 깨지면 무결성도 깨짐)

✅ 궁극적 목적

✓ DBMS의 궁극적 목적은 데이터 독립성(data independency)

  • 논리적 데이터 독립성(logical data independency)
    • 응용 프로그램에 영향을 주지 않고 논리적 데이터 구조 변경 가능
  • 물리적 데이터 독립성(physical data independency)
    • 응용 프로그램과 논리적 데이터 구조에 영향을 주지 않고 물리적 데이터 구조의 변경 가능

✓ 데이터 독립성은 사상을 통해 구현된다.

📌 데이터베이스

✅ 데이터베이스의 특징

✔ 데이터의 독립성

물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.

✔ 데이터의 무결성

여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다.

✔ 데이터의 보안성

인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.

✔ 데이터의 일관성

연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.

✔ 데이터 중복 최소화

데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.

✅ 데이터베이스의 성능?

데이터베이스의 성능 이슈는 디스크 I/O 를 어떻게 줄이느냐에서 시작된다. 디스크 I/O 란 디스크 드라이브의 플래터(원판)을 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더를 이동시킨 다음 데이터를 읽는 것을 의미한다. 이 때 데이터를 읽는데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치로 옮기는 단계에서 결정된다. 즉 디스크의 성능은 디스크 헤더의 위치 이동 없이 얼마나 많은 데이터를 한 번에 기록하느냐에 따라 결정된다고 볼 수 있다.

그렇기 때문에 순차 I/O 가 랜덤 I/O 보다 빠를 수 밖에 없다. 하지만 현실에서는 대부분의 I/O 작업이 랜덤 I/O 이다. 랜덤 I/O 를 순차 I/O 로 바꿔서 실행할 수는 없을까? 이러한 생각에서부터 시작되는 데이터베이스 쿼리 튜닝은 랜덤 I/O 자체를 줄여주는 것이 목적이라고 할 수 있다.

🧩 Reference

profile
꿈꿈

0개의 댓글