[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

[DataBase] 데이터베이스 모델

 

데이터베이스


(1) 데이터베이스 모델

  • 데이터가 어떻게 저장, 관리, 처리되는지 정의한 논리적 구조

  • 가장 대표적인 모델은 '관계형 모델'

 

1-1. 관계형 모델

  • 사용이 쉽다는 점에서 가장 널리 쓰이는 DBMS 모델

  • Row와 Column으로 구성된 테이블 구조로, SQL이라는 언어를 통해 조작

  • 테이블을 표라고 생각했을 때 Row는 가로줄, Column은 세로줄을 의미

  • Row는 레코드라고 부르기도 함

[그림 1] 테이블 구조

 

테이블은 여러 개의 Row와 Column으로 구성, 각각 Row는 레코드(Record)라고 하며 Object(객체) 또는 Entity라고도 한다.

 

필드(field)는 테이블에서 Column에 대응하며 Attribute(속성)라고도 한다.

 

테이블은 하나가 아닌 여러 개 존재 가능, DBMS 중 관계형 모델을 기반으로 한 RDBMS(Relational DataBase Management System, 관계형 데이터베이스 관리 시스템)는 여러 테이블을 조합하여 원하는 데이터를 찾을 수 있도록 하여 좀 더 복잡한 데이터 처리 요구를 수행한다.

 

이처럼 여러 개의 테이블이 존재, 그들 사이의 관계를 식별하기 위한 것이 키(key)라고 한다.

 

키는 테이블에서 고유하게 식별할 수 있는 Row이다.

 

 

후보키

  • 각 행을 유일하게 식별할 수 있는 속성(Column)

  • 모든 테이블은 반드시 하나 이상의 후보 키를 가짐 > 유일성과 최소성 만족

  • 쉽게 말해, 레코드를 유일하게 구별할 수 있는 Column들의 부분 집합

cust_num cust_id cust_birth cust_country
001 origintaste 1999-11-19 Korea
002 cork 2000-02-12 Korea
003 daniel 2001-04-05 USA
004 Kelvin 2002-03-05 UK

위 테이블을 보면 4개의 Column 중에서 중복되지 않은 값이 나타나는 것은 cust_num, cust_id, cust_birth로 각 레코드를 유일하게 식별하는 후보키가 될 수 있다.

 

하지만 cust_country의 경우 중복되는 값이 존재하기 때문에 후보키가 될 수 없다.

 

만약 cust_birth에 동일 생일을 가진 고객의 레코드 정보 추가 시, cust_birth 또한 후보키가 될 수 없다.

 

 

기본키(주 키)

  • 후보키 중에서 선택한 것으로 테이블의 주 키가 됨

  • 기본키로 정의된 Column은 Null 값을 가질 수 없고, 같은 값이 중복으로 저장될 수 없음

  • 후보키들을 조합하거나 그들 중 하나를 선택하여 기본키 만들기 가능

  • 후보키들 중 일부와 다른 Column을 조합하여 기본키 만들기 가능

 

대체키(보조키)

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지를 대체키라고 함

  • cust_num, cust_id, cust_birth에서 cust_num을 기본키로 정의하였다면 나머지 cust_id와 cust_birth가 대체키가 됨

 

슈퍼키

  • 한 테이블 내에 있는 Column들의 집합으로 구성된 키

  • 유일성 만족 / 최소성 불만족

  • 슈퍼키를 구성하는 Column들이 조합되어야 각 레코드 구별 가능

  • 흩어진 Column 몇몇으로는 각 레코드 구별 X

  • cust_id와 cust_country를 조합 > 키를 만들 시, 둘이 뭉쳐있어야만 테이블 각 레코드 유일하게 식별 가능 / cust_id가 떨어진 cust_country 혼자로는 테이블 레코드 유일하게 식별 X

 

외래키

  • 한 테이블이 다른 테이블 참조 > 그들의 관계를 표현하는 키

  • 외래키로 지정 > 참조 테이블의 기본키에 없는 값은 입력 X

 

[그림 2] 기본키와 외래키

 

customer_information의 테이블에서 데이터 중복이 없고 각 레코드를 고유하게 식별하는 Column은 customer_id으로 해당 테이블의 기본키가 된다.

 

order_information 테이블 경우 기본키가 될 수 있는 Column은 order_id이다.

 

두 테이블을 연결해주는 Column은 customer_information에서의 customer_id, order_information에서의 cust_id이다.

 

따라서 cust_id는 order_information의 외래키가 된다.

 

위와 같이 관계형 데이터베이스에서 각각의 테이블들은 외래키로 참조할 수 있다.

 

※ 관계형 모델이 지니는 위와 같은 특징으로 1대1 또는 다대다 관계의 데이터를 표현하기에 좋다.


1-2. 네트워크 모델

[그림 3] 네트워크 모델

  • 70년대에 주로 사용하였던 데이터 모델 > 계층적 데이터 모델과 비슷한 구조를 지님

  • 계층적 DBMS는 자식이 여러 부모를 갖는 것이 불가능 > 네트워크 모델은 가능

  • 좀 더 복잡한 다대다 데이터 관계를 다룰 수 있음

  • 계층적 DBMS가 트리구조면, 네트워크 모델은 그래프 구조

  • 데이터 독립성, 데이터 무결성, 데이터 조작면에서 보완


1-3. 계층적 모델

 

[그림 4] 계층적 모델

  • 데이터들이 트리 구조로 조직 > 부모-자식 관계 형성

  • IBM의 IMS(Information Management System)와 같은 초기 DBMS 메인 프레임 사용

  • 부모-자식 관계가 명확한 상황을 제외, 활용도가 높지 않음


1-4. 객체 지향형 모델

 

[그림 5] 오브젝트와 클래스

  • 객체 지향 프로그래밍(OOP, Object Oriented Programming)과 관계형 데이터베이스 특징을 결합한 형태

  • 데이터를 오브젝트와 클래스로 표현 > 오브젝트는 실세계의 개체, 클래스는 오브젝트의 집합

  • 객체 지향형 데이터베이스에서 모든 개체 > 오브젝트

  • 오브젝트는 property(상태)와 method(행위)로 구성, 각각의 오브젝트는 고유 식별자를 지님

 

Customer라는 오브젝트가 있을 때, 위 그림에서 Customer의 상태를 설명하는 Property에는 고객 ID, 이름, 주소, 이메일 주소가 있다.

 

그리고 Customer 오브젝트가 수행할 수 있는 행위, Behavior로는 아이템 검색, 선호 목록, 카트에 넣기, 지불하기 등이 있다.

 

Property와 Behavior를 아울러 오브젝트라 하고, 이 오브젝트 들이 여럿 모여 클래스를 이룬다.

 

오브젝트와 클래스 외에 상속, 캡슐화 등의 객체 지향 프로그래밍 특징을 지니고 있으며, 관계형 데이터베이스와 비교하면 널리 쓰이지 않는 모델이다.


# Reference

 

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

'DB' 카테고리의 다른 글

[DataBase]DCL (데이터 제어어)  (0) 2020.03.20
[DataBase] DML (데이터 조작어)  (0) 2020.03.20
[DataBase] DDL (데이터 정의어)  (0) 2020.03.20
[DataBase] DBMS(Database Management System)  (0) 2020.03.18
[DataBase] 데이터베이스 기초  (0) 2020.03.06

[DataBase] 데이터베이스 기초

 

데이터베이스


오늘날을 정보화 시대라고 부르는 만큼 사람들은 엄청난 양의 데이터 속에서 살아가고 있습니다.

 

이미지, 텍스트, 문서, 문자열, 숫자 등 데이터는 다양한 형태로 존재하며 각각 용도에 맞게 처리되어 사람들에게 보입니다.

 

많은 양의 데이터를 효율적으로 관리하고 처리하기 위해 고안한 것이 데이터베이스입니다.


(1) 데이터베이스

1-1. 데이터베이스 정의

  • 데이터베이스는 체계적으로 조직된 데이터의 집합

  • 가장 많이 사용되는 데이터 모델은 관계형 데이터 모델이며, 표 형식으로 구성

  • 데이터 구조화 > 사용자가 얻는 이점이 많고, 대량 데이터를 처리하는 여러 기관, 기업, 웹 사이트 등에서 필수적 사용

[표 1] 데이터베이스 예시

고객 아이디 주문번호 주문일자 결제완료일자 결제금액
100101 20200301-001 2020-03-01 2020-03-01 100,000
100102 20200301-002 2020-03-01 2020-03-01 70,000
100103 20200301-003 2020-03-01 2020-03-02 200,000
100104 20200302-001 2020-03-02 2020-03-02 50,000
100105 20200302-002 2020-03-02 2020-03-03 300,000
100106 20200303-001 2020-03-03 2020-03-03 10,000
100107 20200304-001 2020-03-04 2020-03-04 40,000
100108 20200304-002 2020-03-04 2020-03-05 150,000



[표 2] 주문일자가 2020-03-01인 데이터만 추출한 결과

고객 아이디 주문번호 주문일자 결제완료일자 결제금액
100101 20200301-001 2020-03-01 2020-03-01 100,000
100102 20200301-002 2020-03-01 2020-03-01 70,000
100103 20200301-003 2020-03-01 2020-03-02 200,000


위 결과를 보면 비슷한 유형의 데이터끼리 분류되어 있는 것을 알 수 있다.

 

데이터가 일정한 순서로 나열되어 데이터를 수정 및 검색하는 데에 걸리는 시간이 크게 줄어든다.

 

사용자는 SQL(Structured Query Language)이라는 쿼리 언어로 원하는 데이터만 추출이 가능하다.

 

위와 같이 주문일자가 2020-03-01인 정보만을 원한다면, 조건을 추가한 쿼리를 다음과 같이 입력한다.

 

SELECT * FROM 주문정보 WHERE 주문일자 = '2020-03-01'

 

  • 데이터 추출뿐만 아니라, 데이터 삭제 / 수정 / 추가할 때도 간단한 명령문을 입력

  • 일괄적 변경 가능, 표의 내용 일부 변경도 가능

  • 여러 표를 한데 묶어 출력하는 것도 가능

 

1-1-1. 데이터베이스에 어떻게 접근하는가?

  • 사내 네트워크망에 포함되지 않은 외부 사용자는 인터넷을 통해 공개된 웹 서버에 접속

  • 해당 서버는 필요한 데이터를 데이터베이스 서버로부터 불러옴

※ 데이터베이스 보안을 위해 외부 사용자가 데이터베이스 서버에 직접 접속하지 못하게 하는 것

(하지만 웹이나 애플리케이션 보안이 취약하면 공격자가 악의적인 SQL 구문을 입력하여 민감 정보 빼오기 가능)


1-2. 데이터베이스 특징

 

1) 데이터 중복 허용 X

  • DBA(Database Adminstrator)로 중앙 집중화되어 관리 > 불필요한 데이터 중복 피함

  • 저장하고 있는 데이터 총 용량도 줄어듦

  • 데이터 중복은 예기치 못한 상황을 만들 수 있어 허용하지 않는 것이 일반적 (몇몇 경우는 일부러 허용하기도 함)

 

