최근 모바일 및 웹 애플리케이션 개발에서 데이터 관리의 필요성이 더욱 커지고 있습니다. Firebase의 Firestore는 이러한 필요를 충족시키기 위한 강력한 NoSQL 데이터베이스 솔루션입니다. Firestore는 유연한 데이터 구조, 실시간 데이터 동기화, 오프라인 지원 기능을 제공하여 개발자들에게 많은 이점을 제공합니다. 이번 포스트에서는 Firebase Firestore의 기본 사용법을 상세히 안내하겠습니다.
Firestore란?
Firestore는 Google의 클라우드 플랫폼에서 제공하는 NoSQL 데이터베이스로, 데이터가 문서와 컬렉션 형태로 구성됩니다. 이 데이터베이스는 애플리케이션이 클라우드와 상호작용할 수 있도록 실시간으로 데이터를 동기화하며, 보안 규칙을 통해 데이터 접근을 제어할 수 있는 기능을 갖추고 있습니다. 이를 통해 개발자는 강력하고 안전한 애플리케이션을 구축할 수 있습니다.
Firestore 시작하기
Firestore를 사용하기 위해서는 먼저 Firebase 프로젝트를 생성해야 합니다. 다음과 같은 단계로 프로젝트를 설정하세요:
- Firebase Console에 로그인하여 새로운 프로젝트를 생성합니다.
- 프로젝트 대시보드에서 'Firestore Database' 탭으로 이동합니다.
- 데이터베이스를 만들기 위해 '데이터베이스 만들기' 버튼을 클릭합니다.
- 프로덕션 모드와 테스트 모드 중 하나를 선택할 수 있습니다. 연습용이라면 테스트 모드를 추천합니다.
Firestore에 데이터 추가하기
Firestore에 데이터를 추가하는 과정은 매우 간단합니다. 데이터는 문서 형태로 컬렉션에 저장됩니다. JavaScript를 사용한 예시는 다음과 같습니다:
import { collection, addDoc } from 'firebase/firestore';
const docRef = await addDoc(collection(dbService, 'posts'), {
text: '안녕하세요!',
createdAt: Date.now(),
});
console.log('문서 ID: ', docRef.id);
컬렉션과 문서의 이해
Firestore에서는 데이터가 컬렉션이라는 '폴더' 안에 문서라는 개별 '파일'로 저장됩니다. 각각의 문서는 고유한 ID를 가지며, JSON 형태로 데이터를 포함할 수 있습니다. 이런 구조 덕분에 Firestore는 복잡한 데이터 관계를 유연하게 처리할 수 있습니다.
데이터 조회하기
Firestore에서 저장한 데이터를 조회하는 방법 역시 간단합니다. 문서의 데이터를 읽어오기 위해 getDocs를 사용할 수 있습니다:
import { collection, getDocs } from 'firebase/firestore';
const querySnapshot = await getDocs(collection(db, 'posts'));
querySnapshot.forEach((doc) => {
console.log(doc.id, ' => ', doc.data());
});
실시간 데이터 업데이트
Firestore의 가장 큰 장점 중 하나는 실시간으로 데이터가 업데이트된다는 점입니다. 이를 통해 실시간 애플리케이션을 쉽게 만들 수 있습니다. 실시간 리스너를 추가하여 다음과 같이 구현할 수 있습니다:
import { doc, onSnapshot } from 'firebase/firestore';
const unsubscribe = onSnapshot(doc(db, 'cities', 'SF'), (doc) => {
console.log('현재 데이터: ', doc.data());
});
데이터 삭제 및 업데이트
Firestore에서는 데이터를 삭제하거나 업데이트하는 작업도 간단히 수행할 수 있습니다. 예를 들어, 특정 문서를 삭제하는 방법은 다음과 같습니다:
import { doc, deleteDoc } from 'firebase/firestore';
await deleteDoc(doc(db, 'posts', postObj.id));
데이터 업데이트는 기존 문서를 찾아서 새로운 데이터를 적용하는 방식으로 이루어집니다:
import { doc, updateDoc } from 'firebase/firestore';
const washingtonRef = doc(db, 'cities', 'DC');
await updateDoc(washingtonRef, { capital: true });
Firestore의 오프라인 지원
Firestore는 오프라인 모드도 지원합니다. 이는 네트워크 연결이 불안정하거나 없는 상황에서도 애플리케이션이 정상적으로 작동할 수 있도록 돕습니다. 사용자가 데이터를 입력하면 Firestore는 이를 로컬에 저장하고, 연결이 복구되면 자동으로 클라우드에 동기화합니다.
보안 규칙 설정하기
Firebase Firestore를 사용할 때는 보안 규칙 설정이 필수적입니다. 기본적으로 모든 사용자에게 데이터 접근을 허용하는 것은 금물입니다. 따라서 보안 규칙을 설정하여 접근 권한을 관리하는 것이 중요합니다. 예를 들어, 인증된 사용자만 데이터에 접근할 수 있도록 다음과 같은 규칙을 설정할 수 있습니다:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
결론
Firebase Firestore는 유연하고 강력한 기능을 가진 데이터베이스로, 실시간 앱 및 오프라인 지원이 필요한 프로젝트에 매우 적합합니다. 이번 포스트에서는 Firestore의 기본적인 사용법과 데이터 관리 방법에 대해 살펴보았습니다. Firestore를 활용하여 더 나은 데이터 관리 시스템을 구축하고, 사용자에게 편리한 애플리케이션을 제공하시기 바랍니다.