- 원자적 트랜잭션: 모든 작업이 성공하거나 아무 작업도 발생하지 않는 작업 집합을 실행합니다.
- 읽기 및 쓰기의 고가용성: 데이터베이스는 중복성을 사용하여 장애점의 영향을 최소화하는 Google 데이터 센터에서 실행됩니다.
- 고성능의 대규모 확장성: 분산 아키텍처는 확장을 자동으로 관리하고 과부하 상태에서 성능을 유지합니다.
- 유연한 데이터 저장 및 쿼리: 문서 데이터 모델은 객체 지향 및 스크립팅 언어에 자연스럽게 매핑되며 여러 클라이언트를 통해 애플리케이션에 노출됩니다. Firestore의 Datastore 호환 API는 SQL과 유사한 쿼리 언어도 제공합니다.
- Strong consistency: 쿼리는 strong consistency를 가집니다.
- 저장 데이터 암호화: 데이터가 디스크에 기록되기 전에 자동으로 암호화되고 승인된 사용자가 읽을 때 자동으로 복호화됩니다. 자세한 내용은 서버 측 암호화를 참고하세요.
- 계획된 다운타임 없는 완전 관리형: Google에서 서비스 관리를 책임지므로 개발자는 애플리케이션 개발에 집중할 수 있습니다. 서비스가 계획된 일정에 따라 업그레이드되는 동안에도 애플리케이션에서 계속 Firestore를 사용할 수 있습니다.
관계형 데이터베이스와 비교
Datastore 인터페이스는 많은 기능이 관계형 데이터베이스와 비슷하지만 NoSQL 데이터베이스로서 데이터 객체 간의 관계를 설명하는 방법이 다릅니다. Datastore 개념과 관계형 데이터베이스 개념을 개괄적으로 비교하면 다음과 같습니다.
| 개념 | Datastore | Firestore | 관계형 데이터베이스 |
|---|---|---|---|
| 객체 카테고리 | 종류 | 컬렉션 그룹 | 표 |
| 단일 객체 | 항목 | 문서 | 행 |
| 객체의 개별 데이터 | 속성 | 필드 | 열 |
| 객체의 고유 ID | 키 | 문서 ID | 기본 키 |
관계형 데이터베이스 테이블의 행과 달리 동일한 종류의 Datastore 항목에는 여러 가지 속성이 있을 수 있고, 각 항목마다 이름은 동일하지만 값 유형이 다른 속성이 있을 수 있습니다. 이러한 고유한 특성을 사용하여 데이터를 설계하고 관리하여 자동으로 확장할 수 있습니다.
모든 쿼리는 이전에 빌드된 색인에서 처리되므로 Datastore API가 실행할 수 있는 쿼리 유형은 SQL이 있는 관계형 데이터베이스에서 허용되는 유형보다 제한적입니다. 특히 Datastore는 조인 작업, 여러 속성에 대한 불일치 필터링 또는 하위 쿼리 결과를 기반으로 한 데이터 필터링을 지원하지 않습니다. 애플리케이션에 조인 및 하위 쿼리를 비롯한 고급 쿼리 기능이 필요한 경우 Firestore 네이티브 API 또는 MongoDB 호환 API를 사용하는 것이 좋습니다.
스키마를 강제하는 관계형 데이터베이스와 달리 Datastore에는 스키마가 없습니다. 일관된 속성 집합을 갖기 위해 반드시 같은 종류의 항목이 필요한 것은 아닙니다. 하지만 애플리케이션 코드에서 이러한 요구 사항을 강제할 수 있습니다.
기타 스토리지 및 데이터베이스 옵션
Firestore의 Datastore 호환 API는 레거시 App Engine 애플리케이션을 지원하기 위한 것입니다. 새 애플리케이션을 위한 문서 지향 NoSQL 데이터베이스를 찾고 있다면 Datastore API 대신 Firestore API 중 하나를 사용하여 고급 기능을 활용하는 것이 좋습니다. 사용 가능한 옵션에 대해 자세히 알아보기
Firestore는 확장성이 높은 문서 데이터베이스로, 일부 사용 사례에는 적합하지 않을 수 있습니다. 예를 들어 관계형 데이터베이스를 대체하는 데는 적합하지 않을 수 있습니다. 다음은 대체 데이터베이스를 고려할 수 있는 몇 가지 일반적인 시나리오입니다.
- OLTP(온라인 트랜잭션 처리) 시스템에 전체 SQL 지원을 제공하는 관계형 데이터베이스가 필요한 경우에는 Cloud SQL을 사용하는 것이 좋습니다.
- ACID 트랜잭션을 위한 지원이 필요하지 않거나 데이터의 구조화 수준이 높지 않은 경우에는 Bigtable을 사용하는 것이 좋습니다.
- OLAP(온라인 분석 처리) 시스템을 위해 양방향 쿼리가 필요한 경우에는 BigQuery를 사용하는 것이 좋습니다.
- 대용량 이미지 또는 영화와 같이 변하지 않는 대용량 blob을 저장해야 하는 경우에는 Cloud Storage를 사용하는 것이 좋습니다.
다른 데이터베이스 옵션에 대한 자세한 내용은 데이터베이스 서비스 개요를 참조하세요.