NoSql - FireStore

Sang heon lee·2022년 7월 4일
0

출처 : https://flutter-chobo.tistory.com/1

https://sueaty.tistory.com/137?category=924442

  • NoSql Database 의 한 종류로 구글에서 제공하는 것이 FireStore이다.

  • 관계형 db의 Table 처럼 사전에 미리 지정하는 규칙이 없다.

  • 즉, 언제 어떤 종류의 데이터를 저장해야한다는 규칙이 없습니다.
    아래 그림 처럼 뜬금없이 noise_level 데이터가 들어가도 상관 없다.

  • 만약 Josh 라는 사람이 리뷰를 쓴다면(Nosql에서) 리뷰 데이터마다 유저정보(ex:닉네임, 이미지등)가 중복해서 저장이 된다.

  • 관계형 DB로 따지면 매우 비효율적인데도 쓰는 이유는
    write 횟수 <<< read 횟수 로 수정을 하는 시도보다 읽는 횟수가 압도적으로 많다고 한다.

  • 또한, 데이터를 여러 기계에 배포를 쉽게 할 수 있다는 것입니다. 관계형 DB를 사용할 때 더 큰 데이터 셋으로 키우려면 더 큰 기기가 필요했죠?(= Scaling Vertically = 수직적 확장) 반면에 NoSQL은 여러 서버에 걸쳐 키워나갈 수 있습니다.(= Scaling Horizontally = 수평적 확장)

1. FireStore Database

Cloud Firestore는 클라우드에 있는 NoSQL 형식으로 Document Model을 가지는 데이터베이스로서 수평 확장이라는 특징을 가집니다.

1-1. 구조

  • Collection : 도서관
  • Documents : 책
  • Filed : 책에 기입하는 Data 들

1-2. 규칙

  1. Collection 안에는 Document만 올 수 있습니다.
  2. Document 1개의 크기는 1MB 보다 작아야 합니다.
  3. Document는 내부에 다른 Document를 직접적으로 가질 수 없으나 Subcollection을 가르키고 있을 수는 있습니다.
  4. 최상단 root는 Collection만 가질 수 있습니다. ([그림 1] 참고)
    얕은 query가 이루어집니다. (보통 상위 객체를 부르면 연결 된 하위 객체들도 다 불러오기 마련인데([그림 2] 좌) firestore는 필요한 context만 가져온다.([그림 2] 우))

profile
개초보

0개의 댓글