DB정리는 할껀데 핵심만 할껍니다. - 데이터베이스란?

0

DB

목록 보기
1/4

데이터 베이스의 소개

해당 시리즈는 아주 간단하게 CS 기본 지식을 다루지만 놓치는 내용없이 다루려고 한다.
즉, 시험을 준비하면 딱 B+ 맞을 정도(?), 면접을 준비한다면 충분한 정도로 다룬다.

1. 데이터란?

데이터 : 데이터는 현실 세계에서 사건이나 사물의 특징을 관할하거나 측정하여 기술하는 가공되지 않은 사실이나 값을 의미한다.

간단하게 말해서, 그냥 실세계의 가공되지 않은 무의미한 자료들이라고 생각하면 된다. 그러나, 우리는 이러한 데이터를 통해서 유의미한 정보들을 얻어내곤 한다. 이것이 바로 정보의 의미이다.

정보 : 정보란 의미있고 쓸모 있는 내용으로 가공하여 체계적으로 조직한 데이터를 의미한다.

즉, 다음과 같이 무의미한 데이터들을 처리하여 유의미한 정보를 만드는 것이다.

2. 데이터 베이스란?

그럼 이런 데이터들을 정보로 처리하기 이전에 어떻게 체계적으로 관리할 수 있을까?? 그것이 바로 데이터 베이스의 시발점이다.

데이터 베이스 : 데이터 베이스란 어떤 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합이다.

위의 정의를 통해 알 수 있는 데이터 베이스의 의미를 정리하면 다음과 같다.

  1. 공유 데이터(shared data) : 데이터 베이스는 공유 데이터이다. 어느 하나의 프로그램에 종속된 것이 아니라, 다수의 사용자나 프로그램이 공동으로 소유하고 유지하는 개념이다.

  2. 통합된 데이터(integrated data) : 데이터 베이스는 통합된 데이터이다. 통합 데이터란 분산된 데이터들을 한 곳으로 모아 중복을 최소화하기 위한 개념이다. 이는 데이터의 일관성이 유지되고, 관리 비용이 감소한다는 장점이 있다.

  3. 저장된 데이터(stored data) : 저장된 데이터는 컴퓨터가 접근 가능한 매체에 저장된 디지털 데이터를 의미한다.

  4. 운영 데이터(operational data) : 데이터 베이스는 운영 데이터이다. 이는 조직 고유 업무를 수행하기 위하여 지속적으로 유지해야 하는 데이터를 의미한다. 즉, 임시적으로 처리하는 데이터들이 아닌 시스템을 운영하기 위해서 필요한 데이터인 것이다.

2.1 데이터 베이스의 특징

위의 정의를 지키기위해 데이터 베이스는 다음의 특징을 갖게 된다.

  1. query(질의)에 대하여 실시간 처리로 응답해야한다. ( 실시간 처리 )
  2. DB는 삽입, 삭제, 갱신에 의해 계속적으로 변하고 정확한 데이터를 유지할 수 있다. ( 변화 )
  3. 자신이 원하는 데이터를 동시 공유할 수 있다. ( 공유성 )
  4. 데이터의 위치나 주소가 아닌, 원하는 데이터의 내용에 따라 참조가 가능해야 한다. ( 내용에 따른 참조 )

정리하자면, DB는 실시간으로 모두가 공유하는 데이터를 내용에 따라 참조하여 변화시킬 수 있어야 한다는 것이다.

3. 데이터베이스 관리 시스템

데이터베이스 관리 시스템(Database Management System) : 약자로 DBMS라고 하며, 이는 데이터베이스에 접근하여 데이터를 조작할 수 있도록 도와준다.

즉, 사용자(개발자)들은 DB에 직접 접근하여 데이터를 다루는 것이 아니라, DBMD의 도움으로 데이터를 다루고 변화시킬 수 있다는 것이다.

대표적인 DBMS로 SQL이 있다.

3.1 데이터 종속성

데이터 종속성 : 데이터 종속성은 데이터와 응용 프로그램 간의 상호 의존 관계를 말한다.

종속성이 높은 경우에는 데이터 구성 방법이나 접근 방식이 달라지면 응용 프로그램에도 영향을 주게 된다.

이미 생성된 데이터의 구성 등을 변경하기 위해서는 해당 파일에 접근하는 모든 응용 프로그램도 같이 변경해야 한다. 이는 데이터 종속성이 높은 경우에 해당하며, 개발된 응용 프로그램에서 많은 상황에서 심각한 문제가 될 수 있다.

가장 대표적인 예로 파일시스템이 있다.

만약 A,B 프로그램에서 C라는 파일을 이용하고 있다고 하자, C파일의 데이터들을 바꾸면 A,B파일은 C 파일을 읽는 코드를 바꾸어주어야 한다.

또한, 파일 시스템은 데이터 종속성 뿐만 아니라 데이터 중복성 문제가 있다. 각 응용 프로그램마다 데이터 파일을 가지고 있기 때문에, 데이터 파일의 변경이나 응용 프로그램의 코드 변경을 모든 프로그램마다 변경해주야 하는 단점이 있다.

