데이터베이스(DB;Database)
특정 조직의 업무에 필요한 상호 관련된 데이터들의 집합
데이터베이스의 정의⭐️
- 통합 데이터(Integrated Data): 중복 최소화
- 저장 데이터(Stored Data): 저장매체에 저장
- 운영 데이터(Operational Data): 업무에 필수적
- 공용 데이터(Shared Data): 공동 소유 유지
데이터베이스의 특징
- 실시간 접근성: 사용자의 질의에 즉시 응답
- 계속적인 변화: 최신 및 정확한 데이터 유지
- 동시 공유: 여러 사용자의 동시 데이터 접근 및 공유
- 내용에 의한 참조: 주소가 아닌 내용으로 데이터 참조
- 데이터의 독립성: 논리적 및 물리적 독립성
데이터베이스 생명주기
분석 → 설계 → 구현 → 운영 → 감시 및 개선
데이터 언어
- DDL(Data Definition Language): 데이터베이스의 구조와 제약 조건 정의
- DML(Data Manipulation Language): 데이터 처리 및 조작에 사용되는 언어
- DCL(Data Control Language): 보안, 권한, 무결성 및 병행 제어를 위한 언어
스키마(Schema)
스키마의 정의
- 데이터베이스의 구조, 제약조건, 속성, 개체, 관계를 포함한 전반적인 명세를 기술한 것
- 개체(Entity)는 여러 속성(Attribute)의 집합, 개체들 사이에 관계(Relation) 존재
- 스키마에 명세된 정보는 데이터 사전에 저장
3계층 스키마
외부 스키마(사용자 뷰)
- 사용자나 응용프로그램 관점에서 데이터베이스의 논리적 구조를 정의
- 하나의 데이터베이스에 여러 개의 외부 스키마 존재하여 공유 가능
- 접근 시 SQL, C, JAVA 등 질의어나 프로그래밍 언어 사용
개념 스키마(전체적인 뷰)
- 데이터베이스의 전체적인 논리적 구조, 전체 조직의 데이터 요구사항을 종합적으로 반영
- 일반적으로 하나의 데이터베이스에 하나의 개념 스키마만 존재
- 스키마는 주로 개념 스키마 의미
- 데이터 접근 권한, 보안 정책, 무결성 규칙 등 명세 포함
내부 스키마(저장 스키마)
- 물리적 저장장치 관점에서 데이터베이스의 구조를 정의
- 실제로 데이터가 어떻게 저장장치에 배열되고 저장되는지, 레코드의 물리적 구조, 표현 방식, 순서 등 명세
DBMS(DataBase Management System)
데이터베이스를 효과적으로 관리하고 조작하기 위한 전용 소프트웨어
DBMS의 기능
- 데이터 정의: 데이터 타입, 구조, 제약조건 등 설정 → DDL
- 데이터 조작: 데이터 검색, 갱신 및 보고성 생성을 위한 질의 수행 → DML
- 사용자와 데이터베이스 사이 인터페이스 수단 제공
- 데이터 제어: 무결성, 보안, 권한, 병행 제어 → DCL
- 데이터 공유: 여러 사용자나 응용 프로그램이 동시 데이터베이스 접근 가능
- 데이터 보호: 불법적이거나 권한 없는 접근, 시스템 장애로부터 데이터 보호
- 데이터 구축: 데이터를 DBMS가 관리하는 저장장치에 저장
- 유지보수: 시간의 흐름에 따른 요구사항의 변화를 반영하여 데이터베이스를 수정하거나 업데이트
DBMS의 장단점
장점
- 중복 최소화로 저장공간 낭비 방지
- 데이터 독립성 보장
- 동시 접근 및 공유 가능
- 데이터 일관성/무결성 유지
- 강화된 데이터 보안
- 시스템 장애 복구 가능
단점
- 고급 전문가 필요
- 전산화 비용 증가
- 대용량 디스크로의 집중적인 액세스로 과부하발생
- 복잡한 백업 및 복구
DBMS의 종류
계층형(Hierachical Database)
- 트리 구조로 데이터 간의 관계 표현, 세그먼트(레코드)단위로 데이터 관리
- 간단한 구조로 구현/수정/검색 용이
- 부모자식간 다대다 관계 처리 불가능, 구조 변경 어려움
네트워크형(Network Database)
- 그래프 구조로 데이터 간 관계 표현, Owner-Member 관계를 가짐
- 계층형 단점 보완, 데이터 간 다대다 관계 가능
- 복잡한 구조로 유지보수 어려움
- CODASYL이 제안해, CODASYL DBTG 라고도 함
관계형(Relational Database)
- 키와 값으로 이뤄진 데이터들을 행과 열로 구성된 테이블 구조로 단순화시킨 모델
- SQL를 사용해 데이터 처리
객체지향형(Object-Oriented Database)
- 객체지향프로그래밍 개념에 기반해 만든 모델
- 정보를 객체의 형태로 표현
- 클래스, 상속 등 사용 가능
- 비정형 데이터들을 데이터베이스화하기 위해 만듦
객체관계형(Object-Relational Database)
- 관계형 데이터베이스에 객체지향개념 도입해 만든 모델
- 객체지향 개념을 지원하는 표준 SQL 사용 가능
- 관계형 데이터베이스보다 더 다양한 데이터타입
NoSQL
- Not Only SQL, SQL뿐만 아니라 다양한 특성 지원
- 데이터간 관계를 정의하지 않는 데이터베이스 모델로, 기존 RDBMS의 복잡도와 용량의 한계 극복 목적
- 비정형 데이터처리에 유리
- 스키마 변경 불가해 데이터값 문제 발생 시 감지 어려움
NewSQL
- RDBMS와 NoSQL의 장점 결합한 모델
- 확장성과 트랜잭션 동시 지원