2) 데이터 공유

  • 여러 사용자와 응용 프로그램이 데이터베이스 내의 데이터 공유 가능

 

3) 데이터 무결성

  • 데이터 일관성과 정확성 보장 > DB, RDBMS(Relational Database Management System)의 중요 특징

  • 중앙 집중화 된 관리 > 데이터 정확성, 일관성 유지

 

4) 데이터 보안

  • DBA는 사용자마다 데이터베이스 접근 권한 부여 > 허가받지 않은 접근 차단

  • 접근 권한 부여 및 회수 명령어는 SQL 중 DCL로 GRANT와 REVOKE가 있음

 

5) 데이터 독립성

  • 물리적 독립성과 논리적 독립성으로 나뉨

  • 물리적 독립성은 데이터를 담고 있는 저장장치가 바뀌어도 응용 프로그램까지 바꿀 필요 없음을 의미

  • 논리적 독립성은 데이터베이스 테이블에 데이터가 새로 추가/삭제 /갱신되어도 응용 프로그램을 바꿀 필요가 없음을 의미

  • 결론적으로, 데이터베이스 환경 변화는 해당 데이터베이스를 사용하는 응용 프로그램에 영향을 끼치지 않음


# Reference

 

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

'DB' 카테고리의 다른 글

[DataBase]DCL (데이터 제어어)  (0) 2020.03.20
[DataBase] DML (데이터 조작어)  (0) 2020.03.20
[DataBase] DDL (데이터 정의어)  (0) 2020.03.20
[DataBase] DBMS(Database Management System)  (0) 2020.03.18
[DataBase] 데이터베이스 모델  (0) 2020.03.16

+ Recent posts