

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

# Tipe yang ditentukan pengguna (UDTs) di Amazon Keyspaces
<a name="udts"></a>

Tipe yang ditentukan pengguna (UDT) adalah pengelompokan bidang dan tipe data yang dapat Anda gunakan untuk menentukan satu kolom di Amazon Keyspaces. Tipe data UDTs yang valid untuk semua tipe data Cassandra yang didukung, termasuk koleksi dan lainnya UDTs yang telah Anda buat di ruang kunci yang sama. Untuk informasi selengkapnya tentang tipe data Cassandra yang didukung, lihat. [Dukungan tipe data Cassandra](cassandra-apis.md#cassandra-data-type)

Anda dapat menggunakan tipe yang ditentukan pengguna (UDTs) di Amazon Keyspaces untuk mengatur data dengan cara yang lebih efisien. Misalnya, Anda dapat membuat UDTs dengan koleksi bersarang yang memungkinkan Anda menerapkan pemodelan data yang lebih kompleks dalam aplikasi Anda. Anda juga dapat menggunakan kata kunci beku untuk mendefinisikan. UDTs

UDTs terikat ke ruang kunci dan tersedia untuk semua tabel dan UDTs di ruang kunci yang sama. Anda dapat membuat UDTs di ruang kunci Single-region dan Multi-region.

Anda dapat membuat tabel baru atau mengubah tabel yang ada dan menambahkan kolom baru yang menggunakan UDT. Untuk membuat UDT dengan UDT bersarang, UDT bersarang harus dibekukan.

Untuk meninjau berapa banyak UDTs yang didukung per ruang kunci, tingkat penyarangan yang didukung, serta nilai dan kuota default lainnya yang terkait UDTs, lihat. [Kuota dan nilai default untuk tipe yang ditentukan pengguna () UDTs di Amazon Keyspaces](quotas.md#quotas-udts)

Untuk informasi tentang cara menghitung ukuran yang dikodekan UDTs, lihat. [Perkirakan ukuran nilai data yang dikodekan berdasarkan tipe data](calculating-row-size.md#calculating-row-size-data-types)

Untuk informasi selengkapnya tentang sintaks CQL, lihat. [Jenis yang ditentukan pengguna () UDTs](cql.ddl.type.md)

Untuk mempelajari lebih lanjut tentang UDTs dan pemulihan waktu point-in, lihat[PITR mengembalikan tabel dengan tipe yang ditentukan pengguna () UDTs](PointInTimeRecovery_HowItWorks.md#howitworks_backup_udt).

**Topics**
+ [Mengatur Konfigurasi Izin](configure-udt-permissions.md)
+ [Buat UDT](keyspaces-create-udt.md)
+ [Lihat UDTs](keyspaces-view-udt.md)
+ [Hapus UDT](keyspaces-delete-udt.md)

# Mengonfigurasi izin untuk bekerja dengan tipe yang ditentukan pengguna () UDTs di Amazon Keyspaces
<a name="configure-udt-permissions"></a>

Seperti tabel, UDTs terikat ke ruang kunci tertentu. Tetapi tidak seperti tabel, Anda tidak dapat menentukan izin secara langsung untuk UDTs. UDTs tidak dianggap sebagai sumber daya AWS dan mereka tidak memiliki pengidentifikasi unik dalam format Nama Sumber Daya Amazon (ARN). Sebagai gantinya, untuk memberikan izin utama IAM untuk melakukan tindakan tertentu pada UDT, Anda harus menentukan izin untuk ruang kunci yang terikat UDT. Untuk bekerja dengan UDTs di ruang kunci Multi-wilayah, izin tambahan diperlukan.

Untuk dapat membuat, melihat, atau menghapus UDTs, prinsipal, misalnya pengguna atau peran IAM, memerlukan izin yang sama yang diperlukan untuk melakukan tindakan yang sama pada ruang kunci yang terikat UDT.

Untuk informasi lebih lanjut tentang AWS Identity and Access Management, lihat[AWS Identity and Access Management untuk Amazon Keyspaces](security-iam.md).

## Izin untuk membuat UDT
<a name="udt-permissions-create"></a>

Untuk membuat UDT di ruang kunci wilayah Tunggal, prinsipal memerlukan `Create` izin untuk ruang kunci.

Kebijakan IAM berikut adalah contohnya.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cassandra:Create",
            "Resource": [
                "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/"
            ]
        }
    ]
}
```

Untuk membuat UDT di ruang kunci Multi-wilayah, selain izin, prinsipal juga memerlukan `Create` izin untuk tindakan `CreateMultiRegionResource` untuk ruang kunci yang ditentukan.

Kebijakan IAM berikut adalah contohnya.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action":  [ "cassandra:Create", "cassandra:CreateMultiRegionResource" ],
            "Resource": [
                "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/"
            ]
        }
    ]
}
```

## Izin untuk melihat UDT
<a name="udt-permissions-view"></a>

Untuk melihat atau mendaftar UDTs di ruang kunci Single-region, prinsipal memerlukan izin baca untuk ruang kunci sistem. Untuk informasi selengkapnya, lihat [`system_schema_mcs`](working-with-keyspaces.md#keyspace_system_schema_mcs).

Kebijakan IAM berikut adalah contohnya.

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"cassandra:Select",
         "Resource":[
             "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
         ]
      }
   ]
}
```

Untuk melihat atau membuat daftar UDTs ruang kunci Multi-wilayah, prinsipal memerlukan izin untuk tindakan `SELECT` dan `SelectMultiRegionResource` untuk ruang kunci sistem. Untuk informasi selengkapnya, lihat [`system_multiregion_info`](working-with-keyspaces.md#keyspace_system_multiregion_info).

Kebijakan IAM berikut adalah contohnya.

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action": ["cassandra:Select", "cassandra:SelectMultiRegionResource"],
         "Resource":[
             "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
         ]
      }
   ]
}
```

