

Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão de dados simplificada e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais [aqui](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gravações
<a name="writes"></a>

 Você pode coletar dados de séries temporais de dispositivos conectados, sistemas de TI e equipamentos industriais e gravá-los no Timestream para Live Analytics. O Timestream for Live Analytics permite que você grave pontos de dados de uma única série temporal, pontos de and/or dados de várias séries em uma única solicitação de gravação quando a série temporal pertence à mesma tabela. Para sua conveniência, o Timestream para Live Analytics oferece um esquema flexível que detecta automaticamente os nomes das colunas e os tipos de dados das tabelas do Timestream para Live Analytics com base nos nomes das dimensões e nos tipos de dados dos valores de medida que você especifica ao invocar gravações no banco de dados. Você também pode gravar lotes de dados no Timestream para Live Analytics.

**nota**  
 O Timestream para Live Analytics oferece suporte à semântica de consistência eventual para leituras. Isso significa que quando você consulta dados imediatamente após a gravação de um lote de dados no Timestream para Live Analytics, os resultados da consulta podem não refletir os resultados de uma operação de gravação recém-concluída. Os resultados também podem incluir alguns dados obsoletos. Da mesma forma, ao gravar dados de séries temporais com uma ou mais novas dimensões, uma consulta pode retornar um subconjunto parcial de colunas por um curto período de tempo. Se você repetir essas solicitações de consulta após um curto período, o resultado deverá retornar os dados mais recentes. 

 Você pode gravar dados usando o [AWS SDKs](getting-started-sdks.md), [AWS CLI](Tools.CLI.md), ou por meio de [AWS Lambda](Lambda.md) [AWS IoT Core](IOT-Core.md)[Amazon Managed Service for Apache Flink](ApacheFlink.md),[Amazon Kinesis](Kinesis.md),[Amazon MSK](MSK.md),, [Telegraf de código aberto](Telegraf.md) e. 

**Topics**
+ [Tipos de dados](#writes.data-types)
+ [Sem definição de esquema inicial](#writes.no-upfront-schema)
+ [Gravação de dados (inserções e acréscimos)](#writes.writing-data-inserts-upserts)
+ [Consistência eventual das leituras](#writes.eventual-consistency)
+ [Gravações em lote com API WriteRecords](writes.batching-writes.md)
+ [Carga de lote](batch-load-how.md)
+ [Escolha entre a operação da WriteRecords API e o carregamento em lote](writes.writes-or-batch-load.md)

## Tipos de dados
<a name="writes.data-types"></a>

 O Timestream para Live Analytics oferece suporte aos seguintes tipos de dados para gravações.


| Tipo de dados | Description | 
| --- | --- | 
|  BIGINT  |   Representa um contador de números inteiros assinado de 64 bits.   | 
|  BOOLEAN  |   Representa os dois valores verdadeiros da lógica, a saber, verdadeiro e falso.   | 
|  DOUBLE  |   Precisão variável de 64 bits que implementa o padrão IEEE 754 para aritmética de ponto flutuante binário.   Existem funções de linguagem de consulta para `Infinity` e valores duplos `NaN` que podem ser usados em consultas. Mas você não pode gravar esses valores no Timestream.   | 
|  VARCHAR  |   Dados de caracteres de comprimento variável com um comprimento máximo opcional. O limite máximo é de 2 KB.   | 
|  MULTI  |   Tipo de dados para registros de várias medidas. Esse tipo de dados inclui uma ou mais medidas do tipo `BIGINT`, `BOOLEAN`, `DOUBLE`, `VARCHAR` e `TIMESTAMP`.   | 
|  TIMESTAMP  |   Representa uma instância no tempo usando tempo de precisão de nanossegundos em UTC, rastreando o tempo desde o horário do Unix. Atualmente, esse tipo de dados é suportado somente para registros de várias medidas (ou seja, dentro de valores de medida do tipo `MULTI`).  `YYYY-MM-DD hh:mm:ss.sssssssss` Grava registros de data e hora de suporte no intervalo de `1970-01-01 00:00:00.000000000` a `2262-04-11 23:47:16.854775807`.  | 

## Sem definição de esquema inicial
<a name="writes.no-upfront-schema"></a>

 Antes de enviar dados para o Amazon Timestream for Live Analytics, você deve criar um banco de dados e uma tabela usando as operações Console de gerenciamento da AWS da API Timestream for Live SDKs Analytics ou Timestream for Live Analytics API. Para obter mais informações, consulte [Criar um banco de dados](console_timestream.md#console_timestream.db.using-console) e [Criar uma tabela](console_timestream.md#console_timestream.table.using-console). Ao criar a tabela, você não precisa definir o esquema antecipadamente. O Amazon Timestream para Live Analytics detecta automaticamente o esquema com base nas medidas e dimensões dos pontos de dados enviados, para que você não precise mais alterar seu esquema off-line para adaptá-lo aos dados de séries temporais que mudam rapidamente. 

## Gravação de dados (inserções e acréscimos)
<a name="writes.writing-data-inserts-upserts"></a>

 A operação de gravação no Amazon Timestream para Live Analytics permite que você insira e *atualize* dados. Por padrão, as gravações no Amazon Timestream para Live Analytics seguem a semântica *primeira gravação vence*, em que os dados são armazenados somente como acréscimos e os registros duplicados são rejeitados. Embora a semântica da primeira gravação vence satisfaça os requisitos de muitos aplicativos de séries temporais, há cenários em que os aplicativos precisam atualizar os registros existentes de maneira idempotente e/ou gravar dados com a semântica da última gravação vence, em que o registro com a versão mais alta é armazenado no serviço. Para lidar com esses cenários, o Amazon Timestream para Live Analytics oferece a capacidade de alterar dados. Upsert é uma operação que insere um registro no sistema quando o registro não existe ou atualiza o registro quando ele existe. Quando o registro é atualizado, ele é atualizado de forma idempotente. 

Não há uma operação em nível de registro para exclusão. Mas tabelas e bancos de dados podem ser excluídos.

**Gravando dados no armazenamento na memória e no armazenamento magnético**

O Amazon Timestream para Live Analytics oferece a capacidade de gravar dados diretamente no armazenamento na memória e no armazenamento magnético. O armazenamento na memória é otimizado para gravações de dados de alto throughput e o armazenamento magnético é otimizado para gravações de dados de chegada tardia.

Os dados de chegada tardia são dados com um registro de data e hora anterior à hora atual e fora do período de retenção do armazenamento na memória. Você deve habilitar explicitamente a capacidade de gravar dados de chegada tardia no armazenamento magnético habilitando gravações do armazenamento magnético para a tabela. Além disso, `MagneticStoreRejectedDataLocation` é definido quando uma tabela é criada. Para gravar no armazenamento magnético, os chamadores do `WriteRecords` devem ter permissões `S3:PutObject` para o bucket do S3 especificado no `MagneticStoreRejectedDataLocation` durante a criação da tabela. Para obter mais informações, consulte [CreateTable](https://docs.aws.amazon.com/timestream/latest/developerguide/API_CreateTable.html), [WriteRecords](https://docs.aws.amazon.com/timestream/latest/developerguide/API_WriteRecords.html) e [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html).

**Gravando dados com registros de medida única e registros de várias medidas**

O Amazon Timestream para Live Analytics oferece a capacidade de gravar dados usando dois tipos de registros, que são os registros de medida única e registros de várias medidas.

**Registros de medida única**

Os registros de medida única permitem que você envie uma única medida por registro. Quando os dados são enviados para o Timestream para Live Analytics usando esse formato, o Timestream para Live Analytics cria uma linha de tabela por registro. Isso significa que, se um dispositivo emitir 4 métricas e cada métrica for enviada como um registro de medida única, o Timestream para Live Analytics criará 4 linhas na tabela para armazenar esses dados, e os atributos do dispositivo serão repetidos para cada linha. Esse formato é recomendado nos casos em que você deseja monitorar uma única métrica de um aplicativo ou quando seu aplicativo não emite várias métricas ao mesmo tempo.

**Registros de várias medidas**

Com registros de várias medidas, você pode armazenar várias medidas em uma única linha da tabela, em vez de armazenar uma medida por linha da tabela. Portanto, os registros de várias medidas permitem que você migre seus dados existentes de bancos de dados relacionais para o Amazon Timestream para Live Analytics com o mínimo de alterações. 

Você também pode agrupar mais dados em uma única solicitação de gravação do que registros de medida única. Isso aumenta o throughput e o desempenho da gravação de dados, além de reduzir o custo da gravação de dados. Isso ocorre porque agrupar mais dados em uma solicitação de gravação permite que o Amazon Timestream para Live Analytics identifique mais dados repetíveis em uma única solicitação de gravação (quando aplicável) e cobre apenas uma vez por dados repetidos.

**Topics**
+ [Registros de várias medidas](#writes.writing-data-multi-measure)
+ [Gravando dados com um registro de data e hora que existe no passado ou no futuro](#writes.timestamp-past-future)

### Registros de várias medidas
<a name="writes.writing-data-multi-measure"></a>

Com registros de várias medidas, você pode armazenar seus dados de séries temporais em um formato mais compacto na memória e no armazenamento magnético, o que ajuda a reduzir os custos de armazenamento de dados. Além disso, o armazenamento de dados compacto permite escrever consultas mais simples para recuperação de dados, melhora o desempenho das consultas e reduz o custo das consultas.

Além disso, os registros de várias medidas também suportam o tipo de dados TIMESTAMP para armazenar mais de um registro de data e hora em um registro de série temporal. Os atributos TIMESTAMP em um registro de várias medidas oferecem suporte aos registros de data e hora no futuro ou no passado. Portanto, os registros de várias medidas ajudam a melhorar o desempenho, o custo e a simplicidade da consulta, além de oferecer mais flexibilidade para armazenar diferentes tipos de medidas correlacionadas.

**Benefícios**

Estes são os benefícios de usar registros de várias medidas.
+ **Desempenho e custo**: os registros de várias medidas permitem que você grave várias medidas de séries temporais em uma única solicitação de gravação. Isso aumenta o throughput de gravação e também reduz o custo das gravações. Com registros de várias medidas você pode armazenar dados de forma mais compacta, o que ajuda a reduzir os custos de armazenamento de dados. O armazenamento de dados compacto de registros de várias medidas resulta em menos dados sendo processados por consultas. Isso foi projetado para melhorar o desempenho geral da consulta e ajudar a reduzir o custo da consulta.
+ **Simplicidade da consulta** — com registros de várias medidas, você não precisa escrever expressões de tabela comuns complexas (CTEs) em uma consulta para ler várias medidas com o mesmo timestamp. Isso acontece porque as medidas são armazenadas como colunas em uma única linha da tabela. Portanto, registros de várias medidas permitem escrever consultas mais simples.
+ **Flexibilidade de modelagem de dados**: você pode gravar registros de data e hora futuros no Timestream para Live Analytics usando o tipo de dados TIMESTAMP e registros de várias medidas. Um registro de várias medidas pode ter vários atributos do tipo de dados registro de data e hora, além do campo de hora em um registro. Os atributos registro de data e hora, em um registro de várias medidas, podem ter registros de data e hora no futuro ou no passado e se comportar como o campo de hora, exceto que o Timestream para Live Analytics não indexa os valores do tipo registro de data e hora em um registro de várias medidas.

**Casos de uso**

Você pode usar registros de várias medidas para qualquer aplicativo de série temporal que gere mais de uma medição do mesmo dispositivo a qualquer momento. Estes são alguns dos aplicativos de exemplo.
+ Uma plataforma de streaming de vídeo que gera centenas de métricas em um determinado momento.
+ Dispositivos médicos que geram medições como níveis de oxigênio no sangue, frequência cardíaca e pulso.
+ Equipamentos industriais, como plataformas de petróleo, que geram métricas, sensores de temperatura e clima.
+ Outros aplicativos que são arquitetados com um ou mais microsserviços.

#### Por exemplo: monitoramento do desempenho e da integridade de um aplicativo de streaming de vídeo
<a name="writes.writing-data-multi-measure-example1"></a>

Considere um aplicativo de streaming de vídeo executado em 200 instâncias do EC2. Você quer usar o Amazon Timestream para Live Analytics para armazenar e analisar as métricas emitidas pelo aplicativo, para que você possa entender o desempenho e a integridade do seu aplicativo, identificar rapidamente anomalias, resolver problemas e descobrir oportunidades de otimização. 

Modelaremos esse cenário com registros de medida única e registros de várias medidas e, em seguida, compare/contrast ambas as abordagens. Para cada abordagem, fazemos as seguintes suposições.
+ Cada instância do EC2 emite quatro medidas (video\$1startup\$1time, rebuffering\$1ratio, video\$1playback\$1failures e average\$1frame\$1rate) e quatro dimensões (device\$1id, device\$1type, os\$1version e region) por segundo. 
+ Você deseja armazenar 6 horas de dados no armazenamento na memória e 6 meses de dados no armazenamento magnético.
+ Para identificar anomalias, você configurou 10 consultas que são executadas a cada minuto para identificar qualquer atividade incomum nos últimos minutos. Você também criou um painel com oito widgets que exibem as últimas 6 horas de dados, para que você possa monitorar seu aplicativo com eficiência. Esse painel é acessado por cinco usuários a qualquer momento e é atualizado automaticamente a cada hora.

##### Usando registros de medida única
<a name="writes.writing-data-multi-measure-example1-sm"></a>

**Modelagem de dados**: com registros de medida única, criaremos um registro para cada uma das quatro medidas (tempo de inicialização do vídeo, taxa de rebuffer, falhas na reprodução do vídeo e taxa média de quadros). Cada registro terá as quatro dimensões (device\$1id, device\$1type, os\$1version e region) e um registro de data e hora. 

**Gravações**: quando você grava dados no Amazon Timestream para Live Analytics, os registros são construídos da seguinte forma.

```
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);
    }
  }
```

Quando você armazena registros de medida única, os dados são representados logicamente da seguinte forma.


| Hora | device\$1id | device\$1type | os\$1version | region | nome\$1medida | valor\$1medida::bigint | measure\$1value::double | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  2021-09-07 21:48:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  video\$1startup\$1time  |  200  |    | 
|  2021-09-07 21:48:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  rebuffering\$1ratio  |    |  0,5  | 
|  2021-09-07 21:48:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  video\$1playback\$1failures  |  0  |    | 
|  2021-09-07 21:48:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  average\$1frame\$1rate  |    |  0,85  | 
|  2021-09-07 21:53:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  video\$1startup\$1time  |  500  |    | 
|  2021-09-07 21:53:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  rebuffering\$1ratio  |    |  1.5  | 
|  2021-09-07 21:53:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  video\$1playback\$1failures  |  10  |    | 
|  2021-09-07 21:53:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  average\$1frame\$1rate  |    |  0.2  | 

**Consultas**: você pode escrever uma consulta que recupere todos os pontos de dados com o mesmo registro de data e hora recebido nos últimos 15 minutos da seguinte maneira.

```
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
```

**Custo do workload**: o custo desse workload é estimado em US\$1 373,23 por mês com registros de medida única

##### Usando registros de várias medidas
<a name="writes.writing-data-multi-measure-example1-mm"></a>

**Modelagem de dados**: com registros de várias medidas, criaremos um registro que contém todas as quatro medidas (tempo de inicialização do vídeo, taxa de rebuffer, falhas na reprodução do vídeo e taxa média de quadros), todas as quatro dimensões (device\$1id, device\$1type, os\$1version e region) e um registro de data e hora. 

**Gravações**: quando você grava dados no Amazon Timestream para Live Analytics, os registros são construídos da seguinte forma.

```
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);
    }
  }
```

Quando você armazena registros de várias medidas, os dados são representados logicamente da seguinte forma.


| Hora | device\$1id | device\$1type | os\$1version | region | measure\$1name | video\$1startup\$1time | rebuffering\$1ratio | video\$1 playback\$1failures | average\$1frame\$1rate | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  2021-09-07 21:48:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  video\$1metrics  |  200  |  0,5  |  0  |  0,85  | 
|  2021-09-07 21:53:44 .000000000  |  12345678  |  iPhone 11  |  14,8  |  us-east-1  |  video\$1metrics  |  500  |  1.5  |  10  |  0.2  | 

**Consultas**: você pode escrever uma consulta que recupere todos os pontos de dados com o mesmo registro de data e hora recebido nos últimos 15 minutos da seguinte maneira.

```
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)
```

**Custo do workload**: o custo do workload é estimado em US\$1 127,43 com registros de várias medidas.

**nota**  
Nesse caso, o uso de registros de várias medidas reduz o gasto mensal geral estimado em 2,5 vezes, com o custo de gravação de dados reduzido em 3,3 vezes, o custo de armazenamento reduzido em 3,3 vezes e o custo de consulta reduzido em 1,2 vezes.

### Gravando dados com um registro de data e hora que existe no passado ou no futuro
<a name="writes.timestamp-past-future"></a>

O Timestream para Live Analytics oferece a capacidade de gravar dados com um registro de data e hora que fica fora da janela de retenção do armazenamento na memória por meio de alguns mecanismos diferentes.
+ **Gravações no armazenamento magnético**: você pode gravar dados de chegada tardia diretamente no armazenamento magnético por meio de gravações no armazenamento magnético. Para usar gravações de armazenamento magnético, você deve primeiro habilitar gravações de armazenamento magnético para uma tabela. Em seguida, você pode ingerir dados na tabela usando o mesmo mecanismo usado para gravar dados no armazenamento na memória. O Amazon Timestream para Live Analytics gravará automaticamente os dados no armazenamento magnético com base em seu registro de data e hora.
**nota**  
A write-to-read latência do armazenamento magnético pode ser de até 6 horas, ao contrário da gravação de dados no armazenamento de memória, onde a write-to-read latência está na faixa de menos de um segundo.
+ **Tipo de dados TIMESTAMP para medidas**: você pode usar o tipo de dados TIMESTAMP para armazenar dados do passado, do presente ou do futuro. Um registro de várias medidas pode ter vários atributos do tipo de dados registro de data e hora, além do campo de hora em um registro. Os atributos registro de data e hora, em um registro de várias medidas, podem ter registros de data e hora no futuro ou no passado e se comportar como o campo de hora, exceto que o Timestream para Live Analytics não indexa os valores do tipo registro de data e hora em um registro de várias medidas.
**nota**  
O tipo de dados TIMESTAMP é suportado somente para registros de várias medidas.

## Consistência eventual das leituras
<a name="writes.eventual-consistency"></a>

O Timestream para Live Analytics oferece suporte à semântica de consistência eventual para leituras. Isso significa que quando você consulta dados imediatamente após a gravação de um lote de dados no Timestream para Live Analytics, os resultados da consulta podem não refletir os resultados de uma operação de gravação recém-concluída. Se você repetir essas solicitações de consulta após um curto período, o resultado deverá retornar os dados mais recentes. 

# Gravações em lote com API WriteRecords
<a name="writes.batching-writes"></a>

O Amazon Timestream for Live Analytics permite que você grave pontos de dados de uma única série temporal, pontos de dados de várias and/or séries em uma única solicitação de gravação. O agrupamento em lotes de vários pontos de dados em uma única operação de gravação é benéfico do ponto de vista de desempenho e custo. Consulte [Gravações](metering-and-pricing.writes.md) na seção Medição e preços para obter mais detalhes.

**nota**  
Suas solicitações de gravação para o Timestream para Live Analytics podem ter um controle de utilização à medida que o Timestream para Live Analytics é dimensionado para se adaptar às necessidades de ingestão de dados do seu aplicativo. Se seus aplicativos encontrarem exceções de controle de utilização, você deverá continuar enviando dados com o mesmo throughput (ou maior) para permitir que o Timestream para Live Analytics seja escalado automaticamente de acordo com as necessidades do seu aplicativo. 

# Carga de lote
<a name="batch-load-how"></a>

Com o *carregamento em lote* para o Amazon Timestream LiveAnalytics for, você pode ingerir arquivos CSV armazenados no Amazon S3 no Timestream em lotes. Com essa nova funcionalidade, você pode ter seus dados no Timestream LiveAnalytics sem precisar depender de outras ferramentas ou escrever código personalizado. Você pode usar o carregamento em lote para preencher dados com tempos de espera flexíveis, como dados que não são imediatamente necessários para consulta ou análise.

Você pode criar tarefas de carregamento em lote usando o Console de gerenciamento da AWS AWS CLI, o e AWS SDKs o. Para obter mais informações, consulte [Usando o carregamento em lote com o console](batch-load-using-console.md), [Usando o carregamento em lote com o AWS CLI](batch-load-using-cli.md) e [Usando o carregamento em lote com o AWS SDKs](batch-load-using-sdk.md).

Para obter mais informações sobre o carregamento em lotes, consulte [Usando o carregamento em lote no Timestream para LiveAnalytics](batch-load.md).

# Escolha entre a operação da WriteRecords API e o carregamento em lote
<a name="writes.writes-or-batch-load"></a>

Com a operação da WriteRecords API, você pode gravar seus dados de séries temporais de streaming no Timestream LiveAnalytics conforme eles são gerados pelo seu sistema. Ao usar WriteRecords, você pode ingerir continuamente um único ponto de dados ou lotes menores de dados em tempo real. O Timestream for LiveAnalytics oferece um esquema flexível que detecta automaticamente os nomes das colunas e os tipos de dados do seu Timestream para LiveAnalytics tabelas, com base nos nomes das dimensões e nos tipos de dados dos pontos de dados que você especifica ao invocar gravações no banco de dados. 

Por outro lado, o *carregamento em lote* permite a ingestão robusta de dados de séries temporais em lote dos arquivos de origem (arquivos CSV) no Timestream for LiveAnalytics, usando um modelo de dados definido por você. Alguns exemplos de quando usar o carregamento em lote com um arquivo de origem são importar dados de séries temporais em massa para a avaliação do Timestream por LiveAnalytics meio de uma prova de conceito, importar dados de séries temporais em massa de um dispositivo de IoT que ficou off-line por algum tempo e migrar dados históricos de séries temporais do Amazon S3 para o Timestream for. LiveAnalytics Para obter informações sobre o carregamento em lotes, consulte [Usando o carregamento em lote no Timestream para LiveAnalytics](batch-load.md).

Ambas as soluções são seguras, confiáveis e de alto desempenho.

**Use WriteRecords quando:**
+ Estiver transmitindo quantidades menores (menos de 10 MB) de dados por solicitação.
+ Estiver preenchendo tabelas existentes.
+ Estiver ingerindo de dados de um fluxo de logs.
+ Estiver fazendo análises em tempo real.
+ Precisar de menor latência.

**Use o carregamento em lote quando:**
+ Estiver ingerindo cargas maiores de dados originados no Amazon S3 em arquivos CSV. Para obter mais informações sobre limites, consulte [CotasCotas padrão](ts-limits.md).
+ Estiver preenchendo novas tabelas, como no caso de uma migração de dados.
+ Estiver enriquecendo bancos de dados com dados históricos (ingestão em novas tabelas).
+ Você tem dados de origem que mudam lentamente ou não mudam.
+ Você tem tempos de espera flexíveis, pois uma tarefa de carregamento em lote pode estar em um estado pendente até que os recursos estejam disponíveis, especialmente se você carregar uma grande quantidade de dados. O carregamento em lote é adequado para dados que não precisam estar prontamente disponíveis para consulta ou análise para aumentar a clareza.