1. 데이터베이스와 DBMS
데이터 베이스란?
- "원하는 기능 동작"을 위해 반드시 저장해야 하는 정보 집합
- 사전적 의미 : 여러 사람이 공유해 사용할 목적으로 체계화하여 통합/관리하는 데이터 집합
DBMS?
- 데이터베이스는 웹 서비스의 정체성, 성능 등 중대한 영향을 미치는 요소
⇒ 이러한 데이터베이스를 관리하기 위한 수단이 DBMS(DataBase Management System)
DBMS의 종류
- RDBMS
- 관계형 데이터베이스 관리 시스템
- Relational DataBase Management System
- MySQL, Oracle, PostgreSQL, SQLite, MariaDB, Microsoft SQL Server 등
- 점유율 가장 높은 RDBMS : MySQL (2023년, 약 6만 명 대상 조사 결과)
- 대부분의 개발자들은 RDBMS 활용
- NoSQL DBMS
- Not Only SQL DBMS
- 유연한 형태의 대규모 데이터 관리 용이
- 확장성이 좋음
- MongoDB, Redis
서버로서의 DBMS
- DBMS는 사용자와 간접적으로 상호작용
- 사용자 대신 사용자가 만든 프로그램(응용 프로그램)과 상호작용
- 응용 프로그램이 바라보는 DBMS는 마치 “클라이언트-서버”간 상호작용과 유사
- DBMS 클라이언트 → DBMS에 쿼리 보냄 (마치, 데이터베이스에 질의하는 과정)
- 데이터베이스 언어를 통해 상호작용

- 데이터베이스 언어를 통해 상호작용
- 데이터베이스 언어의 종류
- 사용자/응용 프로그램은 데이터베이스 언어를 통해 DBMS를 다룰 수 있음
- 데이터베이스에 질의(Query)를 보내기 위해 구조화된 언어
- 대표 : SQL (Structured Query Language)
- 대표 : SQL (Structured Query Language)
- SQL의 4대 분류
- DDL (Data Definition Language) : 데이터 정의
- CREATE : 데이터 베이스 객체 생성 (데이터베이스, 테이블, 뷰, 인덱스 등)
- ALTER : 데이터베이스 객체 갱신
- DROP : 데이터베이스 객체 삭제
- TRUNCATE : 테이블 구조를 유지한 채 모든 레코드 삭제
- DML (Data Manipulation Language) : 데이터 조작
- SELECT : 테이블 레코드 조회
- INSERT : 테이블 레코드 삽입
- UPDATE : 테이블 레코드 갱신
- DELETE : 테이블 레코드 삭제
- DCL(Data Control Language) : 데이터 제어
- COMMIT : 데이터베이스에 작업 반영
- ROLLBACK : 작업 이전의 상태로 되돌림
- SAVEPOINT : 롤백 기준점 설정
- TCL (Transaction Control Language) : 트랜잭션 제어
- GRANT : 사용자에 권한 부여
- REVOKE : 사용자로부터 권한 회수
- DDL (Data Definition Language) : 데이터 정의
2. 데이터베이스 vs 파일 시스템
파일 시스템 대신 데이터베이스
- 파일 시스템의 한계 : 데이터 단순 나열 후 저장
- 쉽게 말해서, 파일 시스템은 데이터의 체계적 정리가 이루어져 있지 않음
5가지 이유
- 데이터 일관성 및 무결성 제공이 어려움
- 데이터베이스는 여러 사용자가, 동시다발적으로 사용함
- 데이터의 일관성 이슈 : 레이스 컨디션 문제 발생 가능
- 레이스 컨디션 : 두 개 이상의 프로세스/스레드가 공유 자원을 서로 이용하기 위해 경합하는 현상 → 모든 자원을 공유하게 됨으로서 동기화 문제 발생
- 데이터의 무결성 이슈 : 데이터의 무결성을 보장하기 어려움
- 개발자가 파일에 명시된 데이터의 결함이 없음을 일일이 검사하기 번거로움 (무결성 증명의 번거로움)
- 데이터의 일관성 이슈 : 레이스 컨디션 문제 발생 가능
- 데이터베이스는 여러 사용자가, 동시다발적으로 사용함
- 불필요한 중복 저장 방지
- 쌓여서 큰 저장 공간 낭비를 불러옴
- 데이터 변경 시, 연관 데이터 변경이 어려움
- 파일 시스템에서, A 인덱스에서 X라는 값이 Y라고 변경되었을 경우 → A 인덱스에서 X라는 값을 갖고 있던 모든 요소들의 값을 Y로 변경해주어야 함
- 정교한 검색이 어려움
- 문자열 검색에 국한되지 않고, 정교한 데이터 검색을 위해서는 데이터베이스가 필요함
- 백업 및 복구 어려움
- 파일 시스템은 백업 / 복구 기능을 기본적으로 제공하지 않음
- 추가 제공 기능도 부족한 수준
3. 데이터베이스 저장단위
엔티티(entity)
- 정의 : 독립적으로 존재할 수 있는 객체
- “어떠한 특성을 가진 대상”
- 데이터베이스는 다양한 속성을 지닌 엔티티를 저장할 수 있음
- 속성(attribute) : 엔티티의 특성
- 같은 속성을 공유하는 엔티티 → 같은 엔티티 집합에 속한다
- ex) 1과 2 / 3과 4 : 같은 엔티티 집합에 속함

