[데이터베이스] 데이터베이스와 데이터베이스 시스템
데이터, 정보, 지식
데이터 : 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값
정보 : 데이터에 의미를 부여한 것
지식 : 사물이나 현상에 대한 이해
데이터베이스
데이터베이스 : 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
데이터베이스 시스템 : 데이터의 검색과 변경 작업 주로 수행
변경작업 : 시간에 따라 변하는 데이터값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업
데이터베이스의 개념
- 통합된 데이터 : 여러 곳에서 사용하던 데이터를 통합하여 하나로 저장한 데이터
- 저장된 데이터 : 문서로 보관된 데이터가 아니라 디스크, 테이프 같은 컴퓨터 저장장치에 저장된 데이터
- 운영 데이터 : 조직의 목적을 위해 사용되는 데이터 ex) 업무를 위한 검색
- 공용 데이터 : 공동으로 사용되는 데이터, 둘 이상의 프로그램 또는 사람이 데이터를 동시에 사용할 수 있다.
데이터베이스의 특징
- 실시간 접근성 : 사용자가 요청하는 순간의 실제 데이터를 서비스
- 계속적인 변화 : 데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 데이터값은 시간에 따라 항상 바뀐다.
- 동시 공유 : 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유된다.
- 내용에 따른 참조 : 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치 아니라 데이터 값에 따라 참조된다.
3단계 데이터베이스 구조 - 외부, 개념, 내부
- 데이터베이스를 보는 관점(view)를 3개의 단계로 분리한 것
스키마(Schema)
데이터베이스의 구조나 조직
외부 단계
외부 단계 : 일반 사용자나 응용 프로그래머가 접근하는 계층
- 여러개의 외부 스키마(서브 스키마 = 뷰)가 있을 수 있다.
- ex) 학생처의 학생 정보, 교무처의 수강 정보
개념 단계
- 개념 단계 : 전체 데이터베이스의 정의
- 하나의 데이터베이스에는 하나의 개념 스키마가 있으며, DBA가 관리
- 데이터와 관계, 제약사항, 무결성
- ex) 대학 전체 데이터베이스
개념 스키마 : ERD
내부 단계
내부 단계 : 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법의 표현
- 내부 단계
- 하나의 내부 스키마가 존재하며, 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항 포함
- ex) 대학 전체 데이터베이스가 실제 하드디스크에 저장되는 물리적인 구조
매핑 : 각 단계 간 대응 관계 정의
- 외부 - 개념 매핑 : 사용자의 외부 스키마와 개념 스키마 간의 매핑
외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응
- 개념/내부 매핑 : 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응
3단계 데이터베이스 구조의 특징 : 데이터 독립성
데이터 독립성 : 하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 하는 것
- 일반 사용자는 사용자별로 외부 스키마 존재
- DBA는 일반 사용자의 외부 스키마에 영향을 주지 않고 개념 스키마나 내부 스키마의 물리적인 저장 방법을 바꿀 수 있다.데이터 독립성
- 논리적 데이터 독립성
- 외부 단계와 개념 단계 사이의 독립성
- 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원
- ex) 개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없다.
- 물리적 데이터 독립성
- 개념 단계와 내부 단계 사이의 독립성
- 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원
- ex) 성능 개선을 위하여 물리적 저장 장치를 재구성할 경우 개념 스키마나 응용 프로그램 같은 외부 스키마에 영향이 없다.
- 물리적 데이터 독립성은 논리적 독립성보다 구현하기 쉽다.
데이터베이스시스템(Database System)
데이터베이스시스템 : 각 조직에서 사용하던 데이터를 모아서 통합하고 서로 공유하여 생기는 장점을 이용하는 시스템
데이터베이스시스템의 구성
- 데이터베이스 관리 시스템(DBMS) + 데이터베이스 + 데이터 모델로 구성
데이터베이스 사용자가 데이터베이스를 생성, 공유, 관리할 수 있도록 지원해주는 총체적 역할
트랜잭션이란? 데이터베이스를 처리하는 프로그램의 단위
- DBMS : 사용자와 데이터베이스를 연결시켜주는 소프트웨어 (주기억장치에 저장된 소프트웨어)
- DDL/DML 컴파일러 : SQL을 번역
- Embedded DML : 응용 프로그램에 삽입된 SQL을 번역
- 질의처리기 : 번역된 SQL을 처리하는 알고리즘
- 트랜잭션 관리자 : 트랜잭션을 관리
- 파일 관리자 : 파일 관리
- 버퍼 관리자 : 버퍼 관리
- 데이터베이스 : 데이터를 모아둔 토대 (하드디스크에 저장된 데이터)
인덱스 : 데이터에 빠르게 접근 목적 데이터 사전 : 데이터에 대한 정보를 저장
- 데이터 모델 : 데이터가 저장되는 기법(style) (눈에 보이지 않는 논리적인 개념)
데이터베이스에 데이터가 어떻게 구조화되어 저장되는지 결정
- 가장 많이 사용되는 데이터 모델은 관계 데이터 모델
- 계층 데이터 모델, 네트워크 데이터 모델, 객체 데이터 모델, 객체-관계 데이터 모델
- 포인터 사용 : 계층 데이터 모델, 네트워크 데이터 모델
- 속성 값 사용 : 관계 데이터 모델
- 객체 식별자(oid) 사용 : 객체 데이터 모델
DBMS의 기능
- 데이터 정의 : 데이터의 구조를 정의하고 데이터 구조에 대한 삭제, 변경 기능 수행
- 데이터 조작 : 데이터를 조작하는 소프트웨어가 요청하는 데이터의 삽입, 수정, 삭제 작업 지원
- 데이터 추출 : 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터 추출
- 데이터 제어 : 데이터베이스 사용자를 생성하고 모니터링하며 접근 제어 + 백업, 회복, 동시성 제어
DBMS의 특징
DBMS는 사용자 또는 애플리케이션으로부터 데이터베이스를 생성하거나 데이터베이스에 데이터를 저장, 수정, 삭제 등의 작업을 수행할 수 있게 해주는 소프트웨어입니다.
- 데이터 무결성 : 동일한 내용에 대해 중복으로 저장되지 않는다.
- 데이터 일관성 : 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 동일 규칙 내에 일정해야한다.
- 데이터 회복성 : 장애 발생시에 특정 상태로 복구되어야한다.
- 데이터 보안성 : 불법적인 노출과 변경으로부터 보호되어야한다.
- 데이터 효율성 : 응답시간, 저장 공간 활용들이 최적화되어야한다.
이 외에도 데이터베이스시스템을 이해하기 위해서는 데이터베이스 언어, 데이터베이스 사용자에 대해 알아야한다.
데이터베이스 언어
데이터베이스 시스템은 SQL(Structured Query Language)라고 불리는 데이터베이스 전용 언어를 사용한다.
SQL은 데이터 정의어, 데이터 조작어, 데이터 제어어로 구성된다.
- 데이터 정의어(DDL, Data Definition Language): DBMS에 저장된 테이블 구조를 정의하는 언어
CREATE, ALTER, DROP
- 데이터 조작어(DML, Data Manpulation Language) : 데이터를 삽입, 삭제, 수정하는데 사용하는 언어
SELECT, INSERT, DELETE, UPDATE
- 데이터 제어어(DCL, Data Control Language) : 데이터의 사용 권한을 관리하는 언어
GRANT, REVOKE
- SQL의 핵심은 데이터 조작어 중 데이터를 검색하는 질의문
- SELECT - FROM - WHERE 구조
SELECT bookname, publisher FROM Book WHERE price >= 1000;
- SELECT - FROM - WHERE 구조
데이터베이스 사용자
데이터베이스 시스템을 사용하는 사람은 크게 일반 사용자, 응용 프로그래머, SQL 사용자, 데이터베이스 관리자로 구분할 수 있다.
- 응용 프로그래머 : 데이터베이스를 이용하여 문제를 해결하는 프로그램을 작성하는 사람
- 일반 사용자 : 응용 프로그래머가 작성한 프로그램을 이용한 사람
- SQL 사용자: SQL 질의를 작성하거나 SQL을 이용하여 프로그램을 작성하는 사람
응용 프로그램으로 구현되어 있지 않은 업무를 SQL을 사용하여 처리
- 데이터베이스 관리자(DBA) : 조직의 데이터베이스 운영을 총괄하는 사람
데이터베이스 설계, 구현, 유지보수의 전 과정 담당
정보 시스템의 발전
파일 시스템
파일 시스템 : 데이터를 파일 단위로 파일 서버에 저장
- 각 컴퓨터는 LAN을 통하여 파일 서버에 연결되어 있고, 파일 서버에 저장된 데이터를 사용하기 위해 각 컴퓨터의 응용 프로그램에서 열기/닫기를 요청
- 파일에 저장된 데이터를 서로 공유하지 않기 때문에 데이터가 중복 저장될 가능성이 있다. => 일관성 훼손
- 프로그램 개발시 파일을 직접 다루어야하는 부담이 있다.
- 데이터베이스 시스템
- DBMS*를 도입하여 데이터를 통합관리하는 시스템
- 클라이언트-서버 시스템 : DBMS가 설치되어 데이터를 가진 쪽을 서버, 외부에서 데이터를 요청하는 쪽을 클라이언트
- DBMS 서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어, 보안 유지 등의 기능 수행
- 데이터를 저장하기 전 설계 과정을 거치기 때문에 데이터의 중복을 줄이고 데이터를 표준화하며 무결성 유지
- 응용 프로그램 입장에서는 데이터 정의와 관리를 맡지 않아 데이터 구조 변경으로부터 독립성을 유지할 수 있다.
웹 데이터베이스 시스템
웹 데이터베이스 시스템 : 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템
- 클라이언트는 익스플로러같은 웹 브라우저 프로그램을 이용하여 웹 서버에 접속한 후 데이터를 요청하며, 웹 서버는 DBMS 서버에 요청을 전달한다. 요청된 데이터는 반대 방향으로 전달된다.
- 온라인 상거래나 공공 민원 서비스 등에 사용된다.
분산 데이터베이스 시스템
- 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템
- 대규모의 응용 시스템에 사용
데이터베이스 시스템의 복구와 보안
데이터베이스시스템 복구
여러 복구 기능을 제공한다.
- 백업 및 복구
- 전체 백업, 차등 백업, 트랜잭션 로그 백업
- 백업 파일을 사용하여 데이터베이스 복구 가능
- 중복성
- Mirroring, Clustering
- 하드웨어 장애 발생**시에도 데이터 보호 가능
- UNDO/REDO
- **사용자 오류**로부터 데이터 보호
- UNDO : 사용자 작업을 취소하여 이전 상태로 되돌리는 기능
- REDO : UNDO 이후 발생한 변경사항 적용하는 기능
데이터베이스시스템 보안
- 사용자 인증 및 권한 관리 기능을 통해 데이터 접근 제어
- 데이터 암호화 기능을 통해 데이터를 보호합니다.
- 데이터 활동을 추적하는 감사 추적 기능을 제공합니다.
- 침입 탐지 및 방지 시스템(IDS/IPS)를 통해 데이터베이스 공격을 방지합니다.
데이터 센터 DR(Disaster Recovery) : 재해 복구
지진, 태풍, 혹수나 전쟁, 해킹, 오류 등 예상치 못한 **재해** 속에서도 서비스가 계속해서 운영될 수 있도록 하는 것
재해 발생시 빠르게 대응하기 위해 **운영 데이터센터**와 **백업 데이터 인프라**를 지닌 **DR** 센터를 **15km**이상 떨어뜨려 이원화(=백업)시켜야한다.
DR 시스템은 크게 4가지 종류로 나누어 볼 수 있습니다.
- 미러 사이트 : 메인 시스템과 동일 환경 구축 + **동기화**(복제상태)
- 핫 사이트 : 메인 시스템과 동일 환경 구축 + 평소 **대기**상태
- 웜 사이트 : 중요성이 높은 데이터만 부분 저장
- 쿨 사이트 : 단순 데이터 저장 -> 보완책으로 사용 ex)파일 실수 삭제, 손상 복구시 빠르게 데이터 복원가능
관계형 데이터베이스와 비관계형 데이터베이스(NoSQL)간의 차이점?
관계형 데이터베이스(RDBMS)
- 구조: 테이블(또는 관계) 기반의 구조로, 데이터는 행과 열로 구성된 테이블에 저장됩니다. 각 테이블은 고유한 키(Primary Key)에 의해 참조될 수 있으며, 외래 키(Foreign Keys)를 사용하여 다른 테이블과 관계를 형성할 수 있습니다.
- 스키마: 스키마에 따라 데이터 구조가 엄격하게 정의되며, 테이블에 저장되는 데이터 타입과 형태가 사전에 정의됩니다.
- 데이터 무결성과 ACID 속성: 데이터의 정확성과 일관성을 유지하기 위한 엄격한 규칙(데이터 무결성)과 트랜잭션 관리를 위한 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 지원합니다.
- 쿼리 언어: SQL(Structured Query Language)을 사용하여 데이터를 관리하고 쿼리합니다.
비관계형 데이터베이스(NoSQL)
- 구조: NoSQL 데이터베이스는 다양한 데이터 저장 모델을 제공합니다(키-값 저장소, 문서 지향(json), 컬럼 패밀리, 그래프 기반 등). 이러한 유연한 구조는 다양한 형태의 데이터를 저장하고 관리할 수 있게 해줍니다.
동일한 컬렉션(데이터모델) 내에서 다양한 형식의 데이터 저장 가능 (ex)key-value : 숫자, 문자, 딕셔너리..) - 스키마: 스키마리스(Schema-less) 또는 동적 스키마를 사용하여 데이터를 저장합니다. 이는 데이터 구조를 사전에 정의할 필요 없이, 레코드를 추가하면서 필요한 형태로 데이터를 저장할 수 있음을 의미합니다.
- 확장성: 수평적 확장성이 뛰어나며, 데이터베이스 클러스터에 노드를 추가함으로써 쉽게 확장할 수 있습니다. 이는 대용량 데이터 처리와 실시간 웹 애플리케이션에 적합합니다.
> rdbms는 수직 확장(더 강력한 하드웨어로 업그레이드), nosql은 수평확장(서버 추가, 여러 서버에 데이터를 분산 저장한다.) - 데이터 처리: 대용량의 분산 데이터를 효율적으로 처리할 수 있으며, 빅데이터와 실시간 웹 애플리케이션에서의 높은 읽기/쓰기 성능을 제공합니다.
> nosql은 데이터 모델에 맞춘 쿼리 언어를 사용하여 대용량 데이터를 처리할때 효율적입니다.
선택 기준
- 관계형 데이터베이스는 엄격한 데이터 무결성과 복잡한 쿼리가 필요한 애플리케이션에 적합합니다.
- 비관계형 데이터베이스는 유연한 데이터 모델, 빠른 속도, 대규모 분산 데이터 처리가 필요한 경우에 적합합니다.
Reference
책 : SQL Server로 배우는 데이터베이스 개론과 실습
https://m.yes24.com/Goods/Detail/97538787