본문 바로가기

DB

데이터 베이스의 시작

우리는 데이터 베이스에 대해서 간단하게 알고 있다. 그치만 보통 데이터 베이스가 왜 생겼고 왜 이러한 특징을 가지고 있는지에 대해서 알지는 못한다. 그저 사용하기만 할 뿐 호기심이 많은 사람이 아닌 이상 왜 데이터 베이스를 사용할까 라는 생각을 하기는 어렵다. 한번 공부를 할때 왜라는 질문을 가지며 공부를 하면 자연스레 이것이 가진 특징을 외우는것이 아닌 자연스레 익히게 되고 쉽게 잊어먹지 않을 것이다.

 

데이터 베이스의 유래

데이터 베이스는 무엇이고 왜 생겨났을까? 

먼저 데이터베이스가 나오기 전에 우리는 파일 시스템을 사용했다. 우리가 독립적인 애플리케이션에서 파일시스템에 접근을 해서 데이터를 읽어와야 하는데, 이때 파일 시스템에 접근하는 방식이 응용프로그램 내에서 표현이 되어 응용프로그램과 파일시스템에 의존관계가 생겨버리게 된다. 이로 인해 데이터의 구조나 접근 방법이 변경하게 되면 파일시스템, 응용프로그램 두개 모두 영향을 끼치게 된다. 뿐만 아니라 데이터의 중복 문제도 있고, 데이터 베이스의 무결성 문제 등이 있었기에 파일 시스템이 아닌 DBMS로 데이터를 관리하기 시작했다.

 

데이터 베이스의 특징

따라서 데이터 베이스는 파일시스템의 문제점을 해결하기 위해 나왔고 이를 위해 다음과 같은 특징을 가질 수 밖에 없다.

데이터의  무결성

데이터베이스 안의 데이터는 어떠한 경로를 통해 들어 왔던지 간에 데이터에 오류가 있으면 안된다. 이를 제약조건을 통해 지킨다. 예를들어 학생이라는 데이터에는 학번이 반드시 있어야 한다는 제약조건이 있으며 학생간에는 중복된 학번이 존재할 수 없다는 제약조건이 있다. 즉, 학번이라는 무결한 데이터로 인해 학생에 대한 데이터를 정확히 추출할 수 있다.

데이터의 독립성

데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용 프로그램은 전혀 영향을 받지 않아야 한다는 특징이다. 실제로 우리는 데이터 베이스와 응용 프로그램을 연결할때 다음과 같은 연결 설정 파일 하나만 이용하여 연결할 수 있다. mysql을 사용할때의 yml파일의 예시이다.

spring:
  datasource:
    username: ${사용자 아이디}
    password: ${해당 비밀번호}
    url: jdbc:mysql://localhost:3306/${스키마명}?serverTimezone=UTC&characterEncoding=UTF-8

데이터의 보안성

접근이 허가된 사람만 데이터에 접근할 수 있어야 한다는 특징으로, 접근할 때에도 사용자의 계정에 따라서 다른 권한을 가질 수 있다.

 

데이터의 일관성

연관된 정보를 논리적인 구조로 관리함으로서 어떠한 하나의 데이터만 변경했을때 발생할 수 있는 데이터의 불일치성을 배제할 수 있다.

 

데이터베이스 관리 시스템

파일 시스템의 단점을 보완하고 대량의 데이터를 보다 효율적으로 관리하고 운영하기 위해서 사용되기 시작한 것이 DBMS다. 또한 DBMS에 데이터를 구축하고 관리하고 활용하기 위해서 사용되는 언어가 SQL이다. 이 SQL을 사용해서 우리가 DBMS를 통해 중요한 정보들을 입력하고 관리하고 추출할 수 있다.

 

DBMS의 분류

DBMS는 크게 계층형, 망형, 관계형 그리고 객체관계형 DBMS 등으로 분류된다. 현재는 관계형 DBMS가 가장 많은 부분을 차지하며, 일부 멀티미디어 붕냐에서 객체지향이나 객체관계형 DBMS가 사용되는 추세라고 한다. MYSQL과 더불어 Oracle, DB2 등 모두 관계형 dbms이다.

 

계층형 DBMS

처음 나온 DBMS개념이며 각 계층은 트리형으로 1:N관계를 갖는다. 따라서 처음 구축한 이후에 그 구조를 변경하기 까다롭고, 주어진 상태에서의 검색은 빠르지만, 임의의 검색에는 어려움이 있다.

계층형 DBMS

망형 DBMS

계층형 DBMS의 문제점을 개선하기 위해 나온 DBMS로 1:1, 1:N, N:N 관계가 지원돼서 효과적이고 빠른 데이터 추출이 가능하다. 하지만 계층형과 마찬가지로 복잡한 내부 포인터를 사용해 프로그래머가 이 모든 구조를 이해해야만 한다는 단점이 있다.

 

망형 DBMS

관계형 DBMS

모든 데이터가 테이블에 저장되어 효율적인 데이터 저장이 가능하며 무결성을 보장해주기 때문에 동시에 데이터에 접근할 때에도 안전하며 유지보수 측면에서도 편리하다.

관계형 DBMS

SQL

SQL은 관계형 데이터베이스에서 사용되는 언어로, SQL이 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 다음과 같은 특성을 갖는다.

 

DBMS 제작 회사와 독립적이다.

SQL은 모든 DBMS 제작회사에 공통적으로 공개되고 각 제작회사는 이 표준 SQL에 맞춰서 DBMS를 개발한다. 

 

다른 시스템으로 이식성이 좋다.

SQL 표준은 서버용, 개인용, 휴대용 장비에서 운영되는 DBMS마다 상호 호환성이 뛰어나다. 그러므로 어느 곳에서 사용된 SQL을 다른 시스템으로 이식하는데별 문제가 없다.

표준이 계속 발전한다.

SQL 표준은 계속 개선된 표준안이 발표되고 있으며 지금도 개선된 안이 연구되고 보완되고 있다.

대화식 언어이다.

기존 프로그래밍 언어는 프로그램 작성, 컴파일, 실행의 과정을 거쳤다면 SQL은 이와 달리 질의하고 결과를 얻는 대화식 언어로 구성되어 있다.

분산형 클라이언트/서버 구조이다.

즉, 클라이언트에서 질의하면 서버에서 그 질의를 받아서 처리한 후, 다시 클라이언테에게 전달하는 구조를 갖는다.

 

위와 같이 데이터 베이스의 특징과 데이터 베이스에 관한 전반적인 내용을 살펴봤다. 데이터 베이스가 생긴 이유를 통해 데이터 베이스가 왜 이런 특징을 가졌고, 이런 데이터 베이스를 관리하기 위해 DBMS라는것이 있으며 데이터 베이스를 관리하기 위해 SQL이라는 언어가 나왔다는것을 알 수 있게 되었다.

'DB' 카테고리의 다른 글

MySQL 설치 및 DB 구축과정 미리 실습하기: DBMS 개요와 MySQL 소개  (0) 2023.08.01
정규화  (0) 2023.01.09
데이터베이스 인덱스  (0) 2023.01.07
Requires_new  (0) 2022.12.18
트랜잭션  (2) 2022.12.12