[DataBase] DBMS(Database Management System)

 

데이터베이스


(1) DBMS(Database Management System)

1-1. DBMS란 무엇인가?

  • 데이터베이스를 생성하고 관리해주는 소프트웨어

  • 사용자는 데이터베이스의 데이터 저장 방식, 저장 장소를 몰라도 DBMS를 통해 데이터베이스에 접근하여 데이터 생성, 갱신 ,삭제 가능

  • 즉, DBMS 또는 다른 소프트웨어가 데이터베이스 안의 데이터를 저장 및 조작할 수 있도록 도와주는 인터페이스

  • 사용자나 애플리케이션으로부터 데이터 요청 받을 시, DBMS는 운영체제가 해당 데이터를 제공하도록 지시

 

[그림 1] DBMS 역할

 

DBMS는 또한 데이터 시각화를 위해 데이터베이스 스키마를 생성한다.

 

데이터베이스 스키마는 전체 데이터베이스에 대해 논리적 뷰를 제공하는 뼈대라고 생각하면 된다.

 

어떤 식으로 데이터가 조직화되어야 하는지 그리고 그들 간의 관계가 어떻게 형성이 되는지를 정의한다.

 

데이터베이스 스키마는 3층 구조로 되어 있으며, 크게 2가지 카테고리로 분류 가능하다.

 

 

가) 데이터베이스 스키마 카테고리

  • 물리적 데이터베이스 스키마 : 데이터의 실제 저장 장소와 데이터 형식 등 데이터가 실질적으로 어떻게 저장되는지를 정의

  • 논리적 데이터베이스 스키마 : 데이터가 저장될 때의 논리적인 제약 조건을 정의하며, 예로 테이블이나 뷰 그리고 무결성 제약 조건 등이 여기에 해당

 

[그림 2] 데이터베이스 스키마 구조 1

 

 

나) 데이터베이스 스키마 3층 구조

 

1) 외부 스키마 (서브 스키마, 사용자 뷰)

  • 응용 프로그래머나 사용자의 관점에서 필요한 데이터베이스의 논리적 구조를 정의한 것

  • 즉, 데이터를 어떤 형식, 구조, 배치로 사용자에게 보여줄 것인가를 정의

  • 하나의 데이터베이스 안에 여러 개가 존재할 수 있고 하나의 외부 스키마를 여러 사용자나 프로그램이 공용 가능

 

2) 개념 스키마 (전체적인 뷰)

  • 개체 간의 관계와 제약 조건을 명시

  • 데이터베이스의 접근 권한, 보안, 무결성 규칙에 대한 정의를 한 것

  • 외부 스키마와 달리 DB 전체를 기술한 것이기에 데이터베이스 안에 하나만 존재할 수 있음

 

3) 내부 스키마

  • 데이터베이스에 데이터가 물리적으로 저장되는 방식을 기술한 것

  • 일반적으로 "스키마"라고 하면 내부 스키마를 가리킴

 

[그림 3] 데이터베이스 스키마 구조 2

 

현재 가장 많이 쓰고 있는 DBMS는 앞서 알아본 객체형 데이터베이스 관리 시스템(RDBMS)이다.

 

데이터베이스 시장에는 객체형 데이터베이스를 기반으로 한 다양한 DBMS가 존재한다.


1-2 RDBMS의 ACID 속성

  • ACID는 데이터베이스의 트랜잭션의 안전성 보장을 위한 속성

  • Atomicity(원자성), Consistency(연속성), Isolation(독립성), Durability(지속성)으로 구성

 

가) 원자성 (Atomicity)

  • 트랜잭션은 하나의 구문으로만 이루어지는 것이 아닌 그 안에 여러 개의 구문이 존재할 수 있음

  • 원자성은 트랜잭션을 하나의 유닛으로 보아 여러 개의 구문 중 하나라도 실패하면 트랜잭션 전체 실패로 간주하여 해당 트랜잭션에 대한 데이터베이스 작업을 하지 않음

 

나) 연속성 (Consistency)

  • 데이터베이스에 정의된 제약 조건과 규칙을 만족하는 유효한 데이터만이 저장됨을 보장

  • 트랜잭션 수행의 결과로 유효하지 않은 데이터가 들어간다면, 데이터베이스 자체에서 이전의 상태로 돌림

 

