Ikhtisar fitur
Fitur kolom virtual memungkinkan Anda memetakan kolom dalam tabel ke kolom virtual dalam indeks pencarian saat membuat indeks tersebut. Tipe kolom virtual dapat berbeda dari tipe kolom di tabel, sehingga Anda dapat membuat kolom baru tanpa mengubah skema dan data tabel. Kolom ini dapat digunakan untuk mempercepat kueri atau dikonfigurasi dengan metode tokenisasi yang berbeda.
Anda dapat mengonfigurasi metode tokenisasi yang berbeda untuk bidang Text yang dipetakan ke bidang yang sama dalam tabel.
Satu kolom String dapat dipetakan ke beberapa kolom Text dalam indeks pencarian, masing-masing menggunakan metode tokenisasi berbeda untuk memenuhi berbagai kebutuhan bisnis.
Akselerasi kueri
Anda tidak perlu membersihkan data atau membuat ulang skema tabel. Cukup petakan kolom yang diperlukan dari tabel ke kolom dalam indeks pencarian—tipe kolom antara tabel dan indeks pencarian dapat berbeda. Misalnya, petakan tipe numerik ke tipe Keyword untuk meningkatkan performa kueri tepat (term query), atau petakan tipe String ke tipe numerik untuk meningkatkan performa kueri rentang (range query).
Catatan penggunaan
Tabel berikut menjelaskan konversi tipe data antara kolom virtual dan kolom dalam tabel.
Field type in data tables | Field type of virtual columns |
String | Keyword and Keyword array |
FuzzyKeyword and FuzzyKeyword array |
Text and Text array |
Long and Long array |
Double and Double array |
Date and Date array |
IP and IP array |
Geo-point and Geo-point array |
Long | Keyword |
FuzzyKeyword |
Text |
Double | Keyword |
FuzzyKeyword |
Text |
Kolom virtual hanya dapat digunakan dalam pernyataan kueri dan tidak dapat digunakan dalam ColumnsToGet untuk mengembalikan nilai kolom. Untuk mengembalikan nilai kolom, Anda perlu menentukan kolom asli yang dipetakan oleh kolom virtual tersebut.
Metode
Gunakan Konsol Tablestore atau SDK Tablestore untuk menggunakan fitur kolom virtual. Sebelum menggunakan fitur ini, pastikan persiapan berikut telah dilakukan:
Akun Alibaba Cloud atau RAM user yang memiliki izin untuk mengelola Tablestore telah dibuat. Untuk informasi tentang cara memberikan izin mengelola Tablestore kepada RAM user, lihat Use a RAM policy to grant permissions to a RAM user.
Jika Anda ingin menggunakan fitur kolom virtual melalui SDK Tablestore, pasangan Kunci Akses (AccessKey pair) telah dibuat untuk akun Alibaba Cloud atau RAM user Anda. Untuk informasi selengkapnya, lihat Create an AccessKey pair.
Tabel data telah dibuat. Untuk informasi selengkapnya, lihat Operations on data tables.
Jika Anda ingin menggunakan fitur kolom virtual melalui SDK Tablestore, instans OTSClient telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize a Tablestore client.
Gunakan fitur kolom virtual di Konsol Tablestore
Setelah menentukan suatu bidang sebagai kolom virtual saat membuat indeks pencarian di Konsol Tablestore, gunakan kolom virtual tersebut untuk mengkueri data.
Buka tab Indexes.
Masuk ke Tablestore console.
Pada bilah navigasi atas, pilih wilayah dan kelompok sumber daya.
Pada halaman Overview, klik nama instans yang ingin Anda kelola atau klik Manage Instance di kolom Actions instans tersebut.
Di bagian Tables pada tab Instance Details, klik nama tabel data tempat Anda ingin membuat indeks pencarian. Pada halaman Manage Table, klik Indexes. Anda juga dapat mengklik Indexes di kolom Actions tabel data tersebut.
Pada tab Indexes, klik Create Search Index.
Pada dialog Create Index, tentukan kolom virtual saat membuat indeks pencarian.

Secara default, sistem menghasilkan nama untuk indeks pencarian. Anda juga dapat menentukan nama sendiri untuk indeks tersebut.
Konfigurasikan parameter Schema Generation Type.
Jika Anda mengatur Schema Generation Type ke Manual, masukkan nama bidang serta tentukan tipe bidang dan apakah Array diaktifkan untuk setiap bidang yang ingin ditambahkan.
Jika Anda mengatur Schema Generation Type ke Auto Generate, sistem secara otomatis menggunakan kolom kunci primer dan kolom atribut dari tabel data sebagai bidang indeks. Tentukan tipe bidang dan apakah Array diaktifkan untuk setiap bidang yang ditambahkan secara otomatis oleh sistem sesuai kebutuhan bisnis Anda.
Catatan Nilai Field Name dan Field Type harus sesuai dengan yang ada di tabel data. Untuk informasi tentang pemetaan antara tipe bidang di tabel data dan tipe bidang di indeks pencarian, lihat Data types.
Buat kolom virtual.
Penting Untuk membuat kolom virtual, tabel data harus berisi bidang sumber dan tipe data bidang sumber harus sesuai dengan tipe data kolom virtual.
Klik ikon
.
Konfigurasikan parameter Field Name dan Field Type.
Aktifkan Virtual Field untuk bidang tersebut dan tentukan nilai untuk Index Field Name.
Jika ingin menentukan routing key, masa hidup data (TTL), atau metode presorting untuk indeks pencarian, aktifkan Advanced Settings. Untuk informasi selengkapnya, lihat Create a search index.
Klik OK.
Setelah membuat indeks pencarian, klik Index Details di kolom Actions indeks pencarian pada tab Indexes. Di halaman Index Details, lihat pengaturan parameter di bagian Basic Index Information, Index Meters, Routing Key, Index Fields, dan Pre-sorting.
Gunakan kolom virtual untuk mengkueri data.
Klik Manage Data di kolom Actions indeks pencarian.
Pada dialog Search, konfigurasikan parameter-parameter berikut.