3.2 데이터 중복성

파일시스템에서는 데이터 파일과 응용 프로그램이 일대일로 대응되어야 하기 때문에 데이터 내용이 같아도 구조가 다르면 별도의 파일을 만들어야 한다. 따라서 파일 시스템에서는 한 시스템 내에 같은 데이터가 중복되어 저장되고 관리되는 경우가 많다. 이것을 데이터의 중복성이라고 한다.

4. 데이터 베이스 관리 시스템(DBMS)의 정의

파일 시스템이 가진 데이터 종속성데이터 중복성 문제를 해결하기 위하여 **데이터 베이스 관리 시스템(Database Manegement System, DBMS)가 제안되었다. DBMS는 사용자 또는 응용 프로그램과 데이터베이스 사이에 위치하여 데이터베이스를 공유할 수 있도록 관리해주는 소프트웨어로 컴퓨터에 저장된 대량의 데이터를 체계적으로 관리하고 사용자가 원하는 정보를 효과적으로 검색하도록 하는 기능을 제공한다.

4.1 DBMS의 장점

  1. 데이터 중복을 최소화 : DBMS는 데이터를 통합하여 관리하므로, 데이터의 중복이 없다.
  2. 데이터를 공유 : 데이터를 공유하여 응용 프로그램이 관리하던 데이터 관리의 부담을 감소시킬 수 있다.
  3. 데이터의 일관성 : 파일 시스템의 경우, 데이터들이 분산되어있어 하나의 데이터를 바꾸더라도 다른 데이터들도 업데이트 시켜야 한다. 이 때 하나의 데이터만 제대로 변경시키지 못하면 데이터의 일관성이 무너지는 현상이 발생한다. 그러나 DBMS는 이러한 데이터의 일관성을 설정해주면 자동으로 처리해주는 장점이 있다.
  4. 데이터의 무결성 : 무결성은 현실세계의 값과 데이터베이스에 저장된 데이터 값이 일치하는 정확성을 말한다. DBMS는 현실세계에서는 발생할 수 없는 값들에 대해서 관찰하고, 제어해준다.
  5. 데이터 보안 : 여러 사람이 접근하는 DB에는 보안이 매우 취약한데, DBMS가 이를 처리해줄 수 있다.

4.2 관계 DBMS

DBMS의 종류로는 네트워크 DBMS, 계층 DBMS, 관계 DBMS가 있다.

그 중에서 가장 많이 사용되는 관계 DBMS의 정의는 다음과 같다.

관계 DBMS : 관계 DBMS는 테이블 기반으로 하는 관계 데이터 모델을 사용한다. 즉, 관계 DBMS에서 데이터베이스는 하나 이상의 테이블로 구성되며 모든 데이터는 이 테이블에 저장된다고 보면 된다. 이는 오늘날의 사실상 표준이된 SQL의 시초이다.

5. 데이터베이스 시스템

데이터베이스 시스템은 데이터를 데이터베이스에 저장하고 관리해서 필요한 정보를 생성하는 컴퓨터 중심의 시스템이다. 데이터베이스 시스템은 다음과 같이 사용자(user) 또는 응용 프로그램, 데이터 언어, 데이터 관리시스템(DBMS), 데이터베이스(DB) 로 구성된다.

  • 참고
  1. 사용자 : 응용 프로그램을 사용하는 end user이다.
  2. 프로그램 : DBMS와 연동된 프로그램으로 사용자에게 프로그램을 제공하는 개발자도 포함된다.
  3. 데이터베이스 관리자(DBA) : DBMS 및 이와 관련된 하드웨어 , 소프트웨어를 관리한다. 단순히 DBMS를 사용하여 응용 프로그램을 개발하는 사람과는 달리 DB를 전문적으로 다룬다.

5.1 데이터 언어

데이터 언어는 사용자 또는 응용 프로그램과 DBMS 간에 의사소통을 하기위한 언어이다. 데이터 언어 3가지로 구성되어있는데 데이터 정의어, 데이터 조작어, 데이터 제어어로 구성되어 있다.

  1. 데이터 정의어(Data Definition Language, DDL) : 데이터베이스 스키마를 정의하거나, 그 정의를 수정할 목적으로 사용하는 언어이다. 데이터베이스 관리자가 주로 사용하며 ,CREATE, ALTER, DROP 등과 같은 것들이 데이터 정의어이다.

  2. 데이터 조작어(Data Manipulation Language, DML) : 데이터를 검색, 삽입, 삭제, 변경하는데 사용하는 언어이다. 사용자 또는 응용프로그램과 DBMS 간의 인터페이스를 제공한다. 대표적인 조작어로는 INSERT, UPDATE, DELETE 등이 있다.

  3. 데이터 제어어(Data Control Language, DCL) : 데이터베이스를 올바르게 공용하게 하면서, 정확성을 유지하는데 사용하는 언어이다. 주로 데이터베이스 관리자가 사용한다. GRANT, REVOKE 등이 대표적이다. 참고로 GRANT문은 해당 DB 테이블을 다른 사용자가 접근하지 못하거나 접근하도록 권한을 주는 것이다. REVOKE는 부여된 권환을 회수하는 것이다.