다) 독립성 (Isolation)

  • 트랜잭션은 동시다발적으로 수행되기도 함

  • 독립성은 이러한 동시다발적 수행이 서로의 간섭을 받지 않고 독립적으로 수행될 수 있도록 함

  • 예로 두 명이 동시에 트랜잭션을 수행하면, 둘 중 하나는 하나의 트랜잭션이 완료될 동안 남은 한 명을 기다려야 함

 

라) 지속성 (Durability)

  • 성공적으로 수행된 트랜잭션은 시스템 문제, 데이터베이스 업데이트 등이 있다 하더라도 영원히 유지되어야 한다는 것

  • 또한, 데이터베이스의 로그에 기록되기 전에 오류로 인해 트랜잭션이 제대로 수행되지 않았다면 이전 상태로 되돌릴 수 있어야 함

  • 통장을 예로 들어 설명하자면, 돈을 성공적으로 인출하였다면 남은 잔고에 대한 데이터가 데이터베이스에 유지되어야 하며, 데이터베이스 로그에 찍히기 전에 오류가 발생하면 인출되지 않은 금액이 그대로 남아있어야 함


1-3 대표적인 DBMS 소프트웨어

 

[그림 4] 오라클 데이터베이스

 

가) Oracle

  • Oracle Corporation에서 개발한 RDBMS이며, 현재까지 가장 많이 쓰이고 있음

  • 이전 버전과의 호환이 좋고, 새로운 버전이 출시되면 업데이트 된 기능들을 상세히 설명하여 사용자들이 새 버전을 배우는 데에 거부감이 적음

  • 비즈니스 애플리케이션과의 활용도가 뛰어나고 안전성이 좋아 은행이나 대규모 회사에서 많이 채택하는 데이터베이스

  • DBA가 데이터베이스를 구성 및 관리하는 데에 편리한 기능들을 제공

  • 이외에도 수행 능력과 속도 면에서 뛰어나고, 데이터베이스 복구가 빠름

 

오라클 데이터베이스의 특징

  • 양립성 : IBM SQL/DS, DB2, INTEGERS, IDBMS/R 등과 겸용 가능

  • 이식성 : 다양한 하드웨어와 운영체제 플랫폼 (VMS, DOS, UNIX, Windows 등)에서 운행 가능

  • 연결성 : 여러 종류의 네트워크와 통신 가능

  • 고생산성 : 다양한 개발 도구를 제공하여 개발자에게 편의 제공

  • 개방성

 

오라클 데이터베이스는 머신 러닝 시스템으로 셀프 패치 / 드라이빙 / 튜닝이 가능하다.

 

자동화 기능은 보안에서 흔히 발생하는 관리자 실수를 줄여 보안을 강화하고 관리자의 작업량을 줄인다는 장점이 있다.

 

다음 쿼리로 데이터베이스 버전 정보를 간단하게 확인 가능하다.

 

[그림 5] 오라클 버전 확인

 

지원하는 운영체제와 플랫폼

  • Windows, UNIX, Linux, Mac OS와 같이 대표적인 운영체제 모두 지원

 

로그 파일 형태

  • alert_SID.log

  • $ORACLE_BASE/diag/rdbms/database_name/SID/trace 안에 존재

  • 파일명의 SID는 데이터베이스의 SID

 

오라클 데이터베이스는 데이터 변경 사항을 Redo 로그 파일에 저장한다.

 

데이터베이스 내부의 데이터 변경 시에 오라클은 바로 데이터 파일에 기록하지 않고 Redo Log 버퍼에 넣는다.

 

이러한 작업을 하는 이유는 Redo Log 버퍼에서 디스크로의 기록 속도가 훨씬 빠르기 때문이다.

 

Redo Log 파일은 데이터베이스 장애 발생하여 복구 작업을 할 때 유용하게 사용된다.


[그림 6] Mysql

 

나) MySQL

  • 오라클의 지원을 받아 개발된 오픈 소스 기반의 DBMS

  • 오픈 소스라 무료로 사용할 수 있긴 하지만, 오라클에서 상업용 라이센스를 구매하여 프리미엄 서비스 버전을 받을 수 있음

  • 다양한 애플리케이션에서 사용되는데 그 중에서 주로 웹 애플리케이션이나 온라인상에서 많이 사용

  • LAMP 스택의 필수적인 구성 요소로 웹 사이트나 웹 애플리케이션 개발자들이 많이 채택하는 데이터베이스

  • 대표적으로 WordPress, Joomla, Magento, Drupal 등이 PHP와 MySQL이 베이스가 되어 짜인 스크립트들

  • 클라이언트 서버 환경 또는 임베디드 시스템에서 운용 가능

  • 멀티스레드 SQL 서버로 구성된 클라이언트 서버 시스템에서는 각종 백엔드, 클라이언트 프로그램과 라이브러리, 관리자 도구, 다양한 API 제공

  • 임베디드 멀티스레드 라이브러리로 스탠드얼론 제품에 연결해 애플리케이션을 가볍고, 빠르게 그리고 관리하기 쉽게 할 수 있음

 

