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 기술이 응용된 사례가 페이스북의 쪽지 기능이다
댓글남기기