DB - 기초

이영준·2024년 12월 12일

DB

목록 보기
1/2

데이터베이스의 기초와 심화 과정을 포함한 자세한 설명입니다.

1. 데이터베이스(Database)란?

데이터베이스는 데이터를 체계적으로 저장하고 관리하는 시스템입

1.1 데이터베이스의 필요성

  • 데이터 저장 및 관리: 방대한 데이터를 체계적으로 저장하고 필요 시 쉽게 접근할 수 있음.
  • 데이터 중복 최소화: 동일한 데이터를 여러 곳에 저장하지 않도록 하여 저장 공간을 절약.
  • 데이터 무결성 보장: 데이터의 정확성과 일관성을 유지.
  • 데이터 보안 제공: 데이터 접근 권한을 설정하여 민감한 정보 보호.

2. 데이터베이스 관리 시스템(DBMS)

DBMS(Database Management System)는 데이터베이스를 생성, 관리, 운영하는 소프트웨어입니다. 사용자는 DBMS를 통해 데이터를 정의하고 조작하며, 데이터의 무결성, 보안, 동시성, 복구 등을 관리할 수 있습니다.

2.1 주요 DBMS의 종류

  • 관계형 데이터베이스(RDBMS): 데이터를 테이블 형식으로 저장하며, 관계(Relationship)를 기반으로 관리.
    • 대표 예: MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server.
  • 비관계형 데이터베이스(NoSQL): 비정형 데이터를 저장하며, 유연한 스키마를 제공.
    • 대표 예: MongoDB, Cassandra, Redis.
  • NewSQL: 관계형 데이터베이스의 ACID 특성을 유지하면서 NoSQL 수준의 확장성을 제공.
    • 대표 예: CockroachDB, Google Spanner.

3. 데이터베이스의 주요 개념

3.1 스키마(Schema)

데이터베이스의 구조와 제약 조건을 정의하는 설계도입니다. 데이터베이스의 테이블, 열(Column), 관계 등을 정의합니다.

3.2 테이블(Table)

데이터를 행(Row)과 열(Column)로 구성하여 저장하는 단위입니다.

  • 열(Column): 데이터의 속성을 정의 (예: 이름, 나이).
  • 행(Row): 데이터의 실제 레코드 (예: 한 사람의 정보).

3.3 키(Key)

  • 기본 키(Primary Key): 테이블에서 각 행을 고유하게 식별하는 열.
  • 외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하여 테이블 간 관계를 형성.
  • 복합 키(Composite Key): 둘 이상의 열을 조합하여 기본 키로 사용.

3.4 인덱스(Index)

데이터 검색 속도를 높이기 위해 사용하는 자료 구조입니다. 테이블의 특정 열에 대해 인덱스를 생성하면 데이터 조회가 빠르게 이루어집니다.


4. 관계형 데이터베이스 (Relational Database)

4.1 관계형 데이터베이스의 특징

  • 데이터를 테이블 형식으로 저장.
  • 테이블 간 관계를 정의하여 중복 데이터를 줄이고 데이터 무결성을 보장.
  • SQL(Structured Query Language)을 사용하여 데이터 관리.

4.2 SQL의 주요 명령어

  • DDL (Data Definition Language): 데이터베이스와 테이블의 구조를 정의.
    • CREATE, ALTER, DROP 등.
  • DML (Data Manipulation Language): 데이터를 조작.
    • SELECT, INSERT, UPDATE, DELETE 등.
  • DCL (Data Control Language): 데이터 접근 권한을 제어.
    • GRANT, REVOKE.
  • TCL (Transaction Control Language): 트랜잭션을 제어.
    • COMMIT, ROLLBACK, SAVEPOINT.

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

5.1 NoSQL의 특징

  • 고정된 스키마가 없고, 데이터 구조에 유연함.
  • 대규모 데이터를 처리하기 위한 수평적 확장이 용이.
  • 다양한 데이터 저장 방식(문서형, 키-값, 그래프 등)을 제공.

5.2 NoSQL의 주요 유형

  • 문서형(Document): 데이터를 JSON, BSON과 같은 문서 형식으로 저장.
    • 예: MongoDB, CouchDB.
  • 키-값(Key-Value): 키와 값 쌍으로 데이터를 저장.
    • 예: Redis, DynamoDB.
  • 열 기반(Column Family): 데이터를 열 단위로 저장하여 대규모 데이터 분석에 적합.
    • 예: Cassandra, HBase.
  • 그래프(Graph): 데이터 간의 관계를 그래프로 표현.
    • 예: Neo4j.

6. 트랜잭션(Transaction)과 ACID

6.1 트랜잭션

트랜잭션은 데이터베이스에서 논리적으로 하나의 작업 단위입니다. 트랜잭션은 모두 성공하거나 모두 실패해야 합니다.

6.2 ACID 특성

  • Atomicity (원자성): 트랜잭션의 모든 작업이 완벽히 수행되거나 전혀 수행되지 않아야 함.
  • Consistency (일관성): 트랜잭션 수행 후 데이터가 일관된 상태를 유지해야 함.
  • Isolation (고립성): 동시에 실행되는 트랜잭션 간 간섭이 없어야 함.
  • Durability (지속성): 트랜잭션 완료 후 데이터가 영구적으로 저장되어야 함.

7. 데이터베이스 설계 과정

7.1 요구사항 분석

데이터베이스가 해결해야 할 문제와 요구사항을 분석.

7.2 개념적 설계

ERD(Entity-Relationship Diagram)를 사용하여 데이터 모델 설계.

7.3 논리적 설계

데이터베이스 스키마를 정의하고, 테이블 및 관계를 설계.

7.4 물리적 설계

데이터베이스의 물리적 구조를 설계(인덱스, 파티셔닝, 저장소 설정 등).

7.5 최적화 및 유지보수

데이터베이스 성능을 분석하고, 필요 시 튜닝.


8. 데이터베이스의 응용 분야

  • 웹 애플리케이션: 사용자 인증, 제품 정보 저장 등.
  • 빅데이터 분석: 대규모 데이터 저장 및 처리.
  • IoT: 센서 데이터 실시간 저장.
  • AI/ML: 학습 데이터 관리.
profile
개인공부용(업데이트 중단)

0개의 댓글