

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan Babelfish sebagai target AWS Database Migration Service
<a name="CHAP_Target.Babelfish"></a>

Anda dapat memigrasikan data dari database sumber Microsoft SQL Server ke target Babelfish menggunakan. AWS Database Migration Service

Babelfish for Aurora PostgreSQL memperluas basis data Edisi yang Kompatibel dengan Amazon Aurora PostgreSQL Anda dengan kemampuan menerima koneksi basis data dari klien Server SQL Microsoft. Melakukan hal ini memungkinkan aplikasi awalnya dibangun untuk SQL Server untuk bekerja secara langsung dengan Aurora PostgreSQL dengan beberapa perubahan kode dibandingkan dengan migrasi tradisional, dan tanpa mengubah driver database. 

Untuk informasi tentang versi Babelfish yang AWS DMS mendukung sebagai target, lihat. [Target untuk AWS DMS](CHAP_Introduction.Targets.md) Versi Babelfish sebelumnya di Aurora PostgreSQL memerlukan peningkatan sebelum menggunakan titik akhir Babelfish.

**catatan**  
Titik akhir target PostgreSQL Aurora adalah cara yang lebih disukai untuk memigrasikan data ke Babelfish. Untuk informasi selengkapnya, lihat [Menggunakan Babelfish untuk Aurora PostgreSQL sebagai target](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Babelfish). 

*Untuk informasi tentang menggunakan Babelfish sebagai titik akhir database, lihat [Babelfish for Aurora PostgreSQL di Panduan Pengguna Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) untuk Aurora* 

## Prasyarat untuk menggunakan Babelfish sebagai target AWS DMS
<a name="CHAP_Target.Babelfish.Prerequisites"></a>

Anda harus membuat tabel sebelum memigrasi data untuk memastikannya AWS DMS menggunakan tipe data dan metadata tabel yang benar. Jika Anda tidak membuat tabel pada target sebelum menjalankan migrasi, AWS DMS dapat membuat tabel dengan tipe data dan izin yang salah. Misalnya, AWS DMS membuat kolom stempel waktu sebagai biner (8) sebagai gantinya, dan tidak menyediakan fungsionalitas yang diharapkan timestamp/rowversion .

**Untuk mempersiapkan dan membuat tabel Anda sebelum migrasi**

1. Jalankan pernyataan DDL tabel buat Anda yang menyertakan batasan unik, kunci utama, atau batasan default. 

   Jangan menyertakan batasan kunci asing, atau pernyataan DDL apa pun untuk objek seperti tampilan, prosedur tersimpan, fungsi, atau pemicu. Anda dapat menerapkannya setelah memigrasi basis data sumber Anda.

