

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

# Menggunakan ekstensi Aurora PostgreSQL dengan Babelfish
<a name="babelfish-postgres-aws-extensions"></a>

Aurora PostgreSQL menyediakan ekstensi untuk bekerja dengan layanan lain. AWS Ini adalah ekstensi opsional yang mendukung berbagai kasus penggunaan, seperti menggunakan Amazon S3 dengan klaster DB Anda untuk mengimpor atau mengekspor data. 
+ Untuk mengimpor data dari bucket Amazon S3 ke klaster DB Babelfish, siapkan ekstensi Aurora PostgreSQL `aws_s3`. Ekstensi ini juga memungkinkan Anda mengekspor data dari klaster DB Aurora PostgreSQL ke bucket Amazon S3. 
+ AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Anda dapat menggunakan fungsi Lambda untuk melakukan hal-hal seperti memproses notifikasi peristiwa dari instans DB Anda. Untuk mempelajari lebih lanjut tentang Lambda, lihat [Apa itu AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)? di *Panduan Developer AWS Lambda .* Untuk menginvokasi fungsi Lambda dari klaster DB Babelfish Anda, siapkan ekstensi Aurora PostgreSQL `aws_lambda`. 

Untuk menyiapkan ekstensi ini untuk klaster Babelfish Anda, Anda harus terlebih dahulu memberikan izin kepada pengguna internal Babelfish untuk memuat ekstensi. Setelah memberikan izin, Anda kemudian dapat memuat ekstensi Aurora PostgreSQL. 

## Mengaktifkan ekstensi Aurora PostgreSQL di klaster DB Babelfish Anda
<a name="babelfish-postgres-aws-extensions-enabling"></a>

Sebelum Anda dapat memuat ekstensi `aws_s3` atau `aws_lambda`, Anda memberikan hak istimewa yang diperlukan untuk klaster DB Babelfish Anda. 

