Open philosucker opened 2 months ago
트랜잭션의 핵심 개념 원자성(Atomicity): 트랜잭션 내의 모든 작업이 모두 성공하거나 모두 실패 일관성(Consistency): 트랜잭션이 실행된 후 데이터베이스는 일관된 상태를 유지 고립성(Isolation): 동시에 실행되는 트랜잭션들이 서로의 중간 결과를 볼 수 없음 지속성(Durability): 트랜잭션이 커밋된 후에는 시스템 오류가 발생하더라도 해당 변경 내용이 영구적으로 유지
MySQL
MongoDB
결국 홀덤 애플리케이션의 백엔드에서 DB에 어떤 테이블을 몇개 만들어 어떻게 쓸건지를 정해야 어떤 DB를 선택할 지 결정할 수 있다.
MySQL FastAPI Manager Class 에서 관리: 사용자 계정 생성(고유 ID, 이메일, 비밀번호, 닉네임, 스택사이즈 초기화-싱글/멀티 분리) 로그인 관리(JWT 토큰 발급, 멀티의 스택사이즈 100 미만이면 싱글 플레이만 가능)
**MySQL 선택 이유 :**
사용자 계정정보의 데이터 무결성, 일관성 중요
상대적으로 고정된 스키마.
추후 mongoDB에서 mySQL로 게임 데이터를 이관하여 다중 테이블로 분산시켜 저장 및 관리
MongoDB FastAPI Floor Class에서 관리: 게임룸 생성 및 상태 관리 FastAPI Dealer Class에서 관리: 게임 액션 정보 기록 및 관리
**MongoDB 선택 이유**:
게임방의 정보는 자주 변경되고, 각 게임방에 대한 실시간 업데이트가 필요
게임 중에 각 유저의 액션 리스트를 실시간으로 기록하고 조회하는 작업은 빠른 읽기/쓰기 성능과 인덱스 설계로 최적화가능
1. 두개의 DB를 사용하려는 계획에 대한 의문 질문1 : 지금 개발중인 애플리케이션에서 MongoDB와 MySQL 두 개의 DB를 씀으로써 발생하게 될 복잡도를 상쇄하고 남을 만큼의 이득이 서로 다른 종류의 DB를 하나의 애플리케이션에 연동시켜 운용해보는 경험 외에 더 있는가?