데이터베이스 개념

Guhyun·2021년 2월 16일
0

💾 데이터베이스

목록 보기
1/5
post-thumbnail

1. 데이터베이스 개념

1.1. 데이터베이스 정의

데이터베이스는 어떤 기능을 수행하기 위한 데이터들의 모임이다.

한 줄 정의

  • 특정 업무의 기능을 수행하기 위한 데이터로 공동으로 사용하기 위해 데이터들을 통합한 것으로, 중복이 없으며 어딘가에 저장된 데이터이다.

이 데이터들은 다음과 같은 4가지 특성을 가진다.

  1. 운영 데이터(Operational Data)
    어떤 업무를 수행하는 데 필요한 데이터를 모아놓은 것이다.
  2. 통합 데이터(Integrated Data)
    데이터를 통합하여 중복을 배제한 데이터이다.
  3. 공유 데이터(Shared Data)
    여러 사용자들이 같은 데이터를 공유하여 사용하는 데이터이다.
  4. 저장 데이터(Stored Data)
    어딘가에 저장되어 있는 데이터이다.

1.2. 데이터베이스의 특징

업무 수행을 위해 중복을 배제하여 통합했으며, 동시에 접근할 수 있는 저장된 자료인 데이터베이스는 다음과 같은 특징이 있다.

  1. 실시간 접근성
    실시간으로 데이터에 접근이 가능하다.
  2. 최신 상태 유지
    데이터베이스의 변경에 대해 항상 최신 상태를 유지한다.
  3. 동시 접근성
    동시에 여러 명이 같은 데이터에 접근할 수 있다.
  4. 내용에 의한 참조
    데이터를 인덱스나 주소값이 아닌 내용으로 접근할 수 있다.

2. DBMS의 기능

2.1. DBMS 정의

  • Database Management System

데이터의 종속성과 중복성은 기존 파일시스템의 문제점으로 지적되었다.

DBMS는 데이터의 종속성과 중복성을 최소화하기 위해 만들어졌으며,

사용자가 데이터베이스를 편리하게 관리할 수 있게끔 해주는 소프트웨어다.

2.2. DMBS 필요성

데이터의 종속성과 중복성이 유발하는 문제점은 무엇일까?

똑같은 데이터가 엄청나게 많이 있다고 생각해보면,

  • 저장 공간이 낭비될 것이고,

  • 모든 데이터에 보안을 유지하기 힘들 것이다.

  • 또한 수정될 경우 일관성을 잃어버린다.

  • 이는 데이터의 정확성을 깨뜨리며 무결성에 위배된다.

데이터 간 종속성이 있는 경우는 어떨까?

여기서 데이터의 종속성이란 응용프로그램과 저장된 데이터의 관계다.

둘이 독립적이지 않다면 데이터 변경 시 응용프로그램도 변경해야한다.

이 문제들을 해결하기 위해 DBMS가 필요하다.

2.3. DBMS 기능

  1. 정의(Defenition)
    DBMS는 데이터의 구조, 제약조건, 데이터간 관계등을 정의한다.

  2. 조작(Manipulation)
    DBMS는 데이터의 검색,삽입,삭제,갱신을 처리한다.

  3. 제어(Control)
    데이터의 삽입,삭제,갱신이 정확히 이루어지도록 통제하는 역할을 하며, 사용자의 권한에 맞는 데이터만 접근하도록 제어한다. 또한 여러 사용자가 동시에 데이터에 접근할 수 있도록 만들어준다.

  • 참고로 DBMS의 제어 기능에는 백업과 회복의 역할도 있지만, 회복은 기존 파일시스템의 역할이기도 하다.

2.4. DBMS 장단점

- 장점

DBMS가 기존 파일시스템의 종속성과 중복성을 해소하기 위해 나왔으므로, 여기서부터 장점을 찾을 수 있다.

  1. 데이터를 수정하더라도 응용프로그램을 변경할 필요가 없다.
  2. 데이터 저장매체 자체를 바꿔도 응용프로그램을 변경할 필요가 없다.
  3. 통합된 데이터를 관리하면서 중복을 최소화시킬 수 있다.

1번을 논리적 독립성, 2번을 물리적 독립성이라고 표현한다.

데이터베이스를 사용하므로 여러 사용자가 동시에 접근 가능하며, 실시간으로 최신 데이터를 유지할 수 있는 것도 장점일 것이다.

  1. 실시간 접근 가능
  2. 최신 데이터 유지
  3. 여러 사용자 동시 접근 가능

통합된 데이터인 데이터베이스를 관리하므로 보안에도 용이하다.

  1. 보안에 용이

- 단점

가장 쉽게 파악할 수 있는 단점은 복잡해진다는 것이다.

그리고 데이터베이스를 관리할 수 있는 DBA가 필요하다.

데이터를 저장하기 위한 비용이 들며,

DBMS가 데이터 관련한 처리를 모두 담당하므로 과부하가 걸릴 수 있다.

그리고 백업(Backup)과 복구(Recovery)가 어려운 것도 단점이다.

  1. 복잡한 시스템
  2. 데이터베이스 관리자(DBA) 필요
  3. 데이터베이스화 추가 비용 발생
  4. DBMS 과부하 가능성
  5. 백업, 복구의 어려움

3. 스키마(Schema)

3.1. 스키마 정의

  • Schema : 개요

Schema의 사전적 의미는 개요라는 뜻이다.

