티스토리 뷰

728x90

1. 용어

1. 데이터 (data)

- 컴퓨터에 저장되어 사용될 수 있는 정보

- 행정 데이터, 의료 데이터, 성적 데이터, 실험 데이터, ...

2. 데이터베이스(database)

- 실세계의 일부를 표현하는 연관된 데이터들의 구조화된 집합

ex) 스마트 폰의 전화번호부 데이터베이스 -> 전화번호라는 작은 세계를 표현

ex) 영화 데이터베이스 (영화라는 작은 세계를 표현)

3. 데이터베이스 관리 시스템 (DBMS: database management system)

- 데이터베이스의 생성과 관리를 담당하는 소프트웨어 패키지

- DBMS는 운영체제와 함께 중요한 시스템 소프트웨어 패키지로 분류됨

* 기능

1. 데이터 저장 및 검색

2. 보안 관리

3. 데이터 무결성

4. 트랜잭션 관리

5. 백업 및 복구

ex) Oracle, MS SQL-Server, MySQL, SQLite, Berkeley DB

4. 데이터베이스 시스템 (Database system)

- 데이터베이스 자체와 이를 관리하는 소프트웨어 (DBMS+응용 프로그램)를 모두 지칭하는 용어

- 즉, 데이터 베이스 관리 시스템(DBMS)과 그 위에 저장된 데이터(데이터베이스) 그리고 이 시스템을 운영하는 하드웨어 및 네트워크 등 모든 구성 요소를 포함하는 포괄적인 개념

* 구성 요소

1. 하드웨어 : 데이터베이스를 실행하고 데이터를 저장하는 물리적 장치

2. 소프트웨어 : 데이터를 관리하는 소프트웨어 시스템

3. 데이터 : 시스템에 저장되는 실제 데이터

4. 사용자 : 데이터베이스와 상호작용하는 관리자(DBA), 개발자, 최종 사용자

5. 절차 : 데이터베이스를 관리하고 사용하는 일련의 규칙과 절차

Figure 1.1 A simplified database system environment

*Meta-Data

- 데이터를 설명하는 데이터에 대한 정보

- 데이터 그 자체가 아니라 그 데이터를 정의하고 설명하는 정보를 담고있는 데이터

- 데이터베이스에서 데이터 구조와 속성을 정의하고, 데이터베이스의 효율적인 운영을 돕는다.

ex) 데이터베이스 스키마 : 테이블, 열, 데이터 타입, 제약 조건 등을 정의하는 정보


* DBMS와 데이터베이스 시스템의 차이점 (예시)

1. 만약, 학교에서 학생들의 정보를 관리할 경우, 

- DBMS : 그 데이터를 관리하는 소프트웨어(MySQL, Oracle DB)

- 데이터베이스 시스템 : DBMS, 학생 정보가 저장된 데이터, 그 시스템이 실행되는 서버, 관리자나 사용자 등을 포함한 전체 환경

2. 

- DBMS: 집을 짓는 데 필요한 도구

- 데이터베이스 시스템: 그 집 전체(건축물, 인프라, 사람)

5. 데이터베이스 질의(Query), 갱신(Update)

- 질의 (Query) : 데이터베이스에서 필요한 데이터를 검색하거나 조회하는 작업

   ex) SELECT, JOIN, WHERE

- 갱신 (Update) : 데이터베이스에 저장된 데이터를 변경하거나 수정하는 작업

   ex) UPDATE, INSERT, DELETE

 


2. 데이터베이스의 특징

1. 자기 기술성 (Self-Describing)

- 데이터베이스 시스템은 메타데이터(metadata)를 통해 스스로에 대한 정보를 저장하고 관리한다.

- 메타데이터는 데이터베이스의 구조, 테이블 정의, 인덱스 구성 등 데이터베이스 자체에 대한 정보를 포함하며, 데이터베이스 카탈로그(catalog)에 저장된다.

- 이를 통해 데이터베이스 시스템은 스스로의 구성을 파악하고, 사용자는 데이터베이스 구조에 대한 정보를 쉽게 조회할 수 있다.

2. 프로그램-데이터 독립성 (Program-Data Independence)

- 데이터베이스는 프로그램과 데이터를 분리하여 관리한다.

- 파일 처리 시스템과는 달리, 데이터베이스에서 데이터 파일의 구조가 변경되더라도 응용 프로그램은 거의 수정될 필요가 없다.

- 데이터베이스 시스템은 논리적 데이터 독립성과 물리적 데이터 독립성을 제공하여, 데이터의 물리적 저장 구조나 논리적 구조 변경이 응용 프로그램에 영향을 미치지 않도록 한다.

3. 데이터 추상화 (Data Abstraction)

