출처 : 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 = 수평적 확장)
Cloud Firestore는 클라우드에 있는 NoSQL 형식으로 Document Model을 가지는 데이터베이스로서 수평 확장이라는 특징을 가집니다.