커뮤니티에서 더 이상 Python 2를 더 이상 지원하지 않습니다. Python 2 앱을 Python 3로 마이그레이션하는 것이 좋습니다.

Python 2의 Datastore 통계

참고: 새로운 애플리케이션을 빌드하는 개발자는 NDB 클라이언트 라이브러리를 사용하는 것이 좋습니다. NDB 클라이언트 라이브러리는 이 클라이언트 라이브러리와 비교할 때 Memcache API를 통한 자동 항목 캐싱과 같은 여러 이점이 있습니다. 현재 이전 DB 클라이언트 라이브러리를 사용 중인 경우 DB에서 NDB로의 마이그레이션 가이드를 참조하세요.

Datastore는 지정된 종류의 항목 수 또는 지정된 유형의 속성 값에서 사용된 공간 등 애플리케이션에 저장된 데이터에 대한 통계를 유지보수합니다. Cloud Console의 대시보드 페이지에서 이러한 통계를 볼 수 있습니다.

또한 Datastore API를 사용하여 항목의 특정 이름을 쿼리하면 애플리케이션 내부에서 프로그래매틱 방식으로 이러한 값에 액세스할 수 있습니다. 각 통계는 종류 이름이 밑줄 두 개로 시작하고 끝나는 형식의 항목으로 액세스할 수 있습니다. 예를 들어 각 앱에는 Datastore의 모든 항목 총계에 대한 통계를 나타내는 __Stat_Total__ 종류 항목이 정확히 한 개 있습니다. 각 통계 항목에는 다음과 같은 속성이 있습니다.

  • count: 통계에서 인식된 항목 수(긴 정수)
  • bytes: 이 통계 항목의 총 크기(긴 정수)
  • timestamp: 통계가 업데이트된 최근 시간(날짜-시간 값)

일부 통계 종류에는 아래에 나열된 추가 속성도 포함됩니다.

Python 애플리케이션은 google.appengine.ext.db.stats 패키지가 제공한 모델 클래스를 사용하여 통계 항목에 액세스할 수 있습니다.

from google.appengine.ext.db import stats

global_stat = stats.GlobalStat.all().get()
print 'Total bytes stored: %d' % global_stat.bytes
print 'Total entities stored: %d' % global_stat.count

통계 시스템이 새로운 통계 항목을 만들면 기존 통계 항목이 즉시 삭제되지 않습니다. 통계 보기의 일관성을 유지하는 가장 좋은 방법은 최신 timestampGlobalStat 항목을 쿼리한 후 다른 통계 항목을 가져올 때 이 타임스탬프 값을 필터로 사용하는 것입니다.

통계 항목은 계산된 통계 값에 포함됩니다. 통계 항목은 애플리케이션에서 사용되는 고유한 종류와 속성 이름 수만큼 공간을 사용합니다.

통계 시스템은 각 네임스페이스별 통계도 만듭니다. 애플리케이션이 Datastore 네임스페이스를 사용하지 않으면 네임스페이스별 통계가 생성되지 않습니다. 네임스페이스별 통계는 통계가 지정된 네임스페이스에서 확인할 수 있습니다. 네임스페이스별 통계의 종류 이름은 __Stat_Ns_ 프리픽스로 시작하고 애플리케이션 전체 통계 종류에 해당되는 동일한 서픽스로 끝납니다.

수천 개의 네임스페이스, 종류 또는 속성 이름이 포함된 애플리케이션에는 수많은 통계 항목이 필요합니다. 통계 저장 및 업데이트의 오버헤드를 합리적인 수준으로 유지하도록 Datastore는 다음 순서에 따라 통계 항목을 점진적으로 삭제합니다.

  • 네임스페이스별, 종류별, 속성별 통계: __Stat_Ns_PropertyName_Kind__, __Stat_Ns_PropertyType_PropertyName_Kind__
  • 종류별 및 속성별 통계: __Stat_PropertyName_Kind__, __Stat_PropertyType_PropertyName_Kind__
  • 네임스페이스별, 종류별 통계: __Stat_Ns_Kind__, __Stat_Ns_Kind_IsRootEntity__, __Stat_Ns_Kind_NotRootEntity__, __Stat_Ns_PropertyType_Kind__
  • 종류별 통계: __Stat_Kind__, __Stat_Kind_IsRootEntity__, __Stat_Kind_NotRootEntity__, __Stat_PropertyType_Kind__
  • 네임스페이스별 통계: __Stat_Namespace__, __Stat_Ns_Kind_CompositeIndex__, __Stat_Ns_PropertyType__, __Stat_Ns_Total__

요약 통계 항목(__Stat_Kind_CompositeIndex__, __Stat_PropertyType__, __Stat_Total__)은 절대 삭제되지 않습니다.

사용 가능한 통계의 전체 목록은 다음과 같습니다.

통계 통계 항목 종류 설명
모든 항목 __Stat_Total__
Python 클래스: GlobalStat
네임스페이스별 항목:
__Stat_Ns_Total__
Python 클래스: NamespaceGlobalStat
모든 항목. 추가 속성:

entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인 항목의 저장용량
builtin_index_count: 내장 색인 항목 수
composite_index_bytes: 바이트 단위로 측정된 복합 색인 항목의 저장용량
composite_index_count: 복합 색인 항목 수
네임스페이스의 모든 항목 __Stat_Namespace__
Python 클래스: NamespaceStat
__Stat_Namespace__ 항목은 각 네임스페이스에 대해 생성되며 비어 있는 문자열 네임스페이스에서만 확인됩니다.
네임스페이스의 모든 항목