Prosedur berikut menggunakan alat baris perintah PostgreSQL `psql` untuk terhubung ke klaster DB. Untuk informasi selengkapnya, lihat [Menggunakan psql untuk terhubung ke klaster DB](babelfish-connect-PostgreSQL.md#babelfish-connect-psql). Anda juga dapat menggunakan pgAdmin. Lihat perinciannya di [Menggunakan pgAdmin untuk terhubung ke klaster DB](babelfish-connect-PostgreSQL.md#babelfish-connect-pgadmin). 

Prosedur ini memuat keduanya `aws_s3` dan `aws_lambda`, satu demi satu. Anda tidak perlu memuat keduanya jika hanya ingin menggunakan salah satu dari ekstensi ini. Ekstensi `aws_commons` diperlukan oleh masing-masing, dan itu dimuat secara default seperti yang ditunjukkan pada output. 

**Untuk mengatur klaster DB Babelfish Anda dengan hak istimewa untuk ekstensi Aurora PostgreSQL**

1. Hubungkan ke klaster DB Babelfish Anda. Gunakan nama untuk pengguna “master” (-U) yang Anda tentukan saat Anda membuat klaster DB Babelfish. Default (`postgres`) ditampilkan dalam contoh. 

   Untuk Linux, macOS, atau Unix:

   ```
   psql -h {{your-Babelfish.cluster.444455556666-us-east-1.rds.amazonaws.com}} \
   -U postgres \
   -d babelfish_db \
   -p 5432
   ```

   Untuk Windows:

   ```
   psql -h {{your-Babelfish.cluster.444455556666-us-east-1.rds.amazonaws.com}} ^
   -U postgres ^
   -d babelfish_db ^
   -p 5432
   ```

   Perintah merespons dengan prompt untuk memasukkan kata sandi untuk nama pengguna (-U).

   ```
   Password:
   ```

   Anda perlu memasukkan kata sandi untuk nama pengguna (-U) untuk klaster DB. Ketika Anda berhasil terhubung, Anda melihat output yang serupa dengan berikut ini.

   ```
   psql (13.4)
   SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
   Type "help" for help.
   
   postgres=>
   ```

1. Berikan hak istimewa kepada pengguna Babelfish internal untuk membuat dan memuat ekstensi.

   ```
   babelfish_db=> GRANT rds_superuser TO master_dbo;
   GRANT ROLE
   ```

1. Buat dan muat ekstensi `aws_s3`. Ekstensi `aws_commons` diperlukan, dan diinstal secara otomatis ketika `aws_s3` diinstal.

   ```
   babelfish_db=> create extension aws_s3 cascade;
   NOTICE:  installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. Buat dan muat ekstensi `aws_lambda`.

   ```
   babelfish_db=> create extension aws_lambda cascade;
   CREATE EXTENSION
   babelfish_db=>
   ```

## Menggunakan Babelfish dengan Amazon S3
<a name="babelfish-postgres-aws-extensions-using-aws_s3"></a>

Jika Anda belum memiliki bucket Amazon S3 untuk digunakan dengan klaster DB Babelfish Anda, Anda dapat membuatnya. Untuk bucket Amazon S3 yang ingin Anda gunakan, Anda menyediakan akses.

Sebelum mencoba mengimpor atau mengekspor data menggunakan bucket Amazon S3, selesaikan langkah-langkah satu kali berikut. 

**Cara menyiapkan akses instans DB Babelfish ke bucket Amazon S3**

1. Buat bucket Amazon S3 untuk instans Babelfish Anda, jika diperlukan. Untuk melakukannya, ikuti petunjuk di [Buat ember](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.htmlurl-s3-user;GetStartedWithS3.html#creating-bucket) di *Pengguna Layanan Penyimpanan Sederhana Amazon Guideguide-s3-user;*. 

1. Unggah file ke bucket Amazon S3. Untuk melakukannya, ikuti langkah-langkah di [Tambahkan objek ke ember](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PuttingAnObjectInABucket.htmlurl-s3-user;GetStartedWithS3.html#uploading-an-object-bucket) di *Amazon Simple Storage Service User Guideguide-s3-user;.* 

1. Siapkan izin sesuai kebutuhan:
   + Untuk mengimpor data dari Amazon S3, klaster DB Babelfish memerlukan izin untuk mengakses bucket. Sebaiknya gunakan peran AWS Identity and Access Management (IAM) dan melampirkan kebijakan IAM ke peran tersebut untuk klaster Anda. Untuk melakukannya, ikuti langkah yang ada di [Menggunakan peran IAM untuk mengakses bucket Amazon S3](USER_PostgreSQL.S3Import.AccessPermission.md#USER_PostgreSQL.S3Import.ARNRole). 
   + Untuk mengekspor data dari klaster DB Babelfish, klaster Anda harus diberikan akses ke bucket Amazon S3. Seperti halnya mengimpor, sebaiknya gunakan kebijakan dan peran IAM. Untuk melakukannya, ikuti langkah yang ada di [Menyiapkan akses ke bucket Amazon S3](postgresql-s3-export-access-bucket.md).

Sekarang Anda dapat menggunakan Amazon S3 dengan ekstensi `aws_s3` dengan klaster DB Babelfish Anda. 

**Untuk mengimpor data dari Amazon S3 ke Babelfish dan untuk mengekspor data Babelfish ke Amazon S3**

1. Gunakan ekstensi `aws_s3` dengan klaster DB Babelfish Anda. 

   Ketika Anda melakukannya, pastikan untuk mereferensikan tabel seperti yang ada dalam konteks PostgreSQL. Artinya, jika Anda ingin mengimpor ke dalam tabel Babelfish bernama `[database].[schema].[tableA]`, lihat tabel itu seperti `database_schema_tableA` dalam fungsi `aws_s3`:
   + Untuk contoh penggunaan fungsi `aws_s3` untuk mengimpor data, lihat [](USER_PostgreSQL.S3Import.FileFormats.md). 
   + Untuk contoh penggunaan fungsi `aws_s3` untuk mengekspor data, lihat [Mengekspor data kueri menggunakan fungsi aws\_s3.query\_export\_to\_s3](postgresql-s3-export-examples.md). 

1. Pastikan untuk mereferensikan tabel Babelfish menggunakan penamaan PostgreSQL saat menggunakan ekstensi `aws_s3` dan Amazon S3, seperti yang ditunjukkan pada tabel berikut.


| Tabel Babelfish | Tabel Aurora PostgreSQL | 
| --- | --- | 
| `{{database}}.{{schema}}.{{table}}` | `{{database}}_{{schema}}_{{table}}` | 

Untuk mempelajari selengkapnya tentang menggunakan Amazon S3 dengan Aurora PostgreSQL, lihat [Mengimpor data dari Amazon S3 ke klaster DB Aurora PostgreSQL](USER_PostgreSQL.S3Import.md) dan [Mengekspor data dari klaster DB Aurora PostgreSQL ke Amazon S3](postgresql-s3-export.md). 

## Menggunakan Babelfish dengan AWS Lambda
<a name="babelfish-postgres-aws-extensions-using-aws_lambda"></a>

Setelah ekstensi `aws_lambda` dimuat di klaster DB Babelfish Anda tetapi sebelum Anda dapat menginvokasi fungsi Lambda, beri Lambda akses ke klaster DB Anda dengan mengikuti prosedur ini. 

**Untuk mengatur akses klaster DB Babelfish Anda agar berfungsi dengan Lambda**

Prosedur ini menggunakan AWS CLI untuk membuat kebijakan dan peran IAM, dan mengaitkannya dengan cluster Babelfish DB. 

1. Buat kebijakan IAM yang memungkinkan akses ke Lambda dari klaster DB Babelfish Anda.

   ```
   aws iam create-policy  --policy-name {{rds-lambda-policy}} --policy-document '{
   	"Version": "2012-10-17",		 	 	 
       "Statement": [
           {
           "Sid": "AllowAccessToExampleFunction",
           "Effect": "Allow",
           "Action": "lambda:InvokeFunction",
           "Resource": "arn:aws:lambda:{{{{aws-region}}:444455556666:function:my-function}}"
           }
       ]
   }'
   ```

1. Buat peran IAM yang dapat diambil oleh kebijakan saat runtime.

   ```
   aws iam create-role  --role-name {{rds-lambda-role}} --assume-role-policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Principal": {
               "Service": "rds.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
           }
       ]
   }'
   ```

1. Lampirkan kebijakan pada peran tersebut.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::{{444455556666}}:policy/{{rds-lambda-policy}} \
       --role-name {{rds-lambda-role}} --region {{aws-region}}
   ```