CS 분야에서 스키마는 데이터베이스의 명세(Specification)을 나타내는 설명서이다.

구체적으로 데이터베이스는 개체(Entity), 속성(Attribute), 관계(Relation)로 구성된다.

스키마는 이것들에 대한 설명서 역할을 한다.

아마 그래서 개요라는 Schema라고 명칭한 것 같다.

스키마에는 3가지 종류가 있다.

  1. 외부 스키마(External Schema)

  2. 개념 스키마(Conceptual Schema)

  3. 내부 스키마(Internal Schema)

3.2. 스키마 특징

데이터에 대한 데이터를 Meta Data라고 한다.

Schema 역시 메타 데이터로 데이터 사전 안에 저장된다.

스키마는 데이터에 대한 설명서이므로 시간이 지나도 변하지 않는다.

3.3. 스키마 3계층

스키마는 가장 바깥의 외부 스키마와 가장 안쪽의 내부 스키마,

그리고 이 둘을 이어주는 개념스키마로 구성되어 있다.

일반적인 스키마는 개념스키마를 의미한다.

- 외부 스키마

외부 스키마는 사용자와 가장 가까이 닿아 있는 스키마다.

그래서 사용자 뷰(View)라고도 표현한다.

외부 스키마는 사용자가 필요하는 데이터의 구조를 명시하며

여러 개가 존재할 수 있다.

- 개념 스키마

데이터베이스 안의 전체 데이터들의 명세를 모아 놓은 것이다.

사용자에게 받아온 데이터들의 명세인 외부스키마 정보도 포함된다.

딱 1개만 존재하며 데이터들의 구조, 제약 조건, 관계에 대한 정보를 포함한다.

중요한 접근 권한이나 보안 및 무결성에 대한 정보도 포함되어 있다.

DBA가 보통 구성하며 데이터베이스를 구성하는 조직입장에서 정의한다.

- 내부 스키마

실제 물리적으로 데이터를 저장하는 방법에 관한 정보이다.

물리적 저장장치와 관련이 깊다.

데이터베이스에 저장될 레코드들의 물리적 구조나 순서등을 정의한다.

4. 데이터베이스 언어

DBMS의 3가지 기능이 정의, 조작, 제어였다.

이를 수행하기 위한 데이터베이스 언어들이 존재한다.

4.1. DDL

데이터 정의어인 DDL은 데이터의 스키마를 정의한다.

여기서 스키마는 외부 스키마이며 데이터의 구조, 제약조건, 관계, 접근방식를 수정한다.

또한 데이터베이스 안의 데이터베이스 안의 엔티티간의 매핑 관계를 정의한다.

이렇게 작성된 정보들은 데이터 사전(Data Dictionary)안에 저장된다.

4.2. DML

DML은 사용자가 데이터를 조작할 수 있도록 만든 언어이다.

포트란, 코볼 등의 언어로 만들어져 있으며

DML을 사용하면 응용프로그램을 통해 사용자가 직접 DB에 접근할 수 있다.

대표적인 DML로 데이터베이스에 정보를 요청하는 쿼리문이 있고

이는 비절차적 데이터 언어이다.

  • 절차적 조작 언어란 데이터를 구하는 방법을 순서에 따라 적어 놓은 것이다.

  • 비절차적 조작 언어란 필요한 데이터만 명시하고 구체적인 방법은 적지 않는다. 코드의 효율은 떨어지는 편.

데이터 조작어는 사용자가 사용하기 편하도록 자연 언어에 가까워야한다.

또한 데이터 연산과 데이터 간 관계를 명확히 표현할 수 있어야 한다.

4.3. DCL

제어를 위한 언어인 DCL은 데이터의 무결성, 보안, 접근 권한, 회복 등을 처리한다.

주 역할은 데이터를 보호하고 관리하는 것이다.

  • 데이터 보안과 무결성을 유지하고, 데이터 회복과 병행수행을 제어한다.

병행수행이란 동시에 여러 트랜잭션을 처리할 수 있도록 하는 것이다.

병행수행 시 동시에 같은 데이터에 접근하게 되면 문제가 생길 수 있다.

이것을 제어하는 일을 병행제어이고 병행제어를 통해 병행수행을 제어한다.

5. 데이터베이스 사용자

데이터베이스를 이용하는 유저는 DBA, 응용프로그래머, 사용자가 있다.

5.1. DBA

DBA가 하는 일을 매우 다양하다.

우선 개념스키마와 내부스키마에 대해 정의한다.

그리고 DB의 백업과 복구에 대한 전략을 수립하며,

보안을 유지하기 위해 접근 권한을 설정하며

무결성을 유지하기 위한 제약조건도 정의한다.

내부스키마에는 데이터 저장 구조와 방법을 정의한다.

이 외에도 DB 성능 향상을 위한 전략을 수립하고

DB의 병목 지점을 모니터링하거나 데이터들의 통계적인 분석도 진행한다.

5.2. 응용프로그래머

응용프로그래머는 호스트 언어 작성 시 DML을 넣어 일반 사용자가 데이터베이스에 접근할 수 있도록 만든다.

호스트 언어란 C, Java, Python과 같은 프로그래밍 언어이다.

5.3. 일반 사용자

사용자는 보통 터미널을 이용하며 질의어나 응용프로그램을 이용해 DB에 접근하며 데이터를 활용하는 사람들이다.

profile
ghgoo1798@gmail.com

0개의 댓글