- 데이터베이스는 데이터 모델을 사용하여 데이터 저장 구조의 세부 사항을 사용자로부터 은닉한다.

- 사용자는 복잡한 데이터 저장 방식이나 내부 구조를 알 필요 없이, 자신의 요구에 맞는 데이터만을 볼 수 있다.

- 데이터베이스 시스템은 세 가지 수준의 데이터 추상화를 제공한다.

1. 물리적 수준 : 데이터가 실제로 어떻게 저장되는지에 대한 세부 사항

2. 논리적 수준 : 데이터가 어떻게 조직되고 관리되는지에 대한 개념적 구조

3. 뷰 수준 : 특정 사용자가 관심 있는 데이터만을 제공하는 맞춤 뷰

 

4. 데이터에 대한 다양한 뷰(view) 제공

- 사용자는 각자의 관심영역에 맞는 뷰(view)를 정의할 수 있다.

- 사용자는 전체 데이터베이스가 아닌 특정 부분만을 필요에 따라 선택해서 볼 수 있다.

5. 데이터의 공유와 동시성 제어 (Cooncurrency Control)

- 데이터베이스 시스템은 다수의 사용자가 동시에 동일한 데이터에 접근할 수 있도록 지원한다. -> 동시성 제어 제공

- 여러 사용자가 동시에 데이터베이스를 사용하더라도 데이터의 일관성(consistency)을 보장하기 위해, 데이터베이스는 트랜잭션 처리 및 동시성 제어를 적용한다.

ex) 비행기 좌석 예약 시스템에서 같은 좌석이 두 명에게 동시에 배정되지 않도록 제어한다.

6. 트랜잭션 관리 및 ACID 속성

- 트랜잭션(transaction) : 데이터베이스에서 하나의 작업 단위를 의미, 여러 작업이 하나의 트랜잭션으로 묶여 수행

* ACID 특성

1. 원자성(atomicity) : 트랜잭션은 모두 완료되거나 아무것도 완료되지 않음(all or nothing)을 보장한다.

2. 일관성(consistency) : 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지한다.

3. 격리성(Isolation) : 트랜잭션이 독립적으로 처리되어, 동시에 실행되는 다른 트랜잭션에 영향을 미치지 않도록 고립되어야 합니다.

4. 지속성(Durability) : 트랜잭션이 성공적으로 완료되면, 그 결과는 시스템 오류가 발생하더라도 영구적으로 저장되어야합니다.


3. 데이터베이스 사용자의 분류

1. 데이터베이스 설계자 (Database designer)

- 데이터베이스의 설계를 책임지는 사람 -> 요구 분석 과정을 거쳐서 관리할 데이터를 선정하고, 저장할 구조를 결정한다.

- 실세계 현상을 모델링하는 기술이 요구된다. -> ERD, FD, 관계형 데이터베이스 이해

2. 데이터베이스 응용 개발자 (Database application developer)

- 사용자를 위해 잘 정의된 기능의 응용을 분석/설계하고 구현하는 사람

- 사용자의 요구 분석을 통한 트랜잭션의 명세를 작성)

- 그래픽 인터페이스 등의 구현을 통해 최종 사용자의 이용 편의성을 제공한다.

- SQL을 사용하여 Query를 작성하고, 데이터를 입력, 수정, 삭제하는 기능을 개발

3. 데이터베이스 (최종) 사용자 (end user)

- 데이터베이스에 대하여 질의하고, 변경하고 보고서를 작성하는 사람

 

* 초보 사용자(parametric or naive users)

: 미리 일정한 용도로 작성된 프로그램을 사용하는 사용자

ex) 은행 점원, 여행사 예약 담당자 (기작성 트랜잭션 사용)

* 전문 사용자(sophisticated end users)

: DBMS의 고급 기능을 이용하여 복잡한 응용을 개발

ex) 데이터과학자, 비즈니스 분석가

 

3. 데이터베이스 관리자 (Database Administrator, DBA)

- 데이터베이스 시스템의 관리를 총괄하여 책임지는 사람

- 데이터베이스 성능 모니터링, 튜닝, 사용자 관리 등

- DBMS 자체는 물론 데이터베이스 구축, 관리에 지식과 많은 경험이 요구 

4. DBMS 설계 및 구현자

- DBMS 소프트웨어 자체를 설계하고 구현하는 업무를 담당하는 사람들

- 시스템 프로그래밍에 익숙하고, DB 이론에 해박한 전문가

- 개발하는 모듈의 예 : 카타로그 구현, 질의어 처리, 데이터 접근과 버퍼링, 동시성 제어, 회복, 보안 관리


4. DBMS의 장점

1. 데이터 중복성의 제어 및 중복 최소화

