1 개념
1) 정의
→ 데이터를 효율적으로 저장하고 관리하는 시스템
→ 데이터를 체계적으로 저장해 쉽게 검색, 수정, 삭제할 수 있게 해줌
2) DBMS(Database Management System)
① 정의
→ 데이터를 관리하는 소프트웨어
→ 사용자가 데이터를 저장하고 처리할 수 있도록 돕는 도구
② 주요 기능
→ 데이터 저장, 검색, 수정, 삭제
→ 일관성 및 무결성 보장
→ 보안 관리 및 접근 제어
→ 백업과 복구
3) 데이터 조직 구조
① 정의
→ 보통 테이블 형태로 저장
→ 테이블은 행(Row)과 열(Column)으로 구성
행(Row) | 하나의 데이터 단위 |
열(Column) | 데이터 항목 |
2 특징과 원칙
1) 주요 특징
일관성 | 데이터는 항상 정해진 규칙에 맞게 처리 |
정합성(무결성) | 데이터는 정확하고 신뢰 가능해야 함 |
영속성 | 시스템이 종료되어도 데이터는 보존 |
접근성 | 효율적으로 데이터를 검색하고 사용할 수 있어야 함 |
2) ACID 원칙
→ 트랜잭션(데이터 작업 단위)의 안전성을 보장하기 위한 특성
Atomicity (원자성) | 트랜잭션은 전부 실행되거나 전혀 실행되지 않아야 함 |
Consistency (일관성) | 수행 전후 데이터는 항상 유효한 상태여야 함 |
Isolation (격리성) | 트랜잭션은 독립적으로 실행되어야 함 |
Durability (지속성) | 완료된 작업은 영구히 반영됨 |
3 활용 사례
비즈니스 | 고객, 제품, 판매 데이터 관리 |
웹 애플리케이션 | 사용자 정보, 게시글, 댓글 관리 |
금융 | 거래 기록, 계좌 정보 관리 |
의료 | 환자 정보, 진료 기록 관리 |
4 종류
종류 | 형태 | 특징 | 예시 |
관계형 데이터베이스 (RDBMS) |
테이블(행과 열) 구조 | → SQL 사용 → 관계 정의(PK, FK) |
MySQL, PostgreSQL, Oracle, SQL Server |
비관계형 데이터베이스 (NoSQL) |
문서, 키-값, 컬럼 등 다양한 구조 |
→ 유연한 스키마 → 수평 확장에 유리 |
MongoDB, Cassandra, CouchDB, Redis |
그래프 데이터베이스 | 노드(Node)와 간선(Edge) | 복잡한 관계를 효율적으로 표현 | Neo4j, ArangoDB |
키-값 데이터베이스 | 키(Key)와 값(Value)의 쌍 | → 매우 빠른 조회 속도 → 단순 구조 |
Redis, Riak |
컬럼 패밀리 데이터베이스 | 열(Column) 단위 저장 | 대규모 분석에 유리 | Apache Cassandra, HBase |
문서 지향 데이터베이스 | JSON, BSON 형태의 문서 | → 유연한 스키마 → 대규모 데이터 처리 |
MongoDB, CouchDB |
타임 시리즈 데이터베이스 | 시간 기반 데이터 저장 | → 시간 단위 기록 → 빠른 분석 |
InfluxDB, Timescale DB |
5 데이터베이스 기본 개념
1) 데이터베이스 모델
① 정의
→ 데이터 구조를 정의하는 설계 방식
② 종류와 설명
종류 | 설명 |
관계형 모델 | 테이블 기반 |
객체 지향 모델 | 객체와 데이터를 함께 관리 |
문서 지향 모델 | JSON 문서 형태 저장 |
그래프 모델 | 노드와 간선으로 표현 |
2) 스키마(Schema)
① 정의
→ 데이터베이스의 구조를 정의한 설계도
② 종류와 설명
종류 | 설명 |
내부 스키마 | 물리적 저장 방식 |
개념 스키마 | 논리적 데이터 구조 |
외부 스키마 | 사용자 시점의 데이터 구조 |
3) 데이터 타입
① 정의
→ 컬럼에 저장될 데이터 형식을 정의
② 종류와 예시
종류 | 예시 |
숫자형 | INT, FLOAT |
문자형 | CHAR, VARCHAR |
날짜형 | DATE, TIME, DATETIME |
논리형 | TRUE, FALSE |
4) 키(Key)
① 정의
→ 각 데이터를 고유하게 식별하는 필드
② 종류와 설명
종류 | 설명 |
기본 키 (Primary Key) | 유일한 값이며 NULL 불가 |
외래 키 (Foreign Key) | 다른 테이블과 연결 |
후보 키 (Candidate Key) | 기본 키 후보 |
대체 키 (Alternate Key) | 기본 키 외의 고유 키 |
5) 정규화(Normalization)
① 정의
→ 중복을 제거하고 무결성을 높이기 위한 테이블 분해 작업
② 종류와 설명
종류 | 설명 |
1NF | 반복 그룹 제거 |
2NF | 부분 종속성 제거 |
3NF | 이행적 종속성 제거 |
6) 무결성 제약(Integrity Constraints)
종류 | 설명 |
개체 무결성 | 기본 키는 NULL 불가 |
참조 무결성 | 외래 키는 존재하는 값 |
도메인 무결성 | 값은 지정된 데이터 타입과 일치 |
7) 인덱스(Index)
→ 검색 속도를 높이기 위한 데이터 구조
→ 빠른 검색이 가능
→ 삽입/수정/삭제 성능이 저하 가능
8) 뷰(View)
→ 실제 데이터를 저장하지 않고 가상의 테이블로 데이터를 조회
→ 복잡한 쿼리를 단순화
→ 보안 향상 가능
6 SQL (Structured Query Language)
1) 개념
→ 데이터베이스와 상호작용하는 표준 언어
→ 데이터를 삽입, 조회, 수정, 삭제하는 작업에 사용
2) 명령어 종류
종류 | 설명 | 예시 |
DML | 데이터 조작 | INSERT, SELECT, UPDATE, DELETE |
DDL | 데이터 정의 | CREATE, ALTER, DROP |
DCL | 권한 제어 | GRANT, REVOKE |
TCL | 트랜잭션 제어 | COMMIT, ROLLBACK |
3) SELECT 문 기본 사용법
SELECT column1, column2 FROM table_name;
※ 상세한 사용법은 https://m.blog.naver.com/math717/223797267286에 정리해놨으니 참고
7 WHERE 절 & 조건 연산자
종류 | 설명 |
=, !=, <, > | 기본 비교 연산자 |
BETWEEN | 범위 지정 |
IN | 특정 값들 중 포함 여부 |
LIKE | 패턴 매칭 |
IS NULL | NULL 여부 확인 |
8 집계 함수와 GROUP BY
1) 집계 함수
→ COUNT(), SUM(), AVG(), MAX(), MIN()
2) CROUP BY column
→ 특정 기준으로 집계
9 JOIN 종류
종류 | 설명 |
INNER JOIN | 양쪽 모두 일치하는 데이터 |
LEFT JOIN | 왼쪽 테이블을 기준으로 오른쪽은 일치하는 것 |
RIGHT JOIN | 오른쪽 테이블을 기준으로 왼쪽은 일치하는 것 |
FULL JOIN | 양쪽 모두 포함 |
10 LIMIT과 OFFSET
LIMIT | 조회할 최대 행 수 |
OFFSET | 몇 행 건너뛰고 시작할지 지정 |
11 동시성 제어
1) 격리 수준
→ READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE
2) 동시성 제어 방식
종류 | 설명 |
잠금 | 공유/배타적 잠금 |
타임스탬프 | 트랜잭션 순서 기반 충돌 해결 |
낙관적 제어 | 충돌 없다고 가정하고 나중에 검사 |
12 인덱스와 성능 최적화
1) 인덱스 종류
종류 | 설명 |
클러스터드 인덱스 | 실제 데이터가 정렬됨 |
논클러스터드 인덱스 | 별도로 저장 |
유니크 인덱스 | 중복 금지 |
복합 인덱스 | 여러 컬럼 조합 |
2) 쿼리 성능 향상 팁
→ EXPLAIN으로 실행 계획 확인
→ 자주 조회하는 컬럼에 인덱스 추가
→ 조인 시 인덱스 적극 활용
3) 테이블 설계 전략
→ 정규화로 무결성 유지
→ 필요한 경우 비정규화로 성능 향상
→ 캐싱 & 파티셔닝도 고려
13 백업과 보안
1) 백업 전략
종류 | 설명 |
전체 백업 | 모든 데이터를 백업 |
차등 백업 | 전체 이후 변경분만 백업 |
증분 백업 | 마지막 백업 이후 변경분만 백업 |
트랜잭션 로그 백업 | 세밀한 복구 가능 |
2) 보안 요소
종류 | 설명 |
접근 제어 | 사용자 인증과 권한 설정 |
암호화 | 저장 및 전송 시 데이터 보호 |
감사 로그 | 이상 접근 추적 |
sql 인젝션 방지 | Prepared Statement 사용 |
백업 파일 보안 | 암호화 및 접근 제어 |
재해 복구 | 빠른 복원 계획 수립 |
더 상세한 정보를 알고 싶으면 https://m.blog.naver.com/math717/223797267286에 접속
'공통' 카테고리의 다른 글
백엔드 개발자를 위한 필수 라이브러리 정리 - 웹 프레임워크부터 인증까지 (2) | 2025.04.24 |
---|---|
백엔드 개발을 위한 프레임워크와 주요 특징 정리 (1) | 2025.03.26 |
백엔드 개발의 개념과 발전 과정 : 핵심 역할과 목표 (0) | 2025.03.24 |
프론트엔드 라이브러리 개념과 종류 정리 (1) | 2025.03.21 |
주요 프론트엔드 프레임워크 비교 및 특징 (3) | 2025.03.18 |