Utilizzo di Amazon Timestream come destinazione per AWS Database Migration Service - AWS Servizio di migrazione del Database

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Amazon Timestream come destinazione per AWS Database Migration Service

Puoi utilizzare AWS Database Migration Service per migrare i dati dal tuo database di origine a un endpoint di destinazione Amazon Timestream, con il supporto per le migrazioni di dati di tipo Pieno carico e CDC.

Amazon Timestream è un servizio di database di serie temporali veloce, dimensionabile e serverless creato per l'importazione di grandi volumi di dati. I dati di serie temporali sono una sequenza di punti dati raccolti in un intervallo di tempo che vengono utilizzati per misurare gli eventi che cambiano nel tempo. Viene utilizzato per raccogliere, archiviare e analizzare metriche da applicazioni IoT, DevOps applicazioni e applicazioni di analisi. Una volta che i dati sono disponibili in Timestream, puoi visualizzarne e identificarne le tendenze e i modelli pressoché in tempo reale. Per informazioni su Amazon Timestream, consulta What is Amazon Timestream? nella Guida per gli sviluppatori di Amazon Timestream.

Prerequisiti per l'utilizzo di Amazon Timestream come destinazione per AWS Database Migration Service

Prima di configurare Amazon Timestream come destinazione per AWS DMS, è necessario creare un ruolo IAM. Questo ruolo deve consentire ad AWS DMS l'accesso ai dati migrati in Amazon Timestream. Il set minimo di autorizzazioni di accesso per il ruolo utilizzato per la migrazione a Timestream è illustrato nella seguente policy IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeEndpoints", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "timestream:ListTables", "timestream:DescribeDatabase" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "timestream:DeleteTable", "timestream:WriteRecords", "timestream:UpdateTable", "timestream:CreateTable" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME/table/TABLE_NAME" } ] }

Se intendi migrare tutte le tabelle, usa * per TABLE_NAME nell'esempio precedente.

Tieni presenti le seguenti indicazioni sull'utilizzo di Timestream come destinazione:

  • Se intendi importare dati storici con timestamp creati da più di un anno, ti consigliamo di usare AWS DMS per scrivere i dati su Amazon S3 nel formato con valori separati da virgole (csv). Quindi, utilizza il caricamento in batch di Timestream per importare i dati in Timestream. Per ulteriori informazioni, consulta Using batch load in Timestream nella Guida per gli sviluppatori di Amazon Timestream.

  • Per le migrazioni di dati di tipo pieno carico eseguite da meno di un anno, ti consigliamo di impostare un periodo di conservazione dell'archivio di memoria della tabella Timestream maggiore o uguale al timestamp più vecchio. Quindi, una volta completata la migrazione, modifica il periodo di conservazione dell'archivio di memoria della tabella impostando il valore desiderato. Ad esempio, per migrare i dati con un timestamp creato da più 2 mesi, procedi come segue:

    • Imposta il periodo di conservazione dell'archivio di memoria della tabella di destinazione Timestream su 2 mesi.

    • Inizia la migrazione dei dati utilizzando AWS DMS.

    • Una volta completata la migrazione dei dati, modifica il periodo di conservazione della tabella di destinazione Timestream impostando il valore desiderato.

    Ti consigliamo di stimare il costo dell'archivio di memoria prima della migrazione utilizzando le informazioni presenti nelle pagine seguenti:

  • Per le migrazioni dei dati di tipo CDC, ti consigliamo di impostare il periodo di conservazione dell'archivio di memoria della tabella di destinazione in modo che i dati importati rientrino nei limiti stabiliti. Per ulteriori informazioni, consulta Writes Best Practices nella Guida per gli sviluppatori di Amazon Timestream.

Impostazioni attività a pieno carico multithread