## Izin untuk menghapus UDT
<a name="udt-permissions-drop"></a>

Untuk menghapus UDT dari ruang kunci wilayah Tunggal, prinsipal memerlukan izin untuk `Drop` tindakan untuk ruang kunci yang ditentukan.

Kebijakan IAM berikut adalah contohnya.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cassandra:Drop",
            "Resource": [
                "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/"
            ]
        }
    ]
}
```

Untuk menghapus UDT dari ruang kunci Multi-wilayah, prinsipal memerlukan izin untuk `Drop` tindakan dan tindakan untuk ruang kunci yang `DropMultiRegionResource` ditentukan.

Kebijakan IAM berikut adalah contohnya.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action":  [ "cassandra:Drop", "cassandra:DropMultiRegionResource" ],
            "Resource": [
                "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/"
            ]
        }
    ]
}
```

# Buat tipe yang ditentukan pengguna (UDT) di Amazon Keyspaces
<a name="keyspaces-create-udt"></a>

Untuk membuat UDT di ruang kunci Single-region, Anda dapat menggunakan `CREATE TYPE` pernyataan di CQL, `create-type` perintah dengan, atau konsol. AWS CLI

Nama UDT harus terdiri dari 48 karakter atau kurang, harus dimulai dengan karakter alfabet, dan hanya dapat berisi karakter alfanumerik dan garis bawah. Amazon Keyspaces mengonversi karakter huruf besar secara otomatis menjadi karakter huruf kecil. 

Atau, Anda dapat mendeklarasikan nama UDT dalam tanda kutip ganda. Saat mendeklarasikan nama UDT di dalam tanda kutip ganda, Amazon Keyspaces mempertahankan huruf besar dan mengizinkan karakter khusus.

Anda juga dapat menggunakan tanda kutip ganda sebagai bagian dari nama saat Anda membuat UDT, tetapi Anda harus menghindari setiap karakter tanda kutip ganda dengan karakter tanda kutip ganda tambahan.

Tabel berikut menunjukkan contoh nama UDT yang diizinkan. Kolom pertama menunjukkan cara memasukkan nama saat Anda membuat tipe, kolom kedua menunjukkan bagaimana Amazon Keyspaces memformat nama secara internal. Amazon Keyspaces mengekspektasikan nama yang diformat untuk operasi seperti `GetType`.


