Estadísticas de Datastore en Java 8

Cloud Datastore mantiene estadísticas de los datos almacenados para una aplicación, como la cantidad de entidades existentes de categorías en específico o la cantidad de espacio que usan los valores de propiedad de un tipo específico. Puedes ver estas estadísticas en la página Panel de GCP Console.

Asimismo, puedes acceder de manera programática a estos valores dentro de la aplicación mediante consultas sobre entidades con nombres especiales que usan la API de Cloud Datastore. Cada estadística es accesible como entidad cuyo nombre de categoría comienza y termina con dos guiones bajos. Por ejemplo, cada aplicación tiene exactamente una entidad de la categoría __Stat_Total__ que representa las estadísticas de todas las entidades que hay en total en Cloud Datastore. Cada entidad de estadística tiene las propiedades siguientes:

  • count, la cantidad de elementos que considera la estadística (un número entero largo);
  • bytes, el tamaño total de los elementos para esta estadística (un número entero largo)
  • timestamp, la marca de tiempo de la actualización más reciente de la estadística (un valor de fecha y hora)

Algunas categorías de estadísticas también tienen propiedades adicionales que se mencionan a continuación.

Una aplicación Java puede acceder a entidades estadísticas con la API de nivel bajo. Por ejemplo:

Java 8

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity globalStat = datastore.prepare(new Query("__Stat_Total__")).asSingleEntity();
Long totalBytes = (Long) globalStat.getProperty("bytes");
Long totalEntities = (Long) globalStat.getProperty("count");

Java 7

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity globalStat = datastore.prepare(new Query("__Stat_Total__")).asSingleEntity();
Long totalBytes = (Long) globalStat.getProperty("bytes");
Long totalEntities = (Long) globalStat.getProperty("count");

Cuando el sistema de estadísticas crea entidades estadísticas nuevas, no borra las anteriores enseguida. La mejor manera de obtener una vista coherente de la estadística es haciendo una consulta sobre la entidad __Stat_Total__ con la timestamp más reciente y luego usar el valor de esa marca de tiempo como filtro cuando se recuperan otras entidades estadísticas.

Las entidades estadísticas se incluyen en los valores estadísticos calculados. Estas entidades ocupan el espacio relativo al número de categorías únicas y los nombres de propiedad usados por la aplicación.

El sistema de estadísticas también creará estadísticas específicas para cada espacio de nombres. Ten en cuenta que si una aplicación no usa espacios de nombres de Cloud Datastore, entonces no se crearán estadísticas específicas del espacio de nombres. Estas estadísticas se encuentran en el espacio de nombres al que corresponden. Los nombres de categoría de las estadísticas específicas de espacio de nombres tienen el prefijo __Stat_Ns_ y el mismo sufijo correspondiente como categorías de estadísticas de toda la aplicación.

Las aplicaciones con miles de espacios de nombres, categorías o nombres de propiedad necesitan un gran número de entidades estadísticas. Para mantener la sobrecarga de almacenamiento y la actualización de las estadísticas en un nivel razonable, Cloud Datastore quita entidades estadísticas de manera progresiva en el orden siguiente:

  • estadísticas por espacio de nombres, por categoría y por propiedad: __Stat_Ns_PropertyName_Kind__, __Stat_Ns_PropertyType_PropertyName_Kind__
  • estadísticas por categoría y por propiedad: __Stat_PropertyName_Kind__, __Stat_PropertyType_PropertyName_Kind__
  • estadísticas por espacio de nombres y por categoría: __Stat_Ns_Kind__, __Stat_Ns_Kind_IsRootEntity__, __Stat_Ns_Kind_NotRootEntity__, __Stat_Ns_PropertyType_Kind__
  • estadísticas por categoría: __Stat_Kind__, __Stat_Kind_IsRootEntity__, __Stat_Kind_NotRootEntity__, __Stat_PropertyType_Kind__
  • estadísticas por espacio de nombres: __Stat_Namespace__, __Stat_Ns_Kind_CompositeIndex__, __Stat_Ns_PropertyType__, __Stat_Ns_Total__

Nunca se quitan las entidades estadísticas de resumen (__Stat_Kind_CompositeIndex__, __Stat_PropertyType__, __Stat_Total__).

Estas son todas las estadísticas disponibles:

Estadística Categoría de la entidad estadística Descripción
Todas las entidades __Stat_Total__
Entrada específica del espacio de nombres:
__Stat_Ns_Total__
Todas las entidades. Propiedades adicionales:

entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en entradas de un índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.
composite_index_bytes: El almacenamiento en entradas de un índice compuesto, medido en bytes.
composite_index_count: El conteo de entradas de un índice compuesto.
Todas las entidades en un espacio de nombres __Stat_Namespace__
Ten en cuenta que las entidades __Stat_Namespace__ son creadas por cada espacio de nombres encontrado y solo se encuentran en el espacio de nombres de la string vacía.
Todas las entidades en un espacio de nombres.

subject_namespace, el espacio de nombres representado (una string).
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en entradas de un índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.
composite_index_bytes: El almacenamiento en entradas de un índice compuesto, medido en bytes.
composite_index_count: El conteo de entradas de un índice compuesto.
Todas las entradas en índices definidos de la aplicación __Stat_Kind_CompositeIndex__
Entrada específica de espacio de nombres: __Stat_Ns_Kind_CompositeIndex__
Entradas en la tabla del índice compuesto; una entidad estadística por cada grupo de similares de entidad almacenada. Propiedades adicionales:

index_id, el ID del índice.
kind_name, el nombre de la categoría representada (una string)
Entidades de un grupo de similares __Stat_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_Kind__
Entidades de un grupo de similares; una entidad estadística por cada grupo de similares de entidad almacenado. Propiedades adicionales:

kind_name, el nombre de la categoría representada (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en entradas de un índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.
composite_index_bytes: El almacenamiento en entradas de un índice compuesto, medido en bytes.
composite_index_count: El conteo de entradas de un índice compuesto.
Entidades raíz de un grupo de similares __Stat_Kind_IsRootEntity__
Entrada específica del espacio de nombres:
__Stat_Ns_Kind_IsRootEntity__
Entidades de un grupo de similares que son entidades raíz de un grupo de entidad (no tienen una entidad principal superior); una entidad estadística por cada grupo de similares de entidad almacenado. Propiedades adicionales:

kind_name, el nombre de la categoría representada (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
Entidades no raíz de un grupo de similares __Stat_Kind_NotRootEntity__
Entrada específica del espacio de nombres:
__Stat_Ns_Kind_NotRootEntity__
Entidades de un grupo de similares que no son entidades raíz de un grupo de entidad (tienen una entidad principal superior); una entidad estadística por cada grupo de similares de entidad almacenado. Propiedades adicionales:

kind_name, el nombre de la categoría representada (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
Propiedades de un tipo __Stat_PropertyType__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyType__
Propiedades de un tipo de valor en todas las entidades; una entidad estadística por tipo de valor. Propiedades adicionales:

property_type, el nombre del tipo de valor (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en entradas de un índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.
Propiedades de un tipo por grupo de similares __Stat_PropertyType_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyType_Kind__
Las propiedades de un tipo de valor en entidades de un grupo de similares determinado; una entidad estadística por combinación de tipo de propiedad y grupo de similares. Propiedades adicionales:

property_type, el nombre del tipo de valor (una string)
kind_name, el nombre de la categoría representada (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en el índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.
Propiedades con nombre __Stat_PropertyName_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyName_Kind__
Las propiedades con un nombre determinado en las entidades de un grupo de similares determinado; una entidad estadística por combinación de tipo de propiedad y grupo de similares. Propiedades adicionales:

property_name, el nombre de la propiedad (una string)
kind_name, el nombre de la categoría representada (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en entradas de un índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.
Propiedades de un tipo y con un nombre __Stat_PropertyType_PropertyName_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyType_PropertyName_Kind__
Las propiedades con un nombre y valor determinados en las entidades de un grupo de similares determinado; una entidad estadística por combinación del nombre de propiedad, tipo de valor y grupo de similares que existe en Cloud Datastore. Propiedades adicionales:

property_type, el nombre del tipo de valor (una string)
property_name, el nombre de la propiedad (una string)
kind_name, el nombre de la categoría representada (una string)
entity_bytes: El almacenamiento en la tabla de entidades medido en bytes.
builtin_index_bytes: El almacenamiento en entradas de un índice integrado, medido en bytes.
builtin_index_count: El conteo de entradas de un índice integrado.

Algunas estadísticas se refieren a tipos de valor de propiedad de Cloud Datastore por nombre, como strings. Los nombres son los que se muestran a continuación:

  • "Blob"
  • "BlobKey"
  • "Boolean"
  • "Category"
  • "Date/Time"
  • "Email"
  • "Float"
  • "GeoPt"
  • "IM"
  • "Integer"
  • "Key"
  • "Link"
  • "NULL"
  • "PhoneNumber"
  • "PostalAddress"
  • "Rating"
  • "ShortBlob"
  • "String"
  • "Text"
  • "User"
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java 8