Tablestore SDK for Java kullanarak Wide Column modelinde bir tablo oluşturun ve aynı istekte şemasını, veri sürümlerini, dizinleri, Stream'i ve şifrelemeyi yapılandırın.
Ön koşullar
Tablestore SDK for Java yükleyin ve istemciyi başlatın.
Açıklama
Wide Column modelinde bir tablo oluşturmak için createTable yöntemini çağırın. İstek en az bir birincil anahtar sütunu içermeli; yaşam süresini (TTL) ve maksimum sürüm sayısını belirtmelidir.
public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientException
Aşağıdaki örnekte example_table adlı bir tablo oluşturulur. Tabloda bir adet STRING birincil anahtar sütunu bulunur, verilerin süresi dolmaz ve yalnızca tek bir veri sürümü saklanır.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
Tabloyu oluşturduktan sonra veri işlemleri yapmadan önce tablonun yüklenmesini bekleyin.
Parametreler
CreateTableRequest aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yerel işlemlerin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: |
|
|
|
Veri şifreleme yapılandırması. Veri şifrelemeyi yalnızca tablo oluştururken etkinleştirebilirsiniz. Tablo oluşturulduktan sonra şifrelemeyi devre dışı bırakamaz veya yapılandırmasını değiştiremezsiniz. |
Tablo şeması
tableMeta aşağıdaki parametreleri içeren bir TableMeta nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Birincil anahtar sütunları
tableMeta.primaryKey[] dizisindeki her öğe aşağıdaki parametreleri içeren bir PrimaryKeySchema nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Önceden tanımlanmış sütunlar
tableMeta.definedColumns[] dizisindeki her öğe aşağıdaki parametreleri içeren bir DefinedColumnSchema nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
Tablo yapılandırmaları
tableOptions aşağıdaki parametreleri içeren bir TableOptions nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ayrılmış okuma/yazma aktarım hızı
reservedThroughput aşağıdaki parametreyi içeren bir ReservedThroughput nesnesidir.
|
|
|
|
|
|
|
|
Kapasite birimleri
reservedThroughput.capacityUnit aşağıdaki parametreleri içeren bir CapacityUnit nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
İkincil dizinler
indexMeta[] dizisindeki her öğe aşağıdaki parametreleri içeren bir IndexMeta nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stream yapılandırması
streamSpecification aşağıdaki parametreleri içeren bir StreamSpecification nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
Yerel işlem yapılandırması
enableLocalTxn bir Boolean değeridir. Bu parametreyi ayarlarken aşağıdaki sınırlamalara dikkat edin.
Yerel işlemler yalnızca Tablestore SDK for Java 5.11.0 ve sonraki sürümlerde desteklenir.
Yerel işlemler ve otomatik artan birincil anahtar sütunları birbirini dışlar. Otomatik artan birincil anahtar sütunu yapılandırılırsa yerel işlemler etkinleştirilse bile çalışmaz.
Mevcut bir tabloda yerel işlemleri etkinleştirmek için destek talebi oluşturun .
Sunucu tarafı şifreleme yapılandırması
sseSpecification aşağıdaki parametreleri içeren bir SSESpecification nesnesidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnekler
Tablo şemasını ve veri sürümlerini yapılandırma
Aşağıdaki örnekte iki birincil anahtar sütunu ve bir önceden tanımlanmış sütuna sahip bir tablo oluşturulur. Örnek ayrıca maksimum sürüm sapmasını yapılandırır ve güncellemeleri devre dışı bırakır.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("device_id", PrimaryKeyType.INTEGER));
tableMeta.addDefinedColumn("status", DefinedColumnType.STRING);
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
tableOptions.setMaxTimeDeviation(86400L);
tableOptions.setAllowUpdate(false);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
Tablo ile birlikte ikincil dizin oluşturma
Aşağıdaki örnekte tablo ile birlikte example_table_index adlı genel ikincil dizin oluşturulur. Dizinin birincil anahtar sütunu olan category önce tablonun önceden tanımlanmış bir sütunu olarak tanımlanmalıdır.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addDefinedColumn("category", DefinedColumnType.STRING);
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
IndexMeta indexMeta = new IndexMeta("example_table_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.setIndexType(IndexType.IT_GLOBAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_ASYNC_INDEX);
List<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
indexMetas.add(indexMeta);
CreateTableRequest request =
new CreateTableRequest(tableMeta, tableOptions, indexMetas);
client.createTable(request);
Stream'i etkinleştirme
Aşağıdaki örnekte tablo oluşturulurken Stream etkinleştirilir ve artımlı günlüklerin sona erme süresi 24 saat olarak ayarlanır.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setStreamSpecification(new StreamSpecification(true, 24));
client.createTable(request);
Yerel işlemleri etkinleştirme
Aşağıdaki örnekte tablo oluşturulurken setLocalTxnEnabled çağrılarak yerel işlemler etkinleştirilir.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setLocalTxnEnabled(true);
client.createTable(request);
Tabloyu şifreleme
Aşağıdaki örneklerde KMS hizmet anahtarı veya BYOK kullanılarak tablo şifrelenir.
Veri şifrelemeyi yalnızca tablo oluştururken yapılandırabilirsiniz. Tablo oluşturulduktan sonra şifrelemeyi devre dışı bırakamaz veya şifreleme yapılandırmasını değiştiremezsiniz.
KMS hizmet anahtarı şifrelemesi
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setSseSpecification(
new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE));
client.createTable(request);
BYOK şifrelemesi
BYOK şifrelemesi kullanmak için önce müşteri ana anahtarı (CMK) ID'sini ve RAM rolü ARN değerini edinin. Daha fazla bilgi için bkz. BYOK şifrelemesi.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
String keyId = "key-xxxx****";
String roleArn = "acs:ram::1234****:role/example-role";
request.setSseSpecification(
new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn));
client.createTable(request);