728x90

학교에서 수강했던 데이터베이스 수업간 배웠던 MYSQL에 대해 포스팅을 하려한다. 

초반엔 과제를 하며 중요하다 생각했던 정의에 대해 2차시정도로 축약하여 설명한후 그 이후부터는 실습에 관련한 내용들을 주로 다뤄볼생각이다.

 

1. 데이터베이스 정의

특정 조직의 업무를 수행하는데 있어 작동하고 있는 데이터들의 모임을 데이터베이스라고 정의한다. 이러한 데이터베이스의 구성요소는 크게 개체(entity), 속성(attribute), 관계(relationship)로 크게 3가지로 나뉜다.

 

  첫번째, 개체(entity)의 경우 업무가 다루는 사물(대상)을 가리 키는 것으로 데이터베이스에서 표현하려는 객체로서 서로 구별되는 것을 뜻한다. 대학교를 예로 들면 교수, 학생, 과목이 데이터베이스에서의 개체라고 할 수 있다.

  두번째, 속성(attribute)의 경우 각 사물(대상)이 가지고 있는 상세한 특성으로 즉, 하나의 개체는 하나 이상의 속성으로 구성되어 그 개체의 특성을 설명해주는 지표가 되는 것이다. 예로 들면 교수라는 개체는 교수번호, 교수이름, 전공, 학과로 학생은 학번 이름, 학년, 학과로 과목은 과목번호, 과목이름, 학점이란 속성들로 구성되어 각각의 개체를 구성한다.

  마지막, 관계(relationship)의 경우 업무가 다루는 사물들 사이에 존재하는 연관으로 즉, 각각의 개체 또는 개체 집합들 사이의 관계를 나타내는 것이다. 예로 들면 교수와 학생은 지도라는 관계, 교수와 과목은 강의라는 관계, 학생과 과목은 등록이라는 관계로 이루어 진다 할 수 있다.

  정리하자면, 각각의 속성을 가진 개체들이 관계를 가지고 모여 만들어진 모임을 데이터베이스라고 한다.

 

2. 데이터베이스의 특징

데이터 베이스의 특징은 크게 6가지로 표현할 수 있다.

 

  첫번째, 실시간 접근성(Real-Time Accessibility)로 질의에 관해 실시간으로 처리 및 응답이 이루어져야 한다.

  두번째, 계속적인 변화(Continuous Evolution)로 데이터베이스는 만든 이후 정적인 것이 아닌 계속해서 새로운 데이터가 갱신, 삭제, 삽입 등의 동적인 특성을 가짐으로써 항상 최신의 상태를 유지하여야 한다. 물론 동적인 특성을 띔과 동시에 정확성 또한 유지해야 한다.

  세번째, 동시 공용(Concurrent Sharing)으로 데이터베이스는 여러 사용자들이 동시에 사용하는 것이므로 다수의 사용자가 동시에 같은 데이터를 이용할 수 있어야 한다.

  네번째, 내용에 의한 참조(Content Reference)로 데이터 베이스는 위치나 주소가 아닌 체중, 신장과 같은 사용자가 요구하는 데이터의 내용으로 데이터를 찾아낸다.

  다섯째, 지속성(Persistent)로 데이터 베이스는 한번 데이터를 생성하고 나면 일부러 저장매체를 훼손하지 않는 한 소멸하지 않고 지속된다.

  마지막, 상호 관련성(Inter-Related)로 데이터 베이스는 각 개체들이 서로 관계를 맺어 만들어 진다는 상호 관련성을 띈다는 특징이 있다.

 

데이터 베이스는 어떠한 성질을 가지고 있는 데이터들이 모여 있는 것으로 크게 4가지로 정의할 수 있다.

  첫번째, 통합된 데이터(Integrated Data)로 자료의 중복을 최소로 통제한다는 뜻을 가진다. 중복을 완전히 없애기는 중복이 없을 경우 다른 테이블 사이에 연관을 할 수가 없기에 불필요한 자료의 중복을 최소화한다.

  두번째, 저장된 데이터(Stored Data)로 말그대로 컴퓨터가 접근 가능한 저장매체(테이프, 디스크 등)에 저장된 자료라는 뜻을 가진다.

  세번째, 운영 데이터(Operational Data)로 한 조직의 고유 업무를 수행하기 위해 반드시 필요한 데이터로 단순한 입출력이나 임시 데이터가 아닌 존재목적이 뚜렷한 데이터 라는 뜻을 가진다.

  마지막, 공용 데이터(Shared Data)로 한 조직의 여러 응용 프로그램이 공동으로 소유, 유지, 이용하는 데이터라는 뜻을 가진다.

  정리하자면, 데이터베이스란 한 조직의 여러 응용 시스템들이 공용(shared)하기 위해 통합(integrated), 저장(stored)한 대용량(large)운영(operational)데이터의 집합이다.

 