- 데이터베이스는 데이터 중복성(redundancy)을 효과적으로 제어하여 동일한 데이터가 여러 곳에 중복 저장되는 것을 방지

- 이를 통해 데이터 일관성(consistency)을 유지하며, 불필요한 데이터 중복으로 인한 저장 공간 낭비 감소

- 중복이 적을수록 데이터 관리가 더 쉬워지고, 데이터 불일치 문제를 줄일 수 있어 시스템의 신뢰성 향상

2. 강력한 보안 기능

- 데이터베이스는 사용자의 데이터 접근을 권한 기반으로 통제할 수 있는 강력한 보안 기능을 제공

- DBA(Database Administrator)접근 권한을 설정하고 관리할 수 있으며, 데이터를 보다 안전하게 보호한다. 데이터의 중요성에 따라 다양한 형태의 접근 권한을 부여할 수 있어, 민감한 정보에 대한 보안이 강화된다.

3. 지속성 기억 공간 제공

- 프로그램 실행이 끝나더라도 데이터베이스는 관련 데이터와 객체를 영구적으로 저장

- 즉, 데이터는 시스템이 꺼지거나 프로그램이 종료된 후에도 지속적으로 유지된다.

4. 효율적인 질의 처리

- 데이터베이스는 질의 처리의 효율성을 높이기 위해 여러 가지 최적화 기능을 제공

- 인덱스를 통해 데이터를 빠르게 검색할 수 있으며, 질의 처리 최적화 모듈을 사용하여 최적의 질의 수행 계획을 선택해 질의 성능을 향상

5. 백업과 회복 기능

- 데이터베이스 시스템은 백업(backup)회복(recovery) 기능을 통해 시스템 고장 시에도 데이터를 복구 가능

- 이 기능을 통해 데이터의 일관성이 보장되며, 예기치 않은 장애 발생 시에도 데이터를 안전하게 복원할 수 있어 비즈니스 연속성이 확보된다.

6. 다양한 사용자 인터페이스 제공

- 데이터베이스는 다양한 사용자 인터페이스를 제공하여 사용자가 손쉽게 데이터를 조회, 수정, 삽입, 삭제할 수 있도록 돕는다.

- 다양한 도구와 응용 프로그램을 통해 사용자에게 편리한 인터페이스를 제공

7. 복잡한 데이터 관계의 체계적 표현

- 데이터베이스는 여러 테이블 간의 복잡한 관계를 체계적으로 표현 가능

ex) 외래 키(foreign key) 등을 통해 데이터 간의 관계를 명확하게 나타내고, 이를 바탕으로 데이터를 효율적으로 관리

8. 동시성 제어 기능

- 데이터베이스는 여러 사용자가 동시에 시스템에 접근해도 동시성 제어(concurrency control)를 통해 데이터 일관성을 유지

- 다수의 사용자가 동시에 데이터에 접근할 때, 트랜잭션 관리를 통해 데이터 손실이나 충돌을 방지하고, 시스템의 안정성을 보장

9. 데이터 독립성 제공

- 데이터베이스는 데이터와 프로그램의 독립성을 제공하여 데이터베이스 구조가 변경되더라도 응용 프로그램은 최소한의 수정만 하도록 함

- 따라서, 응용 프로그램 개발이 용이해지고, 데이터 저장 구조 변경이 필요할 때 유연하게 대응 가능

10. 데이터 무결성 보장

- 데이터베이스는 무결성 제약 조건을 통해 각 속성 값이 가질 수 있는 값을 제한하여 데이터의 정확성을 보장

ex) 나이 필드는 0세에서 120세 사이의 값만 허용하는 식으로 데이터 무결성을 유지

- 또한, 테이블 간의 관계를 통해 데이터의 일관성을 보장하는 무결성 제약 조건을 제공


5. 데이터베이스를 사용하지 않아도 좋은 경우

1. 데이터베이스와 응용이 단순하고 잘 정의되어 있으며, 변경될 가능성이 적을 경우

2. 다수 사용자 데이터 접근이 필요하지 않은 경우

3. 데이터의 보안, 동시성 제어, 회복, 무결성 조건 등의 기능이 필요하지 않을 경우

-> 불편요한 기능 (데이터 보안, 동시성 제어, 회복, 무결성 조건 등)은 오히려 오버헤드가 된다.

4. DBMS 오버헤드로 인해 엄격한 실시간 데이터 처리 요구사항을 만족시키기 힘든 경우

 

* DBMS를 사용하면 비용이 높아진다. 높은 초기 투자 비용과 추가적인 하드웨어가 필요하다. 


 

728x90

'👩🏻‍💻개발공부 > 데이터베이스' 카테고리의 다른 글

1-2. 데이터베이스 구조  (4) 2024.10.09
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함