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 曰
따라서 데이터베이스를 사용하고자 하는 앱이 어떤 특성을 가지냐에 따라서 권장하는 데이터 베이스가 다르니 알아서 사용해라
'Swift랑 친해지기 > 라이브러리' 카테고리의 다른 글
[iOS] Then 라이브러리 (0) | 2023.08.30 |
---|---|
[URLSession, Alamofire] Naver Papago API 로 번역하기 (iOS) (0) | 2023.07.25 |
[iOS] Firebase Auth 사용해보기 (로그인/회원가입) (0) | 2022.11.04 |
[라이브러리] Alamofire가 무엇인지?? 설치까지(Swift) (0) | 2022.10.26 |
[킹피셔] Kingfisher (Swift) (0) | 2022.07.10 |