Per contribuire ad aumentare la velocità di trasferimento dei dati, AWS DMS supporta l'attività di migrazione multithread di pieno carico a un endpoint di destinazione Timestream con le seguenti impostazioni:

  • MaxFullLoadSubTasks: imposta questa opzione per indicare il numero massimo di tabelle da caricare in parallelo. DMS carica ogni tabella nella tabella di destinazione Amazon Timestream corrispondente utilizzando una sottoattività dedicata. Il valore predefinito è 8; il valore il massimo è 49.

  • ParallelLoadThreads: utilizza questa opzione per specificare il numero di thread usati da AWS DMS per caricare ogni tabella nella tabella di destinazione Amazon Timestream. Il valore massimo per una destinazione Timestream è 32. Puoi chiedere che questo limite massimo venga aumentato.

  • ParallelLoadBufferSize: utilizza questa opzione per specificare il numero massimo di record da archiviare nel buffer usato dai thread di caricamento parallelo per caricare i dati nella destinazione Amazon Timestream. Il valore predefinito è 50. Il valore massimo è 1.000. Utilizzare questo parametro con ParallelLoadThreads; ParallelLoadBufferSize è valido solo quando è presente più di un thread.

  • ParallelLoadQueuesPerThread: utilizza questa opzione per specificare il numero di code a cui accede ogni thread simultaneo per eliminare i record di dati dalle code e generare un carico batch per la destinazione. Il valore di default è 1. Tuttavia, per le destinazioni Amazon Timestream con varie dimensioni del payload, l'intervallo valido è compreso tra 5 e 512 code per thread.

Impostazioni attività di carico CDC multithread

Per promuovere le prestazioni del CDC, AWS DMS supporta le seguenti impostazioni di attività:

  • ParallelApplyThreads: specifica il numero di thread simultanei utilizzati da AWS DMS durante un carico CDC per eseguire il push dei record di dati a un endpoint di destinazione Timestream. Il valore predefinito è 0 e il valore massimo è 32.

  • ParallelApplyBufferSize: specifica il numero massimo di record da archiviare in ogni coda di buffer per eseguire il push dei thread simultanei a un endpoint di destinazione Timestream durante un carico CDC. Il valore predefinito è 100 e il valore massimo è 1.000. Utilizzare questa opzione quando ParallelApplyThreads specifica più di un thread.

  • ParallelApplyQueuesPerThread: specifica il numero di code a cui ogni thread accede per eliminare i record di dati dalle code e generare un carico in batch per un endpoint Timestream durante la CDC. Il valore predefinito è 1 e il valore massimo è 512.

Impostazioni degli endpoint quando si utilizza Timestream come destinazione per AWS DMS

È possibile utilizzare le impostazioni di endpoint per configurare il database di destinazione Timestream in modo simile a come si usano gli attributi aggiuntivi di connessione. Le impostazioni vengono specificate quando si crea l'endpoint di destinazione utilizzando la console AWS DMS o il comando create-endpoint nella AWS CLI, con la sintassi JSON --timestream-settings '{"EndpointSetting": "value", ...}'.

La tabella riportata di seguito mostra le impostazioni degli endpoint che è possibile utilizzare con Timestream come destinazione.

Nome Descrizione

MemoryDuration

Imposta questo attributo per specificare il limite di conservazione dei dati migrati nell'archivio di memoria di Timestream. Il tempo è misurato in unità di ore. L'archivio di memoria di Timestream è ottimizzato per l'elevata velocità di trasmissione effettiva di importazione e l'accesso rapido.

Valore predefinito: 24 (ore)

Valori validi: da 1 a 8.736 (da 1 ora a 12 mesi misurati in ore)

Esempio: --timestream-settings '{"MemoryDuration": 20}'

DatabaseName

Imposta questo attributo per specificare il nome del database di destinazione Timestream.

Tipo: stringa

Esempio: --timestream-settings '{"DatabaseName": "db_name"}'

TableName

Imposta questo attributo per specificare il nome della tabella di destinazione Timestream.

Tipo: stringa

Esempio: --timestream-settings '{"TableName": "table_name"}'

MagneticDuration

Imposta questo attributo per specificare in giorni la durata dell'archivio magnetico applicata alle tabelle Timestream. Questo è il limite di conservazione per i dati importati. Timestream elimina qualsiasi timestamp che supera il limite di conservazione. Per ulteriori informazioni, consulta Storage nella Guida per gli sviluppatori di Amazon Timestream.

