全部产品
Search
文档中心

Tablestore:Pemindaian Paralel

更新时间:Jul 06, 2025

Jika Anda tidak memiliki persyaratan terkait urutan hasil kueri, Anda dapat menggunakan fitur pemindaian paralel untuk mendapatkan hasil kueri secara efisien.

Penting

Tablestore SDK for PHP V5.1.0 atau yang lebih baru mendukung fitur pemindaian paralel. Sebelum menggunakan fitur ini, pastikan bahwa Tablestore SDK for PHP V5.1.0 atau yang lebih baru telah diperoleh. Untuk informasi tentang riwayat versi Tablestore SDK for PHP, lihat Riwayat Versi Tablestore SDK for PHP.

Prasyarat

Parameter

Parameter

Deskripsi

table_name

Nama tabel data.

index_name

Nama indeks pencarian.

scan_query

query

Tipe kueri. Operasi ini mendukung kueri tepat, kueri fuzzy, kueri rentang, kueri geo, dan kueri bersarang, yang serupa dengan yang didukung oleh operasi Search.

limit

Jumlah maksimum baris yang dapat dikembalikan oleh setiap panggilan ParallelScan.

max_parallel

Jumlah maksimum tugas pemindaian paralel per permintaan. Jumlah maksimum tugas pemindaian paralel per permintaan bervariasi berdasarkan volume data. Volume data yang lebih besar memerlukan lebih banyak tugas pemindaian paralel per permintaan. Anda dapat menggunakan operasi ComputeSplits untuk menanyakan jumlah maksimum tugas pemindaian paralel per permintaan.

current_parallel_id

ID tugas pemindaian paralel dalam permintaan. Nilai valid: [0, max_parallel).

token

Token yang digunakan untuk paginasi hasil kueri. Hasil dari permintaan ParallelScan berisi token untuk halaman berikutnya. Anda dapat menggunakan token tersebut untuk mengambil halaman berikutnya.

alive_time

Masa berlaku tugas pemindaian paralel saat ini. Masa berlaku ini juga merupakan masa berlaku token. Unit: detik. Nilai default: 60. Kami menyarankan Anda untuk menggunakan nilai default. Jika permintaan berikutnya tidak dilakukan dalam periode validitas, tidak ada lagi data yang dapat dikueri. Waktu validitas token diperbarui setiap kali Anda mengirimkan permintaan.

Catatan

Sesi kadaluarsa lebih awal jika skema indeks sumber dan indeks canary diubah, server tunggal gagal, atau penyeimbangan beban di sisi server dilakukan. Dalam kasus ini, Anda harus membuat ulang sesi.

columns_to_get

Nama kolom yang ingin Anda kembalikan untuk setiap baris yang memenuhi kondisi kueri.

Untuk mengembalikan semua kolom dalam indeks pencarian, atur parameter return_type ke RETURN_ALL_FROM_INDEX.

session_id

ID sesi tugas pemindaian paralel. Anda dapat memanggil operasi ComputeSplits untuk membuat sesi dan menanyakan jumlah maksimum tugas pemindaian paralel yang didukung oleh permintaan pemindaian paralel.

Contoh

Berikut adalah contoh kode sampel tentang cara menggunakan fitur pemindaian paralel dari indeks pencarian:

// 1. Dapatkan ID sesi. 
$computeSplitsPointReq = array(
    'table_name' => 'php_sdk_test',
    'search_index_splits_options' => array(
        'index_name' => 'test_create_search_index'
    )
);

$computeSplits = $otsClient->computeSplits($computeSplitsPointReq);
print json_encode ($computeSplits, JSON_PRETTY_PRINT);


// 2. Tentukan kondisi kueri. 
$scanQuery = array(
    'query' => array(
        'query_type' => QueryTypeConst::MATCH_ALL_QUERY
    ),
    'limit' => 2,
    'alive_time' => 30,
    'token' => null,
    'current_parallel_id' => 0,
    'max_parallel' => 1
);

//3. Buat permintaan ParallelScan. 
$parallelScanReq = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'test_create_search_index',
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX, // RETURN_ALL tidak diizinkan dalam parallel_scan, gunakan RETURN_ALL_FROM_INDEX
        'return_names' => array('geo', 'text', 'long', 'keyword')
    ),
    'session_id' => $computeSplits['session_id'],
    'scan_query' => $scanQuery
);

$parallelScanRes = $otsClient->parallelScan($parallelScanReq);
print json_encode ($parallelScanRes['rows'], JSON_PRETTY_PRINT);

//4. Ekspor data menggunakan paginasi berbasis token. Dalam contoh ini, hanya total jumlah baris yang dikumpulkan. 
$totalCount = count($parallelScanRes['rows']);
while (!is_null($parallelScanRes['next_token'])) {
    $parallelScanReq['scan_query']['token'] = $parallelScanRes['next_token'];
    $parallelScanRes = $otsClient->parallelScan($parallelScanReq);
    print json_encode ($parallelScanRes['rows'], JSON_PRETTY_PRINT);

    $totalCount += count($parallelScanRes['rows']);
}
print "TotalCount: " . $totalCount;