참고: 새로운 애플리케이션을 빌드하는 개발자는 NDB 클라이언트 라이브러리를 사용하는 것이 좋습니다. NDB 클라이언트 라이브러리는 이 클라이언트 라이브러리와 비교할 때 Memcache API를 통한 자동 항목 캐싱과 같은 여러 이점이 있습니다. 현재 이전 DB 클라이언트 라이브러리를 사용 중인 경우 DB에서 NDB로의 마이그레이션 가이드를 참조하세요.
Datastore는 지정된 종류의 항목 수 또는 지정된 유형의 속성 값에서 사용된 공간 등 애플리케이션에 저장된 데이터에 대한 통계를 유지관리합니다. Google Cloud 콘솔의 대시보드 페이지에서 이러한 통계를 볼 수 있습니다.
또한 Datastore API를 사용하여 항목의 특정 이름을 쿼리하면 애플리케이션 내부에서 프로그래매틱 방식으로 이러한 값에 액세스할 수도 있습니다.
각 통계는 종류 이름이 밑줄 2개로 시작하고 끝나는 형식의 항목으로 액세스할 수 있습니다. 예를 들어 각 앱에는 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
통계 시스템이 새로운 통계 항목을 만들면 기존 통계 항목이 즉시 삭제되지 않습니다. 통계 보기의 일관성을 유지하는 가장 좋은 방법은 최신 timestamp
로 GlobalStat
항목을 쿼리한 후 다른 통계 항목을 가져올 때 이 타임스탬프 값을 필터로 사용하는 것입니다.
통계 항목은 계산된 통계 값에 포함됩니다. 통계 항목은 애플리케이션에서 사용되는 고유한 종류와 속성 이름 수만큼 공간을 사용합니다.
통계 시스템은 각 네임스페이스별 통계도 만듭니다. 애플리케이션이 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"