00 개요
- 앞서 ToDo 프로젝트에서 ToDo를 새로 생성하거나 ToDo의 완료 여부 수정 시 데이터를 영구적으로 저장하기 위해 데이터베이스가 필요
01 데이터베이스란
1. 정의
- 대량의 데이터를 영구적으로 저장/관리하기 위한 시스템
2. 분류
1) 관계형 데이터베이스 (Relational Database, RDB)
- 관계형 모델에 기반해서 데이터를 테이블, 행, 열 구조 (스키마 구조)로 관리 (Schemaful)
- Microsoft Excel을 떠올리면 됨
- 데이터의 일반성 유지가 용이하여 법명적으로 많이 이용됨
- 예) Oracle, MySQL, PostgreSQL, Sqlite, etc.
- 실습에서는 MySQL 사용할 것
2) 비관계형 데이터베이스 (NoSQL)
- 관계형 데이터베이스가 아닌 데이터베이스
- 종류가 다양하며 각각의 용도 및 장단점이 명확함
- 특정 목적에 맞게 관계형 데이터베이스와 조합하여 사용됨
- 예)
- Key-Value → Redic, etcd
- Document → MongoDB
- Wide-column → Cassandra, ScyllaDB
- Timeseries → Apache Druid, InfluxDB
- Graph → Neo4j
02 sqlalchemy 소개
- FastAPI에서 데이터베이스를 사용하기 위해선 sqlalchemy라는 Python 라이브러리 필요
1. 정의
- 관계형 데이터베이스를 사용하기 위한 High-level 인터페이스를 제공하는 Python 라이브러리
- sqlalchemy 사용 시 ORM, Query, Transaction, Connection Pooling 기능 활용 가능
2. ORM (Object-Relational Mapping)
- 관계형 데이터베이스를 객체 지향 프로그래밍 (OOP)에 대응하여 사용하는 프로그래밍 기술
- ORM 사용 시 다음과 같이 사용 가능
- 하나의 테이블 = 하나의 클래스
- 하나의 행(레코드) = 하나의 객체
데이터베이스 | Python |
id | username 1 | qu3vipon |
user = User(id=1, username='qu3vipon') |
- 따라서, Python 객체를 조작하여 데이터를 읽거나 쓰는 작업을 손쉽게 대체 가능
- 즉, 개발자는 Python 코드를 통해서 직접 SQL을 적지 않아도 sqlalchemy에 의해 SQL이 생성되고 데이터베이스와 데이터를 주고 받게 됨
'Web 개발 > FAST API (인프런 강의 내용)' 카테고리의 다른 글
2 실습2 MySQL 접속 및 사용 (0) | 2024.04.25 |
---|---|
2 실습1 MySQL 컨테이너 실행 (docker) (1) | 2024.04.24 |
1 실습6 ERROR 처리 (0) | 2024.04.18 |
1 실습5 DELETE API todo 삭제 (0) | 2024.04.17 |
1 실습4 PATCH API todo 수정 (0) | 2024.04.16 |