Halaman ini menjelaskan pembacaan yang diarahkan Spanner dan cara menggunakannya.
Pembacaan terarah di Spanner memberikan fleksibilitas untuk merutekan transaksi hanya baca dan pembacaan tunggal ke region atau jenis replika tertentu dalam konfigurasi instance multi-region atau konfigurasi regional kustom dengan region hanya baca opsional.
Kasus penggunaan umum
Beberapa kasus penggunaan umum untuk pembacaan terarah antara lain:
- Load balancing workload di beberapa region untuk mencapai pemanfaatan CPU yang lebih seragam.
- Mengisolasi analisis dalam aplikasi dengan meminimalkan dampak pada beban kerja transaksional.
- Menyediakan isolasi parsial untuk pembacaan aliran data perubahan. Jika menggunakan Spanner API untuk melakukan streaming perubahan data Spanner, Anda dapat membantu meminimalkan dampak pada beban kerja transaksional menggunakan pembacaan terarah.
Operasi kueri yang didukung
Operasi kueri | Apakah pembacaan terarah didukung? |
---|---|
Bacaan yang sudah tidak berlaku | Ya |
Pembacaan andal | Ya |
Transaksi baca-tulis | Tidak |
Pembacaan terarah tidak didukung untuk transaksi baca-tulis
dan jenis update massal DML terpartisi. Hal ini karena transaksi baca-tulis harus diproses di region paling dominan. Jika pembacaan terarah digunakan dalam transaksi baca-tulis, transaksi tersebut akan gagal dengan error BAD_REQUEST
.
Batasan
Pembacaan terarah Spanner memiliki batasan berikut:
- Anda hanya dapat menggunakan operasi baca terarah dalam instance Spanner yang ada dalam konfigurasi instance multi-region atau konfigurasi regional kustom dengan region hanya baca opsional.
- Anda tidak dapat menggunakan operasi baca terarah dengan permintaan baca-tulis karena permintaan tulis selalu disalurkan oleh region paling dominan.
- Anda tidak dapat menggunakan pembacaan terarah di Google Cloud Console atau Google Cloud CLI. Alat ini tersedia menggunakan REST dan RPC API, serta library klien Spanner.
- Anda dapat menentukan maksimum 10 replika dalam satu pembacaan terarah.
- Jika menggunakan dasbor insight sistem atau Metrics Explorer, di Operasi per detik menurut database, dan Operasi per detik menurut diagram metode API, Anda mungkin melihat permintaan operasi baca terarah di lokasi selain yang Anda tetapkan. Dalam hal ini, informasi dari bagan mungkin salah. Anda dapat mengonfirmasi bahwa permintaan operasi baca dirutekan ke region yang dipilih menggunakan metrik penggunaan CPU. Metrik ini menampilkan informasi yang paling akurat tentang tempat traffic pembacaan yang diarahkan.
Sebelum memulai
Pertimbangkan hal berikut sebelum Anda menggunakan pembacaan terarah:
- Aplikasi mungkin menimbulkan latensi tambahan jika Anda mengarahkan pembacaan ke replika atau region selain yang terdekat dengan aplikasi.
- Anda dapat merutekan lalu lintas berdasarkan:
- Nama region (Contoh:
us-central1
). - Jenis replika (Nilai yang mungkin:
READ_ONLY
danREAD_WRITE
).
- Nama region (Contoh:
- Opsi failover otomatis dalam pembacaan terarah diaktifkan secara default. Jika opsi failover otomatis diaktifkan dan semua replika yang ditentukan tidak tersedia atau tidak responsif, Spanner akan merutekan permintaan ke replika di luar daftar
includeReplicas
. Jika Anda menonaktifkan opsi failover otomatis dan semua replika yang ditentukan tidak tersedia atau tidak responsif, permintaan pembacaan terarah akan gagal.
Parameter operasi baca langsung
Jika menggunakan REST atau RPC API untuk melakukan pembacaan terarah, Anda harus menentukan kolom ini dalam parameter directedReadOptions
. Anda hanya dapat menyertakan salah satu dari
includeReplicas
atau excludeReplicas
, bukan keduanya.
includeReplicas
: Berisi kumpulanreplicaSelections
berulang. Daftar ini menunjukkan urutan operasi baca yang diarahkan ke region atau jenis replika tertentu yang harus dipertimbangkan. Anda dapat menentukan maksimal 10includeReplicas
.replicaSelections
: Terdiri darilocation
atau replikatype
yang menayangkan permintaan operasi baca yang diarahkan. Jika menggunakanincludeReplicas
, Anda harus memberikan setidaknya salah satu kolom berikut:location
: Lokasi yang menayangkan permintaan pembacaan terarah. Lokasi harus merupakan salah satu region dalam konfigurasi multi-region database Anda. Jika lokasi bukan merupakan salah satu region dalam konfigurasi multi-region database Anda, permintaan tidak akan dirutekan seperti yang diharapkan. Sebagai gantinya, grup iklan ditayangkan oleh wilayah terdekat. Misalnya, Anda dapat mengarahkan operasi baca ke lokasius-central1
pada database dalam konfigurasi instance multi-regionnam6
.type
: Jenis replika yang menayangkan permintaan pembacaan terarah. Jenis yang mungkin mencakupREAD_WRITE
danREAD_ONLY
.
autoFailoverDisabled
: Secara default, atribut ini disetel keFalse
, yang berarti failover otomatis diaktifkan. Jika opsi failover otomatis diaktifkan, dan semua replika yang ditentukan tidak tersedia atau tidak responsif, Spanner akan merutekan permintaan ke replika di luar daftarincludeReplicas
. Jika Anda menonaktifkan opsi failover otomatis dan semua replika yang ditentukan tidak tersedia atau tidak responsif, permintaan baca yang diarahkan akan gagal. Nilai yang mungkin mencakupTRUE
untuk dinonaktifkan danFALSE
untuk diaktifkan.
excludeReplicas
: Berisi kumpulanreplicaSelections
berulang yang dikecualikan dari penayangan permintaan. Spanner tidak mengarahkan permintaan ke replika dalam daftar ini.replicaSelections
: Jenis lokasi atau replika yang dikecualikan dari penayangan permintaan operasi baca terarah. Jika menggunakanexcludeReplicas
, Anda harus memberikan setidaknya salah satu kolom berikut:location
: Lokasi yang dikecualikan dari penayangan permintaan baca langsung.type
: Jenis replika yang dikecualikan dari penayangan permintaan baca terarah. Jenis yang mungkin mencakupREAD_WRITE
danREAD_ONLY
.
Untuk melihat contoh tampilan isi permintaan REST, klik tab REST di bagian Gunakan pembacaan yang diarahkan.
Menggunakan pembacaan terarah
Anda dapat menggunakan library klien Spanner serta REST dan RPC API untuk melakukan pembacaan terarah.
Library klien
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Anda dapat menggunakan REST API berikut untuk melakukan pembacaan terarah:
Misalnya, untuk melakukan pembacaan terarah dalam us-central1
menggunakan executeSQL
:
Untuk sesi, masukkan:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>
Ganti kode berikut:
- PROJECT-ID: project ID.
- INSTANCE-ID: ID instance.
- DATABASE-ID: ID database.
- SESSION-ID: ID sesi.
Anda menerima nilai
SESSION-ID
saat membuat sesi.
Untuk Request body, gunakan:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Klik Jalankan. Respons akan menampilkan hasil kueri.
RPC
Anda dapat menggunakan RPC API berikut untuk melakukan pembacaan terarah:
Langkah selanjutnya
- Pelajari cara melakukan Pembacaan di luar transaksi.