리소스 문제가 해결되면 바로 개발에 들어가기 위해서 ERD 와 API 명세서를 작성하기로 한다. 여기서 ScyllaDB 는 Cassandra 기반으로 만들어진 NoSQL 인데 신기하게도 RDBMS 의 성질을 가지고 있다. 예를들어 mongoDB 는 NoSQL 의 대표적인 DB 인데, 이 친구는 데이터를 삽입할 때 컬럼명이 없으면 알아서 생성해서 주입되는 방식이지만 ScyllaDB 는 컬럼명이 존재하지 않으면 오류가 발생된다. 따라서 ERD를 작성하게 되었다.
1. Table 설계
먼저, 1차 테이블 설계는 엑셀을 활용하여 작성하였다. 빨강색은 제외시키는 항목, 주황색은 고려할 부분이다.
테이블을 설계하는 과정에서 1차 정규화를 통해 데이터 조회시 효율적으로 관리할 수 있게끔 고려하여 설계하였다.
- 채팅방 생성 : 채팅방의 정보를 가지고 있는 테이블이다.
- 채팅방 멤버 : 채팅방에 속해있는 유저들의 정보를 가지고 있는 테이블이다.
- 사용자별 읽음 상태 : 유저가 마지막으로 읽은 메시지의 정보를 담은 테이블이다. 백엔드 로직을 통해 (새로운 메시지 시간) - (마지막으로 읽은 메시지 시간) 을 통해 안읽은 메시지의 갯수를 구하는데 사용할 예정이다.
- 채팅 메시지 : 유저가 주고받은 메시지를 저장하는 테이블이다.
- 읽지 않은 메시지 : 읽지 않는 메시지의 갯수를 저장할 테이블이었으나 사용하지 않을 예정이다. -> 백엔드 로직을 통해 안읽은 메시지를 선별할 수 있을거라고 판단
2. API 명세서 작성
채팅방과 관련된 API 명세서를 작성하였다. 기본적인 CRUD 기능을 작성 하였다. 상태코드는 프론트를 담당한 팀원과 상의를 통해 재설정 될 예정이다.
3. ERD 작성
앞서 작업한 엑셀을 토대로 erdcloud 를 활용하여 ERD 를 작성하였다.
'Project > ST00CK' 카테고리의 다른 글
node.js 에서 gRPC 설정하기 (0) | 2025.01.08 |
---|---|
ScyllaDB 연결 및 채팅방 API 구현 (1) | 2025.01.01 |
Github 연동 및 Swagger 설치 (2) | 2024.12.16 |
RKE2 Rancher 설치 실패 및 GCP 무료 크레딧 만료 ... 추후 계획 (2) | 2024.12.16 |
GCP VM에 SSH 로 접근하기 (1) | 2024.12.10 |