subject_namespace: 나타내는 네임스페이스(문자열)
entity_bytes바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인 항목의 저장용량
builtin_index_count: 내장 색인 항목 수
composite_index_bytes: 바이트 단위로 측정된 복합 색인 항목의 저장용량
composite_index_count: 복합 색인 항목 수
애플리케이션에서 정의된 색인의 모든 항목 __Stat_Kind_CompositeIndex__
네임스페이스별 항목: __Stat_Ns_Kind_CompositeIndex__

Python 클래스: KindStat
복합 색인 테이블의 항목(저장된 각 항목 종류당 하나의 통계 항목). 추가 속성:

index_id, 색인 ID
kind_name: 나타내는 종류 이름(문자열)
종류 항목 __Stat_Kind__
Python 클래스: KindStat
네임스페이스별 항목:
__Stat_Ns_Kind__
Python 클래스: NamespaceKindStat
종류의 항목(저장된 각 항목 종류당 하나의 통계 항목) 추가 속성:

kind_name, 나타내는 종류 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인 항목의 저장용량
builtin_index_count: 내장 색인 항목 수
composite_index_bytes: 바이트 단위로 측정된 복합 색인 항목의 저장용량
composite_index_count: 복합 색인 항목 수
종류의 루트 항목 __Stat_Kind_IsRootEntity__
Python 클래스: KindRootEntityStat
네임스페이스별 항목:
__Stat_Ns_Kind_IsRootEntity__
Python 클래스: NamespaceKindRootEntityStat
항목 그룹 루트 항목(상위 없음)인 종류 항목(저장된 항목의 각 종류당 하나의 통계 항목). 추가 속성:

kind_name, 나타내는 종류 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
종류의 비 루트 항목 __Stat_Kind_NotRootEntity__
Python 클래스: KindNotRootEntityStat
네임스페이스별 항목:
__Stat_Ns_Kind_NotRootEntity__
Python 클래스: NamespaceKindNotRootEntityStat
항목 그룹 루트 항목(상위 있음)이 아닌 종류 항목(저장된 항목의 각 종류당 하나의 통계 항목). 추가 속성:

kind_name, 나타내는 종류 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
유형 속성 __Stat_PropertyType__
Python 클래스: PropertyTypeStat
네임스페이스별 항목:
__Stat_Ns_PropertyType__
Python 클래스: NamespacePropertyTypeStat
모든 항목의 값 유형 속성(값 유형당 통계 항목 한 개). 추가 속성:

property_type, 값 유형 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인 항목의 저장용량
builtin_index_count: 내장 색인 항목 수
종류별 유형 속성 __Stat_PropertyType_Kind__
Python 클래스: KindPropertyTypeStat
네임스페이스별 항목:
__Stat_Ns_PropertyType_Kind__
Python 클래스: NamespaceKindPropertyTypeStat
특정 종류 항목 전반에 적용되는 값 유형 속성(값 유형 및 종류 조합당 하나의 통계 항목). 추가 속성:

property_type, 값 유형 이름(문자열)
kind_name: 나타내는 종류 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인의 저장용량
builtin_index_count: 내장 색인 항목 수
이름이 포함된 속성 __Stat_PropertyName_Kind__
Python 클래스: KindPropertyNameStat
네임스페이스별 항목:
__Stat_Ns_PropertyName_Kind__
Python 클래스: NamespaceKindPropertyNameStat
특정 종류의 항목 전반에 이름을 지정하는 속성(고유한 속성 이름 및 종류 조합당 하나의 통계 항목). 추가 속성:

property_name, 속성 이름(문자열)
kind_name: 나타내는 종류 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인 항목의 저장용량
builtin_index_count: 내장 색인 항목 수
이름이 포함된 유형 속성 __Stat_PropertyType_PropertyName_Kind__
Python 클래스: KindPropertyNamePropertyTypeStat
네임스페이스별 항목:
__Stat_Ns_PropertyType_PropertyName_Kind__
Python 클래스: NamespaceKindPropertyNamePropertyTypeStat
특정 종류 항목 전반에 특정 이름 및 특정 값 유형을 적용하는 속성(Datastore에 존재하는 속성 이름, 값 유형, 종류 조합당 하나의 통계 항목). 추가 속성:

property_type, 값 유형 이름(문자열)
property_name, 속성 이름(문자열)
kind_name, 나타내는 종류 이름(문자열)
entity_bytes: 바이트 단위로 측정된 항목 테이블의 저장용량
builtin_index_bytes: 바이트 단위로 측정된 내장 색인 항목의 저장용량
builtin_index_count: 내장 색인 항목 수

일부 통계는 이름별 Datastore 속성 값 유형을 문자열로 참조합니다. 이러한 이름은 다음과 같습니다.

  • "Blob"
  • "BlobKey"
  • "Boolean"
  • "Category"
  • "Date/Time"
  • "Email"
  • "Float"
  • "GeoPt"
  • "IM"
  • "Integer"
  • "Key"
  • "Link"
  • "NULL"
  • "PhoneNumber"
  • "PostalAddress"
  • "Rating"
  • "ShortBlob"
  • "String"
  • "Text"
  • "User"