[Database] 1. 데이터베이스가 필요한 이유

1. 데이터베이스란?

데이터베이스(DB)

- 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임

데이터베이스 관리 시스템(DBMS)

- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어

 

2. 데이터베이스의 목적

- 서로 다른 응용 프로그램에서 데이터를 공용해서 사용하기 위함

2.1. 데이터베이스의 배경

- 데이터베이스가 존재하기 이전에 파일 시스템을 이용하여 데이터를 관리함

- 데이터를 각각의 파일 단위로 저장하고, 이를 각각의 애플리케이션에서 사용하게 됨

- 파일 시스템에서는 파일에 접근하는 방식이 응용 프로그램 내에 표현되어 응용 프로그램과 데이터 간의 의존관계가 생김

- 데이터의 구조, 접근 방법이 변경되면 기존의 프로그램과 데이터를 함께 변경해야 하는 문제가 발생함

- 즉, 파일 단위로 저장하면 데이터 종속성, 중복성, 무결성 문제 등이 발생하여 데이터베이스로 관리하기 시작함

 

3. 데이터베이스의 개념

3.1. 데이터베이스의 정의

통합 데이터

- 여러 곳에서 사용하던 데이터를 통합하여 하나로 저장한 데이터

- 통합 시 중요한 점은, 각자 사용하던 데이터의 중복을 최소화함으로써 중복 저장으로 인한 데이터 불일치 현상을 없애는 것

 

저장 데이터

- 컴퓨터가 접근할 수 있는 매체에 저장된 데이터

 

운영 데이터

- 단순한 데이터의 집합이 아닌, 조직의 목적을 위해 사용되는 데이터

- 작업을 처리하기 위해 일시적으로 생성된 임시 데이터는 운영 데이터가 아니라는 의미

 

공용 데이터

- 여러 사용자가 함께 소유하고 사용할 수 있는 데이터

 

3.2. 데이터베이스의 특징

실시간 접근성

- 현재 사용되고 있는 시스템들에서는 일괄 처리만 하는 경우가 드물기에, 임의적이고 비정형적인 쿼리에 대해 실시간으로 처리함

 

지속적인 변화

- 데이터베이스에 저장된 내용은 어느 한순간의 상태를 나타내지만, 데이터는 시간에 따라 항상 바뀜

- 데이터베이스는 지속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터를 유지함

 

동시 공용

- 서로 다른 목적을 가진 시스템들이 공용할 수 있도록 구성됨

- 같은 데이터의 동시 사용도 지원함

 

내용에 따른 참조

- 데이터가 저장된 물리적 주소나 위치가 아닌 내용으로 참조됨

- 데이터 자체의 값을 사용하여 조건을 제시하면, 이에 해당하는 데이터를 검색해 줌

- 그러므로 데이터의 저장되는 구조나 위치가 바뀌더라도, 응용 프로그램에는 영향을 미치지 않음

 

 

4. 데이터베이스의 구조

- 데이터베이스는 개념적으로 개체(Entity)와 관계(Relationship)로 이루어져 있음

- 하지만 실제로 데이터베이스는 개체와 관계의 들로 구성되었고, 이러한 값들은 물리적인 저장장치에 저장됨

- 이 저장 구조를 장치의 입장과 사용자의 입장에서 볼 수 있으며, 각각 물리적 구조와 논리적 구조로 구별할 수 있음

 

- 개체를 고유의 이름과 속성들로 정의한 것을 개체 타입이라고 함 (논리적 구조)

- 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스라고 함 (물리적 구조)

 

5. 물리적으로 데이터가 어떻게 저장되는가

0. 배경

- 논리적 구조의 수강 목록(ID, 강의명, 수강생명, 강사명) 테이블의 데이터가 물리적으로 어떻게 저장될까?

 

1. 테이블 스페이스 생성

- 수강 목록 테이블과 그 안의 데이터를 저장할 테이블 스페이스를 생성함

 

테이블 스페이스(Tablespace)

- 데이터베이스 인스턴스의 실제 데이터를 저장하는 물리적 공간으로, DBMS에 의해 관리됨

- 일반적으로 디스크(SSD, HDD)에 저장되며, DBMS는 디스크에서 데이터를 읽고 쓰며 필요한 경우 디스크에서 캐싱하여 메모리(RAM)에 올림

 

2. 테이블 생성

- 수강 목록 테이블을 생성하고 논리적 스키마를 정의함

 

3. 테이블 데이터 저장

- 테이블 스페이스에 수강 목록 테이블의 데이터를 저장함

- 이 데이터는 테이블과 연관된 파일에 기록되고, 파일은 블록(Block)이라는 작은 단위로 분할됨

 

4. 레코드 삽입

- 예를 들어, 아래와 같은 레코드를 수강 목록 테이블에 삽입했다고 가정하자.

- 이 레코드는 테이블 스페이스의 파일 블록에 저장됨

- 각 속성은 해당 블록에 저장되며, 각 레코드의 유일한 식별자인 ID는 인덱스를 통해 검색됨

 

5. 인덱스 생성

- 데이터베이스는 빠른 데이터 검색을 위해 인덱스를 생성함

- 기본 키(ID)로 지정된 열에는 자동으로 인덱스가 생성됨

 

6. 정리

- 데이터베이스 파일과 테이블 스페이스는 디스크에 저장됨

- 이 파일들은 DBMS에 의해 관리되며, 필요에 따라 캐싱하여 메모리에서 데이터 엑세스를 위해 최적화함

- 사용자는 논리적 스키마를 기반으로 데이터에 엑세스하고 쿼리를 수행하며, DBMS는 이러한 요청을 처리하기 위해 물리적 데이터 구조를 관리함

 

 

참고자료

https://medium.com/@shehanPW/differentiate-database-system-and-dbms-68e3fee0688a

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database

https://dar0m.tistory.com/245

https://black7375.tistory.com/19

https://minkwon4.tistory.com/310