3. DBMS란?

DBMS 제품을 설명하기전에 간단히 데이터베이스의 종류에 대해 나눠보자면 크게 계층형 데이터베이스, 네트워크형 데이터베이스, 관계형 데이터베이스로 나눌 수 있다.

 

  계층형 데이터베이스는 데이터의 관계를 트리 구조로 정의하고, 부모,자식 형태를 갖는 구조로써 상위의 레코드가 복수의 하위 레코드를 갖는 구조이다. 하지만 데이터의 중복이 생긴다는 문제점이 있다.

  네트워크형 데이터베이스는 계층형 데이터의 데이터중복 문제를 해결했고, 레코드 간의 다양한 관계를 그물처럼 갖는 구조이다. 하지만 복잡한 구조 때문에 추후에 구조를 변경한다면 많은 어려움이 따른다.

  관계형 데이터베이스는 우리가 흔히 표현하는 행(Column), (Record)로 구성된 Table간의 관계를 나타낼 때 사용한다 우리는 이렇게 표현된 데이터를 SQL(Structured Query Language)을 사용하여 데이터 관리 및 접근을 한다.

  이와는 다르게 SQL을 사용하지 않는다는 의미로 NoSQL데이터베이스가 있는데 이번 목차에서는 이러한 SQL데이터베이스인 MYSQL, MS-SQLNoSQL데이터베이스인 MongoDB의 특성에 대해 설명해보려 한다.

 

  첫번째, MYSQL PHP, jsp, 자바 웹 프로그래밍에서 사용되는 일반적인 DBMS이며, MYSQL은 공개용 소프트웨어이기 때문에 누구나 무료로 다운로드 받아 사용할 수 있지만, 상업적인 목적으로 MySQL을 사용하려면 반드시 라이센스를 별도로 구매하여야 한다. MySQL은 무료이면서 처리되는 속도 또한 상당히 빠르고 용이하며, 대용량의 데이터를 처리할 수 있는 장점과 보안에도 뛰어난 특성을 지니고 있다.

  두번째, MS-SQL C# ,asp.net 웹 프로그래밍에서 사용되는 일반적인 DBMS이며, MS-SQL은 많은 기능들이 마법사로 구성되어 있어 SQL을 몰라도 백업,튜닝,스케쥴,복제등의 관리가 가능해 DB관리툴이 편리하며, 트랜잭션 기반으로 완전한 무결성 구축이 가능하고, 여러 단계의 보안레벨을 지원해 뛰어난 보안성을 자랑하는 특성을 지니고 있다.

  마지막, MONGODB는 모드데이터가 JSON형태로 저장되며, 스키마가 없어 이에 따라 필요할 때마다 필드를 추가하거나 제거하는 것이 매우 쉬워졌음을 의미해 개발과정이 매우 단순해지고 빠르게 개발이 가능하게 되었다. key기반의 get, put 뿐만 아니라 다양한 종류의 쿼리들을 제공한다. 그리고 별도의 스토리지 엔진을 통해 파일을 저장할 수 있는 특징이 있으며, 조인과 트랜잭션이 없는 특성을 지니고 있다.

 

  정리하자면, 방식에 따라 여러 종류로 나누어 지더라도 결과적으로 DBMS 응용 프로그램과 데이터의 중재자로서 모든 응용 프로그램들이 데이터베이스를 공유할 수 있도록 관리해 주는 소프트웨어 시스템이라는 것이다.

(나의목표는 일단 MYSQL과 MONGODB를 올해안에 다뤄보는게 목표이다.) 

 

2020.09월기준, ORACLE, MY-SQL, MS-SQL순으로 세계 DBMS시장을 점유하고 있는 것으로 나타났으며 점유율로 나타낼 경우 ORACLE 42%, MY-SQL 19%, MS-SQL 16%로 나타났다. 국내 DBMS시장의 경우 ORACLE60%이상을 점유하고 있는 것으로 나타나 있다. 

*참고문헌 및 사이트
1. DBMS특징 및 구별에 관하여
https://ourcstory.tistory.com/30
https://ykh9300.tistory.com/52
https://siyoon210.tistory.com/130
https://lazyer.tistory.com/27
https://server-talk.tistory.com/29
https://ssmsig.tistory.com/19
https://league-cat.tistory.com/23
2. DBMS 시장 점유율
https://db-engines.com/en/ranking-
728x90

+ Recent posts