카테고리 없음

SQL문법기초(2주차)_DBMS

joy_your 2024. 4. 9. 21:26

데이터베이스관리 시스템(DBMS)

데이터베이스 관리 시스템이란 무엇일까?

우리가 알고 있는 데이터베이스와 데이터베이스 관리 시스템은 다르다.

데이터베이스는 데이터가 쌓이는 곳 그 자체를 의미하며, 데이터베이스 관리 시스템은 데이터베이스를 관리하는 소프트웨어적인 부분을 얘기하는 것으로 SQL문을 이용해 데이터를 추출하고, 분석하는 등의 기타 작업을 하는 곳이다.

 

하나의 데이터베이스를 여러 사람이 사용하면서 데이터를 조작하게 된다면 원본 데이터 자체의 정합성, 무결성 문제가 발생할 수 있다.

만일 구매, 판매 담당자 모두가 파일을 수정하고 있는데 A라는 사람이 데이터를 수정하고 난 후, 잘못된 결과가 나타나게 된다면 그 전의 데이터 값은 무엇인지 그리고 어떤 값이 정확한 값인지에 대한 기준이 모두 사라진다.

이러한 문제를 해결하기 위해 데이터베이스 관리 시스템이 중간에 들어가 뒤의 데이터의 값은 변화가 없게 유지/보수하여 준다.

 

파일시스템의 데이터 중복성문제를 해결하기 위해 1차 방안으로는 파일시스템을 통합했었다.

그러나 여전히 원천 데이터를 수정할 수 있었고 위에서 언급했던 문제가 그대로 발생하게 되었다.

동시 공유, 보안 회복, 복잡한 기능은 여전히 필요한데 파일 시스템에서 활용하기 어렵다면 어떻게 해야 할까?

 

이때 사용되는 것이 바로 DBMS, 데이터베이스 관리 시스템이다.

DBMS는 응용프로그램과 데이터베이스 중간에 끼어 응용프로그램 사용자가 데이터를 건드리지 못하도록 한고 사용자에 따라 접근 권한을 부여할 수 있다.

DBMS에서 데이터를 추출, 수정, 분석할 때 사용되는 SQL로

대부분 기업에선 데이터를 직접 만들지 않고, 이미 만들어진 데이터를 가지고 프로젝트를 진행하게 된다.

 

SQL의 기능은 크게 정의, 조작, 제어 3가지로 나눌 수 있는데

정의 기능은 뷰 테이블로 가공하거나 데이터를 새롭게 만드는 경우에 사용된다.

데이터 베이스를 설계하는 것으로 행과 열로 이루어진 테이블을 만들고 테이블 상의 데이터를 어떠한 형태, 타입으로 스키마 정보는 어떻게 설정할 것인지를 정하게 된다.

 

조작 기능은 데이터를 가지고 수정, 삭제, 삽입, 검색등의 동작을 수행하는 기능이다.

 

제어 기능은 위에서 설명했 듯 여러 팀이 데이터를 확인하더라도 원천 데이터를 수정해선 안되고 보안도 유지해야 하기에 사용자에 따라 권한을 부여하고 권한에 따른 데이터 접근 가능 영역 또한 설정할 수 있다.

 

DBMS의 장점을 살펴보자면

먼저 DBMS는 데이터의 중복을 통제할 수 있다.

원칙적으로 중복 데이터는 데이터베이스에 존재해서는 안된다.

중복은 데이터 베이스 설계부터의 문제이고 대부분 중복을 허용하지 않는데 DBMS는 데이터의 중복 삽입을 방지할 수 있다.

물론 예외도 존재한다.

예를 들어, 하나의 고객이 여러 주문을 할 수 있다면 여러 주문을 한 고객의 아이디는 중복이 될 수 있다. 이는 테이블의 설계 로직을 잘 이해해야 한다.

만일 고객정보가 담겨있는 마스터 테이블의 경우는 중복이 절대 허용되지 않는 테이블로 중복이 되면 고객수가 더블링이 일어나고 이 데이터베이스 파이프라인을 가지고 만든 응용 프로그램은 잘못된 데이터를 사용하게 될 것이다.

