[DB] 데이터베이스 기본 개념 톺아보기

데이터베이스란?

특정 조직의 여러 사용자들이 공유해서 사용할 수 있도록 통합해서 저장 운영 데이터의 집합을 의미

=> 조직을 운영하기 위해 필요한 데이터를 수집하여 저장해두었다가, 필요할 때 제공

특징:

1. 실시간 접근(real-time accessibility) 가능

사용자의 데이터 요구에 실시간으로 응답하여 제한된 시간 내에 데이터를 제공

 

2. 지속적인 변화(continuous evolution) 발생_동적임

현실 세계의 상태를 반영해야 하므로,

데이터를 계속 삽입*삭제*수정하여 정확한 데이터를 유지

 

3. 동시 공유(concurrent sharing) 가능

여러 사용자가 동시에 데이터베이스를 이용할 수 있는 동시 공유 특성 제공

이때 사용자가 서로 다른 데이터를 동시에 사용하는 것뿐만 아니라, 같은 데이터를 동시에 사용하는 것도 모두 지원

 

4. 내용 참조(contents reference) 가능

내용이 저장된 주소나 위치가 아닌 데이터의 내용, 즉 값으로 참조 가능

=> 데이터가 저장된 주소가 다 다르지만, 데이터 내용 조건으로 조건에 맞는 데이터를 찾을 수 있음

e.g. 사람 중에서 나이가 19살 이상인 사람들만 검색해서 제공 가능

 

DBMS 등장 배경:

데이터베이스 관리 시스템을 사용하기 전까지는 데이터를 관리하기 위해 파일 시스템이라는 소프트웨어를 이용하였다.

 

파일 시스템:

데이터를 파일로 관리할 수 있도록 파일을 생성*삭제*수정*검색하는 기능 제공

운영체제와 함께 설치되며, 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리

 

장점:

별도의 구입 비용이 들지 않음

 

단점: 데이터를 잘 정리정돈 해서 필요할 때 쉽게 꺼내 쓰기가 어려워짐

1. 같은 내용의 데이터가 여러 파일에 중복 저장

=> 데이터 일관성과 데이터 무결성 유지가 어려워짐, 저장공간이 낭비됨

e.g. 한 파일만 수정한 경우, 다른 파일을 수정하지 않으면 데이터 간의 불일치가 발생하여 일관성이 유지되지 않음

e.g. 데이터 규약이 있는 경우, 그 규약을 지켜야하는 파일 모두 제약 사항을 확인해야함.

그렇지 않으면 데이터 무결성, 즉 정확성이 유지되지 못함

 

2. 응용 프로그램이 데이터 파일에 종속적

응용 프로그램은 파일에 직접 접근하여 데이터를 처리해야 하므로, 파일의 구조가 변경되면 응용 프로그램 또한 변경되야 함

=> 데이터 종속성을 지님

 

3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능 부족

동시 공유x: 응용 프로그램 하나가 사용 중인 파일을 다른 응용 프로그램에서 접근하여 사용할 수 없음

