여씨의 개발이야기
[입문] firestore 기본 구조 분석 본문
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)이라고 한다.
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를 지워야 한다.
'🔥 Firebase' 카테고리의 다른 글
[배포] firebase app 배포 시 Page Not Found가 뜨는 현상 (0) | 2022.01.26 |
---|---|
[입문] firestore document의 하위 collection 가져오는 방법 (0) | 2022.01.09 |
[입문] window 환경에서 firebase 설치 및 초기 세팅, github을 이용해서 react 웹프로젝트를 배포하는 법 (0) | 2021.12.28 |
[입문] Firebase란? (0) | 2021.12.27 |