MySQL은 Inno DB, CSV, NDB 등 다양한 저장 엔진을 활용하여 데이터의 저장 및 접근이 가능하다.

 

각각 테이블에 대해서 여러 개의 저장 엔진을 사용할 수 있으므로 사용자에게 있어 가장 효율적인 것을 선택하면 된다.

 

또한, 데이터와 분할 테이블 복제가 가능하여 지속성 면에서도 좋다.

 

그리고 MySQL은 새로운 커맨드를 배울 필요가 없기 때문에 Oracle 데이터베이스나 MSSQL보다 배우기 쉽다.

(표준 SQL 커맨드로 데이터에 접근)

 

다른 시스템과 호환되도록 설계되었기 때문에 Amazon RDS for MySQL, Amazon RDS for MariaDB, Amazon Aurora for MySQL 등 가상화 환경에서 운용도 가능하다.

 

MySQL과 MSSQL의 데이터베이스 구조는 매우 비슷하여 AWS Schema Conversion Tool이나 AWS Database Migration Service와 같은 도구를 이용해 데이터베이스 이동 시키기가 가능하다.

 

반대로 MSSQL에서 MySQL로 데이터베이스를 옮길 때는 구조적 차이점을 신경써야 한다.

 

MySQL의 버전 확인 방법은 다음과 같다.

 

[그림 7] MySQL 버전 확인

 

지원하는 운영체제와 플랫폼

  • Linux, Unix, Windows, Mac과 같은 주요 운영체제를 포함한 20여가지의 다양한 플랫폼 지원

 

로그 파일 형태

  • MySQL은 데이터베이스의 자원 활용률 극대화를 위해 기본적으로 에러 로그가 비활성화 상태

  • 에러 로그를 남기기 위해 환경 변수 general_log를 off에서 on으로 값 변경 필요

  • 파일명은 mysqld.err

  • Windows의 기본 경로는 C:\Program Files\MySQL\MySQL Server <version>\data에 존재

  • Linux 또는 Unix 계열의 경로는 /var\log 안에 존재

 

또한, MySQL은 오라클을 기반으로 개발되어 Redo Log가 존재하며, 파일명은 일반적으로 id_logfile* (*은 숫자)


[그림 6] MSSQL

 

다) Microsoft SQL Server (MSSQL)

  • Oracle, DB2와 함께 데이터베이스 시장에서 주류에 속하는 데이터베이스로, 마이크로소프트에서 개발

  • 사용자는 용도에 맞는 Edition 선택 가능

  • Oracle 그리고 MySQL과 경쟁하기 위해 MS사에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)

  • 주요 RDBMS처럼 ANSI SQL과 표준 SQL 언어를 제공하며, Sybase와 MS사 만의 T-SQL이라는 프로그래밍 확장 기능 제공

  • MSSQL 데이터베이스를 관리하는 대표적인 도구에는 SSMS(SQL Server Management Studio)가 있음

  • 실시간 작업 분석과 모바일 기기에서도 데이터 시각화, 리포팅이 가능

  • 하이브리드 클라우드 지원으로 DBA로 온프레미스 시스템과 공공 클라우드 서비스를 결합해 데이터베이스 실행

온프레미스 : 소프트웨어를 클라우드나 서버와 같이 원격 환경이 아닌 개인이나 기업이 자체적으로 보유한 컴퓨터에 직접 설치하여 운용하는 방식

 

버전 정보 확인은 다음과 같다.

 

[그림 8] MSSQL 버전 확인

 

지원하는 운영체제와 플랫폼

  • SQL Server 2016 이후로 x64 프로세서만 지원

  • SQL Server 2017부터는 Linux에서 운용이 가능

 

로그 파일 형태

  • MSSQL은 데이터가 실질적으로 저장된 데이터베이스 파일(.mdf)과 해당 데이터베이스의 로그 파일(.ldf)로 데이터 관리

  • 경우에 따라서는 보조 데이터 파일인 .ndf가 함께 존재할 수 있으며, 위 파일들은 데이터베이스 복구 시에 사용


