복습 노트

데이터베이스 1

에이블러 2025. 12. 29. 01:17

< 데이터베이스 기초 이론 및 개념 >

데이터베이스(Database)

-      체계적으로 구성되고 저장된 관련 데이터의 모음.

-      정보의 중복을 최소화하고 효율적인 검색과 갱신이 가능하도록 설계된 데이터 저장소

-      데이터베이스를 도서관에 비유하자면

n  테이블 = 도서관의 서가(소설, 과학, 역상 등으로 구분)

n  레코드 = 개별 책 한 권

n  인덱스 = 도서 검색 시스템

n  SQL = 사서에게 “OO책 어디 있나요?” 물어보는 것    # Structured Query Language

DBMS(Database Management System)

-      데이터베이스를 생성, 관리, 운영하는 소프트웨어 시스템.

-      사용자와 데이터베이스 사이의 중간다리 역할.

데이터베이스 시스템

-      데이터베이스, DBMS, 관련 애플리케이션을 모두 포함하는 통합 환경

 

데이터베이스 특징

-      실시간으로 저장 가능

n  속도가 중요하다면 메모리DB(Redis ), 전통적인 DB라면 MySQL, 온디바이스에 보관한다면 로컬DB

-      트랜잭션(Transaction)

n  한 묶음의 작업이 전부 성공하면 commit, 하나라도 끊기면 롤백

 

데이터베이스의 필요성 및 중요성

1.     데이터 기반 의사결정: 기업이 정확하고 신뢰할 수 있는 데이터를 바탕으로 의사결정을 내릴 수 있게 함.

2.     업무 효율성 향상: 잘 설계된 데이터베이스는 정보의 중복을 줄이고 데이터 접근성을 높여 업무 프로세스의 효율성을 크게 향상시킴.

3.     IT 시스템의 신뢰성: 데이터 무결성, 일관성, 보안을 보장하여 전체 IT 시스템의 안정성과 신뢰성을 높임.                # 데이터 이중화 → 화재, 정전 등 예방

 

데이터베이스의 진화

-      1970년대: RDBMS의 탄생. IBMEdagar F. Codd가 관계형 모델 제안.

-      1990년대: 웹의 등장. 인터넷 폭발적 성장. RDBMS가 웹 서비스의 표준 데이터베이스로 자리잡음.

-      2000년대 중반: NoSQL의 탄생. 빅데이터 시대 도래

 

관계형 데이터베이스(RDBMS)

→ 데이터를 테이블() 형태로 구조화하고, 테이블 간의 관계를 정의하여 데이터를 관리하는 시스템. SQL을 통해 데이터를 조작하며, 데이터 일관성과 무결성을 보장.

-      기본 구조 요소

n  테이블(Table): 데이터를 저장하는 기본 단위

n  (Row): 각각의 데이터 레코드/튜플

n  (Column): 데이터 속성/필드

n  (Key): 데이터 식별과 테이블 간 관계 설정을 위한 특수 필드

-      주요 특성

n  정규화: 데이터 중복을 최소화하는 설계 원칙

n  트랜잭션 지원: ACID 속성을 통한 안정적인 데이터 처리

n  참조 무결성: 외래키를 사용하여 테이블 간 관계의 일관성 유지

n  스키마 강제: 데이터 구조와 형식의 일관성 보장

-      주요 활용 사례: 인사 관리 및 급여 시스템, 전자상거래 플랫폼, 금융 거래 및 은행 시스템, 기업 ERP 시스템 및 업무 애플리케이션

 

 

비관계형 데이터베이스(NoSQL)

Not Only SQL의 약자로, RDBMS의 테이블 구조와 SQL 사용을 탈피한 데이터베이스 시스템. 유연한 스키마와 수평적 확장성이 특징이며, 대용량 데이터와 다양한 데이터 형식 처리 최적화.

-      주요 특징

n  스키마 유연성: 구조 변경 없이 새로운 필드 추가 가능

n  분산 아키텍처: 수평적 확장성으로 대용량 처리 용이

n  다양한 데이터 모델: 문서형, -, 컬럼형, 그래프형 등

n  CAP 이론: 일관성, 가용성, 분할내성 중 두 가지 특성 보장

CAP이론: NoSQL의 핵심

→ 분산 시스템에서는 3가지 중 2가지만 동시에 만족 가능

1.     일관성(Consistency): 모든 노드가 동일한 시점에 동일한 데이터를 보여야 함

2.     가용성(Availability): 모든 요청에 대해 항상 응답을 받을 수 있어야 함.

3.     분할 내성(Partition Tolerance): 어느 한 지역에 네트워크 장애가 발생해도 시스템이 계속 작동해야 함.

NoSQL은 이 중 2가지를 선택하여 특정 용도에 최적화

1.     CP: 일관성 + 분할내성                    # e. 금융 거래, 재고 관리