따라서 테이블 상의 데이터의 중복은 있을 수도 있고 없을 수도 있어 해당 테이블의 로직을 잘 이해하고 한다.

 

두 번째로 DBMS는 데이터의 독립성을 확보할 수 있다.

만일, DBMS가 독립적으로 움직이지 않고 응용프로그램에 따라 값이 변화한다면 이는 DBMS를 사용하는 이유가 없을 것이다.

 

세 번째는 데이터 동시 공유로 보통 기업에서는 여러 다른 팀에서 동시에 데이터를 확인하지만 각 팀에서 보는 데이터의 지표는 다르다.

각 팀에 맞춰진 데이터 지표를 중심으로 하나의 데이터를 응용 프로그램을 통해 동시 공유할 수 있게 해준다.

 

네 번째로 데이터의 보안이 향상된다.

관리 시스템을 통해 원천 데이터의 접근, 조작, 수정을 불가능하게 하고 권한이 있는 사용자만 데이터에 접근이 가능하게 만들어 데이터의 보안이 향상된다.

 

다섯 번째는 데이터의 정확성과 같은 무결성이 유지된다.

데이터는 항상 정확해야 하고 데이터 검증 또한 중요한 영역이다. 위에서 설명했듯 원천 데이터에 대한 직접적인 수정이나 삭제 등의 권한은 소수의 사람에게만 주어지기에 데이터 무결성이 유지되는 것이다.

 

여섯 번째는 데이터 표준화로 공통적으로 데이터를 정리하고, 기준이나 지표를 설정하여 정리하게 되면 하나의 공통된 데이터를 전사에서 바라볼 수 있게 할 수 있다.

 

일곱 번째는 장애발생 시 회복할 수 있다는 점이다.

DBMS가 없다면 장애발생 시 데이터가 수정 혹은 삭제되었을 경우, 본래의 데이터를 찾기가 어렵지만 DBMS는 과거 데이터를 가지고 있기에 복구가 가능하다.

 

마지막으로 DBMS는 응용 프로그램을 개발하는 데에 있어 비용을 감소시킬 수 있다.

클라우드 환경의 서비스를 이용하는 기업들이 많은데 AWS는 다양한 프로그램들이 존재하고 이를 이용할 경우 모든 것을 전부 다 개발하는 것보다 비용과 시간을 절감할 수 있다.

 

단점 또한 존재하는데 첫 번째는 비용이 많이 든다는 것으로 장점에서 들었던 비용을 감소시킬 수 있다는 점과 상반되는데 과금체계의 AWS를 사용하는 경우 당연히 비용은 들어갈 수밖에 없다.

 

두 번째는 백업과 회복 방법이 복잡하다는 점인데 DBMS는 사용자에 따라 권한을 달리 부여할 수 있어 권한에 따라 접속할 수 있는 영역에 다르다 보니 백업과 회복이 복잡하다.

 

마지막으로 중앙 집중화 관리로 인해 전사의 데이터 베이스 관리를 하나의 부서에서 하게 된다면 담당 부서가 모든 권한을 관리해야 하기에 오히려 취약점이 발생할 수 있다는 점이 있다.

 

이러한 DBMS가 발전해 온 과정을 마지막으로 살펴보자.

1세대 데이터베이스 관리 시스템은 네트워크 계층 DBMS로 행과 열로 되어 있는 관계형 DBMS였다.

2세대 데이터베이스 관리 시스템은 관계형 DBMS로 MySQL, Oracle, 마리아DB 등 다양한 시스템이 존재한다.

3세대 데이터베이스 관리 시스템은 객체 지향, 객체 관계 DBMS.

4세대 데이터베이스 관리 시스템은 NoSQL, NewSQL DBMS로 관계형 DBMS는 정형 데이터를 기준으로 만들어진 것인데 점차 비정형 데이터의 수가 많아지고 이러한 데이터들을 관리하기 위해 만들어진 시스템이다.