Secara default, sistem mengembalikan semua kolom atribut. Untuk mengembalikan kolom atribut tertentu, nonaktifkan All Columns dan tentukan kolom atribut yang ingin dikembalikan. Pisahkan kolom atribut dengan koma (,).
Pilih bidang indeks dan klik Add untuk menambahkan bidang indeks sebagai kondisi kueri. Tentukan tipe kueri dan nilai untuk bidang indeks tersebut. Ulangi langkah ini untuk menambahkan lebih banyak kondisi kueri sesuai kebutuhan bisnis Anda.
Secara default, fitur pengurutan dinonaktifkan. Untuk mengaktifkannya, aktifkan Sort dan tambahkan bidang indeks yang digunakan untuk mengurutkan hasil kueri, lalu konfigurasikan metode pengurutannya.
Secara default, fitur agregasi dinonaktifkan. Jika ingin mengumpulkan statistik pada bidang tertentu, aktifkan Collect Statistics, tentukan bidang yang ingin dikumpulkan statistiknya, lalu konfigurasikan informasi yang diperlukan untuk pengumpulan statistik tersebut.
Klik OK.
Data yang memenuhi kondisi kueri akan ditampilkan sesuai urutan yang ditentukan pada tab Indexes.
Gunakan fitur kolom virtual melalui SDK Tablestore
Setelah menentukan suatu bidang sebagai kolom virtual saat menggunakan SDK Tablestore untuk membuat indeks pencarian, gunakan kolom virtual tersebut untuk mengkueri data.
Buat indeks pencarian dan tentukan kolom virtual.
Kode contoh berikut menunjukkan cara membuat indeks pencarian yang terdiri dari kolom Col_Keyword dan Col_Long. Masing-masing kolom memiliki kolom virtual. Kolom Col_Keyword_Virtual_Long dipetakan ke kolom Col_Keyword di tabel data, dan kolom Col_Long_Virtual_Keyword dipetakan ke kolom Col_Long di tabel data.
private static void createSearchIndex(SyncClient client) {
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
// Specify the name of the data table.
request.setTableName("<TABLE_NAME>");
// Specify the name of the search index.
request.setIndexName("<SEARCH_INDEX_NAME>");
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
// Specify the name and type of the field.
new FieldSchema("Col_Keyword", FieldType.KEYWORD),
// Specify the name and type of the field.
new FieldSchema("Col_Keyword_Virtual_Long", FieldType.LONG)
// Specify whether the field is a virtual column.
.setVirtualField(true)
// Specify the name of the source field to which the virtual column is mapped in the data table.
.setSourceFieldName("Col_Keyword"),
new FieldSchema("Col_Long", FieldType.LONG),
new FieldSchema("Col_Long_Virtual_Keyword", FieldType.KEYWORD)
.setVirtualField(true)
.setSourceFieldName("Col_Long")));
request.setIndexSchema(indexSchema);
// Call a client to create the search index.
client.createSearchIndex(request);
}
Gunakan kolom virtual untuk mengkueri data.
Kode contoh berikut menunjukkan cara mengkueri baris-baris yang nilai kolom Col_Long_Virtual_Keyword-nya sesuai dengan "1000". Dalam contoh ini, sebagian baris yang cocok dan jumlah total baris yang cocok dikembalikan.
private static void query(SyncClient client) {
SearchQuery searchQuery = new SearchQuery();
TermsQuery termsQuery = new TermsQuery(); // Set the query method to TermsQuery.
termsQuery.setFieldName("Col_Long_Virtual_Keyword"); // Specify the name of the field that you want to match.
termsQuery.addTerm(ColumnValue.fromString("1000")); // Set the value that you want to match.
searchQuery.setQuery(termsQuery);
searchQuery.setGetTotalCount(true); // Specify that the total number of matched rows is returned.
SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true); // Set ReturnAll to true to return all columns without returning the virtual columns.
searchRequest.setColumnsToGet(columnsToGet);
SearchResponse resp = client.search(searchRequest);
System.out.println("TotalCount: " + resp.getTotalCount()); // Specify that the total number of rows that meet the query conditions instead of the number of returned rows is displayed.
System.out.println("Row: " + resp.getRows());
}