[그림 9] SQLite

 

라) SQLite

  • C언어로 쓰인 RDBMS로, 다른 DBMS와 다르게 클라이언트-서버 형태의 엔진이 아니라 프로그램에 넣어 사용

  • 서버나 데이터베이스 환경 설정이 필요하지 않은 가벼운 RDBMS

  • 간단 응용 프로그램부터 스마트폰, 임베디드 기기의 소프트웨어에까지 사용

 

SQLite는 다음과 같은 특징을 가진다.

  • 보다 압축된 형식의 데이터베이스 파일

  • BLOB (Binary Large Object) 지원

  • UTF-8과 UTF-16 텍스트 지원

  • 64bit ROWIDs

  • 개선된 병행성 (Concurrency)

  • 사용자 기반 텍스트 콜레이션 (Collation)

 

BLOB : DBMS 안에 단일 개체로 저장되는 바이너리 데이터 집합

 

병행성 : 데이터베이스에서 다수 사용자가 동시에 다수 트랜잭션에 영향을 끼치는 것

 

콜레이션 : 데이터베이스에 저장된 문자들을 서로 비교, 검색, 정렬 등의 작업을 하는 규칙의 집합

 

 

다음 명령어로 버전 정보 확인이 가능하다.

 

[그림 10] SQLite 버전 확인

 

지원하는 운영체제와 플랫폼

  • 크로스 플랫폼으로 SQLite가 기본적으로 들어 있는 운영체제는 다음과 같다.

1. BlackBerry 사의 BlackBerry 10 OS

2. Symbian OS

3. Nokia 사의 Maemo

4. Google 사의 Android

5. Linux Foundation의 MeeGo

6. LG 사의 webOS

7. FreeBSD

8. illumos

9. Tizen

10. Windows 10

 

로그 파일 형태

  • SQLite는 Rollback Journal 방식으로 트랜잭션을 구현하여 시스템 상 오류 발생 시에 이전 상태로 복구

  • 일반적으로 보이지 않으며 데이터베이스를 조작할 경우 .db파일과 같은 경로에 생성

  • commit 명령을 수행하거나 SQLite Browser로 변경 사항을 저장하면 사라짐


[그림 11] DB2

 

마) DB2

  • IBM에서 개발한 DBMS

  • IBM의 AS/400 시스템에 임베디드가 되고, 모든 주요 운영체제 플랫폼 지원

  • 스크립트 및 자동화 작업이 좀 더 편리한 CLI 환경과 초심자들이 사용하기 쉬운 GUI 환경 모두 제공

  • 속도가 빠르고 신뢰성이 좋아 대부분 대규모 기업에서 데이터베이스 서버로 채택하고 있음

 

DB2의 특징

  • 포괄적인 기업 보안 기능

  • 개선된 사용 환경

  • 간소화된 업그레이드 과정

  • 대용량 데이터베이스 개선

  • BLU Acceleration 개선 (대용량 데이터 중 원하는 정보에 빠르게 접근할 수 있음)

 

버전 정보는 다음 명령어로 확인 가능하다.

 

[그림 12] DB2 버전 확인

 

지원하는 운영체제와 플랫폼

운영체제

Linux & Unix 계열 / Windows

플랫폼

x86(-64) / Sparc / IBM POWER microprocessors / IA-32

 

 

로그 파일 형태

  • 데이터베이스 자체 문제 해결이나 관리자 알림 메시지는 db2diag.log에 기록

  • diasize라는 데이터베이스 환경 변수가 0으로 설정되어 있다면, 하나의 로그 파일에 기록에 계속해서 쌓이고, 그렇지 않다면 해당 크기에 도달했을 경우 새로운 로그 파일들(db2diag.N.log)이 생성되어 기록

  • 로그 파일 경로는 환경 변수 diagpath에 저장됨


 

# Reference

 

http://www.yes24.com/Product/Goods/87579830

 

www.sqlshack.com

'DB' 카테고리의 다른 글

[DataBase]DCL (데이터 제어어)  (0) 2020.03.20
[DataBase] DML (데이터 조작어)  (0) 2020.03.20
[DataBase] DDL (데이터 정의어)  (0) 2020.03.20
[DataBase] 데이터베이스 모델  (0) 2020.03.16
[DataBase] 데이터베이스 기초  (0) 2020.03.06

+ Recent posts