Uso di Babelfish come destinazione per AWS Database Migration Service - AWS Database Migration Service

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

Uso di Babelfish come destinazione per AWS Database Migration Service

È possibile migrare i dati da un database di origine Microsoft SQL Server a una destinazione Babelfish utilizzando AWS Database Migration Service.

Babelfish per Aurora PostgreSQL estende l'Edizione compatibile con PostgreSQL database Amazon Aurora con la possibilità di accettare connessioni al database dai client Microsoft SQL Server. In questo modo, le applicazioni create originariamente per SQL Server possono funzionare direttamente con Aurora PostgreSQL con poche modifiche al codice rispetto a una migrazione tradizionale e senza modificare i driver del database.

Per informazioni sulle versioni di Babelfish supportate da AWS DMS come destinazione, consulta Obiettivi per AWS DMS. Le versioni precedenti di Babelfish su Aurora PostgreSQL richiedono un aggiornamento prima di utilizzare l'endpoint Babelfish.

Nota

L'endpoint di destinazione Aurora PostgreSQL è il modo preferito per migrare i dati su Babelfish. Per ulteriori informazioni, consulta Utilizzo di Babelfish per Aurora PostgreSQL come destinazione.

Per informazioni sull'utilizzo di Babelfish come endpoint di database, consulta Babelfish per Aurora PostgreSQL nella Guida per l'utente di Amazon Aurora User Guide

Prerequisiti per l'utilizzo di Babelfish come destinazione per AWS DMS

È necessario creare le tabelle prima di migrare i dati per assicurarsi che AWS DMS utilizzi i tipi di dati e i metadati delle tabelle corretti. Se non crei le tabelle sulla destinazione prima di eseguire la migrazione, è possibile che le tabelle vengano create da AWS DMS con tipi di dati e autorizzazioni errati. Ad esempio, AWS DMS crea una colonna timestamp come binary(8) e non fornisce la funzionalità timestamp/rowversion prevista.

Per preparare e creare le tabelle prima della migrazione
  1. Esegui le istruzioni DDL di creazione della tabella che includono vincoli univoci, chiavi primarie o limiti predefiniti.

    Non includere vincoli di chiave esterna o istruzioni DDL per oggetti come viste, stored procedure, funzioni o trigger. È possibile applicarli dopo la migrazione del database di origine.

  2. Identifica eventuali colonne di identità, colonne calcolate o colonne contenenti tipi di dati rowversion o timestamp per le tabelle. Quindi, crea le regole di trasformazione necessarie per gestire i problemi noti durante l'esecuzione dell'attività di migrazione. Per ulteriori informazioni, consulta Operazioni e regole di trasformazione.

  3. Identifica le colonne con tipi di dati che Babelfish non supporta. Quindi, modifica le colonne interessate nella tabella di destinazione per utilizzare i tipi di dati supportati o crea una regola di trasformazione che le rimuova durante l'attività di migrazione. Per ulteriori informazioni, consulta Operazioni e regole di trasformazione.

    La tabella seguente elenca i tipi di dati di origine non supportati da Babelfish e il corrispondente tipo di dati di destinazione consigliato per l'uso.

    Tipo di dati origine

    Tipo di dati Babelfish consigliato

    HEIRARCHYID

    NVARCHAR(250)

    GEOMETRY

    VARCHAR(MAX)

    GEOGRAPHY

    VARCHAR(MAX)

Per impostare il livello delle unità di capacità di Aurora (ACU) per il database di origine Aurora PostgreSQL serverless V2

È possibile migliorare le prestazioni dell'attività di migrazione AWS DMS prima di eseguirla impostando il valore minimo delle ACU.

Dopo aver eseguito l'attività di migrazione AWS DMS, è possibile reimpostare il valore minimo delle ACU a un livello ragionevole per il database di origine Aurora PostgreSQL serverless V2.

Requisiti di sicurezza quando si utilizza Babelfish come destinazione per AWS Database Migration Service

Di seguito sono descritti i requisiti di sicurezza per l'utilizzo di AWS DMS con una destinazione Babelfish:

  • Il nome utente dell'amministratore (l'utente Admin) utilizzato per creare il database.

  • Accesso PSQL e utente con le autorizzazioni SELECT, INSERT, UPDATE, DELETE e REFERENCES sufficienti.

Autorizzazioni dell'utente per l'utilizzo di Babelfish come destinazione per AWS DMS

Importante

Per motivi di sicurezza, l'account utente utilizzato per la migrazione dei dati deve corrispondere a un utente registrato in qualsiasi database Babelfish utilizzato come destinazione.

L'endpoint di destinazione Babelfish richiede le autorizzazioni utente minime per eseguire una migrazione AWS DMS.

Per creare un accesso e un utente Transact-SQL (T-SQL) con privilegi limitati
  1. Crea un accesso e una password da utilizzare per la connessione al server.

    CREATE LOGIN dms_user WITH PASSWORD = 'password'; GO
  2. Crea il database virtuale per il cluster Babelfish.

    CREATE DATABASE my_database; GO
  3. Crea l'utente T-SQL per il database di destinazione.

    USE my_database GO CREATE USER dms_user FOR LOGIN dms_user; GO
  4. Per ogni tabella del database Babelfish, CONCEDI le autorizzazioni alle tabelle.

    GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;

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

