🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁
TIL 회고 - [11]일차
🚀11일차까지 진행하다보니 벌써 2주 정도 지났구나 싶었습니다. 그와 동시에 10일차까지 회고를 진행하면서 내용들을 조금은 장황하게 늘어쓰거나 부수적인 내용들을 더 적지 않았나 느끼기도했습니다.
회고에서 조금 더 덜어내는 연습을 해야겠다고 생각이 들었습니다.11일차 수업에서는 저번 주의 내용을 조금 복습하거나 추가하고, 데이터베이스의 개념과 도커 설치 등을 진행하였습니다!
데이터베이스
- 실시간 접근성 - 사용자 요구 즉시 처리 가능
- 계속적인 변화 - 정확한 값 유지하기위한 삽입 / 삭제 / 수정 등으로 데이터 지속적 갱신 가능
- 동시 공유성 - 여러사람이 동일 데이터에 접근 가능
- 내용 참조 - 저장한 데이터의 위치,주소가 아닌 데이터내용, 값에 따라 참조 가능
프로그램이 동작 중에 발생된 오류로 종료되어도 “데이터를 유지해야하는 필요성" ➡️ 데이터베이스 사용
❓데이터베이스(DB)와 데이터베이스 관리시스템(DBMS) 차이
- 데이터베이스는 여러 사람이 동시에 사용할 수 있는 구조화된 데이터의 집합
- 데이터베이스 관리 시스템은 사용자가 DBMS를 통하여 데이터를 입력/수정/삭제/조회 가능
데이터베이스 관리 시스템 DBMS
- 데이터베이스를 관리하는 소프트웨어
- 여러 응용소프트웨어 / 시스템이 “동시에 DB에 접근하여 사용할 수 있게함”
- ex. Oracle, SQL Server, MySQL, DB2 등의 상용/공개 DBMS가 있음
데이터베이스 관리 시스템 DBMS의 필수 3기능
- 정의 기능 : 데이터베이스의 논리적 / 물리적 구조를 정의
- 조작 기능 : 데이터를 검색 / 삭제 / 갱신 / 삽입 / 삭제
- 제어 기능 : 데이터베이스의 내용 “정확성과 안전성”을 유지하도록 제어
관계형 데이터베이스 Relational Database
- 키와 값들의 간단한 관계를 테이블화시킨 간단한 개념의 데이터베이스
- 일련의 정형화된 테이블로 구성된 데이터들의 집합
- 각 테이블은 여러 개의 컬럼(키)가 포함
- SQL이라는 표준 질의어로 데이터를 조작/조회
❓관계형 DB를 이용하는 이유
많은데이터들을 효율적으로 저장, 관리하기 위함
이러한 관리를 잘 해주는 시스템이 관계형 데이터베이스 관리 시스템 RDBMS
ex. MySQL
도커 Docker
- 도커는 본인의 컴퓨터가 서버가 될 수도 있지만 조금 더 안정적인 환경에서 서버를 돌리기 위해
기존 운영체제가 아닌 가상의 환경을 제공 - 서버가 한 개가 아닌 여러 개가 동작하는 것을 도와줌
- 일종의 가상환경들을 담은 컨테이너
- VMware나 VirtualBox보다는 Docker가 훨씬 빠르고 가벼운 방식으로 사용할 수 있음
- 장점 : 이미지를 만들어낼 수 있고 그 이미지를 나중에 다른 곳에 그대로 전달 가능
가상환경의 예
- 컴퓨터는 Mac 운영체제인데 윈도우 운영체제를 설치해서 사용하는 경우
- 파이썬의 경우
버전 별 기능을 사용해야하는 이유로 다양한 버전이 중복되어 설치되어있을때
➡️ 가상환경을 만들어서 VM에서 사용
도커 설치
- '도커'라는 도구를 설치하는 것
→ 그 도구인 '도커' 위에 MySQL을 설치할 것 - 도커가 설치된 MySQL과 컴퓨터에 설치된 MySQL은 별개로 동작
→ 포트번호만 달리하면됨
▶️실습 - docker-compose.yml 작성
version: "2"
services:
vacation-db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: "root1234"
MYSQL_DATABASE: "example_db"
MYSQL_USER: "test1234"
MYSQL_PASSWORD: "1234"
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- ./database/init/:/docker-entrypoint-initdb.d/
- ./database/datadir/:/var/lib/mysql
platform: linux/x86_64
ports:
- 3306:3306
- 이 docker-compose.yml 이라는 파일을 이용해서 mysql 설치 가능
- Redis, jenkins는 mysql의 이러한 yml 형식과는 또 다르다.
- 데이터베이스는 대소문자를 구분하지않는다.
따라서 exampleDB 보다는 example_db 가 나을 수도 있다. - MySQL은 유저명과 데이터베이스 명이 다르다.
- MYSQL_USER, MYSQL_PASSWORD :
데이터베이스를 만들때부터 유저를 만들겠다고 설정 - ports :
하나의 컴퓨터 안에 데이터베이스 서버, 웹 서버, 다른 서버 등 방 여러개를 가질 수 있다.
이때 방 번호가 포트
- 하나의 방에는 여러개가 아닌 하나만 할당
- MySQL은 기본적으로 포트값을 3306을 사용
→ 이미 3306을 누군가 쓰고 있으면 충돌이 일어날 수 있으므로 3307 등의 다른 값을 지정 가능 - character-set-server=utf8mb4 : 이모지까지 사용가능한 문자셋
도커 실행
docker-compose up -d
- -d : 백그라운드로 실행
docker ps
- process의 명령어로 "실행되는 이미지 살펴보기"
- 도커가 어떻게 작동하고 있는지 알려줌
docker exec -it 컨테이너ID값(모두다름) 실행할프로그램
docker exec -it id값 /bin/bash
- 실행되는 이미지들은 “리눅스 위에서 실행” (일종의 서버가 실행되고 있음)
- 해당 서버에 접속
- /bin/bash에서 bash가 없는 경우 /bin/sh 를 사용 (실행할 프로그램)
▶️유저계정으로 데이터베이스 접속
mysql -u유저이름 -p비밀번호
- mysql을 유저계정으로 접속하기 (공백없이 입력)
- -u : 유저 이름 입력
- -p : 비밀번호 입력
만약 -p만 입력했을때는
Enter password : 입력창이 나옴
use exampleDB
- "입력한 DB를 사용하겠다"
- 여기서 use mysql은 불가능한 명령어 (관리자가 관리하고있으므로 접속이 불가능)
show tables;
- 데이터베이스의 테이블을 출력 (초기에는 Empty set)
exit
- MySQL빠져나가기
▶️관리자계정 (root) 으로 데이터베이스 접속
mysql -uroot -proot1234
- mysql을 root계정으로 접속 (공백없이 입력)
- 관리자의 기능을 사용가능
use mysql
- mysql을 사용하겠다는 접속 의미
show tables;
- MySQL의 DBMS가 관리하는 테이블이 모두 출력
👀커맨드 의미
- bash-5.1# 입력창
= 도커 - mysql 입력창
= mysql안에서의 입력을 의미 - docker-compose down :
mysql서버가 종료되고 database폴더를 삭제하고 다시 실행하면 모든 데이터가 삭제된다.
💡배운 내용을 모두 정리하는 것도 좋지만 나만의 방식대로 이해한 것을 요약해서 정리하는 과정에서 회고가
더 효과적이라고 생각이 들었습니다.
머리 속에서 정리한대로 최대한 덜어내고 그 덜어낸 것들이 중요한 핵심부분일때
다시 회고를 찾아와 공부하고 복습하는 일이 더 생길 것 같습니다.
데이터베이스 부분은 대학교 때 배웠던 개념이었는데 Oracle과 우분투를 사용했던 그때와 다르게 MySQL과 도커를 사용하다보니 새로웠고 많이 접하지 못했던 데이터베이스이다보니 많이 공부해야겠다고 느끼게되었습니다.🚀
'Recording > 멋쟁이사자처럼 BE 13기' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_13일차_'조인과 서브쿼리' (0) | 2024.12.18 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_12일차_'MySQL+쿼리' (1) | 2024.12.17 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_10일차_'내부클래스와 제네릭' (2) | 2024.12.13 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_8일차_'인터페이스와 예외처리' (0) | 2024.12.11 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_7일차_'String클래스와 추상클래스' (0) | 2024.12.10 |