| Nama yang dimasukkan | Nama yang diformat | Perhatikan | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Tanpa tanda kutip ganda, Amazon Keyspaces mengonversi semua karakter huruf besar menjadi huruf kecil. | 
|  "MY\$1UDT"  | MY\$1UDT | Dengan tanda kutip ganda, Amazon Keyspaces menghormati karakter huruf besar, dan menghapus tanda kutip ganda dari nama yang diformat. | 
|  "1234"  | 1234 | Dengan tanda kutip ganda, nama dapat dimulai dengan angka, dan Amazon Keyspaces menghapus tanda kutip ganda dari nama yang diformat. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Dengan tanda kutip ganda, nama dapat berisi karakter khusus, dan Amazon Keyspaces menghapus tanda kutip ganda dari nama yang diformat. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces menghapus tanda kutip ganda luar dan tanda kutip ganda escape dari nama yang diformat. | 

------
#### [ Console ]

**Buat tipe yang ditentukan pengguna (UDT) dengan konsol Amazon Keyspaces**

1. [Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon Keyspaces di https://console.aws.amazon.com/keyspaces/ rumah.](https://console.aws.amazon.com/keyspaces/home)

1. Di panel navigasi, pilih **Keyspaces**, lalu pilih keyspace dari daftar.

1. Pilih **UDTs**tab.

1. Pilih **Buat UDT**

1. Di bawah **rincian UDT**, masukkan nama untuk UDT. Di bawah **bidang UDT** Anda menentukan skema UDT.

1. Untuk menyelesaikannya, pilih **Buat UDT**.

------
#### [ Cassandra Query Language (CQL) ]

**Buat tipe yang ditentukan pengguna (UDT) dengan CQL**

Dalam contoh ini kita membuat versi baru dari tabel penghargaan buku yang digunakan[Buat tabel di Amazon Keyspaces](getting-started.tables.md). Dalam tabel ini, kami menyimpan semua penghargaan yang diterima penulis untuk buku yang diberikan. Kami membuat dua UDTs yang bersarang dan berisi informasi tentang buku yang menerima penghargaan. 

1. Buat keyspace dengan nama`catalog`. 

   ```
   CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};
   ```

1. Buat tipe pertama. Jenis ini menyimpan kode *BISAC*, yang digunakan untuk menentukan genre buku. Kode BISAC terdiri dari kode alfa-numerik dan hingga empat bidang materi pelajaran.

   ```
   CREATE TYPE catalog.bisac (
       bisac_code text,
       subject1 text,
       subject2 text,
       subject3 text,
       subject4 text
   );
   ```

1. Buat tipe kedua untuk penghargaan buku yang menggunakan UDT pertama. UDT bersarang harus dibekukan.

   ```
   CREATE TYPE catalog.book (
       award_title text,
       book_title text,
       publication_date date,
       page_count int,
       ISBN text,
       genre FROZEN <bisac> 
   );
   ```

1. Buat tabel dengan kolom untuk nama penulis dan gunakan jenis daftar untuk penghargaan buku. Perhatikan bahwa UDT yang digunakan dalam daftar harus dibekukan.

   ```
   CREATE TABLE catalog.authors (
       author_name text PRIMARY KEY,
       awards list <FROZEN <book>>
   );
   ```

1. Pada langkah ini kita memasukkan satu baris data ke dalam tabel baru.

   ```
   CONSISTENCY LOCAL_QUORUM;
   ```

   ```
   INSERT INTO catalog.authors (author_name, awards) VALUES (
   'John Stiles' , 
   [{
         award_title: 'Wolf',
         book_title: 'Yesterday',
         publication_date: '2020-10-10',
         page_count: 345,
         ISBN: '026204630X',
         genre: { bisac_code:'FIC014090', subject1: 'FICTION', subject2: 'Historical', subject3: '20th Century', subject4: 'Post-World War II'}
         },
         {award_title: 'Richard Roe',
         book_title: 'Who ate the cake?',
         publication_date: '2019-05-13',
         page_count: 193,
         ISBN: '9780262046305',
         genre: { bisac_code:'FIC022130', subject1: 'FICTION', subject2: 'Mystery & Detective', subject3: 'Cozy', subject4: 'Culinary'}
         }]
   );
   ```

1. Pada langkah terakhir kita membaca data dari tabel.

   ```
   SELECT * FROM catalog.authors;
   ```

   Output dari perintah akan terlihat seperti ini.

   ```
    author_name | awards
   -------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    John Stiles | [{award_title: 'Wolf', book_title: 'Yesterday', publication_date: 2020-10-10, page_count: 345, isbn: '026204630X', genre: {bisac_code: 'FIC014090', subject1: 'FICTION', subject2: 'Historical', subject3: '20th Century', subject4: 'Post-World War II'}}, {award_title: 'Richard Roe', book_title: 'Who ate the cake?', publication_date: 2019-05-13, page_count: 193, isbn: '9780262046305', genre: {bisac_code: 'FIC022130', subject1: 'FICTION', subject2: 'Mystery & Detective', subject3: 'Cozy', subject4: 'Culinary'}}]
   
   (1 rows)
   ```

   Untuk informasi selengkapnya tentang sintaks CQL, lihat. [BUAT TIPE](cql.ddl.type.md#cql.ddl.type.create)

------
#### [ CLI ]

**Buat tipe yang ditentukan pengguna (UDT) dengan AWS CLI**

1. Untuk membuat tipe Anda dapat menggunakan sintaks berikut.

   ```
   aws keyspaces create-type
   --keyspace-name 'my_keyspace'
   --type-name 'my_udt'
   --field-definitions
       '[
           {"name" : "field1", "type" : "int"},
           {"name" : "field2", "type" : "text"}
       ]'
   ```

1. Output dari perintah itu terlihat mirip dengan contoh ini. Perhatikan bahwa `typeName` mengembalikan nama UDT yang diformat.

   ```
   {
       "keyspaceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/",
       "typeName": "my_udt"
   }
   ```

------

# Lihat tipe yang ditentukan pengguna (UDTs) di Amazon Keyspaces
<a name="keyspaces-view-udt"></a>

Untuk melihat atau mencantumkan semua UDTs dalam ruang kunci Single-region, Anda dapat melakukan kueri tabel `system_schema_mcs.types` di ruang kunci sistem menggunakan pernyataan di CQL, atau menggunakan `list-type` perintah `get-type` and dengan, atau konsol. AWS CLI

Untuk salah satu opsi, prinsipal IAM memerlukan izin baca ke ruang kunci sistem. Untuk informasi selengkapnya, lihat [Mengonfigurasi izin untuk bekerja dengan tipe yang ditentukan pengguna () UDTs di Amazon Keyspaces](configure-udt-permissions.md).

------
#### [ Console ]

**Lihat tipe yang ditentukan pengguna (UDT) dengan konsol Amazon Keyspaces**

1. [Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon Keyspaces di https://console.aws.amazon.com/keyspaces/ rumah.](https://console.aws.amazon.com/keyspaces/home)

1. Di panel navigasi, pilih **Keyspaces**, lalu pilih keyspace dari daftar.

1. Pilih **UDTs**tab untuk meninjau daftar semua UDTs di ruang kunci.

1. Untuk meninjau satu UDT secara detail, pilih **UDT** dari daftar.

1. Pada tab **Skema** Anda dapat meninjau skema. Pada tab **Digunakan di** Anda dapat melihat apakah UDT ini digunakan dalam tabel atau lainnya UDTs. Perhatikan bahwa Anda hanya dapat menghapus UDTs yang tidak digunakan oleh tabel atau lainnya UDTs.

------
#### [ Cassandra Query Language (CQL) ]

**Melihat tipe (UDTs) yang ditentukan pengguna dari ruang kunci wilayah Tunggal dengan CQL**

1. Untuk melihat jenis yang tersedia di ruang kunci tertentu, Anda dapat menggunakan pernyataan berikut.

   ```
   SELECT type_name
   FROM system_schema_mcs.types
   WHERE keyspace_name = 'my_keyspace';
   ```

1. Untuk melihat detail tentang jenis tertentu, Anda dapat menggunakan pernyataan berikut.

   ```
   SELECT 
       keyspace_name,
       type_name,
       field_names,
       field_types,
       max_nesting_depth,
       last_modified_timestamp,
       status,
       direct_referring_tables,
       direct_parent_types
   FROM system_schema_mcs.types
   WHERE keyspace_name = 'my_keyspace' AND type_name = 'my_udt';
   ```

1. Anda dapat mencantumkan semua UDTs yang ada di akun menggunakan`DESC TYPE`. 

   ```
   DESC TYPES;
                               
    Keyspace my_keyspace
    ---------------------------
    my_udt1  my_udt2
                               
    Keyspace my_keyspace2
    ---------------------------
    my_udt1
   ```

1. Anda dapat mencantumkan semua UDTs di ruang kunci yang dipilih saat ini menggunakan`DESC TYPE`.

   ```
   USE my_keyspace;
   my_keyspace DESC TYPES;
                               
   my_udt1  my_udt2
   ```

1. Untuk mencantumkan semua UDTs di ruang kunci Multi-wilayah, Anda dapat melakukan kueri tabel sistem `types` di ruang kunci. `system_multiregion_info` Query berikut adalah contoh dari ini.

   ```
   SELECT keyspace_name, type_name, region, status FROM system_multiregion_info.types WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
   ```

   Output dari perintah ini terlihat mirip dengan ini.

   ```
   keyspace_name     | table_name         | region                 | status
   mykeyspace        | mytable            | us-east-1              | ACTIVE
   mykeyspace        | mytable            | ap-southeast-1         | ACTIVE
   mykeyspace        | mytable            | eu-west-1              | ACTIVE
   ```

------
#### [ CLI ]

**Lihat tipe yang ditentukan pengguna (UDTs) dengan AWS CLI**

1. Untuk membuat daftar jenis yang tersedia di ruang kunci, Anda dapat menggunakan `list-types` perintah.

   ```
   aws keyspaces list-types
   --keyspace-name 'my_keyspace'
   ```

   Output dari perintah itu terlihat mirip dengan contoh ini.

   ```
   {
       "types": [
           "my_udt",
           "parent_udt"
       ]
   }
   ```

1. Untuk melihat detail tentang jenis tertentu, Anda dapat menggunakan `get-type` perintah.

   ```
   aws keyspaces get-type
   --type-name 'my_udt'
   --keyspace-name 'my_keyspace'
   ```

   Output dari perintah ini terlihat mirip dengan contoh ini.

   ```
   {
       "keyspaceName": "my_keyspace",
       "typeName": "my_udt",
       "fieldDefinitions": [
           {
               "name": "a",
               "type": "int"
           },
           {
               "name": "b",
               "type": "text"
           }
       ],
       "lastModifiedTimestamp": 1721328225776,
       "maxNestingDepth": 3
       "status": "ACTIVE",
       "directReferringTables": [],
       "directParentTypes": [
           "parent_udt"
       ],
       "keyspaceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/"
   }
   ```

------

# Menghapus tipe yang ditentukan pengguna (UDT) di Amazon Keyspaces
<a name="keyspaces-delete-udt"></a>

Untuk menghapus UDT di ruang kunci, Anda dapat menggunakan `DROP TYPE` pernyataan di CQL, `delete-type` perintah dengan AWS CLI, atau konsol.

------
#### [ Console ]

**Menghapus tipe yang ditentukan pengguna (UDT) dengan konsol Amazon Keyspaces**

1. [Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon Keyspaces di https://console.aws.amazon.com/keyspaces/ rumah.](https://console.aws.amazon.com/keyspaces/home)

1. Di panel navigasi, pilih **Keyspaces**, lalu pilih keyspace dari daftar.

1. Pilih **UDTs**tab.

1. Pilih UDT yang ingin Anda hapus. Pada **Digunakan di** Anda dapat mengonfirmasi bahwa jenis yang ingin Anda hapus saat ini tidak digunakan oleh tabel atau UDT lainnya.

1. Pilih **Hapus** di atas **Ringkasan**. 

1. Ketik `Delete` dialog yang muncul, dan pilih **Hapus UDT**.

------
#### [ Cassandra Query Language (CQL) ]

**Hapus tipe yang ditentukan pengguna (UDT) dengan CQL**
+ Untuk menghapus tipe, Anda dapat menggunakan pernyataan berikut.

  ```
  DROP TYPE my_keyspace.my_udt;
  ```

  Untuk informasi selengkapnya tentang sintaks CQL, lihat. [TIPE DROP](cql.ddl.type.md#cql.ddl.type.drop)

------
#### [ CLI ]

**Hapus tipe yang ditentukan pengguna (UDT) dengan AWS CLI**

1. Untuk menghapus jenis, Anda dapat menggunakan perintah berikut.

   ```
   aws keyspaces delete-type
   --keyspace-name 'my_keyspace'
   --type-name 'my_udt'
   ```

1. Output dari perintah terlihat mirip dengan contoh ini.

   ```
   {
       "keyspaceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/",
       "typeName": "my_udt"
   }
   ```

------