여씨의 개발이야기

[입문] firestore 기본 구조 분석 본문

🔥 Firebase

[입문] firestore 기본 구조 분석

yeossi 2022. 1. 9. 13:00

NoSQL은 이번에 친구와 토이프로젝트를 진행하면서 firestore를 통해 처음 접하게 되었다. NoSQL에 대해 검색해보니 MongoDB 등이 있으며 구조가 완전히 같지는 않지만 대체적으로 firestore처럼 json 형식을 띄고 있는 듯 하다. 이 글에서는 firestore의 DB 구조에 대해 알아보겠다.



1. RDBMS vs NoSQL

RDBMS MongoDB or firestore
Database Database
Table                 Collection
Tuple/Row Document
Column          Key/Field
Table Join Embedded Documents
PK                     PK(_id)
Database Server & Client
mysqld          mongod
mysql             mongo

 

1-1. NoSQL의 구조

Database > Collection(table 대신) > Document(low 대신에 column이라는 개념이 없다)

  • RDBMS의 테이블이 아니고 collection에 JSON형태의 Document를 넣는다.
  • Document 하나가 하나의 row(record)이다.

 

1-2. Firestore의 구조

문서(document) 기반의 NoSQL이기 때문에 RDBMS처럼 엄격한 스키마는 필요가 없다. 각각의 문서(Document)는 key:value 형식의 필드의 집합체이며 JSON 형식으로 표현할 수 있다. 이러한 문서를 묶은 것이 컬렉션(Collection)이라고 한다.

출처 : https://www.javatpoint.com/firebase-data-organization-in-firestore

RDBMS와 비교해보면 collection은 table, documents는 records로 볼 수 있지만 Firestore는 엄격한 스키마가 존재하지 않으며, documents가 하위 collection을 가질 수 있는 것이 RDBMS와 큰 차이이다. 이전의 리얼타임 데이터베이스도 JSON 형식으로 표현할 수 있지만, 리얼타임 데이터베이스는 전체를 하나의 큰 Json 형식으로 표현한다면 Firestore는 collection>documents>collection>documents와 같은 구조를 계속 이어나갈 수 있다. Firestore 역시 Json 형식으로 표현해서 데이터베이스 root 아래 collection이 하위형태로 있고 그 아래에 documents가 있는 하나의 큰 트리 구조로 나타낼 수는 있지만 Firestore의 documents는 collection에 완전히 종속된 형태가 아니다. 하나의 document가 여러개의 collection에 속해 있을 수도 있으며, collection을 지웠을 때 하위 documents는 동시에 지워지지 않는다. collection과 하위의 documents를 모두 지우려면 서버 함수를 따로 만들거나, 먼저 collection 하위 documents를 지워야 한다.

Comments