Estadísticas de Datastore en Java

Cloud Datastore mantiene estadísticas de los datos almacenados en una aplicación, como la cantidad de entidades existentes de una categoría en particular 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 del Panel en GCP Console.

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

  • count, la cantidad de elementos considerados en la estadística (un número entero largo)
  • bytes, el tamaño total de los elementos dentro de la estadística (un número entero largo)
  • timestamp, el 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 relacionado con la cantidad de categorías únicas y los nombres de propiedad usados por la aplicación.

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

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

  • 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__).

La lista completa de estadísticas disponibles es la siguiente:

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 las entradas del índice integrado medido en bytes.
builtin_index_count: el recuento de entradas del índice integrado.
composite_index_bytes: El almacenamiento en las entradas del índice compuesto medido en bytes.
composite_index_count: El recuento de entradas del í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 las entradas del índice integrado medido en bytes.
builtin_index_count: el recuento de entradas del índice integrado.
composite_index_bytes: El almacenamiento en las entradas del índice compuesto medido en bytes.
composite_index_count: El recuento de entradas del índice compuesto.
todas las entradas en los índices definidos de la aplicación __Stat_Kind_CompositeIndex__
Entrada específica del espacio de nombres: __Stat_Ns_Kind_CompositeIndex__
Entradas en la tabla del índice compuesto; una entidad estadística por cada categoría de entidad almacenada. Propiedades adicionales:

index_id, el id del índice.
kind_name, el nombre de la categoría representada (una string)
entidades de una categoría __Stat_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_Kind__
Entidades de una categoría; una entidad estadística por cada categoría de entidad almacenada. 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 las entradas del índice integrado medido en bytes.
builtin_index_count: el recuento de entradas del índice integrado.
composite_index_bytes: El almacenamiento en las entradas del índice compuesto medido en bytes.
composite_index_count: El recuento de entradas del índice compuesto.
entidades raíz de una categoría __Stat_Kind_IsRootEntity__
Entrada específica del espacio de nombres:
__Stat_Ns_Kind_IsRootEntity__
Entidades de una categoría que son entidades raíz de un grupo de entidad (no tienen una entidad principal superior); una entidad estadística para cada categoría de entidad almacenada. 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 una categoría __Stat_Kind_NotRootEntity__
Entrada específica del espacio de nombres:
__Stat_Ns_Kind_NotRootEntity__
Entidades de una categoría que no son entidades raíz de un grupo de entidad (tienen una entidad principal superior); una entidad estadística para cada categoría de entidad almacenada. 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 las entradas del índice integrado medido en bytes.
builtin_index_count: el recuento de entradas del índice integrado.
propiedades de un tipo por categoría __Stat_PropertyType_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyType_Kind__
Propiedades de un tipo de valor en las entidades de una categoría específica; una entidad estadística por combinación de tipos y categorías de propiedad. 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 recuento de entradas del índice integrado.
propiedades con un nombre __Stat_PropertyName_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyName_Kind__
Propiedades con un nombre específico en las entidades de una categoría específica; una entidad estadística por combinación de nombre y categoría de propiedad única. 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 las entradas del índice integrado medido en bytes.
builtin_index_count: el recuento de entradas del índice integrado.
Propiedades de una categoría y con un nombre __Stat_PropertyType_PropertyName_Kind__
Entrada específica del espacio de nombres:
__Stat_Ns_PropertyType_PropertyName_Kind__
Propiedades con un nombre específico y de un tipo de valor específico en las entidades de una categoría específica; una entidad estadística por combinación de nombre de propiedad, tipo de valor y categoría que haya 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 las entradas del índice integrado medido en bytes.
builtin_index_count: el recuento de entradas del índice integrado.

Algunas estadísticas se refieren a tipos de valor de propiedad de Cloud Datastore por nombre, como strings. Estos nombres son los siguientes:

  • "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