처음부터 차근차근

[DBMS] DB, DBMS이란? 본문

DB/DBMS

[DBMS] DB, DBMS이란?

HangJu_95 2023. 12. 7. 20:41
728x90

Database(DB)

데이터베이스는 전자적으로 저장되고 체계적인 데이터 모음입니다. 여기에는 단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있습니다.
AWS

데이터베이스를 한 마디로 정의하자면 '데이터의 집합'이라고 할 수 있습니다.

 

간단한 예시로, 우리가 오늘 보내거나 받은 카톡 메세지, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 아이스 아메리카노의 정보가 모두 데이터이며, 이는 데이터베이스에 기록됩니다.

Database는 왜 필요한가??

데이터를 저장하고 조회한다는 관점에서 보면, 간단히 우리가 파일들을 폴더에 저장하여 정리하고 파일을 검색해서 조회하는 데이터 저장소와 비슷해 보일 수 있습니다. (잘 정리되어 있는 외장하드 직박구리 폴더..?)

 

그러나, 데이터베이스는 단순한 데이터 저장소 개념을 넘어선 상위 호환 격입니다.

 

데이터베이스는 SQL을 통해 세밀한 제어가 가능하며, 어떻게 제어하느냐에 따라 성능이 천차만별이 됩니다.
간단한 예시로, 인덱스를 적용하면 수 많은 데이터에서 하나를 조회할 경우에 성능 차이가 어마어마합니다.
또한 데이터를 구조적이며 효율적으로 저장한다는 특징을 가지고 있으며, 데이터베이스는 컴퓨터 언어로 제어가 가능하고 앱이나 웹을 통해 공유가 가능합니다.

 

이처럼 데이터베이스는 파일을 조직적으로 통합하여 자료 항목의 중복을 최대한 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있습니다.

Database 내 데이터의 특징

  1. 통합된 데이터(Integrated Data)
    데이터베이스는 중복된 정보에 대해서 데이터를 통합하여 자료의 중복을 최소화한 데이터의 모임으로 구성합니다.
  2.  저장된 데이터 (Stored Data)
    데이터베이스는 컴퓨터가 접근할 수 있는 매체에 데이터를 저장합니다.
  3. 운영 데이터 (Operational Data)
    데이터베이스는 주로 조직의 목적을 위해 존재하고 활용되는 운영 데이터를 다루는 데 주로 사용됩니다.
  4. 공유 데이터 (Shared Data)
    여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터를 의미합니다.

Database의 기능 특징

그렇다면 데이터베이스의 기능적 특징은 어떤게 있을까요??

데이터베이스는 특수한 특징을 가진 데이터들을 효율적으로 관리하기 위해 다음과 같은 기능을 제공합니다.

  1. 실시간 접근성(Real-TIme Accessibility)
    데이터베이스 서버가 켜져있는 이상, 사용자의 요구에 신속하고 정확하게 응답이 가능해야 합니다.
  2. 계속적인 변화 (Continuous Evolution)
    현실 세계의 변화를 반영하기 위해 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지하는 것을 의미합니다.
  3. 동시 공용 (Concurrent Sharing)
    다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 합니다.
  4. 내용에 의한 참조 (Content Reference)
    데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터의 위치나 주소로 데이터를 찾습니다.

DBMS(Database Management System)

영단어 그대로 해석하면, "데이터베이스를 관리하는 소프트웨어"입니다.

DBMS는 데이터베이스의 데이터를 효율적으로 저장하고 검색하고 수정하고 삭제하고 보호할 수 있도록 도와줍니다. 

또한 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 하는데, DBMS는 이것을 가능하도록 도와줍니다. 

DBMS의 분류

DBMS는 시간이 지남에 따라 다양한 모델과 기능으로 발전되었습니다.

구분 모델 DBMS
1세대 파일시스템 ISAM / VSAM
2세대 계층형 (Hierachical) HDBMS IMS / System2000
3세대 네트워크형 (Network) NDBMS IDS / TOTAL / IDMS
4세대 관계형 (Relational) RDBMS Oracle / MySQL / DB2 / SQL Server / Sybase
5세대 객체지향 (Object Oriented) ODBMS Object Store / UniSQL

계층형 DBMS

계층형 DBMS(HDBMS)는 처음으로 등장한 DBMS 개념으로 1960년대에 시작되었습니다. 아래 그림과 같이 각 계층은 트리(tree) 형태를 갖습니다. 예를 들어 다음과 같이 사장 - 직원의 연결 구조와 같습니다.

https://hongong.hanbit.co.kr/데이터베이스-이해하기-databasedb-dbms-sql의-개념/

  • 데이터 접근 속도가 빠르고 단순한 구조를 가지는 장점
  • 데이터의 중복이 많으며, 구조 변경이 어렵다.
  • 관계 표현이 제한적이며, 다른 구성원을 찾아가기도 힘들다.

이러한 단점으로 인해 현재는 사용하지 않습니다.

망형(네트워크형) DBMS

Network DBMS는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 등장했습니다.