Quando si utilizza un database Babelfish come destinazione per AWS DMS, si applicano le seguenti limitazioni:

  • È supportata solo la modalità di preparazione delle tabelle "Nessuna operazione".

  • Il tipo di dati ROWVERSION richiede una regola di mappatura delle tabelle che rimuove il nome della colonna dalla tabella durante l'attività di migrazione.

  • Il tipo di dati sql_variant non è supportato.

  • La modalità LOB completa è supportata. L'utilizzo di SQL Server come endpoint di origine richiede l'impostazione ForceFullLob=True dell'attributo di connessione dell'endpoint di SQL Server per consentire la migrazione dei LOB all'endpoint di destinazione.

  • Le impostazioni delle attività di replica presentano le seguenti limitazioni:

    { "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, }. }
  • I tipi di dati TIME(7), DATETIME2(7) e DATETIMEOFFSET(7) in Babelfish limitano a 6 cifre il valore di precisione della parte dei secondi. Prendi in considerazione l'utilizzo di un valore di precisione di 6 cifre per la tabella di destinazione quando utilizzi questi tipi di dati. Per Babelfish 2.2.0 e versioni successive, quando si utilizza TIME(7) e DATETIME2(7), la settima cifra di precisione è sempre zero.

  • In modalità DO_NOTHING, DMS verifica se la tabella è già presente. Se la tabella non esiste nello schema di destinazione, DMS crea la tabella in base alla definizione della tabella di origine e mappa i tipi di dati definiti dall'utente al relativo tipo di dati di base.

  • L'attività di migrazione AWS DMS a una destinazione Babelfish non supporta le tabelle con colonne che utilizzano tipi di dati ROWVERSION o TIMESTAMP. È possibile utilizzare una regola di mappatura delle tabelle che rimuove il nome della colonna dalla tabella durante il processo di trasferimento. Nell'esempio di regola di trasformazione seguente, viene trasformata la tabella denominata Actor nell'origine per rimuovere tutte le colonne che iniziano con i caratteri col nella tabella Actor della destinazione.

    { "rules": [{ "rule-type": "selection",is "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
  • Per le tabelle con colonne identiche o calcolate, in cui le tabelle di destinazione utilizzano nomi con maiuscole e minuscole come Categorie, è necessario creare un'azione della regola di trasformazione che converta i nomi delle tabelle in lettere minuscole per l'attività DMS. L'esempio seguente mostra come creare l'azione della regola di trasformazione Converti in minuscole usando la console AWS DMS. Per ulteriori informazioni, consulta Operazioni e regole di trasformazione.

    Regola di trasformazione di Babelfish
  • Prima di Babelfish 2.2.0, DMS limitava a venti (20) il numero di colonne che era possibile replicare su un endpoint di destinazione Babelfish. Con Babelfish 2.2.0 il limite è aumentato a 100 colonne. Con Babelfish 2.4.0 e versioni successive il numero di colonne che è possibile replicare aumenta nuovamente. È possibile eseguire il seguente esempio di codice sul database SQL Server per determinare quali tabelle sono troppo lunghe.

    USE myDB; GO DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0 WITH bfendpoint AS ( SELECT [TABLE_SCHEMA] ,[TABLE_NAME] , COUNT( [COLUMN_NAME] ) AS NumberColumns , ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) AS InsertIntoCommandLength -- values string , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) -- values string >= @Babelfish_version_string_limit THEN 1 ELSE 0 END AS IsTooLong FROM [INFORMATION_SCHEMA].[COLUMNS] GROUP BY [TABLE_SCHEMA], [TABLE_NAME] ) SELECT * FROM bfendpoint WHERE IsTooLong = 1 ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME ;

Tipi di dati di destinazione per Babelfish

La tabella seguente mostra i tipi di dati di destinazione di Babelfish supportati quando si utilizza AWS DMS e la mappatura predefinita dai tipi di dati AWS DMS.

Per ulteriori informazioni sui tipi di dati AWS DMS, consulta Tipi di dati per AWS Database Migration Service.

Tipo di dati AWS DMS

Tipo di dati di Babelfish

BOOLEAN

TINYINT

BYTES

VARBINARY (lunghezza)

DATE

DATE

TIME

TIME

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMERIC(p,s)

REAL4

REAL

REAL8

FLOAT

STRING

Se la colonna è di ora o data, effettuare le seguenti operazioni:

  • Per SQL Server 2008 e versioni successive, utilizza DATETIME2.

  • Per le versioni precedenti, se il dimensionamento è pari o inferiore a 3, utilizzare DATETIME. In tutti gli altri casi, utilizzare VARCHAR (37).

Se la colonna non è di ora o data, utilizzare VARCHAR (lunghezza).

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR(length)

BLOB

VARBINARY(max)

Per utilizzare questo tipo di dati con DMS, è necessario abilitare l'utilizzo di BLOB per un'attività specifica. DMS supporta i tipi di dati BLOB solo nelle tabelle che includono una chiave primaria.

CLOB

VARCHAR(max)

Per utilizzare questo tipo di dati con DMS, è necessario abilitare l'utilizzo di CLOB per un'attività specifica.

NCLOB

NVARCHAR(max)

Per utilizzare questo tipo di dati con DMS, è necessario abilitare l'utilizzo di NCLOB per un'attività specifica. Durante la CDC, DMS supporta i tipi di dati NCLOB solo nelle tabelle che includono una chiave primaria.