Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Membuat tabel global
Bagian ini menjelaskan cara membuat tabel menggunakan konsol Amazon DynamoDB atau AWS Command Line Interface (AWS CLI).
Topik
Ikuti langkah-langkah ini untuk membuat tabel global menggunakan AWS Management Console. Contoh berikut membuat tabel global dengan tabel replika di Amerika Serikat dan Eropa.
-
Buka konsol DynamoDB di rumah. https://console.aws.amazon.com/dynamodb/
Untuk contoh ini, pilih Wilayah Timur AS (Ohio). -
Di panel navigasi di sisi kiri konsol, pilih Tabel.
-
Pilih Buat Tabel.
-
Pada halaman Buat tabel, lakukan hal berikut:
-
Untuk Nama tabel, masukkan
Music
. -
Untuk kunci Partisi, masukkan
Artist
. -
Untuk tombol Sortir, masukkan
SongTitle
. -
Simpan pilihan default String untuk kedua kunci Partition dan Sort key.
-
Simpan pilihan default lainnya di halaman, lalu pilih Buat tabel.
Tabel baru ini berfungsi sebagai tabel replika pertama dalam tabel global baru. Ini adalah prototipe untuk tabel replika lain yang Anda tambahkan nanti.
-
-
Pada halaman Tabel, pilih tabel Musik yang baru dibuat, lalu lakukan hal berikut:
-
Pilih tab tabel Global, lalu pilih Buat replika.
-
Dalam daftar tarik-turun Wilayah Replikasi yang Tersedia, pilih US West (Oregon) us-west-2.
Konsol memeriksa untuk memastikan bahwa tabel dengan nama yang sama tidak ada di Wilayah yang dipilih. Jika ada tabel dengan nama yang sama, Anda harus menghapus tabel yang ada sebelum dapat membuat tabel replika baru di Wilayah tersebut.
-
Pilih Buat replika. Ini memulai proses pembuatan tabel di Wilayah AS Barat (Oregon) us-west-2.
Tab tabel Global untuk tabel Musik (dan untuk tabel replika lainnya) menunjukkan bahwa tabel telah direplikasi di beberapa Wilayah.
-
Tambahkan Wilayah lain sehingga tabel global Anda direplikasi dan disinkronkan di seluruh Amerika Serikat dan Eropa. Untuk melakukan ini, ulangi langkah 5.b, tetapi kali ini, tentukan Eropa (Frankfurt) eu-central-1 alih-alih AS Barat (Oregon) us-west-2.
-
-
Pastikan Anda masih menggunakan Wilayah AWS Management Console Timur AS (Ohio). Kemudian, lakukan hal berikut:
-
Pilih Jelajahi item tabel.
-
Pilih Buat item.
-
Untuk Artist, masukkan
item_1
. -
Untuk SongTitle, masukkan
Song Value 1
. -
Untuk menyimpan item, pilih Buat item.
-
-
Setelah beberapa saat, item direplikasi di ketiga Wilayah tabel global Anda. Untuk memverifikasi ini, di pemilih Wilayah di sudut kanan atas di konsol, pilih Eropa (Frankfurt). Tabel Musik di Eropa (Frankfurt) harus berisi item baru.
-
Ulangi langkah 7 dan pilih US West (Oregon) untuk memverifikasi replikasi di Wilayah itu.
Ikuti langkah-langkah ini untuk membuat tabel global Music
menggunakan AWS CLI. Contoh berikut membuat tabel global, dengan tabel replika di Amerika Serikat dan Eropa.
-
Buat tabel baru (
Music
) di AS Timur (Ohio), dengan DynamoDB Streams diaktifkan (NEW_AND_OLD_IMAGES
).aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode PAY_PER_REQUEST \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-2
-
Buat tabel
Music
identik di AS Timur (Virginia Utara).aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Create": { "RegionName": "us-east-1" } } ] }' \ --region=us-east-2
-
Ulangi langkah 2 untuk membuat tabel di Eropa (Irlandia) (eu-west-1).
-
Anda dapat melihat daftar replika yang dibuat menggunakan
describe-table
.aws dynamodb describe-table --table-name Music --region us-east-2
-
Untuk memverifikasi bahwa replikasi berfungsi, tambahkan item baru ke tabel
Music
di AS Timur (Ohio).aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
-
Tunggu beberapa detik, lalu periksa untuk melihat apakah item tersebut telah berhasil direplikasi ke AS Timur (Virginia Utara) dan Eropa (Irlandia).
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-1
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region eu-west-1
-
Hapus tabel replika di Wilayah Eropa (Irlandia).
aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Delete": { "RegionName": "eu-west-1" } } ] }'
Berikut sampel kode java, buat tabel Music
di wilayah Eropa (Irlandia), lalu buat replika di wilayah Asia Pasifik (Seoul).
package com.amazonaws.codesamples.gtv2 import java.util.logging.Logger; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException; import com.amazonaws.services.dynamodbv2.model.AttributeDefinition; import com.amazonaws.services.dynamodbv2.model.BillingMode; import com.amazonaws.services.dynamodbv2.model.CreateReplicationGroupMemberAction; import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest; import com.amazonaws.services.dynamodbv2.model.GlobalSecondaryIndex; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; import com.amazonaws.services.dynamodbv2.model.KeyType; import com.amazonaws.services.dynamodbv2.model.Projection; import com.amazonaws.services.dynamodbv2.model.ProjectionType; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughputOverride; import com.amazonaws.services.dynamodbv2.model.ReplicaGlobalSecondaryIndex; import com.amazonaws.services.dynamodbv2.model.ReplicationGroupUpdate; import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; import com.amazonaws.services.dynamodbv2.model.StreamSpecification; import com.amazonaws.services.dynamodbv2.model.StreamViewType; import com.amazonaws.services.dynamodbv2.model.UpdateTableRequest; import com.amazonaws.waiters.WaiterParameters; public class App { private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); public static void main( String[] args ) { String tableName = "Music"; String indexName = "index1"; Regions calledRegion = Regions.EU_WEST_1; Regions destRegion = Regions.AP_NORTHEAST_2; AmazonDynamoDB ddbClient = AmazonDynamoDBClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider("default")) .withRegion(calledRegion) .build(); LOGGER.info("Creating a regional table - TableName: " + tableName +", IndexName: " + indexName + " ....."); ddbClient.createTable(new CreateTableRequest() .withTableName(tableName) .withAttributeDefinitions( new AttributeDefinition() .withAttributeName("Artist").withAttributeType(ScalarAttributeType.S), new AttributeDefinition() .withAttributeName("SongTitle").withAttributeType(ScalarAttributeType.S)) .withKeySchema( new KeySchemaElement().withAttributeName("Artist").withKeyType(KeyType.HASH), new KeySchemaElement().withAttributeName("SongTitle").withKeyType(KeyType.RANGE)) .withBillingMode(BillingMode.PAY_PER_REQUEST) .withGlobalSecondaryIndexes(new GlobalSecondaryIndex() .withIndexName(indexName) .withKeySchema(new KeySchemaElement() .withAttributeName("SongTitle") .withKeyType(KeyType.HASH)) .withProjection(new Projection().withProjectionType(ProjectionType.ALL))) .withStreamSpecification(new StreamSpecification() .withStreamEnabled(true) .withStreamViewType(StreamViewType.NEW_AND_OLD_IMAGES))); LOGGER.info("Waiting for ACTIVE table status ....."); ddbClient.waiters().tableExists().run(new WaiterParameters<>(new DescribeTableRequest(tableName))); LOGGER.info("Testing parameters for adding a new Replica in " + destRegion + " ....."); CreateReplicationGroupMemberAction createReplicaAction = new CreateReplicationGroupMemberAction() .withRegionName(destRegion.getName()) .withGlobalSecondaryIndexes(new ReplicaGlobalSecondaryIndex() .withIndexName(indexName) .withProvisionedThroughputOverride(new ProvisionedThroughputOverride() .withReadCapacityUnits(15L))); ddbClient.updateTable(new UpdateTableRequest() .withTableName(tableName) .withReplicaUpdates(new ReplicationGroupUpdate() .withCreate(createReplicaAction.withKMSMasterKeyId(null)))); } }