Esempio: --timestream-settings '{"MagneticDuration": "3"}'

CdcInsertsAndUpdates

Imposta questo attributo su true per specificare che AWS DMS applica solo gli inserimenti e gli aggiornamenti, ma non le eliminazioni. Timestream non consente l'eliminazione di record, quindi se questo valore èfalse, AWS DMS annulla il record corrispondente nel database Timestream anziché eliminarlo. Per ulteriori informazioni, consulta la sezione seguente: Limitazioni.

Valore predefinito: false

Esempio: --timestream-settings '{"CdcInsertsAndUpdates": "true"}'

EnableMagneticStoreWrites

Imposta questo attributo su true per abilitare le scritture dell'archivio magnetico. Quando questo valore è false, AWS DMS non scrive i record con un timestamp precedente al periodo di conservazione nell'archivio di memoria della tabella di destinazione perché Timestream non consente le scritture dell'archivio magnetico per impostazione predefinita. Per ulteriori informazioni, consulta Writes Best Practices nella Guida per gli sviluppatori di Amazon Timestream.

Valore predefinito: false

Esempio: --timestream-settings '{"EnableMagneticStoreWrites": "true"}'

Creazione e modifica di un endpoint di destinazione Amazon Timestream

Dopo aver creato un ruolo IAM e stabilito il set minimo di autorizzazioni di accesso, puoi creare un endpoint di destinazione Amazon Timestream utilizzando la console AWS DMS o il comando create-endpoint nella AWS CLI con la sintassi JSON --timestream-settings '{"EndpointSetting": "value", ...}'.

Negli esempi seguenti viene illustrato come creare o modificare un endpoint di destinazione Timestream mediante la AWS CLI.

Comando per creare l'endpoint di destinazione Timestream

aws dms create-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "DatabaseName":"db_name", "MagneticDuration": 3, "CdcInsertsAndUpdates": true, "EnableMagneticStoreWrites": true, }

Comando per modificare l'endpoint di destinazione Timestream

aws dms modify-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "MagneticDuration": 3, }

Utilizzo della mappatura degli oggetti per la migrazione dei dati in un argomento Timestream

AWS DMS utilizza le regole di mappatura delle tabelle per mappare i dati dall'origine all'argomento di destinazione Timestream. Per mappare i dati a un argomento di destinazione, è necessario utilizzare una regola di mappatura delle tabelle denominata mappatura degli oggetti. La mappatura degli oggetti consente di definire il modo in cui i record di dati dell'origine vengono mappati ai record di dati pubblicati nell'argomento Timestream.

Gli argomenti Timestream non dispongono di una struttura preimpostata oltre a una chiave di partizione.

Nota

Non è necessario utilizzare la mappatura degli oggetti. È possibile utilizzare la normale mappatura delle tabelle per varie trasformazioni. Tuttavia, il tipo di chiave della partizione segue questi comportamenti predefiniti:

  • La chiave primaria viene utilizzata come chiave di partizione per il pieno carico.

  • Se non vengono utilizzate le impostazioni delle attività di applicazione parallela, schema.table viene usato come chiave di partizione per la CDC.

  • Se vengono utilizzate le impostazioni delle attività di applicazione parallela, la chiave primaria viene utilizzata come chiave di partizione per CDC.

Per creare una regola di mappatura degli oggetti, è necessario impostare il parametro rule-type su object-mapping. Questa regola specifica il tipo di mappatura degli oggetti da utilizzare. Di seguito è riportata la struttura per la regola.

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": { "schema-name": "case-sensitive schema name", "table-name": "" } } ] }

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "timestream-map", "rule-action": "map-record-to-record", "target-table-name": "tablename", "object-locator": { "schema-name": "", "table-name": "" }, "mapping-parameters": { "timestream-dimensions": [ "column_name1", "column_name2" ], "timestream-timestamp-name": "time_column_name", "timestream-multi-measure-name": "column_name1or2", "timestream-hash-measure-name": true or false, "timestream-memory-duration": x, "timestream-magnetic-duration": y } } ] }

