본문 바로가기
Swift랑 친해지기/라이브러리

[라이브러리] Firebase Realtime Database / Cloud Firestore

by 데브킹덕 2022. 11. 8.

Database란? 

- 구조화된 정보 or 데이터의 조직화된 모음으로 일반적으로 컴퓨터 시스템에 전자적으로 저장됨

- 일반적으로 관계형 데이터 베이스 형태

 

* 관계형 데이터 베이스 (RDBMS) : 데이터 하나 이상의 열과 행의 테이블에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 모음임

 

아래와 같이 여러 테이블들이 모여 데이터베이스를 구축할 수 있음  

 

 

 

Firebase Realtime Database

 

NoSQL 데이터베이스 (Not only SQL)

- 기존 관계형 DBMS 이외에 특성을 가짐 

- 대량의 규모의 데이터를 대량으로 처리하고 점점 더 많은 데이터를 수집하고 활용하는 모바일 웹 앱 에 적합

*SQL 구조적 쿼리 언어 = 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어 

 

보통 JSON 문서로 저장 

- 여러 테이블로 산재되어 있던 열들을 모두 갖는 하나의 단일 문서 내에 속성으로 저장이 될것임 

 

-실시간 데이터베이스는  옵져버와 스냅샷과 같은 객체를 제공하는 SDK를 통해서 클라이언트와 직접 실시간으로 동기화하게 됨 

-실시간 데이터베이스와 연결된 모든 기기는 거의 동시에 실시간으로 서버의 변경사항을 반영할 수 있음 

 

-앱이 오프라인일때도 사용자 액션에 변경사항을 로컬에 저장해 두었다가 네트워크에 연결되었을때 자동적으로 실시간 데이터베이스에 없데이트하는 기능 제공

 

- 반대로 클라이언트 기기가 오프라인일때 놓쳤던 서버의 변경사항도 자동으로 수신해서 서버를 최신상태로 동기화함 

 

- 서버없이 데이터베이스에 접근할 수 있음.

- 데이터를 읽거나 쓸때보안규칙을 통해서 데이터 베이스 접근권한에 대한 보안 , 데이터 검증 제한을 통 해 안전함  

 

Cloud Firestore

 

Realtime Database Cloud Firestore
공통점
- 쿼리를 통해 데이터 검색, 정렬, 필터링해줌
* 쿼리란 데이터베이스에 정보를 요청하는 것을 말함 
ex) 구글에서 iOS를 검색하는 행위
하나의 큰 JSON 트리 Document, Collection
하나의 쿼리에 정렬 혹은 필터링 하나만 가능 하나의 쿼리에 정렬 필터링 둘다 가능 
결과 값이 가지는 하위 값을 모두 반환 때문에 하위 값까지 한번에 액세스 가능 하위 값이 있더라도 선택한 값까지 액세스
위 내용 처럼 깊고 좁은 쿼리 성격으로 하나의 큰 JSON 트리를 가지기 때문에 복잡한 데이터를 가지는 대규모 저장이 어려움
최대 32단계 데이터 중첩 가능
전체적 데이터 세트 크기는 쿼리성능에 직접적인 영향을 주지않는다고함 
다만,쿼리에 대한 결과에 따라서 쿼리성능이 영향을 받을 수 있음 

 

Firebase 曰



따라서 데이터베이스를 사용하고자 하는 앱이 어떤 특성을 가지냐에 따라서 권장하는 데이터 베이스가 다르니 알아서 사용해라