데이터 일관성 레벨
Datastore 쿼리는 두 가지 일관성 레벨 중 하나로 결과를 제공합니다.
- Strong Consistency를 가진 쿼리는 가장 최신 결과를 보장하지만 완료하는 데 더 오래 걸릴 수 있습니다.
- Eventual Consistency를 가진 쿼리는 일반적으로 더 빠르게 실행되지만 간혹 최신이 아닌 결과를 반환할 수 있습니다.
Eventual Consistency를 가진 쿼리에서는 결과를 수집하는 데 사용되는 색인에 액세스할 때도 eventual consistency가 적용됩니다. 결과적으로 이러한 쿼리는 원래의 기준에 더 이상 일치하지 않는 항목을 반환하는 경우가 있는 반면 strong consistency를 가진 쿼리는 항상 트랜잭션에서 일관적입니다.
Datastore 쿼리 데이터 일관성
쿼리는 각각의 특성에 따라 다양한 레벨의 일관성을 보장하는 결과를 반환합니다.
- 상위 쿼리(항목 그룹 내 쿼리)는 기본적으로 strong consistency를 갖지만 Datastore 읽기 정책을 설정하여 eventual consistency를 갖도록 구성할 수 있습니다(아래 참조).
- 상위 쿼리가 아닌 쿼리는 항상 eventual consistency를 가집니다.
'키로 조회'라고도 부르는 키를 사용한 항목 가져오기는 strong consistency를 가집니다.
Datastore 읽기 정책 설정
성능 향상을 위해 모든 읽기 및 쿼리가 eventual consistency를 가지도록 Datastore 읽기 정책을 설정할 수 있습니다. (이 API를 통해 strong consistency 정책을 명시적으로 설정할 수도 있지만 비 상위 쿼리가 정책에 관계없이 항상 eventual consistency를 가지므로 이 설정은 실제 영향을 주지 않습니다.)
Datastore 호출 기한도 설정할 수 있습니다. 이 값은 애플리케이션이 Datastore에서 결과를 반환하고 오류가 발생하여 중단될 때까지 기다리는 최대 시간을 초 단위로 나타낸 것입니다. 기본 기한은 60초이며 현재는 이보다 더 높게 설정할 수 없습니다. 하지만 특정 작업이 빠르게 실패해서 사용자에게 더 빠른 응답을 반환하도록 더 낮게 조정할 수는 있습니다. Python에서 Datastore 읽기 정책과 호출 기한을 설정하려면Query
또는 GqlQuery
클래스의 run()
, get()
, fetch()
, count()
메서드에 인수로 전달합니다. 예를 들면 다음과 같습니다.
for result in Employee.all().run(limit=5,
read_policy=db.EVENTUAL_CONSISTENCY,
deadline=5):
# Body of iterative loop
다음 단계
- 쿼리가 반환하는 대상을 지정하고 쿼리 결과를 세밀하게 제어하는 방법 알아보기
- Datastore의 쿼리에 대한 일반적인 제한사항 알아보기
- 애플리케이션에서 편리하게 일괄적으로 쿼리 결과를 검색할 수 있게 해주는 쿼리 커서 알아보기
- Datastore의 기본 구문 및 쿼리 구조 알아보기