AWS DMS attualmente supporta map-record-to-record e map-record-to-document come i soli valori validi per il parametro rule-action. I valori map-record-to-record e map-record-to-document specificano le operazioni eseguite per impostazione predefinita da AWS DMS sui record che non vengono esclusi sulla base dell'elenco di attributi exclude-columns. Questi valori non influiscono in alcun modo sulle mappature degli attributi.

Utilizza map-record-to-record per la migrazione da un database relazionale a un argomento Timestream. Questo tipo di regola utilizza il valore taskResourceId.schemaName.tableName del database relazionale come chiave di partizione nell'argomento Timestream e crea un attributo per ogni colonna del database di origine. Quando utilizzi map-record-to-record, per qualsiasi colonna della tabella di origine non presente nell'elenco di attributi exclude-columns, AWS DMS crea un attributo corrispondente nell'argomento di destinazione. Questo attributo corrispondente viene creato indipendentemente dal fatto che tale colonna di origine venga utilizzata o meno in una mappatura degli attributi.

Per comprendere il funzionamento di map-record-to-record, è opportuno esaminarne il comportamento in azione. Per questo esempio, supponiamo che tu stia iniziando con una riga di tabella del database relazionale con la struttura e i dati seguenti.

FirstName LastName StoreId HomeAddress HomePhone WorkAddress WorkPhone DateofBirth

Randy

Marsh

5

221B Baker Street

1234567890

31 Spooner Street, Quahog

9876543210

02/29/1988

Per eseguire la migrazione di queste informazioni da uno schema denominato Test a un argomento Timestream, crea le regole per mappare i dati sull'argomento di destinazione. La regola seguente illustra la mappatura.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToTimestream", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "Test", "table-name": "Customers" } } ] }

Dato un argomento Timestream e una chiave di partizione (in questo caso, taskResourceId.schemaName.tableName), il seguente esempio illustra il formato di record risultante per l'argomento di destinazione Timestream utilizzando i dati di esempio:

{ "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" }

Limitazioni relative all'utilizzo di Amazon Timestream come destinazione per AWS Database Migration Service

Quando si utilizza Amazon Timestream come destinazione si applicano le seguenti limitazioni:

  • Dimensioni e timestamp: Timestream utilizza le dimensioni e i timestamp dei dati di origine come chiave primaria composita e non consente di alterare questi valori. Ciò significa che se modifichi il timestamp o le dimensioni di un record nel database di origine, il database Timestream prova a creare un nuovo record. Quindi, se modifichi la dimensione o il timestamp di un record in modo che corrisponda a quello di un altro record esistente, AWS DMS aggiorna i valori dell'altro record anziché creare un nuovo record o aggiornare il record precedente corrispondente.

  • Comandi DDL: la versione corrente di AWS DMS supporta solo i comandi DDL CREATE TABLE e DROP TABLE.

  • Limitazioni relative ai record: Timestream include delle limitazioni per i record, ad esempio la dimensione del record e la dimensione della misura. Per ulteriori informazioni, consultare Quote nella Guida per gli sviluppatori di Amazon Timestream.

  • Eliminazione di record e valori nulli: Timestream non supporta l'eliminazione di record. Per supportare la migrazione dei record eliminati dall'origine, AWS DMS cancella i campi corrispondenti nei record del database di destinazione Timestream. AWS DMS modifica i valori nei campi del record di destinazione corrispondente impostando 0 per i campi numerici, null per i campi di testo e false per i campi booleani.

  • Timestream come destinazione non supporta origini diverse da database relazionali.

  • AWS DMS supporta Timestream come destinazione solo nelle seguenti regioni:

    • Stati Uniti orientali (Virginia settentrionale)

    • Stati Uniti orientali (Ohio)

    • US West (Oregon)

    • Europa (Irlanda)

    • Europa (Francoforte)

    • Asia Pacifico (Sydney)

    • Asia Pacifico (Tokyo)

  • Timestream come destinazione non supporta l'impostazione di TargetTablePrepMode su TRUNCATE_BEFORE_LOAD. Ti consigliamo di utilizzare DROP_AND_CREATE per questa impostazione.