Part 13. 데이터베이스(DB)란 무엇인가?
웹 서비스는 데이터를 저장하기 위해 데이터베이스가 필요하다. 이번 글에서는 데이터베이스가 무엇인지, MySQL·PostgreSQL·SQLite의 차이점은 무엇인지, 그리고 zenoBlog에서 왜 MySQL을 사용하는지 알아본다.
Part 13. 데이터베이스(DB)란 무엇인가?
1. 이번 Part 목표
지금까지는 Docker 컨테이너를 실행하고 Docker Compose를 사용해 여러 컨테이너를 관리해보았다.
하지만 아직 실제 데이터를 저장하는 기능은 없다.
이번 Part에서는 데이터베이스(DB)가 무엇인지, 그리고 zenoBlog에서 사용하는 MySQL이 어떤 역할을 하는지 알아본다.
2. 데이터베이스(DB)란?
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
데이터베이스는 데이터를 저장하는 공간이다.
웹사이트를 만들면 다양한 데이터를 저장해야 한다.
회원 정보
게시글
댓글
카테고리
태그
이런 데이터는 서버가 꺼졌다 켜져도 유지되어야 한다.
그래서 데이터베이스를 사용한다.
3. 파일로 저장하면 안 될까?
텍스트 파일에 저장할 수도 있다.
하지만 데이터가 많아질수록 관리가 어려워진다.
검색
수정
삭제
정렬
관계 관리
같은 작업이 복잡해진다.
그래서 데이터베이스 프로그램을 사용한다.
4. MySQL, PostgreSQL, SQLite란?
모두 데이터베이스 프로그램이다.
데이터를 저장하는 역할은 같지만 특징이 다르다.
5. SQLite
SQLite는 파일 하나로 동작하는 데이터베이스다.
blog.db
파일 하나 안에 모든 데이터가 저장된다.
설치가 필요 없고 매우 가볍다.
주로 연습용 프로젝트나 간단한 앱에서 사용한다.
6. MySQL
MySQL은 가장 많이 사용되는 데이터베이스 중 하나다.
설치 후 서버처럼 실행된다.
Laravel과 궁합이 좋고 자료도 많다.
현재 zenoBlog도 MySQL을 사용한다.
7. PostgreSQL
PostgreSQL도 매우 강력한 데이터베이스다.
복잡한 데이터 처리와 대규모 서비스에서 많이 사용된다.
기능이 많고 강력하지만 초보자 입장에서는 MySQL이 조금 더 접근하기 쉽다.
8. zenoBlog는 무엇을 사용할까?
현재 zenoBlog는 MySQL 기반이다.
DB_CONNECTION=mysql
DB_PORT=3306
따라서 앞으로 Docker 환경도 MySQL 기준으로 구성하게 된다.
9. Laravel과 MySQL 관계
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
톨루나 팝업패널리워드 회원가입
Laravel은 웹 프레임워크다.
데이터를 저장하려면 데이터베이스가 필요하다.
Laravel
↓
MySQL
↓
데이터 저장
Laravel은 MySQL에 데이터를 요청하고 저장한다.
10. 테이블(Table)이란?
데이터베이스 안에는 테이블이라는 저장 공간이 존재한다.
테이블은 엑셀 표와 비슷하다.
예를 들어 users 테이블은 다음과 같은 형태를 가진다.
id | name | email
1 | zeno | test@test.com
2 | kim | kim@test.com
PostgreSQL이나 MySQL 모두 이런 테이블을 사용한다.
11. zenoBlog에는 어떤 테이블이 있을까?
users
posts
categories
tags
post_tag
sessions
cache
각 테이블은 서로 다른 데이터를 저장한다.
12. 세션(Session)이란?
세션은 로그인 상태를 저장하는 공간이다.
예를 들어 로그인에 성공하면 다음과 같은 흐름이 된다.
로그인 성공
↓
세션 저장
↓
다음 요청
↓
로그인 유지
현재 zenoBlog는 database 세션 드라이버를 사용한다.
즉 세션 정보가 데이터베이스에 저장된다.
13. 캐시(Cache)란?
캐시는 자주 사용하는 데이터를 잠시 저장하는 공간이다.
속도를 높이기 위해 사용한다.
게시글 조회
↓
캐시에 저장
↓
다음 요청
↓
캐시 사용
현재 zenoBlog는 database 캐시 드라이버를 사용한다.
즉 캐시 정보도 데이터베이스에 저장된다.
14. MySQL 기본 포트
MySQL은 기본적으로 3306 포트를 사용한다.
3306
↓
MySQL 기본 포트
Laravel도 보통 이 포트로 접속한다.
15. Part 13 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
DB = 데이터 저장소
MySQL = zenoBlog가 사용하는 DB
SQLite = 파일형 DB
PostgreSQL = 고급 기능이 많은 DB
Table = 데이터를 저장하는 표
Session = 로그인 상태 저장
Cache = 속도 향상을 위한 저장소
다음 Part에서는 Docker Compose로 MySQL 컨테이너를 직접 실행해본다.
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD









