2024-07-07

web

카드 구성 데이터를 동적으로 가져와 렌더링하기 위해 데이터를 저장하고 있을 DBMS가 필요하다. 이때 적절한 DBMS의 요건은 다음과 같다.

  • 데이터 편집이 간편할 것
  • key-value 형식일 것
  • 빨리 배울 수 있을 것

RDBMS는 탈락이다. 왜냐면 key-value에 접근이 매우 편해보이는 json을 써보고 싶기 때문이다. 이제 다음으로 좁혀진다.

  • firebase
  • mongodb

Firebase

Firebase를 선택하기로 했다.

  • realtime database 지금 프로젝트에는 크게 필요없는 기능인데 기자재실웹 만들때 이게 안돼서 장바구니기능에 로컬스토리지 썼었지… 그거야말로 firebase로 바꿔야겠다.
  • Firebase Authentication, Firebase Storage(외부이미지 호스팅서비스) 등과 쉽게 통합 → 오 좋음.
  • 로컬 캐시를 이용해서 오프라인이 돼도 작동함. → Realtime Database경우 웹에서는 안됨. 근데 상관없음
  • 데이터 json으로 저장 → 좋음.

firebase에는 두 가지 데이터 모델이 있다.

  • Cloud Firestore: 데이터를 문서의 collection으로 저장한다
  • Realtime Database: 데이터를 하나의 문서로 저장한다 난 아주 단순한 데이터를 저장할 거니까 이걸로 해야겠다.

Realtime Database 제한

  • 구조 복잡한거 어려움
  • 웹에서 오프라인작동 지원안함
  • Query:
    • sort와 filter 동시에 못함
    • deep(하위요소 다 반환함)
    • index불필요
  • write, transaction 이런건 생략함. 난 필터링만 필요하니까

firebase로 어떻게 데이터와 이미지를 갖다쓰고 필터링할 수 있는지 알아보자.