Considerazioni per le esportazioni di snapshot del cluster DB - Amazon Aurora

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à.

Considerazioni per le esportazioni di snapshot del cluster DB

Limitazioni

L'esportazione dei dati snapshot DB in Simple Storage Service (Amazon S3) presenta le seguenti limitazioni:

  • Non è possibile eseguire contemporaneamente più attività di esportazione per lo stesso snapshot del cluster database. Ciò è valido sia per le esportazioni totali sia per le esportazioni parziali.

  • È possibile avere in corso fino a cinque attività simultanee di esportazione di snapshot DB per volta. Account AWS

  • Non è possibile esportare i dati delle istantanee da Aurora Serverless v1 Cluster DB su S3.

  • Le esportazioni verso S3 non supportano i prefissi S3 contenenti i due punti (:).

  • I seguenti caratteri nel percorso del file S3 vengono convertiti in caratteri di sottolineatura (_) durante l'esportazione:

    \ ` " (space)
  • Se un database, uno schema o una tabella contiene caratteri diversi da quelli riportati di seguito, l'esportazione parziale non è supportata. Tuttavia, è possibile esportare l'intero snapshot DB.

    • Lettere latine (A–Z)

    • Numeri (0–9)

    • Simbolo del dollaro ($)

    • Carattere di sottolineatura (_)

  • Gli spazi ( ) e alcuni caratteri non sono supportati nei nomi delle colonne delle tabelle del database. Le tabelle con i seguenti caratteri nei nomi delle colonne vengono ignorate durante l'esportazione:

    , ; { } ( ) \n \t = (space)
  • Le tabelle con barre (/) nei rispettivi nomi vengono ignorate durante l'esportazione.

  • Le tabelle temporanee e non registrate di Aurora PostgreSQL vengono ignorate durante l'esportazione.

  • Se i dati contengono un oggetto di grandi dimensioni, ad esempio un BLOB o un CLOB, vicino o superiore a 500 MB, l'esportazione non riesce.

  • Se una tabella contiene una riga di grandi dimensioni, vicine o superiori a 2 GB, la tabella viene ignorata durante l'esportazione.

  • Per le esportazioni parziali, l'ExportOnlyelenco ha una dimensione massima di 200 KB.

  • Si consiglia vivamente di utilizzare un nome univoco per ogni attività di esportazione. Se non utilizzi un nome di attività univoco, potresti ricevere il seguente messaggio di errore:

    ExportTaskAlreadyExistsFault: Si è verificato un errore (ExportTaskAlreadyExists) durante la chiamata dell' StartExportTaskoperazione: l'attività di esportazione con l'ID esiste xxxxx già.

  • È possibile eliminare uno snapshot durante l'esportazione dei suoi dati in S3, ma vengono comunque addebitati i costi di storage per tale snapshot fino al completamento dell'attività di esportazione.

  • Non puoi ripristinare i dati degli snapshot esportati da S3 in un nuovo cluster di database.

Convenzione di denominazione file

I dati esportati per tabelle specifiche vengono memorizzati nel formato base_prefix/files, dove il prefisso di base è il seguente:

export_identifier/database_name/schema_name.table_name/

Ad esempio:

export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/

Esistono due convenzioni di denominazione per i file.

  • Convenzione attuale:

    batch_index/part-partition_index-random_uuid.format-based_extension

    L'indice batch è un numero di sequenza che rappresenta un batch di dati letti dalla tabella. Se non riusciamo a partizionare la tabella in piccoli blocchi da esportare in parallelo, ci saranno più indici batch. La stessa cosa accade se la tabella è partizionata in più tabelle. Ci saranno più indici batch, uno per ciascuna delle partizioni di tabella della tabella principale.

    Se riusciamo a partizionare la tabella in piccoli blocchi da leggere in parallelo, ci sarà solo la cartella batch index. 1

    All'interno della cartella dell'indice batch, ci sono uno o più file Parquet che contengono i dati della tabella. Il prefisso del nome del file Parquet è. part-partition_index Se la tabella è partizionata, ci saranno più file che iniziano con l'indice delle partizioni. 00000

    Possono esserci delle lacune nella sequenza dell'indice delle partizioni. Ciò accade perché ogni partizione è ottenuta da una query a intervalli nella tabella. Se non ci sono dati nell'intervallo di quella partizione, quel numero di sequenza viene ignorato.

    Ad esempio, supponiamo che la id colonna sia la chiave primaria della tabella e che i suoi valori minimo e massimo siano e. 100 1000 Quando proviamo a esportare questa tabella con nove partizioni, la leggiamo con query parallele come le seguenti:

    SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300

    Questo dovrebbe generare nove file, da apart-00000-random_uuid.gz.parquet. part-00008-random_uuid.gz.parquet Tuttavia, se non ci sono righe IDs comprese tra 200 e350, una delle partizioni completate è vuota e non viene creato alcun file per essa. Nell'esempio precedente, part-00001-random_uuid.gz.parquet non viene creato.

  • Convenzione precedente:

    part-partition_index-random_uuid.format-based_extension

    È la stessa della convenzione attuale, ma senza il batch_index prefisso, ad esempio:

    part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet

La convenzione di denominazione file è soggetta a modifiche. Pertanto, quando usi le tabelle di destinazione ti consigliamo di leggere tutto quanto riportato all'interno del prefisso di base della tabella.

Conversione dei dati durante l'esportazione in un bucket Simple Storage Service (Amazon S3)

Quando si esporta uno snapshot di database in un bucket Amazon S3, Amazon Aurora converte, esporta e memorizza i dati nel formato Parquet. Per ulteriori informazioni su Parquet, consultare il sito Web Apache Parquet.

Parquet archivia tutti i dati in uno dei seguenti tipi primitivi:

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY: un array di byte a lunghezza variabile, noto anche come binario

  • FIXED_LEN_BYTE_ARRAY: un array di byte a lunghezza fissa utilizzato quando i valori hanno una dimensione costante

I tipi di dati Parquet sono pochi per ridurre la complessità di lettura e scrittura del formato. Parquet fornisce tipi logici per estendere i tipi primitivi. Un tipo logico viene implementato come annotazione con i dati in un campo di metadati LogicalType. L'annotazione di tipo logico spiega come interpretare il tipo primitivo.

Quando il tipo logico STRING annota un tipo BYTE_ARRAY, indica che l'array di byte deve essere interpretato come una stringa di caratteri con codifica UTF-8. Al termine di un'attività di esportazione, Amazon Aurora notifica all'utente se si è verificata una conversione di stringa. I dati sottostanti esportati sono sempre uguali ai dati provenienti dall'origine. Tuttavia, a causa della differenza di codifica in UTF-8, alcuni caratteri potrebbero apparire diversi dall'origine quando vengono letti in strumenti come Athena.

Per ulteriori informazioni, consultare la sezione relativa alle definizioni dei tipi logici di Parquet nella documentazione di Parquet.

Mappatura dei tipi di dati MySQL e MariaDB al formato Parquet

La tabella seguente mostra la mappature tra i tipi di dati MySQL e i tipi di dati Parquet quando i dati vengono convertiti ed esportati in Amazon S3.

Tipo di dati origine Tipo Parquet primitivo Annotazione del tipo logico Note di conversione
Tipi di dati numerici
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet supporta solo tipi firmati, quindi la mappatura richiede un byte aggiuntivo (8 più 1) per memorizzare il tipo BIGINT_UNSIGNED.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL(p,s) Se il valore di origine è inferiore a 2 31, viene memorizzato come INT32.
INT64 DECIMAL(p,s) Se il valore di origine è 2 31 o superiore, ma inferiore a 2 63, viene archiviato comeINT64.
FIXED_LEN_BYTE_ARRAY(N) DECIMAL(p,s) Se il valore di origine è 263 o superiore, viene archiviato come FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet non supporta la precisione decimale superiore a 38. Il valore decimale viene convertito in una stringa di tipo BYTE_ARRAY e codificato come. UTF8
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL(p,s)

Se il valore di origine è inferiore a 2 31, viene archiviato come. INT32

INT64 DECIMAL(p,s) Se il valore di origine è 2 31 o superiore, ma inferiore a 2 63, viene archiviato comeINT64.
FIXED_LEN_ARRAY(N) DECIMAL(p,s) Se il valore di origine è 263 o superiore, viene archiviato come FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet non supporta la precisione numerica superiore a 38. Questo valore numerico viene convertito in una stringa di tipo BYTE_ARRAY e codificato come. UTF8
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32 INT (16, vero)
Tipi di dati stringa
BINARY BYTE_ARRAY
BLOB BYTE_ARRAY
CHAR BYTE_ARRAY
ENUM BYTE_ARRAY STRING
LINESTRING BYTE_ARRAY
LONGBLOB BYTE_ARRAY
LONGTEXT BYTE_ARRAY STRING
MEDIUMBLOB BYTE_ARRAY
MEDIUMTEXT BYTE_ARRAY STRING
MULTILINESTRING BYTE_ARRAY
SET BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TINYBLOB BYTE_ARRAY
TINYTEXT BYTE_ARRAY STRING
VARBINARY BYTE_ARRAY
VARCHAR BYTE_ARRAY STRING
Tipi di dati data e ora
DATE BYTE_ARRAY STRING Una data viene convertita in una stringa di tipo BYTE_ARRAY e codificata come. UTF8
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING Un tipo TIME viene convertito in una stringa in un BYTE_ARRAY e codificato come. UTF8
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
Tipi di dati geometrici
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
Tipo di dati JSON
JSON BYTE_ARRAY STRING

Mappatura dei tipi di dati PostgreSQL su Parquet

Nella tabella seguente viene illustrata la mappatura dai tipi di dati PostgreSQL ai tipi di dati Parquet quando i dati vengono convertiti ed esportati in Simple Storage Service (Amazon S3).

Tipo di dati PostgreSQL Tipo Parquet primitivo Annotazione del tipo logico Note relative alla mappatura
Tipi di dati numerici
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING Un tipo DECIMAL viene convertito in una stringa di tipo BYTE_ARRAY e codificato come. UTF8

Questa conversione serve a evitare complicazioni dovute alla precisione dei dati e ai valori di dati che non sono un numero (NaN).

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT (16, vero)
SMALLSERIAL INT32 INT (16, vero)
Tipi di dati stringa e correlati
ARRAY BYTE_ARRAY STRING

Un array viene convertito in una stringa e codificato come BINARY (UTF8).

Questa conversione serve a evitare complicazioni dovute alla precisione dei dati, ai valori di dati che non sono un numero (NaN) e ai valori di dati temporali.

BIT BYTE_ARRAY STRING
BIT VARYING BYTE_ARRAY STRING
BYTEA BINARY
CHAR BYTE_ARRAY STRING
CHAR(N) BYTE_ARRAY STRING
ENUM BYTE_ARRAY STRING
NAME BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TEXT SEARCH BYTE_ARRAY STRING
VARCHAR(N) BYTE_ARRAY STRING
XML BYTE_ARRAY STRING
Tipi di dati data e ora
DATE BYTE_ARRAY STRING
INTERVAL BYTE_ARRAY STRING
TIME BYTE_ARRAY STRING
TIME WITH TIME ZONE BYTE_ARRAY STRING
TIMESTAMP BYTE_ARRAY STRING
TIMESTAMP WITH TIME ZONE BYTE_ARRAY STRING
Tipi di dati geometrici
BOX BYTE_ARRAY STRING
CIRCLE BYTE_ARRAY STRING
LINE BYTE_ARRAY STRING
LINESEGMENT BYTE_ARRAY STRING
PATH BYTE_ARRAY STRING
POINT BYTE_ARRAY STRING
POLYGON BYTE_ARRAY STRING
Tipi di dati JSON
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
Altri tipi di dati
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING Tipo di dati di rete
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING Tipo di dati di rete
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER N/A
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING