Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Escrituras
Puede recopilar datos de series temporales de dispositivos conectados, sistemas de TI y equipos industriales y escribirlos en Timestream for Live Analytics. Timestream para Live Analytics le permite escribir puntos de datos de una sola serie temporal o puntos de datos de varias series en una sola solicitud de escritura cuando las series temporales pertenecen a la misma tabla. Para su comodidad, Timestream for Live Analytics le ofrece un esquema flexible que detecta automáticamente los nombres de las columnas y los tipos de datos de las tablas de Timestream for Live Analytics en función de los nombres de las dimensiones y los tipos de datos de los valores de medida que especifique al invocar las escrituras en la base de datos. También puede escribir lotes de datos en Timestream for Live Analytics.
nota
Timestream for Live Analytics admite una semántica de coherencia eventual para las lecturas. Esto significa que cuando consulta datos inmediatamente después de escribir un lote de datos en Timestream for Live Analytics, es posible que los resultados de la consulta no reflejen los resultados de una operación de escritura completada recientemente. Es posible que los resultados también incluyan algunos datos obsoletos. Del mismo modo, al escribir datos de series temporales con una o más dimensiones nuevas, una consulta puede devolver un subconjunto parcial de columnas durante un breve período de tiempo. Si repite estas solicitudes de consulta después de un breve período de tiempo, los resultados deberían devolver los datos más recientes.
Puede escribir datos con AWS SDKs, AWS CLI, o mediante AWS Lambda AWS IoT CoreAmazon Managed Service para Apache Flink, Amazon KinesisAmazon MSK, yTelegraf de código abierto.
Temas
Tipos de datos
Timestream for Live Analytics admite los siguientes tipos de datos para las escrituras.
Tipo de datos | Descripción |
---|---|
BIGINT |
Representa un entero con signo de 64 bits. |
BOOLEAN |
Representa los dos valores de verdad de la lógica, a saber, verdadero y falso. |
DOUBLE |
Precisión variable de 64 bits que implementa el IEEE estándar 754 para aritmética binaria de punto flotante. notaHay funciones de lenguaje de consulta para valores |
VARCHAR |
Datos de caracteres de longitud variable con una longitud máxima opcional. El límite máximo es de 2 KB. |
MULTI |
Tipo de datos para registros de medidas múltiples. Este tipo de datos incluye una o más medidas del tipo |
TIMESTAMP |
Representa una instancia en el tiempo utilizando un tiempo de precisión de nanosegundos enUTC, registrando el tiempo transcurrido desde la hora de Unix. Actualmente, este tipo de datos solo se admite para registros de medidas múltiples (es decir, dentro de los valores de medición del tipo).
Escribe marcas de tiempo de soporte en el intervalo de 0 a. |
No hay una definición de esquema inicial
Antes de enviar datos a Amazon Timestream for Live Analytics, debe crear una base de datos y una tabla mediante AWS Management Console las operaciones Timestream for Live Analytics o Timestream for Live SDKs Analytics. API Para obtener más información, consulte Creación de una base de datos de y Creación de una tabla. Al crear la tabla, no necesita definir el esquema por adelantado. Amazon Timestream for Live Analytics detecta automáticamente el esquema en función de las medidas y dimensiones de los puntos de datos que se envían, por lo que ya no es necesario modificar el esquema sin conexión para adaptarlo a los datos de series temporales que cambian rápidamente.
Escribir datos (inserciones y ajustes)
La operación de escritura en Amazon Timestream for Live Analytics le permite insertar y modificar datos. De forma predeterminada, las escrituras en Amazon Timestream para Live Analytics siguen al primer escritor gana la semántica, en la que los datos se almacenan solo como datos adjuntos y se rechazan los registros duplicados. Si bien el primer escritor gana, la semántica satisface los requisitos de muchas aplicaciones de series temporales, hay situaciones en las que las aplicaciones necesitan actualizar los registros existentes de forma idempotente o escribir datos con la semántica que gana el último escritor, gana la semántica, en la que el registro con la versión más alta se almacena en el servicio. Para abordar estos escenarios, Amazon Timestream for Live Analytics ofrece la posibilidad de alterar los datos. Upsert es una operación que inserta un registro en el sistema cuando el registro no existe o lo actualiza cuando existe uno. Cuando se actualiza el registro, se actualiza de forma idempotente.
No hay ninguna operación de borrado a nivel de registro. Sin embargo, las tablas y las bases de datos se pueden eliminar.
Escribir datos en el almacén de memoria y en el almacén magnético
Amazon Timestream for Live Analytics ofrece la posibilidad de escribir datos directamente en el almacén de memoria y en el almacén magnético. El almacén de memoria está optimizado para escrituras de datos de alto rendimiento y el almacenamiento magnético está optimizado para escrituras con menor rendimiento de los datos que llegan tarde.
Los datos que llegan tarde son datos con una marca de tiempo anterior a la hora actual y fuera del período de retención del almacén de memoria. Debe habilitar explícitamente la capacidad de escribir los datos que lleguen tarde en el almacén magnético habilitando la escritura en el almacén magnético para la tabla. Además, MagneticStoreRejectedDataLocation
se define al crear una tabla. Para escribir en el almacén magnético, las personas que llaman WriteRecords
deben tener los S3:PutObject
permisos para acceder al bucket de S3 especificado MagneticStoreRejectedDataLocation
durante la creación de la tabla. Para obtener más información, consulte CreateTableWriteRecords, y PutObject.
Escribir datos con registros de una sola medida y registros de múltiples medidas
Amazon Timestream for Live Analytics ofrece la posibilidad de escribir datos mediante dos tipos de registros, a saber, registros de una sola medida y registros de múltiples medidas.
Registros de medida única
Los registros de una sola medida le permiten enviar una sola medida por registro. Cuando los datos se envían a Timestream for Live Analytics con este formato, Timestream for Live Analytics crea una fila de tabla por registro. Esto significa que si un dispositivo emite 4 métricas y cada métrica se envía como un registro de una sola medida, Timestream for Live Analytics creará 4 filas en la tabla para almacenar estos datos y los atributos del dispositivo se repetirán para cada fila. Se recomienda este formato en los casos en los que desee supervisar una única métrica de una aplicación o cuando la aplicación no emita varias métricas al mismo tiempo.
Registros de medidas múltiples
Con los registros de múltiples medidas, puede almacenar varias medidas en una sola fila de la tabla, en lugar de almacenar una medida por fila de la tabla. Por lo tanto, los registros de medidas múltiples le permiten migrar los datos existentes de las bases de datos relacionales a Amazon Timestream for Live Analytics con cambios mínimos.
También puede agrupar más datos en una sola solicitud de escritura que los registros de una sola medida. Esto aumenta el rendimiento y el rendimiento de la escritura de datos y, además, reduce el coste de la escritura de datos. Esto se debe a que agrupar más datos en una solicitud de escritura permite a Amazon Timestream for Live Analytics identificar más datos repetibles en una sola solicitud de escritura (cuando proceda) y cobrar solo una vez por los datos repetidos.
Temas
Registros de medidas múltiples
Con los registros de medidas múltiples, puede almacenar sus datos de series temporales en un formato más compacto en la memoria y en el almacén magnético, lo que ayuda a reducir los costos de almacenamiento de datos. Además, el almacenamiento de datos compacto se presta para escribir consultas más sencillas para la recuperación de datos, mejora el rendimiento de las consultas y reduce el coste de las consultas.
Además, los registros de múltiples medidas también admiten el tipo de TIMESTAMP datos para almacenar más de una marca temporal en un registro de series temporales. TIMESTAMPlos atributos de un registro de múltiples medidas admiten marcas de tiempo en el futuro o en el pasado. Por lo tanto, los registros de medidas múltiples ayudan a mejorar el rendimiento, el coste y la simplicidad de las consultas, y ofrecen más flexibilidad para almacenar diferentes tipos de medidas correlacionadas.
Ventajas
Los siguientes son los beneficios de usar registros de múltiples medidas.
-
Rendimiento y coste: los registros de múltiples medidas permiten escribir varias medidas de series temporales en una sola solicitud de escritura. Esto aumenta el rendimiento de escritura y también reduce el costo de las escrituras. Con los registros de múltiples medidas, puede almacenar los datos de una manera más compacta, lo que ayuda a reducir los costos de almacenamiento de datos. El almacenamiento compacto de datos de los registros de múltiples medidas hace que las consultas procesen menos datos. Esto está diseñado para mejorar el rendimiento general de las consultas y ayudar a reducir el costo de las consultas.
-
Simplicidad de consulta: con los registros de varias medidas, no es necesario escribir expresiones de tabla comunes y complejas (CTEs) en una consulta para leer varias medidas con la misma marca de tiempo. Esto se debe a que las medidas se almacenan como columnas en una sola fila de la tabla. Por lo tanto, los registros de medidas múltiples permiten escribir consultas más sencillas.
-
Flexibilidad de modelado de datos: puede escribir marcas de tiempo futuras en Timestream for Live Analytics mediante el tipo de TIMESTAMP datos y los registros de medidas múltiples. Un registro de múltiples medidas puede tener varios atributos de tipo de TIMESTAMP datos, además del campo de tiempo de un registro. TIMESTAMPLos atributos, en un registro de múltiples medidas, pueden tener marcas de tiempo en el futuro o en el pasado y comportarse como el campo de tiempo, excepto que Timestream for Live Analytics no indexa los valores de tipo TIMESTAMP en un registro de múltiples medidas.
Casos de uso
Puede usar registros de múltiples medidas para cualquier aplicación de series temporales que genere más de una medición desde el mismo dispositivo en un momento dado. A continuación se muestran algunos ejemplos de aplicaciones.
-
Una plataforma de transmisión de vídeo que genera cientos de métricas en un momento dado.
-
Dispositivos médicos que generan mediciones como los niveles de oxígeno en sangre, la frecuencia cardíaca y el pulso.
-
Equipos industriales, como plataformas petrolíferas, que generan sensores métricos, de temperatura y meteorológicos.
-
Otras aplicaciones que están diseñadas con uno o más microservicios.
Ejemplo: supervisar el rendimiento y el estado de una aplicación de streaming de vídeo
Considere una aplicación de streaming de vídeo que se ejecute en 200 EC2 instancias. Desea utilizar Amazon Timestream for Live Analytics para almacenar y analizar las métricas emitidas por la aplicación, de modo que pueda comprender el rendimiento y el estado de la aplicación, identificar rápidamente las anomalías, resolver problemas y descubrir oportunidades de optimización.
Modelaremos este escenario con registros de una sola medida y registros de múltiples medidas y, a continuación, compararemos o contrastaremos ambos enfoques. Para cada enfoque, hacemos las siguientes suposiciones.
-
Cada EC2 instancia emite cuatro medidas (video_startup_time, rebuffering_ratio, video_playback_failures y average_frame_rate) y cuatro dimensiones (device_id, device_type, os_version y region) por segundo.
-
Desea almacenar 6 horas de datos en el almacén de memoria y 6 meses de datos en el almacén magnético.
-
Para identificar las anomalías, ha configurado 10 consultas que se ejecutan cada minuto para identificar cualquier actividad inusual que se haya producido en los últimos minutos. También ha creado un panel de control con ocho widgets que muestran los datos de las últimas 6 horas, para que pueda supervisar su aplicación de forma eficaz. Cinco usuarios acceden a este panel en un momento dado y se actualiza automáticamente cada hora.
Uso de registros de una sola medida
Modelado de datos: con los registros de una sola medida, crearemos un registro para cada una de las cuatro medidas (tiempo de inicio del vídeo, relación de realmacenamiento en búfer, errores de reproducción del vídeo y velocidad media de fotogramas). Cada registro tendrá las cuatro dimensiones (device_id, device_type, os_version y region) y una marca de tiempo.
Escritura: al escribir datos en Amazon Timestream for Live Analytics, los registros se crean de la siguiente manera.
public void writeRecords() { System.out.println("Writing records"); // Specify repeated values for all records List<Record> records = new ArrayList<>(); final long time = System.currentTimeMillis(); List<Dimension> dimensions = new ArrayList<>(); final Dimension device_id = new Dimension().withName("device_id").withValue("12345678"); final Dimension device_type = new Dimension().withName("device_type").withValue("iPhone 11"); final Dimension os_version = new Dimension().withName("os_version").withValue("14.8"); final Dimension region = new Dimension().withName("region").withValue("us-east-1"); dimensions.add(device_id); dimensions.add(device_type); dimensions.add(os_version); dimensions.add(region); Record videoStartupTime = new Record() .withDimensions(dimensions) .withMeasureName("video_startup_time") .withMeasureValue("200") .withMeasureValueType(MeasureValueType.BIGINT) .withTime(String.valueOf(time)); Record rebufferingRatio = new Record() .withDimensions(dimensions) .withMeasureName("rebuffering_ratio") .withMeasureValue("0.5") .withMeasureValueType(MeasureValueType.DOUBLE) .withTime(String.valueOf(time)); Record videoPlaybackFailures = new Record() .withDimensions(dimensions) .withMeasureName("video_playback_failures") .withMeasureValue("0") .withMeasureValueType(MeasureValueType.BIGINT) .withTime(String.valueOf(time)); Record averageFrameRate = new Record() .withDimensions(dimensions) .withMeasureName("average_frame_rate") .withMeasureValue("0.5") .withMeasureValueType(MeasureValueType.DOUBLE) .withTime(String.valueOf(time)); records.add(videoStartupTime); records.add(rebufferingRatio); records.add(videoPlaybackFailures); records.add(averageFrameRate); WriteRecordsRequest writeRecordsRequest = new WriteRecordsRequest() .withDatabaseName(DATABASE_NAME) .withTableName(TABLE_NAME) .withRecords(records); try { WriteRecordsResult writeRecordsResult = amazonTimestreamWrite.writeRecords(writeRecordsRequest); System.out.println("WriteRecords Status: " + writeRecordsResult.getSdkHttpMetadata().getHttpStatusCode()); } catch (RejectedRecordsException e) { System.out.println("RejectedRecords: " + e); for (RejectedRecord rejectedRecord : e.getRejectedRecords()) { System.out.println("Rejected Index " + rejectedRecord.getRecordIndex() + ": " + rejectedRecord.getReason()); } System.out.println("Other records were written successfully. "); } catch (Exception e) { System.out.println("Error: " + e); } }
Al almacenar registros de una sola medida, los datos se representan lógicamente de la siguiente manera.
Tiempo | device_id | tipo_dispositivo | os_version | región | measure_name | measure_value::bigint | measure_value::double |
---|---|---|---|---|---|---|---|
2021-09-07 21:48:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
video_startup_time |
200 |
|
2021-09-07 21:48:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
ratio de rebúfer |
0,5 |
|
2021-09-07 21:48:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
fallos en la reproducción de vídeo |
0 |
|
2021-09-07 21:48:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
velocidad_de_fotogramas media |
0.85 |
|
2021-09-07 21:53:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
video_startup_time |
500 |
|
2021-09-07 21:53:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
ratio de rebúfer |
1.5 |
|
2021-09-07 21:53:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
fallos en la reproducción de vídeo |
10 |
|
2021-09-07 21:53:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
velocidad_de_fotogramas media |
0.2 |
Consultas: puede escribir una consulta que recupere todos los puntos de datos con la misma marca de tiempo recibidos en los últimos 15 minutos de la siguiente manera.
with cte_video_startup_time as ( SELECT time, device_id, device_type, os_version, region, measure_value::bigint as video_startup_time FROM table where time >= ago(15m) and measure_name=”video_startup_time”), cte_rebuffering_ratio as ( SELECT time, device_id, device_type, os_version, region, measure_value::double as rebuffering_ratio FROM table where time >= ago(15m) and measure_name=”rebuffering_ratio”), cte_video_playback_failures as ( SELECT time, device_id, device_type, os_version, region, measure_value::bigint as video_playback_failures FROM table where time >= ago(15m) and measure_name=”video_playback_failures”), cte_average_frame_rate as ( SELECT time, device_id, device_type, os_version, region, measure_value::double as average_frame_rate FROM table where time >= ago(15m) and measure_name=”average_frame_rate”) SELECT a.time, a.device_id, a.os_version, a.region, a.video_startup_time, b.rebuffering_ratio, c.video_playback_failures, d.average_frame_rate FROM cte_video_startup_time a, cte_buffering_ratio b, cte_video_playback_failures c, cte_average_frame_rate d WHERE a.time = b.time AND a.device_id = b.device_id AND a.os_version = b.os_version AND a.region=b.region AND a.time = c.time AND a.device_id = c.device_id AND a.os_version = c.os_version AND a.region=c.region AND a.time = d.time AND a.device_id = d.device_id AND a.os_version = d.os_version AND a.region=d.region
Coste de la carga de trabajo: el coste de esta carga de trabajo se estima en 373,23$ al mes con registros de una sola medida
Uso de registros de múltiples medidas
Modelado de datos: con los registros de medidas múltiples, crearemos un registro que contenga las cuatro medidas (tiempo de inicio del vídeo, relación de realmacenamiento, errores de reproducción del vídeo y velocidad media de fotogramas), las cuatro dimensiones (device_id, device_type, os_version y región) y una marca de tiempo.
Escritura: al escribir datos en Amazon Timestream for Live Analytics, los registros se crean de la siguiente manera.
public void writeRecords() { System.out.println("Writing records"); // Specify repeated values for all records List<Record> records = new ArrayList<>(); final long time = System.currentTimeMillis(); List<Dimension> dimensions = new ArrayList<>(); final Dimension device_id = new Dimension().withName("device_id").withValue("12345678"); final Dimension device_type = new Dimension().withName("device_type").withValue("iPhone 11"); final Dimension os_version = new Dimension().withName("os_version").withValue("14.8"); final Dimension region = new Dimension().withName("region").withValue("us-east-1"); dimensions.add(device_id); dimensions.add(device_type); dimensions.add(os_version); dimensions.add(region); Record videoMetrics = new Record() .withDimensions(dimensions) .withMeasureName("video_metrics") .withTime(String.valueOf(time)); .withMeasureValueType(MeasureValueType.MULTI) .withMeasureValues( new MeasureValue() .withName("video_startup_time") .withValue("0") .withValueType(MeasureValueType.BIGINT), new MeasureValue() .withName("rebuffering_ratio") .withValue("0.5") .withType(MeasureValueType.DOUBLE), new MeasureValue() .withName("video_playback_failures") .withValue("0") .withValueType(MeasureValueType.BIGINT), new MeasureValue() .withName("average_frame_rate") .withValue("0.5") .withValueType(MeasureValueType.DOUBLE)) records.add(videoMetrics); WriteRecordsRequest writeRecordsRequest = new WriteRecordsRequest() .withDatabaseName(DATABASE_NAME) .withTableName(TABLE_NAME) .withRecords(records); try { WriteRecordsResult writeRecordsResult = amazonTimestreamWrite.writeRecords(writeRecordsRequest); System.out.println("WriteRecords Status: " + writeRecordsResult.getSdkHttpMetadata().getHttpStatusCode()); } catch (RejectedRecordsException e) { System.out.println("RejectedRecords: " + e); for (RejectedRecord rejectedRecord : e.getRejectedRecords()) { System.out.println("Rejected Index " + rejectedRecord.getRecordIndex() + ": " + rejectedRecord.getReason()); } System.out.println("Other records were written successfully. "); } catch (Exception e) { System.out.println("Error: " + e); } }
Al almacenar registros de múltiples medidas, los datos se representan lógicamente de la siguiente manera.
Tiempo | device_id | tipo_dispositivo | os_version | región | measure_name | tiempo de inicio del vídeo | ratio de rebúfer | video_ playback_fallos | velocidad de fotogramas promedio |
---|---|---|---|---|---|---|---|---|---|
2021-09-07 21:48:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
video_metrics |
200 |
0,5 |
0 |
0.85 |
2021-09-07 21:53:44.000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
video_metrics |
500 |
1.5 |
10 |
0.2 |
Consultas: puede escribir una consulta que recupere todos los puntos de datos con la misma marca de tiempo recibidos en los últimos 15 minutos de la siguiente manera.
SELECT time, device_id, device_type, os_version, region, video_startup_time, rebuffering_ratio, video_playback_failures, average_frame_rate FROM table where time >= ago(15m)
Coste de la carga de trabajo: el coste de la carga de trabajo se estima en 127,43$ con registros de múltiples medidas.
nota
En este caso, el uso de registros con varias medidas reduce 2,5 veces el gasto mensual total estimado, ya que el coste de escritura de datos se reduce 3,3 veces, el coste de almacenamiento se reduce 3,3 veces y el coste de las consultas se reduce 1,2 veces.
Escribir datos con una marca de tiempo que existe en el pasado o en el futuro
Timestream for Live Analytics ofrece la posibilidad de escribir datos con una marca de tiempo que se encuentra fuera del intervalo de retención del almacén de memoria mediante un par de mecanismos diferentes.
-
Grabaciones en almacenamiento magnético: puede escribir los datos que lleguen tarde directamente en el almacén magnético mediante escrituras en el almacén magnético. Para utilizar las escrituras por almacenamiento magnético, primero debe habilitar las escrituras por almacenamiento magnético para una tabla. A continuación, puede introducir datos en la tabla mediante el mismo mecanismo utilizado para escribir los datos en el almacén de memoria. Amazon Timestream for Live Analytics escribirá automáticamente los datos en el almacén magnético en función de su marca de tiempo.
nota
La write-to-read latencia del almacén magnético puede ser de hasta 6 horas, a diferencia de la escritura de datos en el almacén de memoria, donde la write-to-read latencia es inferior a un segundo.
-
TIMESTAMPtipo de datos para medidas: puede usar el TIMESTAMP tipo de datos para almacenar datos del pasado, presente o futuro. Un registro de múltiples medidas puede tener varios atributos de tipo de TIMESTAMP datos, además del campo de tiempo de un registro. TIMESTAMPLos atributos, en un registro de múltiples medidas, pueden tener marcas de tiempo en el futuro o en el pasado y comportarse como el campo de tiempo, excepto que Timestream for Live Analytics no indexa los valores de tipo TIMESTAMP en un registro de múltiples medidas.
nota
El tipo de TIMESTAMP datos solo se admite para registros de múltiples medidas.
Coherencia eventual de las lecturas
Timestream for Live Analytics admite una semántica de coherencia eventual en las lecturas. Esto significa que cuando consulta datos inmediatamente después de escribir un lote de datos en Timestream for Live Analytics, es posible que los resultados de la consulta no reflejen los resultados de una operación de escritura completada recientemente. Si repite estas solicitudes de consulta después de un breve período de tiempo, los resultados deberían arrojar los datos más recientes.