[모각코] 7회차 : 04/19

·2024년 4월 19일
1
  • 캡스톤 프로젝트 데이터베이스 구조 설계
  • 소감

캡스톤 프로젝트 데이터베이스 구조 설계

이번 캡스톤 프로젝트에서 우리 팀은 Firestore와 Storage를 이용해 데이터베이스를 구축하기로 결정했다. 오늘은 Firestore 구조를 설계하는 회의를 진행했다. 완성된 구조는 다음과 같다.


User data

collection : user

  • document : user id
    • 닉네임 nickname (string)
    • 마지막 앱 사용 날짜 lastAccessDate (timestamp)
    • 연속 출석 일수 consecutiveAccessDays (int)
    • 사용자 고유 음성 voice (map) → Storage의 저장 위치 URL
      • 사용자 음성 파일은 Storage에 저장 후, Firestore에 Storage URL 저장
    • 최근 연습 대본 las (reference) → 코드상에서 controller로 최근 연습한 대본 id 들고 다니기
    • sub collection : practice
      • document : script id
        • 한문장 스크랩 scrapSentence (List)
        • 프롬프트 결과 promptResult (List<Map<String, dynamic>>)
          • 연습 날짜 practiceDate : (timestamp)
          • 정확도 precision : (int)

Example Script data

collection : example_script

  • document : script id (자동생성)
    • 제목 title (string)
    • 카테고리 category (string)
    • 내용 content (List)
    • 생성일자 createdAt (timestamp)

User Script data

collection : user_script

  • document : user id
    • sub collection : script
      • document : script id (자동생성)
        • 제목 title (string)
        • 카테고리 category (string)
        • 내용 content (List)
        • 생성일자 createdAt (timestamp)

설계 시 고려한 점

  • Firestore의 복합 색인은 최대 2개까지 가능하다.
  • collection을 가져올 때, sub collection까지 같이 가져와지지 않는다. 각 collection은 상하 관계여도 별도로 쿼리를 작성해야한다.
  • Firebase를 무료 요금제로 사용할 것이기 때문에, 쿼리 수나 용량 제한 상한선을 고려해야 한다.

소감

쿼리 수, 코드, 용량 등 고려해야 하는 부분이 많아 설계가 어려웠다. 구조가 너무 복잡해지는 것을 우려해 기획이 일부 변경되기도 했다. NoSQL에 대한 이해도가 부족하다고 느껴 공부를 더 해보려 한다.

0개의 댓글

관련 채용 정보