A.     MongoDB: Primary 노드가 죽으면서 일시적으로 쓰기 불가. 하지만 데이터 정확성 보장.

B.     HBase : Region 서버 장애 시 해당 영역 일시 중단. 일관성 우선.

2.     AP: 가용성 + 분할내성                    # ex. 소셜미디어, 장바구니

A.     Cassandra : 노드 장애 시에도 계속 서비스 잠시 후 일관성 확보(최종 일관성)

# 즉시 동시에는 아니더라도 결국에는 일관성을 가짐

B.     DynamoDB : 항상 응답 가능. 일시적으로 다른 데이터를 볼 수 있음.

 

대표적인 NoSQL Document DB: MongoDB # ex. 넷플릭스, 이베이, 뉴욕타임스, 카카오톡

-      핵심 특징

n  JSON 형태로 데이터 저장

n  스키마 유연성(Schema-less)

n  수평 확장 용이(=샤딩)

n  강력한 쿼리 기능

 

트랜잭션과 ACID 원칙

트랜잭션(Transaction): 한 묶음의 작업이 전부 성공하거나, 전부 실패하는 작업이 단위

→ 데이터베이스의 상태를 변화시키는 논리적 작업 단위로, 한 번에 모두 수행되어야 하는 원자적 연산들의 집합.      ex. 계좌이체는 출금과 입금이 모두 성공해야 완료되는 트랜잭션.

-      처리 단계

1.     트랜잭션 시작

2.     데이터 조작

3.     데이터 검증

4.     임시 완료

5.     커밋(Commit) or 롤백(Rollback)

 

ACID데이터베이스의 4대 원칙             # 안전한 트랜잭션의 4가지 약속

1.     Atomicity (원자성): 트랜잭션의 모든 작업은 완전히 실행되거나, 전혀 실행되지 않거나

2.     Consistency (일관성): 트랜잭션의 전후로 데이터베이스의 모든 규칙이 유지되어야 함.

3.     Isolation (격리성): 여러 트랜잭션이 동시에 실행되어도 서로 간섭하지 않음.

4.     Durability (지속성): 트랜잭션이 성공적으로 완료(커밋)되면 영구적으로 저장.

 

완벽한 ACID100% 안전한 대신 락 대기 시간이 증가하여 느린 문제가 존재.

따라서

강한 ACID 필요 → PostgreSQL, MySQL

대용량+빠른속도 → MongoDB

최고 성능(ACID 최소) Redis

 

DBMS 아키텍쳐

싱글티어 아키텍처: 모든 구성 요소가 단일 시스템에 존재. 개인용 DB or 소규모 애플리케이션

클라이언트-서버 아키텍처: 클라이언트는 UI와 비즈니스 로직 담당. 서버는 데이터 관리와 처리 담당.

멀티티어/3계층 아키텍처: 역할별 분리로 유지보수성 향상. 각 계층별 독립적 확장 가능. 엔터프라이즈급 애플리케이션 적합.

-      계층별 주요 기능            # 단일(싱글) 아키텍처 기준

1.     외부 인터페이스 계층: 사용자와 응용 프로그램이 데이터베이스와 상호작용하는 진입점. SQL처리, 연결 관리, 질의 제출 처리.

2.     중간 처리 계층: 쿼리 최적화, 트랜잭션 관리(ACID), 데이터 무결성 보장, 동시성 제어, 로깅과 복구 처리.

3.     저장 관리 계층: 물리적 데이터 저장 및 접근 관리. 파일 시스템, 디스크 I/O, 인덱스 관리, 버퍼링 담당.

-      핵심 구성요소 기능

n  쿼리 옵티마이저: 최적의 실행 계획 수립, 비용 기반 최적화 수행

n  트랜잭션 관리자: ACID 속성 보장, 원자성과 일관성 유지.

n  버퍼/메모리 관리: 데이터 캐싱, 메모리-디스크 간 효율적 데이터 이동

n  로그 관리자: 장애 복수, 트랜잭션 롤백을 위한 변경 기록

 

-      아키텍처 비교 및 선택 기준

1.     성능 및 확장성: 멀티티어는 각 계층별 확장이 가능. 싱글티어는 확장성이 제한.

2.     보안: 멀티티어는 계층별 보안 정책 정욕이 가능 → 더 높은 보안성

3.     구현 복잡도: 싱클티어는 구현 간단. 멀티티어는 더 복잡

4.     마이크로서비스 연계: 3계층은 마이크로서비스와 결합하여 현대적 분산 시스템을 구축하는 기반이 됨.

5.     클라우드 환경: 멀티티어는 컨테이너화와 클라우드 환경에 적합한 구조로 각광받음

6.     IT 컨설턴트 관점: 비즈니스 요구사항과 규모에 따라 적절한 아키텍처 패턴 선정이 중요

 

 