1. Identifikasi kolom identitas, kolom yang dihitung, atau kolom yang berisi tipe data versi baris atau stempel waktu untuk tabel Anda. Kemudian, buat aturan transformasi yang diperlukan untuk menangani masalah yang diketahui saat menjalankan tugas migrasi. Untuk informasi selengkapnya, lihat [Aturan dan tindakan transformasi](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

1. Identifikasi kolom dengan tipe data yang tidak didukung Babelfish. Kemudian, ubah kolom yang terpengaruh dalam tabel target untuk menggunakan tipe data yang didukung, atau buat aturan transformasi yang menghapusnya selama tugas migrasi. Untuk informasi selengkapnya, lihat [Aturan dan tindakan transformasi](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

   Tabel berikut mencantumkan tipe data sumber yang tidak didukung oleh Babelfish, dan jenis data target yang direkomendasikan untuk digunakan.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/dms/latest/userguide/CHAP_Target.Babelfish.html)

**Untuk mengatur tingkat unit kapasitas Aurora (ACUs) untuk basis data sumber Aurora PostgreSQL Serverless V2 Anda**

Anda dapat meningkatkan kinerja tugas AWS DMS migrasi Anda sebelum menjalankannya dengan menetapkan nilai ACU minimum.
+ Dari jendela **pengaturan kapasitas Severless v2**, atur **Minimum ACUs** ke**2**, atau level yang wajar untuk cluster Aurora DB Anda.

  *Untuk informasi tambahan tentang pengaturan unit kapasitas Aurora, lihat [Memilih rentang kapasitas v2 Tanpa Server Aurora untuk klaster Aurora di Panduan Pengguna Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html)* 

Setelah menjalankan tugas AWS DMS migrasi, Anda dapat mengatur ulang nilai minimum Anda ke tingkat yang wajar ACUs untuk basis data sumber Aurora PostgreSQL Serverless V2 Anda.

## Persyaratan keamanan saat menggunakan Babelfish sebagai target AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Security"></a>

Berikut ini menjelaskan persyaratan keamanan untuk menggunakan AWS DMS dengan target Babelfish:
+ Nama pengguna administrator (pengguna Admin) digunakan untuk membuat database.
+ Login PSQL dan pengguna dengan izin SELECT, INSERT, UPDATE, DELETE, dan REFERENCES yang memadai.

## Izin pengguna untuk menggunakan Babelfish sebagai target AWS DMS
<a name="CHAP_Target.Babelfish.Permissions"></a>

**penting**  
Untuk tujuan keamanan, akun pengguna yang digunakan untuk migrasi data harus merupakan pengguna terdaftar dalam database Babelfish yang Anda gunakan sebagai target.

Titik akhir target Babelfish Anda memerlukan izin pengguna minimum untuk menjalankan migrasi. AWS DMS 

**Untuk membuat login dan pengguna Transact-SQL (T-SQL) dengan hak istimewa rendah**

1. Buat login dan kata sandi untuk digunakan saat menghubungkan ke server.

   ```
   CREATE LOGIN dms_user WITH PASSWORD = {{'password'}};
   GO
   ```

1. Buat database virtual untuk cluster Babelfish Anda.

   ```
   CREATE DATABASE my_database;
   GO
   ```

1. Buat pengguna T-SQL untuk database target Anda.

   ```
   USE my_database
   GO
   CREATE USER dms_user FOR LOGIN dms_user;
   GO
   ```

1. Untuk setiap tabel dalam database Babelfish Anda, BERIKAN izin ke tabel.

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

## Keterbatasan penggunaan Babelfish sebagai target AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Limitations"></a>

Batasan berikut berlaku saat menggunakan database Babelfish sebagai target untuk: AWS DMS
+ Hanya mode persiapan meja “**Do Nothing** “yang didukung.
+ Tipe data ROWVERSION memerlukan aturan pemetaan tabel yang menghapus nama kolom dari tabel selama tugas migrasi.
+ Jenis data sql\_variant tidak didukung.
+ Mode LOB penuh didukung. Menggunakan SQL Server sebagai titik akhir sumber memerlukan pengaturan Atribut Koneksi Titik Akhir SQL Server `ForceFullLob=True` untuk disetel agar dapat dimigrasi LOBs ke titik akhir target.
+ Pengaturan tugas replikasi memiliki batasan berikut:

  ```
  {
     "FullLoadSettings": {
        "TargetTablePrepMode": "DO_NOTHING",
        "CreatePkAfterFullLoad": false,
        }.
      
  }
  ```
+ Tipe data TIME (7), DATETIME2 (7), dan DATETIMEOFFSET (7) di Babelfish membatasi nilai presisi untuk porsi detik waktu menjadi 6 digit. Pertimbangkan untuk menggunakan nilai presisi 6 untuk tabel target Anda saat menggunakan tipe data ini. Untuk Babelfish versi 2.2.0 dan lebih tinggi, saat menggunakan TIME (7) dan DATETIME2 (7), digit presisi ketujuh selalu nol.
+ Dalam mode DO\_NOTHING, DMS memeriksa untuk melihat apakah tabel sudah ada. Jika tabel tidak ada dalam skema target, DMS membuat tabel berdasarkan definisi tabel sumber, dan memetakan setiap tipe data yang ditentukan pengguna ke tipe data dasarnya.
+ Tugas AWS DMS migrasi ke target Babelfish tidak mendukung tabel yang memiliki kolom menggunakan tipe data ROWVERSION atau TIMESTAMP. Anda dapat menggunakan aturan pemetaan tabel yang menghapus nama kolom dari tabel selama proses transfer. Dalam contoh aturan transformasi berikut, tabel bernama `Actor` di sumber Anda diubah untuk menghapus semua kolom yang dimulai dengan karakter `col` dari `Actor` tabel di target Anda.

  ```
  {
   	"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%"
  		}
  	}]
   }
  ```
+ Untuk tabel dengan identitas atau kolom terhitung, di mana tabel target menggunakan nama kasus campuran seperti Kategori, Anda harus membuat tindakan aturan transformasi yang mengubah nama tabel menjadi huruf kecil untuk tugas DMS Anda. Contoh berikut menunjukkan cara membuat tindakan aturan transformasi, **Buat huruf kecil** menggunakan konsol. AWS DMS Untuk informasi selengkapnya, lihat [Aturan dan tindakan transformasi](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).  
![Aturan transformasi babelfish](http://docs.aws.amazon.com/id_id/dms/latest/userguide/images/datarep-babelfish-transform-1.png)
+ Sebelum Babelfish versi 2.2.0, DMS membatasi jumlah kolom yang dapat Anda replikasi ke titik akhir target Babelfish menjadi dua puluh (20) kolom. Dengan Babelfish 2.2.0 batasnya meningkat menjadi 100 kolom. Tetapi dengan Babelfish versi 2.4.0 dan lebih tinggi, jumlah kolom yang dapat Anda tiru meningkat lagi. Anda dapat menjalankan contoh kode berikut terhadap database SQL Server Anda untuk menentukan tabel mana yang terlalu panjang.

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

## Tipe data target untuk Babelfish
<a name="CHAP_Target.Babelfish.DataTypes"></a>

Tabel berikut menunjukkan tipe data target Babelfish yang didukung saat menggunakan AWS DMS dan pemetaan default dari AWS DMS tipe data.

Untuk informasi tambahan tentang tipe AWS DMS data, lihat[Tipe data untuk AWS Database Migration Service](CHAP_Reference.DataTypes.md). 


|  AWS DMS tipe data  |  Tipe data Babelfish   | 
| --- | --- | 
| BOOLEAN | TINYINT | 
| BYTES | VARBINARY(length) | 
| DATE | DATE | 
| TIME | TIME | 
| INT1 | SMALLINT | 
| INT2 | SMALLINT | 
| INT4 | INT | 
| INT8 | BIGINT | 
| NUMERIC  | NUMERIK (p, s) | 
| REAL4 | REAL | 
| REAL8 | FLOAT | 
| STRING | Jika kolom berupa kolom tanggal atau waktu, lakukan hal berikut: [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/dms/latest/userguide/CHAP_Target.Babelfish.html)<br />Jika kolom bukan berupa kolom tanggal atau waktu, gunakan VARCHAR (length). | 
| UINT1 | TINYINT | 
| UINT2 | SMALLINT | 
| UINT4 | INT | 
| UINT8 | BIGINT | 
| WSTRING | NVARCHAR (panjang) | 
| BLOB | VARBINARY(max)<br />Untuk menggunakan tipe data ini dengan DMS, Anda harus mengaktifkan penggunaan BLOBs untuk tugas tertentu. DMS mendukung tipe data BLOB hanya dalam tabel yang menyertakan kunci primer. | 
| CLOB | VARCHAR(max)<br />Untuk menggunakan tipe data ini dengan DMS, Anda harus mengaktifkan penggunaan CLOBs untuk tugas tertentu. | 
| NCLOB | NVARCHAR(max)<br />Untuk menggunakan tipe data ini dengan DMS, Anda harus mengaktifkan penggunaan NCLOBs untuk tugas tertentu. Selama CDC, DMS mendukung tipe data NCLOB hanya dalam tabel yang menyertakan kunci utama. | 