- ex) 1과 2 / 3과 4 : 같은 엔티티 집합에 속함
- 도메인(domain) : 엔티티의 속성이 가질 수 있는 값의 집합
- ex) ‘구매자 성별’ 속성이 가질 수 있는 도메인 : (남자, 여자)
- 엔티티 집합의 표현
- 릴레이션(relation) : RDMBS에서 표현되는 이차원 테이블 형태의 엔티티 집합
- 컬렉션(collection) : MongoDB(NoSQL DBMS의 일종)에서 저장하는 엔티티 집합의 단위
- 엔티티의 저장
- 레코드 : 데이터베이스에 기록된 각각의 엔티티
- 필드 : 데이터베이스에 저장된 엔티티 속성
- DBMS 별 표현법
- RDBMS
- 개별 레코드 : 테이블 행
- 필드 : 테이블 열
- NoSQL DBMS
- 개별 레코드 : 도큐먼트 단위(json 형태)
- 필드 : json의 키
- 필드의 수 : 차수(degree)
- 하나의 필드에 대한 고유값의 수 : 카디날리티(cardinality)
- RDBMS
스키마(schema)
- 정의 : 데이터베이스에 저장되는 레코드의 구조 및 제약조건을 정의한 것
- 개별 레코드(달고나) ↔ 스키마(달고나의 틀)
- DBMS 별 스키마
- RDBMS : 명확한 스키마가 정의됨
- 레코드를 테이블 내 행으로 저장
- RDBMS는 정해진 스키마에 따라 제약조건(테이블 구조 / 필드의 데이터 타입 등)을 준수

- NoSQL RDBMS : 명확한 스키마가 정의되지 않음
- 스키마-리스(schema-less) 데이터베이스
- 레코드들이 지켜야 할 제약 조건 X → RDBMS보다 자유로운 형태의 레코드 저장

- RDBMS : 명확한 스키마가 정의됨
4. 트랜잭션
- 정의
- 데이터베이스와의 논리적 상호작용 단위
- 데이터베이스가 처리하는 작업의 단위
- 관련 지표 : 초당 트랜잭션 (transaction per second)
- 트랜잭션은 하나의 쿼리만 나타내지는 않음
- ACID
- 앞서 언급하였듯, 데이터베이스는 일반적으로 여러 사용자/프로그램이 동시다발적으로 사용
- 이를 고려할 떄, 안전한 트랜잭션을 보장하기 위해 지켜야 하는 성질이 ACID
- 4가지 ACID 구성요소
- 원자성 (Atomicity)
- 하나의 트랜잭션의 결과가 모두 성공 혹은 모두 실패하는 성질
- 트랜잭션 내의 모든 실행은 하나의 단위로 처리되기 때문
- All or Nothing
- 하나의 트랜잭션의 결과가 모두 성공 혹은 모두 실패하는 성질
- 일관성 (Consistency)
- 데이터베이스가, 트랜잭션 전후로 일관된 상태를 유지하는 성질
- 여기서, 일관된 상태 : 데이터베이스가 지켜야 하는 일련의 규칙

- 여기서, 일관된 상태 : 데이터베이스가 지켜야 하는 일련의 규칙
- 데이터베이스가, 트랜잭션 전후로 일관된 상태를 유지하는 성질
- 격리성 (Isolation)
- 동시에 수행되는 여러 트랜잭션은 서로 간섭하지 않도록 보장하는 성질
- 레이스 컨디션 방지
- ex) A라는 트랜잭션이 모 데이터에 접근하여 조작중일 때, 다른 트랜잭션은 접근 불가
- 동시에 수행되는 여러 트랜잭션은 서로 간섭하지 않도록 보장하는 성질
- 지속성 (Durability)
- 트랜잭션이 성공적으로 완료된 후, 그 결과가 영구적으로 반영되는 성질
- 시스템 장애가 발생하더라도, 그 결과는 손실이 없어야 함
- 이를 보장하기 위하여, 오늘날 DBMS는 대체로 자체 회복 메커니즘 구현
- 트랜잭션이 성공적으로 완료된 후, 그 결과가 영구적으로 반영되는 성질
- 원자성 (Atomicity)
- 앞서 언급하였듯, 데이터베이스는 일반적으로 여러 사용자/프로그램이 동시다발적으로 사용
이렇게 데이터베이스의 기초적인 내용에 대해 살펴보았습니다.
다음 포스트에서는 본격적으로 RDBMS에 대해 알아보겠습니다.
chat_bubble 댓글남기기
댓글남기기