1. Melampirkan peran ke klaster DB Babelfish Anda

   ```
   aws rds add-role-to-db-cluster \
          --db-cluster-identifier {{my-cluster-name}} \
          --feature-name Lambda \
          --role-arn  arn:aws:iam::{{444455556666:role/rds-lambda-role}}   \
          --region {{aws-region}}
   ```

Setelah Anda menyelesaikan tugas-tugas ini, Anda dapat menginvokasi fungsi Lambda Anda. Untuk informasi lebih lanjut dan contoh pengaturan AWS Lambda untuk Aurora PostgreSQL DB cluster dengan, lihat. AWS Lambda[ AWS Lambda](PostgreSQL-Lambda.md#PostgreSQL-Lambda-access) 

**Cara menginvokasi fungsi Lambda dari klaster DB Babelfish Anda**

AWS Lambda mendukung fungsi yang ditulis dalam Java Node.js, Python, Ruby, dan bahasa lainnya. Jika fungsi menampilkan teks saat diinvokasi, Anda dapat memanggilnya dari klaster DB Babelfish Anda. Contoh berikut adalah fungsi python placeholder yang menampilkan salam.

```
lambda_function.py
import json
def lambda_handler(event, context):
    #TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
```

Saat ini, Babelfish tidak mendukung JSON. Jika fungsi Anda menampilkan JSON, gunakan pembungkus untuk menangani JSON. Misalnya, `lambda_function.py` yang ditunjukkan sebelumnya disimpan di Lambda sebagai `my-function`.

1. Hubungkan ke klaster DB Babelfish Anda menggunakan klien `psql` (atau klien pgAdmin). Untuk informasi selengkapnya, lihat [Menggunakan psql untuk terhubung ke klaster DB](babelfish-connect-PostgreSQL.md#babelfish-connect-psql). 

1. Buat pembungkusnya. Contoh ini menggunakan bahasa prosedural PostgreSQL untuk SQL, `PL/pgSQL`. Untuk mempelajari selengkapnya, lihat [PL/pgSQL—SQL Procedural](https://www.postgresql.org/docs/13/plpgsql.html) Language.

   ```
   create or replace function master_dbo.lambda_wrapper()
   returns text
   language plpgsql
   as
   $$
   declare
      r_status_code integer;
      r_payload text;
   begin
      SELECT payload INTO r_payload
        FROM aws_lambda.invoke(  aws_commons.create_lambda_function_arn('my-function', 'us-east-1')
                               ,'{"body": "Hello from Postgres!"}'::json );
      return r_payload ;
   end;
   $$;
   ```

   Fungsi ini sekarang dapat dijalankan dari port TDS Babelfish (1433) atau dari port PostgreSQL (5433). 

   1. Untuk menginvokasi (memanggil) fungsi ini dari port PostgreSQL Anda:

      ```
      SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function', 'us-east-1'), '{"body": "Hello from Postgres!"}'::json );
      ```

      Output Anda akan serupa dengan yang berikut ini.

      ```
      status_code |                        payload                        | executed_version | log_result
      -------------+-------------------------------------------------------+------------------+------------
               200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST          |
      (1 row)
      ```

   1. Untuk menginvokasi (memanggil) fungsi ini dari port TDS, sambungkan ke port menggunakan klien baris perintah `sqlcmd` SQL Server. Lihat perinciannya di [Menggunakan klien SQL Server untuk terhubung ke klaster DB Anda](babelfish-connect-sqlserver.md). Saat terhubung, jalankan yang berikut ini:

      ```
      1> select lambda_wrapper();
      2> go
      ```

      Perintah tersebut menghasilkan output yang serupa dengan berikut ini:

      ```
      {"statusCode": 200, "body": "\"Hello from Lambda!\""}
      ```

Untuk mempelajari selengkapnya tentang menggunakan Lambda dengan Aurora PostgreSQL, lihat [](PostgreSQL-Lambda.md). Untuk informasi selengkapnya tentang bekerja dengan fungsi Lambda, lihat [Memulai dengan Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) di *Panduan Developer AWS Lambda .*

## Menggunakan pg\_stat\_statements di Babelfish
<a name="babelfish-postgres-aws-extensions-using-pgstat"></a>

Babelfish for Aurora PostgreSQL mendukung ekstensi `pg_stat_statements` dari 3.3.0. Untuk mempelajari lebih lanjut, lihat [pg\_stat\_statements](https://www.postgresql.org/docs/current/pgstatstatements.html).

Untuk detail tentang versi ekstensi ini didukung oleh Aurora PostgreSQL, lihat [Versi ekstensi](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html).

### Membuat ekstensi pg\_stat\_statements
<a name="babelfish-postgres-aws-extensions-using-pgstat-install"></a>

Untuk mengaktifkan `pg_stat_statements`, Anda harus mengaktifkan perhitungan pengidentifikasi Kueri. Hal ini dilakukan secara otomatis jika `compute_query_id` diatur ke `on` atau `auto` di grup parameter. Nilai default untuk parameter `compute_query_id` adalah `auto`. Anda juga perlu membuat ekstensi ini untuk mengaktifkan fitur ini. Gunakan perintah berikut untuk menginstal ekstensi dari T-SQL titik akhir:

```
				
1>EXEC sp_execute_postgresql 'CREATE EXTENSION pg_stat_statements WITH SCHEMA sys';
```

Anda dapat mengakses statistik kueri menggunakan kueri berikut:

```
postgres=>select * from pg_stat_statements; 
```

**catatan**  
Selama instalasi, jika Anda tidak memberikan nama skema untuk ekstensi, maka secara default akan membuatnya dalam skema publik. Untuk mengaksesnya, Anda harus menggunakan tanda kurung siku dengan kualifikasi skema seperti yang ditunjukkan di bawah ini: 

```
postgres=>select * from [public].pg_stat_statements;
```

Anda juga dapat membuat ekstensi dari titik akhir PSQL. 

### Mengotorisasi ekstensi
<a name="babelfish-postgres-aws-extensions-using-pgstat-authorization"></a>

Secara default, Anda dapat melihat statistik untuk kueri yang dilakukan dalam T-SQL database Anda tanpa memerlukan otorisasi apa pun.

Untuk mengakses statistik kueri yang dibuat oleh orang lain, Anda harus memiliki peran PostgreSQL `pg_read_all_stats`. Ikuti langkah-langkah yang disebutkan di bawah ini untuk membuat perintah GRANT pg\_read\_all\_stats.

1. Dalam T-SQL, gunakan kueri berikut yang mengembalikan nama peran PG internal.

   ```
   SELECT rolname FROM pg_roles WHERE oid = USER_ID();
   ```

1. Hubungkan ke basis data Babelfish for Aurora PostgreSQL dengan hak istimewa rds\_superuser dan gunakan perintah berikut:

   ```
   GRANT pg_read_all_stats TO <rolname_from_above_query>
   ```

**Contoh**  
Dari T-SQL titik akhir:

```
1>SELECT rolname FROM pg_roles WHERE oid = USER_ID();
2>go
```

```
rolname
-------
master_dbo
(1 rows affected)
```

Dari titik akhir PSQL:

```
babelfish_db=# grant pg_read_all_stats to master_dbo;
```

```
GRANT ROLE
```

Anda dapat mengakses statistik kueri menggunakan tampilan pg\_stat\_statements:

```
1>create table t1(cola int);
2>go
1>insert into t1 values (1),(2),(3);
2>go
```

```
(3 rows affected)
```

```
1>select userid, dbid, queryid, query from pg_stat_statements;
2>go
```

```
userid dbid queryid             query
------ ---- -------             -----
37503 34582 6487973085327558478 select * from t1
37503 34582 6284378402749466286 SET QUOTED_IDENTIFIER OFF
37503 34582 2864302298511657420 insert into t1 values ($1),($2),($3)
10    34582 NULL                <insufficient privilege>
37503 34582 5615368793313871642 SET TEXTSIZE 4096
37503 34582 639400815330803392  create table t1(cola int)
(6 rows affected)
```

### Mengatur ulang statistik kueri
<a name="babelfish-postgres-aws-extensions-using-pgstat-reset"></a>

Anda dapat menggunakan `pg_stat_statements_reset()` untuk mengatur ulang statistik yang dikumpulkan sejauh ini oleh pg\_stat\_statements. Untuk mempelajari lebih lanjut, lihat [pg\_stat\_statements]( https://www.postgresql.org/docs/current/pgstatstatements.html). Saat ini didukung melalui titik akhir PSQL saja. Hubungkan ke Babelfish for Aurora PostgreSQL dengan hak istimewa `rds_superuser`, gunakan perintah berikut: 

```
SELECT pg_stat_statements_reset();
```

### Batasan
<a name="babelfish-postgres-aws-extensions-using-pgstat-limitations"></a>
+ Saat `pg_stat_statements()` ini, tidak didukung melalui T-SQL titik akhir. `pg_stat_statements`view adalah cara yang disarankan untuk mengumpulkan statistik.
+ Beberapa kueri mungkin ditulis ulang oleh T-SQL parser yang diimplementasikan oleh mesin Aurora PostgreSQL, tampilan akan menampilkan kueri yang ditulis ulang dan bukan kueri `pg_stat_statements` asli.

  Contoh

  ```
  select next value for [dbo].[newCounter];
  ```

   Kueri di atas ditulis ulang sebagai berikut dalam tampilan pg\_stat\_statements.

  ```
  select nextval($1);
  ```
+ Berdasarkan alur eksekusi pernyataan, beberapa kueri mungkin tidak dilacak oleh pg\_stat\_statements dan tidak akan terlihat dalam tampilan. Ini termasuk pernyataan berikut: `use dbname`, `goto`, `print`, `raise error`, `set`, `throw`, `declare cursor`. 
+ Untuk pernyataan CREATE LOGIN dan ALTER LOGIN, query dan queryid tidak akan ditampilkan. Ini akan menunjukkan hak istimewa yang tidak memadai.
+ Tampilan `pg_stat_statements` selalu berisi dua entri di bawah ini, karena ini dijalankan secara internal oleh klien `sqlcmd`.
  + SET QUOTED\_IDENTIFIER OFF
  + SET TEXTSIZE 4096

## Menggunakan pgvector di Babelfish
<a name="babelfish-postgres-aws-extensions-using-pgvector"></a>

pgvector, ekstensi sumber terbuka, memungkinkan Anda mencari data serupa secara langsung dalam database Postgres Anda. Babelfish sekarang mendukung ekstensi ini dimulai dengan versi 15.6 dan 16.2. Untuk informasi lebih lanjut, [pgvector Open source](https://github.com/pgvector/pgvector) Documentation.

### Prasyarat
<a name="babelfish-postgres-aws-extensions-using-pgvector-prereq"></a>

Untuk mengaktifkan fungsionalitas pgvector, instal ekstensi dalam skema sys menggunakan salah satu metode berikut:
+ Jalankan perintah berikut di klien sqlcmd:

  ```
  exec sys.sp_execute_postgresql 'CREATE EXTENSION vector WITH SCHEMA sys';
  ```
+ Connect to `babelfish_db` dan jalankan perintah berikut di psql client:

  ```
  CREATE EXTENSION vector WITH SCHEMA sys;
  ```

**catatan**  
Setelah menginstal ekstensi pgvector, tipe data vektor hanya akan tersedia dalam koneksi database baru yang Anda buat. Koneksi yang ada tidak akan mengenali tipe data baru.

### Fungsionalitas yang Didukung
<a name="babelfish-postgres-aws-extensions-using-pgvector-supported"></a>

Babelfish memperluas T-SQL fungsionalitas untuk mendukung hal-hal berikut:
+ **Menyimpan**

  Babelfish sekarang mendukung sintaks yang kompatibel dengan tipe data vektor, meningkatkan kompatibilitasnya. T-SQL [Untuk mempelajari selengkapnya tentang menyimpan data dengan pgvector, lihat Menyimpan.](https://github.com/pgvector/pgvector?tab=readme-ov-file#storing)
+ **Meminta**

   Babelfish memperluas dukungan T-SQL ekspresi untuk memasukkan operator kesamaan vektor. Namun, untuk semua kueri lainnya, T-SQL sintaks standar masih diperlukan.
**catatan**  
T-SQL tidak mendukung tipe Array, dan driver database tidak memiliki antarmuka untuk menanganinya. Sebagai solusinya, Babelfish menggunakan string teks () varchar/nvarchar untuk menyimpan data vektor. Misalnya, ketika Anda meminta nilai vektor [1,2,3], Babelfish akan mengembalikan string '[1,2,3]' sebagai respons. Anda dapat mengurai dan membagi string ini di tingkat aplikasi sesuai kebutuhan Anda.

  [Untuk mempelajari lebih lanjut tentang kueri data dengan pgvector, lihat Menanyakan.](https://github.com/pgvector/pgvector?tab=readme-ov-file#querying)
+ **Pengindeksan**

  T-SQL `Create Index`sekarang mendukung `USING INDEX_METHOD` sintaks. Sekarang Anda dapat menentukan operator pencarian kesamaan yang akan digunakan pada kolom tertentu saat membuat indeks.

  Tata bahasa juga diperluas untuk mendukung operasi kesamaan Vektor pada kolom yang diperlukan (Periksa tata bahasa column\_name\_list\_with\_order\_for\_vector).

  ```
  CREATE [UNIQUE] [clustered] [COLUMNSTORE] INDEX <index_name> ON <table_name> [USING vector_index_method] (<column_name_list_with_order_for_vector>)
  Where column_name_list_with_order_for_vector is:
      <column_name> [ASC | DESC] [VECTOR_COSINE_OPS | VECTOR_IP_OPS | VECTOR_L2_OPS] (COMMA simple_column_name [ASC | DESC] [VECTOR_COSINE_OPS | VECTOR_IP_OPS | VECTOR_L2_OPS])
  ```

  [Untuk mempelajari lebih lanjut tentang pengindeksan data dengan pgvector, lihat Pengindeksan.](https://github.com/pgvector/pgvector?tab=readme-ov-file#indexing)
+ **Performa**
  + Gunakan `SET BABELFISH_STATISTICS PROFILE ON` untuk men-debug Rencana Kueri dari titik T-SQL akhir. 
  + Tingkatkan `max_parallel_workers_get_gather` menggunakan `set_config` fungsi yang didukung di T-SQL.
  + Gunakan `IVFFlat` untuk perkiraan pencarian. Untuk informasi lebih lanjut, lihat [iVFFlat](https://github.com/pgvector/pgvector?tab=readme-ov-file#ivfflat).

  [Untuk meningkatkan kinerja dengan pgvector, lihat Kinerja.](https://github.com/pgvector/pgvector?tab=readme-ov-file#performance)

### Batasan
<a name="babelfish-postgres-aws-extensions-using-pgvector-unsupported"></a>
+ Babelfish tidak mendukung Pencarian Teks Lengkap untuk Pencarian Hibrida. Untuk informasi selengkapnya, lihat [Pencarian Hybrid](https://github.com/pgvector/pgvector?tab=readme-ov-file#hybrid-search).
+ Babelfish saat ini tidak mendukung fungsionalitas pengindeksan ulang. Namun, Anda masih dapat menggunakan PostgreSQL endpoint untuk mengindeks ulang. Untuk informasi lebih lanjut, lihat [Menyedot debu](https://github.com/pgvector/pgvector?tab=readme-ov-file#vacuuming).

## Menggunakan pembelajaran mesin Amazon Aurora dengan Babelfish
<a name="babelfish-postgres-aws-extensions-using-ml"></a>

Anda dapat memperluas kemampuan klaster Babelfish untuk Aurora PostgreSQL DB Anda dengan mengintegrasikannya dengan pembelajaran mesin Amazon Aurora. Integrasi tanpa batas ini memberi Anda akses ke berbagai layanan canggih seperti Amazon Comprehend atau Amazon AI atau SageMaker Amazon Bedrock, masing-masing disesuaikan untuk memenuhi kebutuhan pembelajaran mesin yang berbeda.

Sebagai pengguna Babelfish, Anda dapat menggunakan pengetahuan T-SQL sintaks dan semantik yang ada saat bekerja dengan pembelajaran mesin Aurora. Ikuti instruksi yang diberikan dalam AWS dokumentasi untuk Aurora PostgreSQL. Untuk informasi selengkapnya, lihat [Menggunakan machine learning Amazon Aurora dengan Aurora PostgreSQL](postgresql-ml.md).

### Prasyarat
<a name="babelfish-postgres-aws-extensions-using-ml-prereq"></a>
+ Sebelum mencoba mengatur Babelfish Anda untuk klaster DB PostgreSQL Aurora untuk menggunakan pembelajaran mesin Aurora, Anda harus memahami persyaratan dan prasyarat terkait. Untuk informasi selengkapnya, lihat [Persyaratan untuk menggunakan machine learning Aurora dengan Aurora PostgreSQL](postgresql-ml.md#postgresql-ml-prereqs).
+ Pastikan Anda menginstal `aws_ml` ekstensi baik menggunakan titik akhir Postgres atau prosedur `sp_execute_postgresql` penyimpanan.

  ```
  exec sys.sp_execute_postgresql 'Create Extension aws_ml'
  ```
**catatan**  
Saat ini Babelfish tidak mendukung operasi kaskade di Babelfish. `sp_execute_postgresql` Karena `aws_ml` bergantung pada`aws_commons`, Anda harus menginstalnya secara terpisah menggunakan titik akhir Postgres.

  ```
  create extension aws_common;
  ```

### Menangani T-SQL sintaks dan semantik dengan fungsi `aws_ml`
<a name="babelfish-postgres-aws-extensions-using-ml-examples"></a>

Contoh berikut menjelaskan bagaimana T-SQL sintaks dan semantik diterapkan ke layanan Amazon Amazon Amazon:

**Example : aws\_bedrock.invoke\_model — Sebuah query sederhana menggunakan fungsi Amazon Bedrock**  

```
aws_bedrock.invoke_model(
   model_id      varchar,
   content_type  text,
   accept_type   text,
   model_input   text)
Returns Varchar(MAX)
```
Contoh berikut menunjukkan cara memanggil model Anthropic Claude 2 untuk Bedrock menggunakan invoke\_model.  

```
SELECT aws_bedrock.invoke_model (
    'anthropic.claude-v2', -- model_id
    'application/json', -- content_type
    'application/json', -- accept_type
    '{"prompt": "\n\nHuman:
    You are a helpful assistant that answers questions directly
    and only using the information provided in the context below.
    \nDescribe the answerin detail.\n\nContext: %s \n\nQuestion:
    %s \n\nAssistant:","max_tokens_to_sample":4096,"temperature"
    :0.5,"top_k":250,"top_p":0.5,"stop_sequences":[]}' -- model_input
);
```

**Example : aws\_comprehend.detect\_sentiment — Kueri sederhana menggunakan fungsi Amazon Comprehend**  

```
aws_comprehend.detect_sentiment(
   input_text varchar,
   language_code varchar,
   max_rows_per_batch int)
Returns table (sentiment varchar, confidence real)
```
Contoh berikut menunjukkan cara memanggil layanan Amazon Comprehend.  

```
select sentiment from aws_comprehend.detect_sentiment('This is great', 'en');
```

**Example : aws\_sagemaker.invoke\_endpoint — Sebuah query sederhana menggunakan fungsi Amazon SageMaker**  

```
aws_sagemaker.invoke_endpoint(
  endpoint_name varchar,   
  max_rows_per_batch int,
  VARIADIC model_input "any") -- Babelfish inherits PG's variadic parameter type
Rerurns Varchar(MAX)
```

Karena model\_input ditandai sebagai VARIADIC dan bertipe “any”, pengguna dapat meneruskan daftar dengan panjang berapa pun dan tipe data apa pun ke fungsi yang akan bertindak sebagai input input ke model. Contoh berikut menunjukkan cara memanggil SageMaker layanan Amazon.

```
SELECT CAST (aws_sagemaker.invoke_endpoint(
    'sagemaker_model_endpoint_name',
    NULL,
    arg1, arg2 -- model inputs are separate arguments )
AS INT) -- cast the output to INT
```

Untuk informasi lebih rinci tentang penggunaan pembelajaran mesin Aurora dengan Aurora PostgreSQL, lihat. [Menggunakan machine learning Amazon Aurora dengan Aurora PostgreSQL](postgresql-ml.md)

### Batasan
<a name="babelfish-postgres-aws-extensions-using-ml-limit"></a>
+ Meskipun Babelfish tidak mengizinkan pembuatan array, Babelfish masih dapat menangani data yang mewakili array. Saat Anda menggunakan fungsi seperti array pengembalian `aws_bedrock.invoke_model_get_embeddings` itu, hasilnya dikirimkan sebagai string yang berisi elemen array.