Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- Tool Calling
- OOP
- 매직메서드
- PHP객체지향
- docker
- 데이터베이스
- mcp client
- 객체지향
- MySQL
- 데코레이터패턴
- 어댑터패턴
- SQL
- linux 권한
- 라라벨
- mcp server
- 디자인패턴
- 객체복제
- ai agent
- 인덱스
- LLM
- PHP
- docker network
- MCP
- ai 에이전트
- SQL문법
- 소프트웨어설계
- SQL기초
- dhgrp
- Laravel
- Agent Loop
Archives
- Today
- Total
개발블로그
[데이터베이스와 DBMS 기초] 데이터베이스와 DBMS 본문
Contents
접기
데이터란?
현실에서 발생한 사실이나 값을 기록한 것
서비에서 관리하는 값
ex) 쇼핑몰에는 다음과 같은 데이터가 존재
회원 이름: 아무개
회원 이메일: user@example.com
상품명: 무선 키보드
상품 가격: 50,000원
주문 수량: 2개
주문 일시: 2026-07-27 13:30:00
데이터베이스란?
개념
여러 데이터를 일정한 구조에 따라 저장하고, 필요할 때 조회하거나 변경할 수 있도록 구성한 데이터의 집합
서로 관련된 데이터를 일정한 기준에 따라 정리하고 관리할 수 있어야 함.
=> 데이터를 단순히 보관하는 것을 넘어, 데이터를 체계적으로 검색하고 변경할 수 있도록 구성
특징
| 특징 | 설명 |
| 실시간 접근성 | 비정형인 조회에 대하여 실시간 처리에 의한 응답이 가능해야 함 |
| 지속적인 변화 | 새로운 데이터의 삽입, 삭제, 갱신으로부터 항상 최신의 데이터를 유지해야 함 |
| 동시 공용 | 다수의 사용자가 동시에 같은 데이터를 이용할 수 있어야 함 |
| 내용에 의한 참조 | 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 찾는다 |
DBMS 란
(Database Management System)
개념
데이터베이스를 생성하고 저장된 데이터를 조회 ·변경 ·관리할 수 있도록 해주는 소프트웨어
애플리케이션
↓ 데이터 작업 요청
DBMS
↓ 데이터 읽기·쓰기
데이터베이스
주요 역할
| 역할 | 설명 |
| 데이터 구조를 정의 | 테이블과 컬럼 구조를 정의할 수 있음 |
| 데이터를 저장하고 조회 | 애플리케이션이 전달한 SQL을 해석하여 데이터를 저장하거나 조회 (개발자는 실제 데이터 파일의 위치나 저장 형식을 직접 처리하지 않아도 됨) |
| 데이터를 수정하고 삭제 | 조건에 맞는 데이터를 찾아 변경하고, 변경된 내용을 실제 저장 공간에 반영 |
| 데이터의 정확성을 유지 | 잘못된 데이터가 저장되지 않도록 규칙을 설정할 수 있음 ex) email VARCHAR(255) NOT NULL UNIQUE |
| 여러 사용자의 동시 접근을 처리 | 트랜잭션과 락 등의 기능을 제공하여 동시에 발생하는 데이터 변경을 안전하게 처리할 수 있도록 도움 |
| 데이터 접근 권한을 관리 | 사용자별로 권한을 제한할 수 있음 |
| 데이터의 백업과 복구를 지원 | 지원하는 복구 기능 - 데이터베이스 백업 - 변경 로그 기록 - 장애 발생 전 시점으로 복구 - 복제 서버를 이용한 데이터 보관 - 트랜잭션 실패 시 이전 상태로 되돌리기 |
DBMS가 SQL을 처리하는 과정
- 애플리케이션이 SQL 요청
- DBMS가 SQL 문법 확인
- 실행 방법 결정
- 필요한 데이터 읽기 또는 변경
- 처리 결과 반환
파일 시스템 VS DBMS
파일 자체를 저장하고 전달하는 것이 목적
→ 파일 시스템 또는 객체 스토리지
파일 내부의 값을 검색·수정하거나
다른 데이터와 관계를 관리하는 것이 목적
→ DBMS
파일 원본과 구조화된 관리 정보가 모두 필요
→ 파일 저장소와 DBMS를 함께 사용
| 판단 | 기준파일 | 시스템DBMS |
| 저장 단위 | 파일 전체 | 행과 컬럼 |
| 주요 작업 | 파일 열기·다운로드·전달 | 조건 검색·추가·수정·삭제 |
| 내부 데이터 검색 | 거의 하지 않음 | 자주 필요함 |
| 데이터 관계 | 단순하거나 없음 | 여러 데이터가 연결됨 |
| 동시 수정 | 거의 없음 | 여러 요청이 동시에 수정 |
| 중복 방지 | 애플리케이션에서 처리 | 제약조건으로 처리 가능 |
| 트랜잭션 | 제공하지 않음 | 제공함 |
| 대표 데이터 | 이미지·영상·문서 | 회원·주문·결제·재고 |
대표적인 DBMS
데이터를 표현하고 저장하는 방식에 따라 나뉨
실제 서비스에서는 하나의 DBMS만 사용하지 않을 수 있도 있음
| 종류 | 개념 | 대표적 | 적합한 경우 |
| 관계형 DBMS | 데이터를 행과 컴럼으로 구성된 테이블에 저장하고, 테이블 사이의 관계를 이용해 관리 단점) - 덜 유연함 → 데이터 스키마를 사전에 계획하고 알려야 함 |
- MySQL - MariaDB - PostgreSQL - Oracle Database - Microsoft SQL Server - SQLite |
- 데이터 구조가 명확함 - 데이터 간 관계가 중요 - 중복된 잘못된 데이트를 제한해야 한다 - 여러 작업의 일관성이 중요 - 다양한 조건과 JOIN으로 조회 |
| 문서형 DBMS | 데이터를 테이블의 행이 아니라 문서 형태로 저장 - 스키마, 관계 등이 없음 - 레코드 = 문서 => JSON과 비슷한 구조를 가짐 - 테이블을 나누어 담지 않고 관련 데이터를 동일한 컬렉션에 넣는다 장점) - 유연함 → 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능 - 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨 → 데이터 읽어오는 속도 빨라짐 - 수직 및 수평 확장이 가능해서 애플리케이션이 발생하는 모든 읽기/쓰기 요청 처리 가능 단점) - 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다 - 데이터 중복을 계속 업데이트 해야 함 |
- MongoDB | - 데이터 구조가 자주 변경됨 - 데이터마다 포함하는 필드가 조금씩 다름 |
| 키-값 DBMS | 데이터를 주로 메모리에 저장 - 주요 사용 사례 : 캐시, 세션, 인증 코드, 요청 제한, 실시간 카운터, 인기 검색어, 순위표, 메세지 큐 보조 - MySQL을 완전히 대체하기보다 함께 사용 |
- Redis | |
| 그래프 DBMS | 데이터를 노드와 관계로 표현 ex) 사용자 A ── 팔로우 ──> 사용자 B 사용자 B ── 좋아요 ──> 게시글 C 사용자 A ── 친구 ───> 사용자 D |
- Neo4j | - 관계를 여러 단계로 탐색 (연결 관계를 깊게 탐색하는 작업) |
| 컬럼형 DBMS | 대량 데이터를 빠르게 집계하고 분석하기 위함 ex) 수억 건에서 날짜별 매출 합계 계산 |
- ClickHouse |
'STUDY > SQL' 카테고리의 다른 글
| [SQL] SQL 개념 (0) | 2026.07.29 |
|---|---|
| [데이터베이스와 DBMS 기초] 관계형 데이터베이스의 기본 구조 (0) | 2026.07.28 |
| [인덱스] MySQL 쿼리에서 인덱스가 활용되는 원리: WHERE, ORDER BY, GROUP BY, JOIN (0) | 2026.07.27 |
| [인덱스] MySQL 인덱스의 분류 (0) | 2026.07.27 |
| [인덱스] MySQL B+Tree 인덱스 구조와 데이터 검색 원리 (0) | 2026.07.25 |