Firebase Firestore: 기본 구조
</br>
프로젝트에서 DB에는 Firebase Firestore를 사용했다. 구글에서 제공하는데, 문서 형식이라 다루기 간단한 편이고 구글 공식 문서가 설명이 잘 되어 있다.
</br>
DataBase
데이터베이스는 정보를 체계적으로 정리해 저장해 놓는 것을 의미하고, 그 데이터베이스를 관리하며 사용자에가 서비스를 제공하는 모든 것을 총체적으로 DBMS(database management system, 데이터베이스 관리 시스템)이라 한다.
보통 데이터베이스를 고를 때 SQL(Structured Query Language)과 NoSQL(Not only SQL) 둘 중 상황에 맞는 걸 고른다.
</br>
SQL과 Relational Database 간에 차이가 뭔지 궁금해서 찾아 봤는데…
The terms are used interchangeably, but there are differences. SQL is the query language that is used with relational databases. Relational databases and their management systems almost always use SQL as their underlying query language. NoSQL, or not only SQL, databases use SQL and other query languages. For example, the NoSQL database management program MongoDB uses JSON-like documents to store and organize data. (Technically, it uses a variant of JSON call BSON, or binary JSON.)
https://searchdatamanagement.techtarget.com/definition/relational-database
관계형 데이터베이스에서 쿼리 언어인 SQL을 사용한다고 보면 될 것 같다~~
NoSQL은 No SQL이 아니고 Not only다!! NoSQl도 SQL을 사용하고 기타 다른 쿼리 언어도 사용한다.
관계형(Relational)
- 테이블(row, column)식
- 오래전부터 주류로 많이 쓰인다.
- 데이터 분류, 정렬, 탐색 속도가 빠르다.
- 데이터 무결성을 보장할 수 있다.(갑자기 기기에 고장이 나거나 해도 데이터에 문제가 생기지 않음)
- 스키마(DB의 구조, 조건 등에 대한 메타데이터의 집합) 수정이 어려움
- 2차원 구조이므로 트리 구조의 객체들을 다룰 때 어려울 수 있다.
문서형(Document)
- 스키마가 따로 없어 데이터 매핑이 필요없다. 필드에 마음대로 데이터를 넣고 뺄 수 있다.
- 필드에 데이터가 없어도 조회나 그룹핑의 작업을 할 수 있다.
- 관계형과 달리 객체형에 가까워 객체를 다루기 좋다.
- 조회, 갱신, 삽입이 빠르다.
- 통계 작업이나 데이터가 계속 한 필드에 추가되는 경우 성능이 떨어진다.
Firestore로 사용해 본 느낌으론 그냥 평소에 컴퓨터 파일이나 디렉토리 구조랑 비슷한 것 같다.
참고로 Firebase에서 둘 다 제공한다. Realtime이 관계형, Firestore가 문서형이다. Firebase 공식 문서에서 필요한 데이터베이스를 고를 때 도움을 받을 수 있다.
( 컬렉션 - 문서 - 필드 및 컬렉션 ) 으로 중첩되며 계속 컬렉션에 문서와 필드를 추가할 수 있다.
댓글남기기