티스토리 뷰
1. DB연결
- db의 경우, 요청마다 새 세션을 생성하는 것이 일반적이다. 이렇게 하면 각 요청이 독립적인 트랜잭션을 갖게 되어, commit, rollback, 세션 종료 등을 개별적으로 처리할 수 있다. 따라서 yield를 통해 요청마다 새로운 세션을 제공한다.
1) DB 엔진이란?
- 실제 db와 통신하는 역할, db와의 물리적 연결(예: TCP 연결, pool)을 관리하고, 내부적으로 연결 풀을 운영하는 객체
: SQLAlchemy의 create_engine, create_async_engin
2) DB 세션이란?
- DB 엔진 위에서 동작하는 작업 단위(유닛 오브 워크), ORM이 객체의 상태를 추적하고, 여러 쿼리를 하나의 트랜잭션으로 묶어 commit이나 rollback할 수 있도록 관리: 연결의 논리적 단위
- 엔진이 제공하는 연결(pool) 중 하나를 할당받아 사용하면서, 애플리케이션 단위의 데이터 변경을 추적하는 역할을 담당
3) 상태 관리란?
- 애플리케이션이나 객체의 현재 상태(데이터, 변경 내역 등)을 추적하고, 유지하는 작업
- DB 세션은 메모리 상에 로드된 객체, 변경사항, 캐시된 데이터 등을 관리하여 나중에 데이터베이스와 동기화(commit) 할 수 있도록 한다
4) 트랜잭션 관리란?
- 여러 개의 데이터베이스 연산을 하나의 원자적 단위로 묶어, 전체 작업이 성공할 때만 데이터베이스에 반영되도록 하거나, 중간에 오류가 발생하면 모두 취소(rollback)하는 과정, 이를 통해 데이터의 일관성과 무결성을 보장
* 예: 은행 계좌간 송금시, 한 계좌에서 돈을 출금하면, 다른 계좌에 돈을 입금하는 2단계가 1개의 프로세스가 되야 한다.
* Redis는 주로 단순 데이터 저장, 빠른 읽기/쓰기 작업에 주로 쓰이기 때문에, 단일 명령어 기반의 작업 (get, set 등)으로 구성되며, 각 명령어가 원자적으로 실행된다
- 복잡한 객체 상태 추적이나 여러 명령어를 하나의 트랜잭션 단위로 묶어 관리할 필요가 없는 단순한 데이터 저장/캐시 시스템이다
2. Redis 연결
- redis는 인메모리 캐시나 메시지 브로커로 자주 사용되며, 라이브러리에서 제공하는 클라이언트는 내부적으로 연결 풀을 관리하며, 스레드/코루틴이 안전하게 설계되어 여러 요청에서 동시에 사용해도 문제가 없다. 즉, 애플리케이션 시작 시 한 번 생성한 후 이를 전역 변수로 관리하면서 여러 요청에서 재사용 하는 것이 일반적이다. 따라서 굳이 yield 패턴으로 매번 새 인스턴스를 생성 할 필요가 없다.
1) Redis 클라이언트란?
- 애플리케이션에서 redis 서버와 통신하기 위해 사용하는 라이브러리나 객체
- 내부적으로 연결 풀을 관리
- Redis는 클라이언트 자체가 서버와의 연결(엔진 역할)과 명령어 수행(세션 역할)을 모두 담당한다.
'AI > AI 서비스 개발' 카테고리의 다른 글
[AI 서비스 개발] Docker 멀티스테이지 빌드 (0) | 2025.02.23 |
---|---|
[AI 서비스 개발] 디버깅, 브레이크 포인트, logging (0) | 2025.02.21 |
[AI 서비스 개발] FastAPI 쿼리 파라미터 (0) | 2025.02.20 |
[AI 서비스 개발] Redis 기초 문법(with python) (0) | 2025.02.18 |
[AI 서비스 개발] Redis 다중 키워드 검색(Set & Tag) (1) | 2025.02.17 |
- Total
- Today
- Yesterday
- 스크랩
- ChatGPT
- 다이어트
- 오블완
- C언어
- 고득점 Kit
- Ai
- 루틴
- llm
- IH
- SQL
- 뉴스
- 경제
- 미라클모닝
- 실기
- 오픽
- opic
- 프로그래머스
- 빅데이터 분석기사
- 갓생
- 기초
- 영어회화
- 습관
- 줄넘기
- 아침
- 티스토리챌린지
- 30분
- Python
- 운동
- 아침운동
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |