Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Überlegungen zu DB-Cluster-Snapshot-Exporten
Einschränkungen
Das Exportieren von DB-Snapshot-Daten nach Amazon S3 hat die folgenden Einschränkungen:
-
Sie können nicht mehrere Exportaufgaben für denselben DB-Cluster-Snapshot gleichzeitig ausführen. Dies gilt sowohl für vollständige als auch Teilexporte.
-
Pro Person AWS-Konto können bis zu fünf DB-Snapshot-Exportaufgaben gleichzeitig ausgeführt werden.
-
Sie können keine Snapshot-Daten aus Aurora Serverless v1 DB-Clustern nach S3 exportieren.
-
Exporte nach S3 unterstützen keine S3-Präfixe, die einen Doppelpunkt (:) enthalten.
-
Die folgenden Zeichen im S3-Dateipfad werden während des Exports in Unterstriche (_) konvertiert:
\ ` " (space)
-
Wenn eine Datenbank, ein Schema oder eine Tabelle andere Zeichen als den folgenden enthält, wird ein teilweiser Export nicht unterstützt. Sie können jedoch den gesamten DB-Snapshot exportieren.
-
Lateinische Buchstaben (A–Z)
-
Ziffern (0–9)
-
Dollar-Symbol ($)
-
Unterstrich (_)
-
-
Leerzeichen ( ) und bestimmte andere Zeichen werden in den Spaltennamen von Datenbanktabellen nicht unterstützt. Tabellen mit den folgenden Zeichen in Spaltennamen werden beim Export übersprungen:
, ; { } ( ) \n \t = (space)
-
Tabellen mit Schrägstrichen (/) im Namen werden beim Export übersprungen.
-
SQLTemporäre und nicht protokollierte Aurora Postgre-Tabellen werden beim Export übersprungen.
-
Wenn die Daten ein großes Objekt enthalten, z. B. ein BLOB oderCLOB, das fast 500 MB groß oder größer ist, schlägt der Export fehl.
-
Wenn eine Zeile in einer Tabelle ca. 2 GB groß oder noch größer ist, wird die Tabelle beim Export übersprungen.
-
Bei Teilexporten hat die
ExportOnly
Liste eine maximale Größe von 200 KB. -
Es wird dringend empfohlen, für jede Exportaufgabe einen eindeutigen Namen zu verwenden. Wenn Sie keinen eindeutigen Aufgabennamen verwenden, erhalten Sie möglicherweise die folgende Fehlermeldung:
ExportTaskAlreadyExistsFault: Beim Aufrufen der StartExportTask Operation ist ein Fehler aufgetreten (ExportTaskAlreadyExists): Die Exportaufgabe mit der ID
xxxxx
existiert bereits. -
Sie können einen Snapshot löschen, während Sie seine Daten nach S3 exportieren, aber die Speicherkosten für diesen Snapshot werden Ihnen so lange in Rechnung gestellt, bis die Exportaufgabe abgeschlossen ist.
-
Sie können exportierte Snapshot-Daten aus S3 nicht in einem neuen DB-Cluster wiederherstellen.
Benennungskonvention für Dateien
Exportierte Daten für bestimmte Tabellen werden im Format
gespeichert, wobei das Basispräfix folgendes ist:base_prefix
/files
export_identifier
/database_name
/schema_name
.table_name
/
Zum Beispiel:
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
Es gibt zwei Konventionen für die Benennung von Dateien.
-
Aktuelle Konvention:
batch_index
/part-partition_index
-random_uuid
.format-based_extension
Der Batchindex ist eine Sequenznummer, die einen aus der Tabelle gelesenen Datenstapel darstellt. Wenn wir Ihre Tabelle nicht in kleine Teile partitionieren können, die parallel exportiert werden sollen, wird es mehrere Batch-Indizes geben. Das Gleiche passiert, wenn Ihre Tabelle in mehrere Tabellen partitioniert ist. Es wird mehrere Batch-Indizes geben, einen für jede der Tabellenpartitionen Ihrer Haupttabelle.
Wenn wir Ihre Tabelle in kleine Teile partitionieren können, die parallel gelesen werden sollen, wird es nur den
1
Batch-Index-Ordner geben.Im Batch-Index-Ordner befinden sich eine oder mehrere Parquet-Dateien, die die Daten Ihrer Tabelle enthalten. Das Präfix des Parquet-Dateinamens ist
part-
. Wenn Ihre Tabelle partitioniert ist, gibt es mehrere Dateien, die mit dem Partitionsindexpartition_index
00000
beginnen.Es kann Lücken in der Reihenfolge des Partitionsindexes geben. Dies liegt daran, dass jede Partition aus einer Bereichsabfrage in Ihrer Tabelle abgerufen wird. Wenn sich im Bereich dieser Partition keine Daten befinden, wird diese Sequenznummer übersprungen.
Nehmen wir beispielsweise an, dass die
id
Spalte der Primärschlüssel der Tabelle ist und ihre Minimal- und Maximalwerte100
und1000
sind. Wenn wir versuchen, diese Tabelle mit neun Partitionen zu exportieren, lesen wir sie mit parallel Abfragen wie den folgenden:SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300
Dies sollte neun Dateien von
part-00000-
bis erzeugenrandom_uuid
.gz.parquetpart-00008-
. Wenn es jedoch keine Zeilen IDs zwischenrandom_uuid
.gz.parquet200
und gibt350
, ist eine der fertigen Partitionen leer und es wird keine Datei dafür erstellt. Im vorherigen Beispiel wurdepart-00001-
nicht erstellt.random_uuid
.gz.parquet -
Ältere Konvention:
part-
partition_index
-random_uuid
.format-based_extension
Dies entspricht der aktuellen Konvention, jedoch ohne das
Präfix, zum Beispiel:batch_index
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
Die Namenskonvention für Dateien kann geändert werden. Daher empfehlen wir beim Lesen von Zieltabellen, dass Sie alles innerhalb des Basispräfixes für die Tabelle lesen.
Datenkonvertierung beim Exportieren in einen Amazon S3-Bucket
Wenn Sie einen DB-Snapshot in einen Amazon-S3-Bucket exportieren, konvertiert Amazon Aurora Daten in das Parquet-Format, exportiert Daten darin und speichert Daten im Parquet-Format. Weitere Informationen über Parquet finden Sie auf der Website Apache Parquet
Parquet speichert alle Daten als einen der folgenden primitiven Typen:
-
BOOLEAN
-
INT32
-
INT64
-
INT96
-
FLOAT
-
DOUBLE
-
BYTE_ ARRAY — Ein Byte-Array mit variabler Länge, auch als binär bezeichnet
-
FIXED_ _ LEN BYTE _ ARRAY — Ein Byte-Array mit fester Länge, das verwendet wird, wenn die Werte eine konstante Größe haben
Es gibt nur wenige Parquet-Datentypen, um die Komplexität beim Lesen und Schreiben des Formats zu reduzieren. Parquet bietet logische Typen zur Erweiterung primitiver Typen. Ein logischer Typ ist als Annotation, bei der Daten in einem LogicalType
-Metadatenfeld implementiert sind. Die logische Typannotation beschreibt, wie der primitive Typ zu interpretieren ist.
Wenn der STRING
logische Typ einen BYTE_ARRAY
Typ annotiert, bedeutet dies, dass das Byte-Array als UTF -8-kodierte Zeichenfolge interpretiert werden sollte. Nach Abschluss einer Exportaufgabe informiert Sie Amazon Aurora, wenn eine Zeichenfolgenkonvertierung stattgefunden hat. Die zugrunde liegenden exportierten Daten entsprechen immer den Daten aus der Quelle. Aufgrund des Kodierungsunterschieds in UTF -8 können einige Zeichen jedoch anders aussehen als die Quelle, wenn sie in Tools wie Athena gelesen werden.
Weitere Informationen finden Sie unter Logische Typdefinitionen für Parquet
Meine SQL Datentyp-Zuordnung zu Parquet
Die folgende Tabelle zeigt die Zuordnung von Meine SQL Datentypen zu Parquet-Datentypen, wenn Daten konvertiert und nach Amazon S3 exportiert werden.
Quelldatentyp | Parquet-Primitiv-Typ | Logische Typannotation | Anmerkungen zur Konvertierung |
---|---|---|---|
Numerische Datentypen | |||
BIGINT | INT64 | ||
BIGINT UNSIGNED | FIXED_ LEN _ BYTE _ ARRAY (9) | DECIMAL(20,0) | Parquet unterstützt nur Typen mit Vorzeichen, daher benötigt das Mapping ein zusätzliches Byte (8 plus 1), um den UNSIGNED Typ BIGINT _ zu speichern. |
BIT | BYTE_ARRAY | ||
DECIMAL | INT32 | DECIMAL(p, s) | Wenn der Quellwert kleiner als 2 31 ist, wird er gespeichert alsINT32. |
INT64 | DECIMAL(p, s) | Wenn der Quellwert 2 31 oder größer, aber kleiner als 2 63 ist, wird er gespeichert alsINT64. | |
FIXED_ LEN _ BYTE _ ARRAY (N) | DECIMAL(p, s) | Wenn der Quellwert 2 63 oder höher ist, wird er als FIXED _ _ LEN BYTE _ ARRAY (N) gespeichert. | |
BYTE_ARRAY | STRING | Parquet unterstützt maximal 38 Dezimalstellen. Der Dezimalwert wird in eine Zeichenfolge ARRAY vom Typ BYTE _ umgewandelt und als UTF8 codiert. | |
DOUBLE | DOUBLE | ||
FLOAT | DOUBLE | ||
INT | INT32 | ||
INT UNSIGNED | INT64 | ||
MEDIUMINT | INT32 | ||
MEDIUMINT UNSIGNED | INT64 | ||
NUMERIC | INT32 | DECIMAL(p, s) |
Wenn der Quellwert kleiner als 2 31 ist, wird er gespeichert alsINT32. |
INT64 | DECIMAL(p, s) | Wenn der Quellwert 2 31 oder größer, aber kleiner als 2 63 ist, wird er gespeichert alsINT64. | |
FIXED_ LEN _ ARRAY (N) | DECIMAL(p, s) | Wenn der Quellwert 2 63 oder höher ist, wird er als FIXED _ _ LEN BYTE _ ARRAY (N) gespeichert. | |
BYTE_ARRAY | STRING | Parquet unterstützt keine numerische Genauigkeit größer als 38. Dieser numerische Wert wird in eine Zeichenfolge ARRAY vom Typ BYTE _ konvertiert und als UTF8 codiert. | |
SMALLINT | INT32 | ||
SMALLINT UNSIGNED | INT32 | ||
TINYINT | INT32 | ||
TINYINT UNSIGNED | INT32 | ||
Zeichenfolgen-Datentypen | |||
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 | |
Datums- und Uhrzeit-Datentypen | |||
DATE | BYTE_ARRAY | STRING | Ein Datum wird in eine Zeichenfolge vom ARRAY Typ BYTE _ konvertiert und als codiert. UTF8 |
DATETIME | INT64 | TIMESTAMP_MICROS | |
TIME | BYTE_ARRAY | STRING | Ein TIME Typ wird in eine Zeichenfolge in einem BYTE _ umgewandelt ARRAY und als codiert. UTF8 |
TIMESTAMP | INT64 | TIMESTAMP_MICROS | |
YEAR | INT32 | ||
Geometrische Datentypen | |||
GEOMETRY | BYTE_ARRAY | ||
GEOMETRYCOLLECTION | BYTE_ARRAY | ||
MULTIPOINT | BYTE_ARRAY | ||
MULTIPOLYGON | BYTE_ARRAY | ||
POINT | BYTE_ARRAY | ||
POLYGON | BYTE_ARRAY | ||
JSONDatentyp | |||
JSON | BYTE_ARRAY | STRING |
Zuordnung des SQL Postgre-Datentyps zu Parquet
Die folgende Tabelle zeigt die Zuordnung von SQL Postgre-Datentypen zu Parquet-Datentypen, wenn Daten konvertiert und nach Amazon S3 exportiert werden.
Postgre-Datentyp SQL | Parquet-Primitiv-Typ | Logische Typannotation | Anmerkungen zum Mapping |
---|---|---|---|
Numerische Datentypen | |||
BIGINT | INT64 | ||
BIGSERIAL | INT64 | ||
DECIMAL | BYTE_ARRAY | STRING | Ein DECIMAL Typ wird in eine Zeichenfolge in einem BYTE ARRAY _-Typ konvertiert und als codiert. UTF8 Diese Konvertierung soll Komplikationen aufgrund von Datengenauigkeit und Datenwerten, die keine Zahlen sind (NaN), vermeiden. |
DOUBLE PRECISION | DOUBLE | ||
INTEGER | INT32 | ||
MONEY | BYTE_ARRAY | STRING | |
REAL | FLOAT | ||
SERIAL | INT32 | ||
SMALLINT | INT32 | INT_16 | |
SMALLSERIAL | INT32 | INT_16 | |
Zeichenfolgen- und verwandte Datentypen | |||
ARRAY | BYTE_ARRAY | STRING |
Ein Array wird in eine Zeichenfolge umgewandelt und als BINARY () UTF8 codiert. Diese Konvertierung dient dazu, Komplikationen aufgrund von Datengenauigkeit, Datenwerten, die keine Zahl sind (NaN), und Zeitdatenwerten zu vermeiden. |
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 | |
Datums- und Uhrzeit-Datentypen | |||
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 | |
Geometrische Datentypen | |||
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 | |
JSONDatentypen | |||
JSON | BYTE_ARRAY | STRING | |
JSONB | BYTE_ARRAY | STRING | |
Weitere Datentypen | |||
BOOLEAN | BOOLEAN | ||
CIDR | BYTE_ARRAY | STRING | Network-Datentyp |
COMPOSITE | BYTE_ARRAY | STRING | |
DOMAIN | BYTE_ARRAY | STRING | |
INET | BYTE_ARRAY | STRING | Network-Datentyp |
MACADDR | BYTE_ARRAY | STRING | |
OBJECT IDENTIFIER | N/A | ||
PG_ LSN | BYTE_ARRAY | STRING | |
RANGE | BYTE_ARRAY | STRING | |
UUID | BYTE_ARRAY | STRING |