İkincil dizin özelliği, veri tablosunun birincil anahtarına ve bu tablo için oluşturulan ikincil dizinin dizin sütunlarına dayalı olarak veri sorgulamanıza olanak tanır. Veri tablosunun nitelik sütunlarını kullanarak veri sorgulamak istiyorsanız, sorguları hızlandırmak için veri tablosu üzerinde bir ikincil dizin oluşturabilirsiniz. Bir veri tablosu için ikincil dizin oluştururken, ikincil dizinin dizin veya nitelik sütunlarını veri tablosunu oluşturduğunuzda belirttiğiniz önceden tanımlanmış sütunlar olarak ayarlayabilirsiniz. İkincil dizini oluşturduktan sonra verileri sorgulamak için bu dizini kullanabilirsiniz.
İkincil dizinler genel ikincil dizinler ve yerel ikincil dizinler olarak sınıflandırılır. İkincil dizin özelliği hakkında daha fazla bilgi için bkz. Overview.
CreateTable işlemi çağrılarak bir veri tablosu oluştururken bir veya daha fazla dizin tablosu oluşturabilirsiniz. Daha fazla bilgi için bkz. Create a data table.
Önkoşullar
Bir OTSClient örneği başlatın. Daha fazla bilgi için bkz. Initialize an OTSClient instance.
-
max_version parametresi 1 olarak ayarlanmış bir veri tablosu oluşturun. Veri tablosunun time_to_live parametresi aşağıdaki koşullardan birini karşılamalıdır: Daha fazla bilgi için bkz. Create a data table.
Veri tablosunun time_to_live parametresi -1 olarak ayarlanmalıdır; bu değer, veri tablosundaki verilerin süresiz olarak geçerli kalacağını belirtir.
Veri tablosunun time_to_live parametresi -1 dışındaki bir değere ayarlanmış olmalı ve veri tablosu üzerinde güncelleme işlemleri yasaklanmış olmalıdır.
Veri tablosu için önceden tanımlanmış sütunlar belirtin.
Açıklama
İkincil dizin, veri tablosundaki birincil anahtar sütunları ve önceden tanımlanmış sütunlardan oluşan farklı bir birincil anahtar şeması kullanarak ek sorgu boyutları sağlar. İkincil dizinler genel ikincil dizinler ve yerel ikincil dizinler olarak iki türe ayrılır. Bu iki dizin türü farklı veri senkronizasyon modlarına ve birincil anahtar gereksinimlerine sahiptir. Daha fazla bilgi için bkz. Overview.
Mevcut bir veri tablosu için ikincil dizin oluşturmak üzere createIndex metodunu çağırın. Bir veri tablosuyla birlikte bir veya daha fazla ikincil dizin oluşturmak için createTable isteğinde dizin şemalarını yapılandırın. Daha fazla bilgi için bkz. Create a data table.
public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
throws TableStoreException, ClientException
Aşağıdaki örnek kod, example_table için example_global_index adlı genel ikincil dizini oluşturur. Dizin mevcut verileri içerir.
IndexMeta indexMeta = new IndexMeta("example_global_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
CreateIndexRequest request =
new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);
Parametreler
|
Parameter |
Description |
|
main_table_name |
Veri tablosunun adı. |
|
index_meta |
Dizin tablosuna ilişkin şema bilgileri. Şema bilgileri aşağıdaki öğeleri içerir:
|
|
include_base_data |
Mevcut veri tablosu verilerinin dizin tablosuna dahil edilip edilmeyeceğini belirtir. include_base_data parametresini true olarak ayarlarsanız dizin tablosu mevcut verileri içerir. Parametreyi false olarak ayarlarsanız mevcut veriler dahil edilmez. |
Örnekler
Genel ikincil dizin oluşturma
Aşağıdaki örnek kod bir veri tablosu için ikincil dizin oluşturmayı göstermektedir. Bu örnekte veri tablosunun birincil anahtar sütunları pk1 ve pk2'dir. İkincil dizin için belirtilen birincil anahtar sütunları definedcol1 ve pk1'dir. İkincil dizin için belirtilen nitelik sütunları ise definedcol2 ve definedcol3'tür.
# Specify the metadata of the index table.
# Specify the name, primary key columns, and attribute columns of the index table in sequence.
index_meta = SecondaryIndexMeta('<INDEX_NAME>', ['definedcol1', 'pk1'], ['definedcol2', 'definedcol3'])
# Specify the name of the data table and specify that the index table does not include the existing data of the data table.
client.create_secondary_index('<TABLE_NAME>', index_meta, False)
# Specify the name of the data table and specify that the index table includes the existing data of the data table.
# After you create the index table, the existing data of the data table is synchronized to the index table. After the existing data is synchronized, you can use the index table to query all data in the data table. The time that is required for synchronization varies based on the amount of data to synchronize.
# client.create_secondary_index('<TABLE_NAME>', index_meta, True)
Yerel ikincil dizin oluşturma
Aşağıdaki örnek kod bir veri tablosu için ikincil dizin oluşturmayı göstermektedir. Bu örnekte veri tablosunun birincil anahtar sütunları pk1 ve pk2'dir. İkincil dizin için belirtilen birincil anahtar sütunları definedcol1 ve pk1'dir. İkincil dizin için belirtilen nitelik sütunları ise definedcol2 ve definedcol3'tür.
# Specify the metadata of the index table.
# Specify the name, primary key columns, attribute columns, and type of the index table in sequence.
# The first primary key column of a local secondary index must be the same as the first primary key column of the data table.
index_meta = SecondaryIndexMeta('<INDEX_NAME>', ['pk1', 'definedcol1'], ['definedcol2', 'definedcol3'],index_type= SecondaryIndexType.LOCAL_INDEX)
# Specify the name of the data table and specify that the index table does not include the existing data of the data table.
client.create_secondary_index('<TABLE_NAME>', index_meta, False)
# Specify the name of the data table and specify that the index table includes the existing data of the data table.
# After you create the index table, the existing data of the data table is synchronized to the index table. After the existing data is synchronized, you can use the index table to query all data in the data table. The time that is required for synchronization varies based on the amount of data to synchronize.
# client.create_secondary_index('<TABLE_NAME>', index_meta, True)
İlgili Kaynaklar
İkincil dizin oluşturduktan sonra tek bir veri satırını veya belirli bir aralıktaki birincil anahtar değerine sahip verileri okumak için bu dizini kullanabilirsiniz. Daha fazla bilgi için bkz. Use a secondary index to read data.
Artık kullanmadığınız bir ikincil dizini silebilirsiniz. Daha fazla bilgi için bkz. Delete a secondary index.