나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-04-05 15:33:30

DBMS

{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px); word-break: keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-5px -1px -11px"
<colbgcolor=#3CC>기반 학문수학 (해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학 (환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학 (형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학
SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술기계어 · 어셈블리어 · C(C++) · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍(디자인 패턴) · 해킹 · ROT13 · OTP · IoT · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화
연구 · 기타논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 디자인 패턴 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식)}}}}}}}}}

DataBase Management System
{{{#!wiki style="margin: 0 -10px;"
{{{#!folding [ 주요 DBMS ]
{{{#!wiki style="margin-bottom: -15px;"
파일:oracle-database.png
파일:MySQL 로고.svg
파일:Microsoft SQL Server 로고.svg
파일:PostgreSQL 로고.svg
파일:MongoDB 로고.svg파일:MongoDB 로고 화이트.svg
파일:MariaDB 세로 로고.svg
}}}}}}}}} ||
그 외 DBMS

파일:dbengines.png
DBMS 인기도 추이(2019년 3월 기준)
DataBase Management System

1. 개요2. 기능3. 종류4. 관리 도구5. 한계

1. 개요

데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램이다. 즉, 데이터의 관리에 특화된 프로그램이라고 생각하면 편하다. 종류에 따라 DataBase Server까지 지원하기도 한다.

주로 서버에 사용하는 용도만 DBMS라고 생각하는 오개념이 많다. 그러나 Microsoft Access라는 개인용 컴퓨터에 저장하는 용도의 프로그램도 훌륭한 DBMS이다. 블룸버그 터미널 같은 경우는 자체적으로 DBMS를 내장하고 있다.

2. 기능


다만 NoSQL의 경우 제한적으로 중복 제어나 무결성이 무시되기도 한다.

3. 종류

4. 관리 도구

DBMS를 전문적으로 관리하는 프로그램이다.

5. 한계

DBMS는 모든 종류의 데이터를 관리하는 최선의 방법이 아니다.

복잡한 DBMS일수록 트랜잭션, ACID 등의 많은 컨셉을 지원하기 위한 오버헤드가 발생한다. 때문에 휴대폰 등의 임베디드 기기 같은 단순한 데이터베이스(예를 들어 전화번호부 등)의 경우는 다중사용자나 회복 기능 등을 뺀 가벼운 DBMS를 만들어 사용하기도 한다.

대다수의 DBMS는 비교적 크기가 작은 레코드를 수백만개씩 저장하는 것에 특화되어있다. 반대로 하나의 레코드가 몇십MB에서 GB급인 경우 데이터를 DB에 저장하면 쿼리 시 오버헤드가 클 수 있다. 이 경우 원래 파일은 파일 시스템에 직접 저장하거나 파일시스템 스타일의 클라우드(Amazon S3 등)를 이용하고 그 경로만 DB에 저장하는게 바람직하다.

실시간 데이터 처리가 필요한 경우(예를 들어 군용, 항공/우주용 등)에도 일반적으로 복잡한 기능을 제공하는 DBMS가 적합하지 않다. 다만 통신망, 금융권 등에서의 실시간 데이터 처리 개념[4]에서는 오라클의 타임스텐이나 알티베이스의 ALTIBASE HDB와 같은 인 메모리 데이터베이스[5]를 실시간 데이터 처리가 요구되는 구간에 사용하고, 이력 데이터와 같은 안정성이 중요시되는 데이터는 back-end 구간에 전통적인 디스크 기반 DBMS를 사용하는 방식으로 시스템을 구성하기도 한다.[6]

검색 엔진 등 극단적으로 데이터가 크며, READ/WRITE 간의 격차가 큰 경우에도 일반적인 DBMS를 사용하지 않는다. 이러한 경우는 MM DBMS와 NoSQL 기술을 혼용하여 서비스를 구축한다. NoSQL 기술이 응용된 사례가 페이스북의 쪽지 기능이다.


[1] Sparc 서버군과 Java를 가졌지만 DBMS가 없던 썬 마이크로시스템즈가 인수했으나, 이후 썬 자체가 오라클에 인수되었다. 지못미[2] 애당초 IBM 메인프레임 시장을 겨냥해서 IBM이 직접 개발한 것이다.[3] 온도 변화, 전력 사용량 변화 등 시간대별로 변화하는 데이터를 저장하고 추출하기 위한 DBMS이다. 해외에서는 Amazon Timestream, InfluxDB 등이 유명하다.[4] 예를 들자면 SMS 전송 시스템 또는 금융권에서 계좌 이체와 같은 실시간으로 처리되어야 하는 업무단위.[5] 메모리에 데이터베이스의 모든 자료를 올려놓고 insert, update, select와 같은 연산을 처리한다. 당연히 엄청나게 빠르다! 다만, 갑작스런 시스템의 종료, 예를 들자면 전원이 갑자기 나가버리는 상황에서 최대한 데이터의 유실을 막을 수 있어야 한다. IMDB의 선택 기준은 이와 같은 유사시 안정성이다. 물론 디스크 기반 DBMS도 마찬가지이지만 메모리에 자료를 몽땅 올려놓고 사용하는 것 자체가 디스크를 기반으로 작동하는 것보다 안정성이 훨씬 더 떨어질 수 밖에 없다.[6] 예를 들자면 SMS 전송 자체는 매우 빠르게 이루어져야 하므로 Main Memory를 사용하는 DBMS가 전송관련 자료처리를 담당하고 전송이 완료(길어봐야 24시간이다.)된 후 속도가 크게 중요하지 않은 이력을 남기는 작업은 디스크 기반 DBMS가 설치된 구간에서 이루어 지도록 Data Flow를 설계한다.