보안 부족: 파일 단위로 읽기*수정(실행 권한을 부여하는 방식으로 데이터 접근을 통제 

But, 파일 안의 레코드나 필드와 같은 더 작은 단위에 대한 접근 통제 및 권한 부여가 부족함

회복 기능 부족: 응용 프로그램 사용 도중 장애가 발생한 경우, 데이터를 일관된 상태로 회복하기 어려움

 

4. 응용 프로그램 개발이 쉽지 않음

파일 시스템에서는 파일에 접근하여 데이터를 관리하는 모든 작업을 응용 프로그램이 담당해야 하기 때문에,

사용자 요구에 맞는 응용 프로그램을 개발하는 데 어려움이 많음

 

데이터베이스 관리 시스템(DBMS;DataBase Management System):

파일 시스템이 가진 데이터 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어

=> 조직에 필요한 데이터를 데이터베이스에 통합하여 저장 및 관리

 

주요 기능 3가지

  • 데이터베이스 구조를 정의하거나 수정할 수 있음
  • 응용 프로그램을 대신하여 데이터베이스에 존재하는 데이터의 검색*삽입*수정*삭제를 가능하게 하고, 모든 응용 프로그램이 데이터베이스를 공유할 수 있게 함
  • 데이터를 항상 정확하고 안전하게 유지함(데이터 일관성 및 무결성 유지, 보안성 및 회복성, 동시 공유 가능)

데이터 독립성 ( <-> 데이터 종속성)

사용자 <->  응용 프로그램 <-> 데이터베이스 관리 시스템 <-> 데이터베이스

데이터가 최소한의 중복으로 데이터베이스에 통합되어 저장되면,

여러 응용 프로그램이 데이터 동시 사용시 발생할 수 있는 문제들을 데이터베이스 관리 시스템에서 중재해줌

또한 사용자가 응용 프로그램 없이도 데이터 처리를 직접 요구할 수 있음

=> 응용 프로그램을 대신해서 데이터베이스에 접근하고 이를 관리하는 모든 책임을 짐

데이터베이스 구조나 접근 방법 등이 변경되어도, 사용자가 미리 알거나 응용 프로그램을 변경할 필요가 없기 때문에

데이터 독립성이 확보됨

 

단점

1. 비용이 많이 든다

운영체제와 함께 설치된느 파일 시스템과 달리, DBMS는 별도 구입 비용이 많이 든다.

또한 복잡하고 다양한 기능을 제공하기 위해 컴퓨터 자원을 많이 사용함

 

2. 백업과 회복 방법이 복잡함

데이터베이스는 데이터 양이 많아 구조가 복잡하고, 동시 공유를 지원하므로

장애 발생 시 원인 및 상태 파악이 어려움

-> 장애 발생 전의 데이터 백업 및 장애 발생 후 데이터를 원래의 상태로 회복하는 방법이 복잡함

 

3. 중앙 집중 관리로 인한 취약점 존재

모든 데이터가 데이터베이스에 통합되어 있고 이에 대한 관리 책임이 DBMS에 집중되어,

데이터베이스나 데이터베이스 관리 시스템에 장애가 발생하면 전체 시스템의 업무 처리가 중단됨

 

데이터베이스 시스템

스키마란?

데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것

e.g. 만약 게시글에 대한 데이터를 저장한다면, 게시글 제목, 내용, 작성자 등이 스키마에 해당된다.

인스턴스:

스키마에 따라 데이터베이스에 실제로 저장된 값

e.g. 제목1, 내용1, 홍길동

 

3단계 데이터베이스 구조

등장배경:

미국 표준화 기관인 ANSI/SPARC에서 데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해 및 이용할 수 있도록 제안

 

구조: 

외부, 개념, 내부 단계 총 3단계가 존재하며, 내부 단계에서 외부 단계로 갈수록 추상화 레벨이 높아짐

=> 추상화 레벨이 높아질 수록 데이터베이스가 어떻게 돌아가는지의 복잡한 내용을 몰라도 됨

 

  • 외부 단계 (external level) : 
    데이터베이스를 개별 사용자 관점에서 이해하고 표현
    => 사용자마다 필요하다고 생각한 데이터베이스 구조의 모습은 다를 수 있기 때문에, 외부 스키마(==서브 스키마)가 여러 개 존재 가능
    => 개념 스키마의 일부분임
  • 개념 단계 (conceptual level):
    데이터베이스를 데이터베이스 관리 시스템이나 관리자의 관점에서 이해하고 표현
    => 데이터베이스 하나에 개념 스키마 하나만 존재 (전체 데이터베이스)
    => 어떤 데이터가 저장되는지, 데이터 들간의 관계, 데이터 제약조건 등 정의
  • 내부 단계 (internal level)
    데이터베이스를 저장 장치의 관점에서 이해하고 표현
    => 전체 데이터베이스가 디스크와 테이프 같은 저장 장치에 실제로 저장되는 방법을 정의
    => 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의
    => 개념 스키마에 대한 물리적인 저장 구조를 표현하므로 하나의 내부 스키마만 존재

목적: 

데이터 독립성(하위 단계의 스키마를 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 상위 스키마가 영향을 받지 않는 특성) 실현

  • 논리적 데이터 독립성: 개념 스키마가 변경되더라도 외부 스키마(응용 프로그램이나 사용자)가 영향 받지 않음
    e.g. 데이터베이스에 새로운 속성을 추가하거나 테이블 간의 관계를 변경했을지라도, 기존 속성을 조회하는데 영향을 받지 않음
  • 물리적 데이터 독립성: 내부 스키마가 변경되더라도 개념 스키마가 영향 받지 않음
    == 데이터베이스의 물리적 저장 방식이나 저장 매체의 변경이 논리적 구조에 영향을 미치지 않음
    e.g. 데이터가 HDD에서 SSD로 이동되거나, 인덱스가 추가되어 검색속도가 빨라지더라도,
    SELECT문은 동일하게 작동

관계형 데이터베이스 관리시스템

DBMS에 Relational이 추가된 것으로,  관계형 모델을 기반으로 하는 DBMS의 한 유형이다.

RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리 가능

 

관계헝 데이터베이스 관리시스템과 비관계형 데이터베이스 관리시스템의 차이점

  RDBMS DBMS
저장 형식 - 테이블(또는 관계) 형식으로 저장
- primary key라는 식별자가 존재하며,
foreign key를 사용하여 다른 테이블과 관계 형성
- 파일로 저장
- 계층적 또는 탐색 형식으로 저장
스키마 스키마에 따라 데이터 구조가 엄격하게 정의 스키마리스 또는 동적 스키마 사용
데이터 무결성 ACID를 유지하며 데이터 무결성을 높임
  • A : Atomocity 원자성
  • C : Consistency 일관성
  • I : Isolation 고립성
  • D : Durability 지속성
X
데이터 처리 많은 데이터 처리에 유리 적은 데이터 처리에 유리
예시 MySQL, Oracle, SQL server, PostgreSQL  xml

 

선택 기준

  • 관계형 데이터베이스: 데이터 무결성 복잡한 쿼리가 필요할 때 적합(정렬, 검색과 같은 작업을 빠르게, 편리하게, 안전하게 처리)
  • 비관계형 데이터베이스:  유연한 데이터 모델, 빠른 속도, 대규모 분산 데이터 처리가 필요한 경우에 적합

 

관계형 데이터베이스

릴레이션: 관계형 데이터베이스에서 각 테이블을 지칭

  • 릴레이션 스키마: 릴레이션이 가져야 하는 데이터 구조 정의 (아래 테이블의 제목, 내용 => 속성을 의미)
  • 릴레이션 인스턴스: 릴레이션에 저장된 실제 데이터들의 집합 의미 (아래 테이블의 제목1,2 & 내용 1,2 => 속성이 가질 수 있는 값들의 집합)
  • 릴레이션 차수: 릴레이션에 포함된 속성의 개수(아래 테이블에서는 속성이 제목, 내용이므로 차수는 2임)
    모든 릴레이션은 최소 1 이상의 차수를 유지해야함
  • 카디널리티: 유니크한 데이터 집합의 개수를 의미 (== 테이블의 행의 개수를 의미)
    유니크하기 때문에 데이터의 중복도와 반비례하는 특성을 지님
Board number 제목 내용
1 제목1 내용1
2 제목2 내용2

'CS > DB' 카테고리의 다른 글

[DB] Connection & DB Session  (0) 2025.01.27
[DB] 정규화  (0) 2025.01.23
[DB] 인덱스 정의, 동작 방식, 종류 등 톺아보기(MySQL 기준)  (0) 2025.01.14
[DB] JOIN 알아보기  (0) 2025.01.09
[DB] SQL 톺아보기  (0) 2025.01.09