Tüm Ürünler
Search
Belge Merkezi

Tablestore:Create a table

Son Güncelleme:Oct 02, 2026

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);
Not

Tabloyu oluşturduktan sonra veri işlemleri yapmadan önce tablonun yüklenmesini bekleyin.

Parametreler

CreateTableRequest aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


tableMeta (gerekli)


TableMeta


Tablo şeması.


tableOptions (gerekli)


TableOptions


Tablonun veri sürümü ve güncelleme ayarları.


reservedThroughput (isteğe bağlı)


ReservedThroughput


Kapasite birimi (CU) cinsinden ayrılmış okuma/yazma aktarım hızı. Varsayılan okuma ve yazma CU değerlerinin her ikisi de 0 değerindedir. Sıfırdan farklı değerler yalnızca CU modundaki yüksek performanslı örnekler için geçerlidir.


indexMeta (isteğe bağlı)


List<IndexMeta>


Tablo ile birlikte oluşturulacak ikincil dizinler.


streamSpecification (isteğe bağlı)


StreamSpecification


Stream yapılandırması.


enableLocalTxn (isteğe bağlı)


Boolean

Yerel işlemlerin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: false.


sseSpecification (isteğe bağlı)


SSESpecification

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.


Ad


Tür


Açıklama


tableName (gerekli)


String


Tablonun adı.


primaryKey (gerekli)


List<PrimaryKeySchema>


Birincil anahtar sütunu yapılandırmaları. Bir ila dört birincil anahtar sütunu yapılandırabilirsiniz. İlk birincil anahtar sütunu bölümleme anahtarıdır ve veriler birincil anahtara göre artan sırada sıralanır.


definedColumns (isteğe bağlı)


List<DefinedColumnSchema>


Önceden tanımlanmış sütun yapılandırmaları. Önceden tanımlanmış sütunlar ikincil dizinler ve arama dizinleri oluşturmak için kullanılabilir.

Birincil anahtar sütunları

tableMeta.primaryKey[] dizisindeki her öğe aşağıdaki parametreleri içeren bir PrimaryKeySchema nesnesidir.


Ad


Tür


Açıklama


name (gerekli)


String


Birincil anahtar sütununun adı.


type (gerekli)


PrimaryKeyType


Birincil anahtar sütununun türü. Geçerli değerler: STRING, INTEGER ve BINARY.


option (isteğe bağlı)


PrimaryKeyOption


Birincil anahtar sütunu seçeneği. Otomatik artan birincil anahtar sütunu kullanmak için bölümleme olmayan bir INTEGER birincil anahtar sütununu AUTO_INCREMENT olarak ayarlayın.

Önceden tanımlanmış sütunlar

tableMeta.definedColumns[] dizisindeki her öğe aşağıdaki parametreleri içeren bir DefinedColumnSchema nesnesidir.


Ad


Tür


Açıklama


name (gerekli)


String


Önceden tanımlanmış sütunun adı.


type (gerekli)


DefinedColumnType


Önceden tanımlanmış sütunun türü. Geçerli değerler: STRING, INTEGER, BINARY, DOUBLE ve BOOLEAN.

Tablo yapılandırmaları

tableOptions aşağıdaki parametreleri içeren bir TableOptions nesnesidir.


Ad


Tür


Açıklama


timeToLive (gerekli)


Integer


Verilerin saniye cinsinden yaşam süresi (TTL). Verileri süresiz olarak saklamak için bu parametreyi -1 olarak ayarlayın. Diğer değerler için minimum değer 86400 (bir gün) olur. TTL'sini aşan veriler otomatik olarak silinir. Arama dizini veya ikincil dizin kullanmak için bu parametreyi -1 olarak ayarlayın veya allowUpdate parametresini false olarak ayarlayın.


maxVersions (gerekli)


Integer


Her nitelik sütunu için saklanacak maksimum sürüm sayısı. Arama dizini veya ikincil dizin kullanmak için bu parametreyi 1 olarak ayarlayın.


maxTimeDeviation (isteğe bağlı)


Long