5.2 데이터베이스

우리가 흔히 알고있는, 여러 사람들이 데이터를 저장하고 공유하며, 불러오기위한 DB는 저장 데이터베이스이다. 이러한 저장 데이터베이스의 시스템을 전반적으로 담당하는 데이터베이스를 시스템 데이터베이스(데이터 사전)라고 한다.

다음과 같이 DB안에는 저장 데이터베이스시스템 데이터베이스(데이터 사전)가 있는 것이다.

시스템 데이터베이스는 데이터 사전이라고도 한다. 데이터 사전은 데이터베이스(저장 데이터베이스)에 포함된 모든 데이터 개체에 대한 정의와 명세에 관한 정보를 유지 관리하는 시스템이며, 데이터에 관한 데이터라는 의미의 메타 데이터이다.

또한, 데이터 사전에 수록된 데이터를 실제로 접근하는데 필요한 정보를 관리, 유지하는 시스템은 데이터 디렉토리이다.

5.2.1 데이터베이스 맵핑(사상)

해당 그림을 모두 외우는 것은 의미있진 않다. 대충 이런 모습으로 DBMS와 DB에 접근한다는 것을 표현한 것인데, 중요한 것은 맵핑이다.

  • DB의 데이터를 보는 단계
  1. 외부 단계 : 개별 사용자 입장에서 보는 데이터를 이용하는 각 개인의 view이다.
  2. 개념 단계 : 조직의 입장에서 보는 개인의 모든 view가 종합된 조직 전체의 view이다.
  3. 내부 단계 : 물리적 저장장치의 입장에서 보는 저장장치의 view이다.

즉, 외부 단계에서 마케팅팀은 마케팅에 필요한 데이터만을 볼 것이고, 개발팀은 개발에 필요한 데이터만 가져올 것이다. 해당 데이터들이 같은 table 안에 있더라도 보는 관점에 따라 data의 개념은 달라진다는 것이다.

이를 모두 합쳐보면 개념 단계의 데이터가 되는 것이다. 그리고 개념 단계의 데이터를 DB에 저장할 때, DB는 물리적 저장장치로서 해당 데이터를 저장하기 때문에 해당 데이터를 내부 단계에 맞게 저장할 것이다.

위의 과정에서 말하는 데이터는 무엇일까?? 데이터 베이스에서 가져오는 데이터 구조를 스키마라고 한다. 데이터 구조와 그 제약조건에 대한 명세를 기술한 것으로 컴파일되어 데이터 사전에 저장된 것을 스키마(schema)라고 한다.

  • 3단계 스키마
  1. 외부 스키마(external schema) : 개별 사용자 입장에서 데이터베이스 구조를 기술한 것으로, 여러 형태의 외부 스키마가 존재한다. 이를 sub schema라고 부르기도 한다.
  2. 개념 스키마(conceptual schema) : 조직 전체 입장에서 통합된 데이터베이스를 기술한 것으로, 하나의 개념 스키마만이 존재한다. 이를 일반적으로 스키마라고 부른다.
  3. 내부 스키마(internal schema) : 저장장치 입장에서 전체 데이터베이스가 저장되는 방법을 명세한 것이다. 하나의 내부 스키마만이 존재한다.

스키마를 어렵게 생각할 필요없다. 위에서 본 것처럼 관계 DBMS의 테이블 한 개가 스키마라고 보면된다.

그렇다면, 외부 스키마와 개념 스키마와의 맵핑(사상)이 필요할 것이다. 또한, 개념 스키마와 내부 스키마와의 맵핑 또한 필요할 것이다.

  • 3단계 맵핑(사상)
  1. 외부/개념 맵핑(응용 인터페이스) : 외부 스키마와 개념 스키마 간의 대응 관계를 정의한 것으로 논리적 구조(개념 스키마)를 변경하더라도 응용 프로그램에 영향을 주지 않는다. 이는 논리적 데이터의 독립성을 제공해준다는 것이다.
  2. 개념/내부 맵핑(저장 인터페이스) : 개념 스키마와 내부 스키마 간의 대응 관계를 정의한 것으로 물리적 구조(내부 스키마)를 변경하더라도 응용 프로그램과 논리적 구조(개념 스키마)에 영향을 주지 않아서 물리적 데이터 독립성을 제공해주는 것이다.
  3. 내부/장치 맵핑(장치 인터페이스) : 내부 스키마와 물리적인 장치 간의 대응 관계를 정의한 것

데이터 독립성은 데이터베이스 구조가 변해도 응용 프로그램 또는 논리적 구조에 영향을 미치지 않도록 하는 것을 의미한다. 데이터 독립성은 기존 응용 프로그램에 영향을 주지 않고 논리적 구조를 변경할 수 있는 논리적 데이터 독립성(logical data independency)와 응용 프로그램과 논리적 구조에 영향을 주지 않고 물리적 구조를 변경할 수 있는 물리적 데이터 독립성(physical data independency)로 나눈다.

다음의 사상을 기준으로 위의 그림을 보면 어느정도 이해가 될 것이다.

0개의 댓글