https://hongong.hanbit.co.kr/데이터베이스-이해하기-databasedb-dbms-sql의-개념/

  • HDBMS보다 관계 표현이 유연하고 다대다 관계를 지원하는 장점
  • 프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하다. 즉, 구성과 설계가 복잡하다.
  • 데이터 종속성을 해결하지 못한다는 단점이 존재.

역시 NDBMS도 현재는 잘 사용하지 않습니다.

관계형 DBMS(RDBMS)

NDBMS의 단점을 극복하기 위해 1970년대 RDBMS가 개발됩니다.

현시대 모든 DBMS가 RDBMS 형태로 사용됩니다. (MySQL, MariaDB, PostgreSQL 등)

RDBMS의 데이터베이스는 테이블(Table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)과 행(row)로 이루어져 있습니다. (마치 엑셀에서 우리가 표를 작성하듯 생각하면 편리합니다.)

https://hongong.hanbit.co.kr/데이터베이스-이해하기-databasedb-dbms-sql의-개념/

  • 데이터의 중복을 최소화하고 구조 변경이 쉽다.
  • SQL 언어를 사용하여 데이터를 쉽게 조작할 수 있다는 장점
  • ACID 원칙을 준수하여 데이터의 무결성과 일관성을 보장한다.

객체지향 DBMS

1980년대 개발된 DBMS로써, 데이터를 객체로 표현하는 방식입니다. (여기서도 OOP를..)

아래 그림을 예시로 부서와 직원의 관계를 객체와 객체 간의 연결로 나타낼 수 있습니다.

https://inpa.tistory.com/entry/DB-📚-데이터베이스-기초-개념#통합된_데이터_integrated_data

  • 객체지향 프로그래밍 언어와 호환성이 높고 복잡한 데이터 타입을 지원하는 장점
  • 성능이 낮고, 표준화가 부족하다
  • SQL과 호환되지 않는 단점

이러한 단점으로 인해 거의 사장되고, 다음 타자인 NoSQL로 넘어갔습니다.

NoSQL

NoSQL이라는 용어는 비관계형 데이터베이스 유형을 가리키며, 이 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다.

2000년대에 개발된 DBMS로써, 테이블 형태의 관계형 모델이 아닌, 여러가지 모델로 데이터를 표현하는 방식입니다.

즉, 관계형 데이터모델을 지양하며, 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며, 스키마 없이 사용하거나 느슨한 스키마를 제공하는 저장소를 의미합니다. 또한 확장성과 가용성이 높습니다.
NoSQL은 Document나 Key-Value 형태, 그래프 등으로 데이터를 나타낼 수 있습니다.

대표적인 NoSQL은 MongoDB, HBase, Redis등이 존재합니다.

https://inpa.tistory.com/entry/DB-📚-데이터베이스-기초-개념#통합된_데이터_integrated_data

 

  • Key Value DB

Key와 Value의 쌍으로 데이터가 저장되는 가장 단순한 형태의 솔루션으로 Amazon의 Dynamo Paper에서 유래되었습니다. Riak, Vodemort, Tokyo 등의 제품이 많이 알려져 있습니다.

  • Wide Columnar Store

Big Table DB라고도 하며, Google의 BigTable Paper에서 유래되었습니다. Key Value 에서 발전된 형태의 Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, ScyllaDB 등이 이에 해당합니다.

  • Document DB

Lotus Notes에서 유래되었으며, JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있습니다. MongoDB, CoughDB가 이 종류에 해당합니다.

  • Graph DB

Euler & Graph Theory에서 유래한 DB입니다. Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있습니다. Neo4J, OreientDB 등의 제품이 있습니다.

NoSQL의 특징

  1. RDBMS와 달리 데이터 간의 관계를 정의하지 않는다.
    RDBMS는 데이터 관계를 외래키 등으로 정의하고 JOIN 연산을 수행할 수 있지만, NoSQL은 JOIN 연산이 불가능하다.
  2. RDBMS에 비해 대용량의 데이터를 저장할 수 있다.
    페타바이트 급의 대용량 데이터를 저장할 수 있다.
  3. 분산형 구조이다.
    여러 곳의 서버에 데이터를 분산 저장해 특정 서버에 장애가 발생했을 때도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 한다.
  4. 고정되지 않은 테이블 스키마를 갖는다.
    RDBMS와 달리 테이블의 스키마가 유동적이다. 데이터를 저장하는 칼럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.

NoSQL의 장점

  1. RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능
  2. 비정형 데이터 구조 설계로 설계 비용 감소
  3. Big Data 처리에 효과적
  4. 가변적인 구조로 데이터 저장이 가능
  5. 데이터 모델의 유연한 변화가 가능

NoSQL의 단점

  1. 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
  2. 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장
  3. 데이터 일관성이 항상 보장되지 않음

참고

https://hongong.hanbit.co.kr/데이터베이스-이해하기-databasedb-dbms-sql의-개념/

https://inpa.tistory.com/entry/DB-📚-데이터베이스-기초-개념#통합된_데이터_integrated_data

https://m.blog.naver.com/acornedu/221040291485

https://www.samsungsds.com/kr/insights/1232564_4627.html

https://code-lab1.tistory.com/53