Ch 02. 신용카드 추천 리스트 만들기
기능 상세:
- FinTech 계열 앱에서 제공하는 신용카드 추천 앱
- 여러 개의 신용카드를 순위에 따라 표현
- 특정 카드를 선택하면 각 카드 별로 혜택을 보여줌
활용 기술:
- Database
- 데이터의 집합체
- 일반적으로 관계형 데이터 베이스 형태
- 행(row)과 열(column)로 이루어진 테이블(table)
- 해당 위치에 대응하는 값을 가짐(key : value)
- Firebase Realtime Database(실시간 데이터 베이스)
- 비관계형 클라우드 데이터베이스(NoSQL 데이터 베이스)
- 대량의 데이터를 대규모로 처리
- 많은 데이터를 수집하고 활용하는 모바일, 웹, 어플리케이션 개발에 적합
- JSON 기반의 데이터를 가져오고 내보내고 관리하는데 최적화
- 실시간
- HTTP 요청이 아닌 동기화 방식
- SDK를 통해서 클라이언트와 직접 실시간으로 동기화
- 실시간 데이터 베이스와 연결된 모든 기기는 거의 동시에 서버에 모든 변경사항을
실시간으로 반영
- 오프라인
- 로컬에 저장 후 네트워크 연결시 동기화
- 앱이 오프라인일 때 사용자 액션에 대한 변경사항을 로컬에 저장해 두었다가
앱이 다시 네트워크에 연결되었을 때 자동적으로 실시간 데이터 베이스에 업데이트 - 반대로 클라이언트 기기가 오프라인일 동안 놓쳤던 서버의 변경사항도 자동으로 수신해서 서버를 최신 상태로 동기화
- 서버 없이
- 데이터베이스와 클라이언트 직접 엑세스
- 별도의 서버 개발없이 바로 데이터베이스에 엑세스 가능
- 데이터를 읽거나 쓸 때 보완 규칙을 통해 데이터 베이스 접근 권한에 대한 보안, 데이터 검증을 제공하기 때문에 안전
- 비관계형 클라우드 데이터베이스(NoSQL 데이터 베이스)
- Firebase Firestore Database(클라우드 파이어 스토어)
- 실시간 데이터 베이스의 주요기능들과 동일한 기능을 제공
- 제공하는 데이터 모델 차이로 데이터 베이스를 사용하고자 하는 앱이 어떤 특성을 가지냐에 따라서 권장하는 데이터 베이스가 다름
- 비교적 최근에 나온 Firestore가 복합적인 고급 쿼리 기능 을 제공
- 쿼리(Query)
- 데이터 베이스에 정보를 요청하는 것
- 특정 문자열, 단어, 값을 포함하는 데이터를 찾기 위해 사용
- 정보를 요청하는 행위, 특정 데이터 베이스에서 원하는 조건의 데이터를 조작하는
요청문, 명령문
- 쿼리(Query)
- Firebase Realtime Database & Cloud Firestore
- 실시간 데이터 베이스
-
- 하나의 큰 JSON 트리
- 데이터 모델을 하나의 큰 JSON 트리로 저장
-
- 정렬 || 필터링
- 동시에 두가지 일x, 정렬을 하거나 필터링을 하거나
-
- 깊고 좁은 쿼리
- 결과값을 가지는 하위값 모두를 반환하기 때문에 하위값까지 한번에 엑세스 가능
-
- 데이터 세트 ↑ 쿼리 성능 ↓
- 하나의 큰 JSON 트리를 가지기 때문에 복잡한 계층을 가지는 데이터를 대규모로 저장하는 것이 어렵고 실제로 최대 32단계의 데이터 중첩만을 허용
최대한 데이터를 평면화 하는 것을 권장
-
- 파이어 스토어
-
- 문서 컬렉션
- JSON과 유사하지만 JSON이 아닌 문서와 컬렉션의 조합을 제공
하나의 컬렉션이 여러개의 문서를 가지고 각각의 문서는 하위의 컬렉션을 가질 수 있는 구조
-
- 정렬 && 필터링
- 여러 개의 필터를 연결하거나 필터와 정렬을 동시에 진행가능
-
- 얕고 넓은 쿼리
- 특정 컬렉션의 문서만 반환하고 해당 문서가 하위 컬렉션을 가지고 있더라도 하위의 컬렉션까지는 반환x
-
- 데이터 세트 ↑ 쿼리 성능 ?
- 전체적인 데이터 세트 크기는 쿼리 성능에 직접적인 영향x
요청한 쿼리에 대한 결과에 따라서 쿼리 성능 영향
-
- firebase에서 제공하는 문서
- 실시간 데이터 베이스
실시간 데이터 베이스 | 파이어 스토어 |
---|---|
기본적인 데이터 동기화 | 고급 쿼리, 정렬, 트랜젝션 |
적은양의 데이터가 자주 변경 | 대용량 데이터가 자주 읽힘 |
간단한 JSON 트리 | 구조화된 컬렉션 |
많은 데이터베이스 | 단일 데이터베이스 |
에러:
queryOrdered 메서드 사용시 시뮬레이터에서 Cell이 안보임
https://stackoverflow.com/questions/44727308/swift-firebase-queryordered 해결못함