< 데이터베이스 운영 >

성능 최적화

1.    쿼리 최적화

-      SQL 쿼리를 효율적으로 작성하고 실행 계획을 개선하여 성능을 향상하는 기법

-      요즘엔 LLM 성능이 워낙 좋고 알아서 잘해서 쿼리 최적화는 크게 중요치 않음

2.    데이터베이스 구조 최적화

-      정규화/반정규화: 데이터 중복을 최소화하거나 성능 향상을 위해 데이터를 통합 또는 분리함

-      파티셔닝: 큰 테이블을 작은 파티션으로 분할하여 검색 및 관리 성능을 향상시킴

-      데이터 타입 최적화: 데이터 타입 크기를 최소화하여 저장 공간을 절약하고 검색 성능을 향상시킴

-      테이블 설계 최적화: 테이블 구조를 효율적으로 설계하여 검색 및 삽입/수정/삭제 성능을 향상시킴

3.    시스템 환경 최적화

-      하드웨어 성능 향상: CPU, 메모리, 디스크 등의 성능을 향상시켜 데이터베이스 처리 능력을 향상시킴

-      운영체제 최저화: 운영체제 설정을 최적화하여 데이터베이스 시스템의 자원 활용 효율성을 높임

-      데이터베이스 설정 최적화: 데이터베이스 시스템의 설정 값을 최적화하여 성능을 향상시킴

-      네트워크 최적화: 데이터베이스 서버와 클라이언트 간의 네트워크 성능을 향상시켜 데이터 전송 속도를 높임

4.    데이터베이스 관리 및 유지보수

-      정기적인 백업 및 복구: 데이터 손실에 대비하여 정기적으로 데이터를 백업하고 복구 시스템을 구축함

-      통계 정보 관리: 데이터베이스 통계 정보를 주기적으로 갱신하여 쿼리 최적화에 활용함

-      모니터링 및 진단: 데이터베이스 시스템의 성능을 지속적으로 모니터링하고 문제 발생 시 신속하게 진단 및 해결함

-      보안 관리: 데이터베이스 접근 권한을 관리하고 보안 취약점을 제거하여 데이터 보안을 강화함

5.    기타 방법

-      분산 데이터베이스: 여러 대의 서버에 데이터를 분산하여 처리 능력을 향상시킴이중화(Replication)

-      인메모리 데이터베이스: 데이터를 메모리에 저장하여 검색 속도를 극대화함

-      로드 밸런싱: 데이터베이스 서버에 부하를 분산하여 성능을 향상시킴

동시성 제어

1.     여러 사용자가 동시에 데이터베이스에 접근할 때 데이터의 일관성을 유지하는 기법

2.     동시성과 일관성 관계

-      동시성은 여러 트랜잭션이 동시에 데이터베이스에 접근하여 데이터를 읽거나 수정하는 것을 의미

-      일관성은 데이터베이스의 데이터가 항상 정확하고 유효한 상태를 유지하는 것을 의미

3.     주요목적

- 데이터 일관성 유지

- 교착 상태(Deadlock) 방지

- 성능 저하 최소화

데이터 무결성(Data Integrity)

1.     데이터가 정확하고, 일관성이 있으며, 무결한 상태를 유지하는 것을 보장하는 개념

2.     데이터 무결성이 중요한 이유

- 데이터 오류 방지 (잘못된 값 저장 방지)

- 시스템 신뢰성 향상

- 데이터 일관성 유지

 

데이터베이스 보안

1.     데이터를 보호하고, 불법적인 접근을 차단, 데이터 무결성을 유지하는 과정

2.     주요 목표

-      기밀성(Confidentiality): 승인된 사용자만 데이터에 접근 가능해야 함

-      무결성(Integrity): 데이터가 훼손되거나 변경되지 않도록 보호해야 함

-      가용성(Availability): 필요한 시점에 데이터에 접근할 수 있어야 함

3.     보안 강화 방법

-      사용자 권한 관리 (Access Control)

n  최소 권한 원칙(Principle of Least Privilege, PoLP) 적용

n  GRANT, REVOKE 명령어를 사용하여 권한 제어

-      데이터 암호화 (Encryption)

n  전송 중 암호화: TLS/SSL을 사용하여 네트워크 상에서 데이터 보호

n  저장 시 암호화: AES, SHA 등 암호화 알고리즘 사용

-      감사 로깅 (Audit Logging)

n  모든 데이터베이스 접근 및 변경 사항을 기록하여 보안 이벤트 추적

n  이상 접근 탐지 및 대응 가능

'복습 노트' 카테고리의 다른 글

클라우드 이해 1  (0) 2026.01.04
데이터베이스 2  (0) 2025.12.29
IT 인프라 2  (0) 2025.12.17
IT 인프라 1  (1) 2025.12.15
AI에이전트 구축  (0) 2025.12.03