티스토리 뷰

2021/01/19 - [Firebase] Firestore ① NoSQL Database란

2021/01/20 - [Firebase] Firestore ② Firestore의 구조

 

지난 글에서는 NoSQL database에 대해 간략히 알아봤습니다. 이번 글부터는 본격적으로 Cloud Firestore에 대해 이야기를 나눠보려고 합니다. 이번 글은 Cloud Firestore의 구조에 대해 다루려고 합니다. NoSQL이 무엇인지 모르시다면 지난 글을 훑어보고 오시면 좋을 것 같습니다. Firebase의 공식 유튜브에서 제공하는 영상을 번역했고 커피 한 잔은 와방 큰 힘이 됩니다? 깔깔>< 혹시나 오류 발견 시 댓글로 꼭 말씀해주세요! 시작해볼까요?

donaricano-btn

일단 결론

급할 수도 있으니 결론부터 보고 가겠습니다. Cloud Firestore는 클라우드에 있는 NoSQL 형식으로 Document Model을 가지는 데이터베이스로서 수평 확장이라는 특징을 가집니다. 이 문장을 하나의 그림으로 나타내보면 아래와 같습니다.

Firestore의 구조

Firestore는 Document Collection Model로 구성이 되어 있습니다. Collection = ΣDocument 일 때, Collection이 계층적 구조의 형태로 구성 된 것을 document collection model이라고 부릅니다. 아래 그림을 통해 이 모델에 대해 조금 더 자세히 알아보도록 하겠습니다.

  • 파란색 1개 = document
  • document 여러개를 흰색 테두리로 묶어 놓은 것 1개 = collection
  • 자식 collection = subcollection
  • 이해를 돕기 위해 'tree 구조'라고 말할 수 있어도 사실  tree 아님

Document

JSON 객체 또는 dictionary와 매우 유사합니다. Firestore에서는 Field라고 불리는 key-value 쌍으로 이루어져있고 value에는 정말 다양한 타입들이 올 수 있습니다. 문자열, 숫자, 이진 데이터, (json같이 생겼지만) map이라고 부르는 객체, 배열 등.

Collection

긴 말 필요 없이 Collection = ΣDocument 입니다. 쉽게 말해 value로 document를 가지는 hash나 dictionary라고 생각하면 됩니다.

Firestore의 규칙

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

[그림 1]
[그림 2]

위에서 언급한 Firestore의 규칙이자 특징들 때문에 트정 collection에 있는 document의 데이터를 사용하기 위해서는 다음과 같은 코드를 작성하게 됩니다.

firestore.collection(...).document(...).collection(...).document(...)

그러나 어색하기도 하고 길어지다 보면 오류가 있을 수도 있고 번거로우니 경로를 통해 나타낼 수도 있습니다.

firestore.collection("users/user_123/workouts/workout_abc/history/05182017")

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함