Saniye cinsinden maksimum sürüm sapması. Varsayılan değer: 86400 (bir gün). Yazılan verinin zaman damgası ile mevcut sistem saati arasındaki fark bu sapma içinde kalmalıdır. Geçerli sürüm aralığı [max(data write time - maximum version offset, data write time - TTL), data write time + maximum version offset) şeklindedir.


allowUpdate (isteğe bağlı)


Boolean

updateRow çağrılarak verilerin güncellenip güncellenemeyeceğini belirtir. Varsayılan değer: true. Bu parametreyi false olarak ayarlarsanız veriler güncellenemez.


updateFullRow (isteğe bağlı)


Boolean


Tüm satır güncellemelerinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: false. Bu parametreyi yalnızca tablo oluştururken ayarlayabilirsiniz. updateTable çağrılarak değiştirilemez.

Ayrılmış okuma/yazma aktarım hızı

reservedThroughput aşağıdaki parametreyi içeren bir ReservedThroughput nesnesidir.


Ad


Tür


Açıklama


capacityUnit (gerekli)


CapacityUnit


Ayrılmış okuma/yazma aktarım hızı yapılandırması.

Kapasite birimleri

reservedThroughput.capacityUnit aşağıdaki parametreleri içeren bir CapacityUnit nesnesidir.


Ad


Tür


Açıklama


readCapacityUnit (gerekli)


Integer


CU cinsinden ayrılmış okuma aktarım hızı.


writeCapacityUnit (gerekli)


Integer


CU cinsinden ayrılmış yazma aktarım hızı.

İkincil dizinler

indexMeta[] dizisindeki her öğe aşağıdaki parametreleri içeren bir IndexMeta nesnesidir.


Ad


Tür


Açıklama


indexName (gerekli)


String


Dizin adı.


primaryKey (gerekli)


List<String>


Dizinin birincil anahtar sütunları. Bunlar tablodaki birincil anahtar sütunlarından ve önceden tanımlanmış sütunlardan oluşabilir. Yerel ikincil dizin için ilk birincil anahtar sütunu tablonun ilk birincil anahtar sütunuyla eşleşmelidir.


definedColumns (isteğe bağlı)


List<String>


Dizine dahil edilen önceden tanımlanmış sütunlar. Bunlar tablonun önceden tanımlanmış sütunları olmalıdır.


indexType (isteğe bağlı)


IndexType


Dizin türü. Geçerli değerler: IT_GLOBAL_INDEX (varsayılan, genel ikincil dizin) ve IT_LOCAL_INDEX (yerel ikincil dizin).


indexUpdateMode (isteğe bağlı)


IndexUpdateMode


Dizin güncelleme modu. Genel ikincil dizin IUM_ASYNC_INDEX (varsayılan, eşzamansız güncelleme) kullanmalıdır. Yerel ikincil dizin IUM_SYNC_INDEX (eşzamanlı güncelleme) kullanmalıdır.

Stream yapılandırması

streamSpecification aşağıdaki parametreleri içeren bir StreamSpecification nesnesidir.


Ad


Tür


Açıklama


enableStream (gerekli)


Boolean


Stream'in etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: false.


expirationTime (isteğe bağlı)


Integer


Saat cinsinden artımlı günlüklerin saklama süresi. Maksimum değer: 168 (yedi gün). enableStream parametresi true olarak ayarlandığında bu parametre gereklidir.

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.


Ad


Tür


Açıklama


enable (gerekli)


Boolean


Veri şifrelemenin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: false.


keyType (isteğe bağlı)


SSEKeyType


Şifreleme türü. Geçerli değerler: SSE_KMS_SERVICE (KMS hizmet anahtarı şifrelemesi) ve SSE_BYOK (Bring Your Own Key şifrelemesi). Şifreleme etkinleştirildiğinde bu parametre gereklidir.


keyId (isteğe bağlı)


String


Müşteri ana anahtarının ID'si. BYOK şifrelemesi için bu parametre gereklidir.


roleArn (isteğe bağlı)


String


Resource Access Management (RAM) rolünün Alibaba Cloud Resource Name (ARN) değeri. BYOK şifrelemesi için bu parametre gereklidir.

Ö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.

Önemli

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

Not

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