[DB] 2. DBMS (Database Management System)

작성일     업데이트:

카테고리:

태그:

DBMS (Database Management System) 관련 기본 개념 정리

1. 정의

  • 데이터베이스를 관리하고 운영하는 소프트웨어(=응용프로그램)
  • 응용 프로그램과 데이터베이스의 중재자로서 모든 응용프로그램들이 데이터베이스를 공용으로 사용할 수 있게 관리해 주는 시스템
  • 데이터베이스를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색하고 저장하는 기능을 제공한다
  • 대표 DBMS: 오라클, MySQL, MsSQL, SQLite 등


2. DBMS 종류

DBMS 제작사 작동 운영체제 기타
MySQL Oracle Unix, Linux, Windows, Mac 오픈 소스(무료), 상용, PHP에서 많이 씀
MariaDB MariaDB Unix, Linux, Windows 오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듦
PostgreSQL PostgreSQL Unix, Linux, Windows, Mac 오픈 소스(무료)
Oracle Oracle Unix, Linux, Windows 상용 시장 점유율 1위
SQL Server Microsoft Windows 주로 중/대형급 시장에서 사용
DB2 IBM Unix, Linux, Windows 메인프레임 시장 점유율 1위
Access Microsoft Windows PC용
SQLite SQLite Android, iOS 모바일 전용, 오픈 소스(무료)


3. 기능

  • 중복 제어

    • 데이터를 통합 관리함으로써 동일한 데이터가 여러 위치에 중복 저장되는 현상을 방지한다
    • 데이터가 중복되면 저장 공간이 낭비되고 데이터의 일관성이 깨질 수 있다
  • 접근 통제

    • 사용자마다 다양한 권한을 부여할 수 있다
    • 사용자의 권한에 따라 데이터에 대한 접근을 제어할 수 있다
  • 인터페이스 제공

    • 사용자에게 SQL 및 CLI, GUI 등 다양한 인터페이스를 제공한다
  • 관계 표현

    • 서로 다른 데이터간의 다양한 관계를 표현할 수 있는 기능을 제공한다
    • 샤딩/파티셔닝: 구조 최적화를 위해 작은 단위로 쪼개는 기능을 제공한다.
  • 무결성 제약 조건

    • 무결성에 관한 제약 조건을 정의/검사하는 기능을 제공한다
    • 데이터베이스는 반드시 무결성 제약조건을 통과한 데이터만을 저장하고 있어야 한다
  • 정의 : 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능이다. 데이터베이스에 대한 정의 및 설명은 카탈로그나 사전의 형태로 저장된다
  • 구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능이다
  • 조작 : 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함한다
  • 공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능이다
  • 보호 : 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호한다
  • 유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능이다


4. 유형

  • 관계형 데이터베이스 관리 시스템(RDBMS)
  • NoSQL DBMS
  • 인 메모리 데이터베이스 관리 시스템(IMDBMS)
  • 기둥형 데이터베이스 관리 시스템(CDBMS)


5. 엔진 종류

  • 위에서 나온 ‘관계 표현’을 위한 구체적인 방식을 엔진이라고 칭한다
  • DBMS 종류, 용도, 사양에 따라 구성이 다르다
종류 내용
MyISAM 예전에 MySQL에서 많이 쓰였던 엔진으로, 쓰기 쉽고 가볍지만 트랜젝션 불가, 내용이 변경/삭제될 경우 찌꺼기(Overhead)를 남김, 과부하가 걸리면 테이블이 깨짐 등의 문제 때문에 MySQL 최신버전에서는 거의 쓰지 않는다
Aria MariaDB에서 MyISAM의 단점을 보완한 엔진. 찌꺼기 문제가 없고 제한적으로나마 트랜젝션 구현이 가능하다
InnoDB 대부분의 DBMS에서 사실상 표준으로 쓰이는 엔진, 다만 조금 무거운 편
MEMORY RAM에 DB 데이터를 바로 올려서 쓰는 엔진
가장 빠른 속도를 자랑하지만 서버가 꺼지면 데이터가 증발되는 문제가 있으며, MyISAM를 따위로 만들 정도로 찌꺼기를 엄청나게 많이 만들어내는 단점이 있다
ARCHIVE 로그 기록 전용 엔진. 높은 압축률로 데이터 대비 용량은 가장 작다
단 쓰는 것은 마음대로지만 수정/삭제하는 것은 아니다.
CSV 이름 그대로 CSV 형식으로 저장한다
connect pivot을 하려고 사용한다


6. 관리 도구

종류 내용
DataGrip IntelliJ IDEA로 유명한 JetBrains의 프로그램이다
DBeaver  
Tableplus  
HeidiSQL  
phpMyAdmin 웹(PHP) 기반의 관리 프로그램.
Adminer phpMyAdmin처럼 PHP 웹 기반 관리 프로그램인데,
PHP 파일 단 한 장만으로 모든 것이 구현되어 있어 설치 및 유지관리가 편하다
SQL Server Management Studio MS SQL Server용 관리 프로그램


6. 한계

  • DBMS는 모든 종류의 데이터를 관리하는 최선의 방법이 아니다
  • 복잡한 DBMS일수록 트랜잭션, ACID 등의 많은 컨셉을 지원하기 위한 오버헤드가 발생한다
    -> 때문에 휴대폰 등의 임베디드 기기 같은 단순한 데이터베이스(예를 들어 전화번호부 등)의 경우는 다중사용자나 회복 기능 등을 뺀 가벼운 DBMS를 만들어 사용하기도 한다
  • 하나의 레코드가 몇십MB에서 GB급인 경우 데이터를 DB에 저장하면 쿼리 시 오버헤드가 클 수 있다
    • 이 경우 원래 파일은 파일 시스템에 직접 저장하거나 파일시스템 스타일의 클라우드(Amazon S3 등)를 이용하고 그 경로만 DB에 저장하는게 바람직하다
  • 실시간 데이터 처리가 필요한 경우 일반적으로 복잡한 기능을 제공하는 DBMS가 적합하지 않다 -> 다만 통신망, 금융권 등에서의 실시간 데이터 처리 개념에서는 오라클의 타임스텐이나 알티베이스의 ALTIBASE HDB와 같은 인 메모리 데이터베이스를 실시간 데이터 처리가 요구되는 구간에 사용하고, 이력 데이터와 같은 안정성이 중요시되는 데이터는 back-end 구간에 전통적인 디스크 기반 DBMS를 사용하는 방식으로 시스템을 구성하기도 한다.
  • 검색 엔진 등 극단적으로 데이터가 크며, READ/WRITE 간의 격차가 큰 경우에도 일반적인 DBMS를 사용하지 않는다
    • 이러한 경우는 MM DBMS와 NoSQL 기술을 혼용하여 서비스를 구축한다. NoSQL 기술이 응용된 사례가 페이스북의 쪽지 기능이다

댓글남기기