이번 포스팅에서는 Firebase가 제공하는 서비스인 Cloud Firestore에 대해서 알아보겠습니다. Cloud Firestore는 NoSQL 기반의 데이터베이스 서비스입니다. 이 서비스를 통해서 Flutter 앱에 손쉽게 데이터베이스를 사용할 수 있습니다.
가장 보편적으로 사용하는 데이터베이스는 거의 SQL기반의 관계형 데이터베이스입니다. 하지만, Cloud Firestore는 비관계형 데이터베이스이죠. 그러면, 프로젝트에 적용하기 이전에 Cloud Firestore에 대해서 조금 알아볼까요??
첫번째 Cloud Firestore 데이터베이스 생성하기
파이어베이스 콘솔에서 직접 Cloud Firestore 콘솔로 가보겠습니다. 카테고리 중 빌드에 해당합니다.
처음 생성한 프로젝트에는 아직 데이터베이스가 존재하지 않습니다. 그래서 데이터베이스를 만들어보겠습니다. 먼저, 데이터베이스 만들기 버튼을 클릭합니다.
처음 생성한 데이터베이스는 보안 규칙 유형을 선택해야 합니다. 프로덕션 모드와 테스트 모드가 있는데요. 프로덕션 모드는 가장 기초적인 보안 규칙을 제공하여, 말 그대로 프로덕션으로 사용할 데이터베이스를 의미하는 것이고, 테스트 모드는 공부를 한다던가, 기능적인 테스트를 수행하기 위한 데이터베이스입니다. 하지만, 30일 이후에는 모든 데이터를 비공개로 전환하는 규칙이 적용되어 있어요. 둘 중에 아무거나 선택해도 상관은 없습니다. 왜냐하면, 프로덕션 모드와 테스트 모드는 보안 규칙의 차이만 있을 뿐이고, 후에 유형을 변경할 수 있습니다. 저는 프로덕션 모드로 진행하겠습니다.
두번째로, 리전을 선택해야 합니다. 리전은 실제로 서비스를 프로비저닝하는 지역을 의미합니다. AWS와 굉장히 유사해요. AWS처럼 파이어베이스도 클라우드 서비스인 만큼 리전선택이 중요합니다. 고객이 주로 밀집한 곳에 리전을 선택해야 탈이 없겠죠?? 저는 서울리전으로 선택하겠습니다.
모든 설정을 끝내고, 사용 설정 버튼을 클릭하면 Cloud Firestore가 프로비저닝됩니다.
자, 드디어 첫번째 파이어베이스의 데이터베이스가 완성되었습니다. 이제 Cloud Firestore의 데이터베이스는 어떤 형식으로 구성되어 있는지 알아봅시다.
Cloud Firestore 구조
Cloud Firestore는 컬렉션 -> 도큐멘트 -> 컬렉션 -> 도큐멘트 -> ...이 반복되는 구조에요. 예를 들어 유저의 정보를 기록하는 컬렉션이라면 이름이 Users고, 그 하위로 유저들의 개개인 정보가 도큐멘트로 저장됩니다. 그리고, 도큐멘트 하위에도 컬렉션을 만들어서 또, 여러가지 도큐멘트들을 저장할 수 있습니다. 한번 해볼까요?
컬렉션 시작 버튼을 클릭해서 새 컬렉션을 만들어주겠습니다. 콘솔에서 새로운 컬렉션을 만들때는 하위에 문서를 하나를 만들어주어야 합니다. 문서가 없는 컬렉션은 없는것과 마찬가지에요. 일단 이 컬렉션은 유저의 정보를 담는 컬렉션으로 하도록 하겠습니다.
유저의 정보를 담을거니까 Users라고 하겠습니다.
첫번째 문서, 즉 도큐멘트를 만들겠습니다. 여기서 도큐멘트의 ID는 여느 NoSQL 데이터베이스들 처럼, 중복이 되어선 안됩니다. 일단은 자동 ID를 통해서 랜덤 도큐멘트 ID를 생성해주겠습니다.
도큐멘트에는 이름과 나이, 직업을 저장됩니다. 데이터의 타입과 값을 지정해주어야 해요. 각각 String, number, String으로 하겠습니다. 이거 말고도 프로그래밍에서 제공하는 자료형은 다 있다고 보면 됩니다. List, map 등등
저장 버튼을 클릭하면 새로운 정보가 데이터베이스의 저장이 됩니다.
그리고 하위 도큐멘트에도 컬렉션 시작이라는 버튼이 생겼지요? 이번에는 유저가 할일 즉, todo를 저장하는 컬렉션을 만들어보겠습니다.
이번에도 역시, 하위 도큐멘트를 만들어주어야 합니다. 할일 목록인 todo와 진행상태를 의미하는 isDone을 저장하겠습니다.
자, 이제 저장버튼을 클릭하면 새로운 하위 컬렉션과 하위 문서가 만들어집니다.
이렇게, Cloud Firestore에 데이터 저장 방식에 대해서 알아보았습니다. 다음 포스팅에서는 본격적으로 flutter 프로젝트에서 Cloud Firestore에 CRUD 하는 방법에 대해서 알아보겠습니다.