Tujuan
Tutorial ini akan memandu Anda melalui langkah-langkah berikut menggunakan driver ADO.NET Spanner:
- Buat instance dan database Spanner.
- Menulis, membaca, dan menjalankan kueri SQL pada data di database.
- Perbarui skema database.
- Perbarui data menggunakan transaksi baca-tulis.
- Tambahkan indeks sekunder ke database.
- Gunakan indeks untuk membaca dan menjalankan kueri SQL pada data.
- Mengambil data menggunakan transaksi hanya baca.
Biaya
Tutorial ini menggunakan Spanner, yang merupakan komponenGoogle Cloudyang dapat ditagih. Untuk mengetahui informasi tentang biaya penggunaan Spanner, lihat Harga.
Sebelum memulai
Selesaikan langkah-langkah yang dijelaskan dalam Menyiapkan, yang mencakup pembuatan dan penetapan project default Google Cloud , pengaktifan penagihan, pengaktifan Cloud Spanner API, dan penyiapan OAuth 2.0 untuk mendapatkan kredensial autentikasi guna menggunakan Cloud Spanner API.
Secara khusus, pastikan Anda menjalankan gcloud auth
application-default login
untuk menyiapkan lingkungan pengembangan lokal dengan kredensial
autentikasi.
Menyiapkan lingkungan ADO.NET lokal Anda
Download dan instal .NET di mesin pengembangan Anda jika belum diinstal.
Clone repositori contoh ke komputer lokal Anda:
git clone https://github.com/googleapis/dotnet-spanner-entity-framework.gitBeralihlah ke direktori yang berisi kode contoh driver ADO.NET Spanner:
cd dotnet-spanner-entity-framework/spanner-ado-net/spanner-ado-net-getting-started-guide
Membuat instance
Saat pertama kali menggunakan Spanner, Anda harus membuat instance, yang merupakan alokasi resource yang digunakan oleh database Spanner. Saat membuat instance, Anda memilih konfigurasi instance, yang menentukan tempat penyimpanan data Anda, dan juga jumlah node yang akan digunakan, yang menentukan jumlah resource penayangan dan penyimpanan di instance Anda.
Lihat Membuat instance untuk mempelajari cara membuat instance Spanner menggunakan salah satu metode berikut. Anda dapat memberi nama instance test-instance untuk menggunakannya dengan
topik lain dalam dokumen ini yang mereferensikan instance bernama test-instance.
- Google Cloud CLI
- Konsol Google Cloud
- Library klien (C++, C#, Go, Java, Node.js, PHP, Python, atau Ruby)
Melihat-lihat file contoh
Repositori contoh berisi contoh yang menunjukkan cara menggunakan Spanner dengan ADO.NET.
Lihat fileSampleRunner.cs, yang menunjukkan cara menggunakan
Spanner. Kode ini menunjukkan cara membuat dan menggunakan database baru. Data menggunakan contoh skema yang ditampilkan di halaman Skema dan model data.
Buat database
GoogleSQL
gcloud spanner databases create example-db --instance=test-instance
PostgreSQL
gcloud spanner databases create example-db --instance=test-instance \
--database-dialect=POSTGRESQL
Anda akan melihat:
Creating database...done.
Buat tabel
Kode berikut membuat dua tabel dalam database.
GoogleSQL
PostgreSQL
Jalankan sampel dengan perintah berikut:
GoogleSQL
dotnet run createtables projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run createtablespg projects/PROJECT_ID/instances/test-instance/databases/example-db
Langkah selanjutnya adalah menulis data ke database Anda.
Membuat koneksi
Sebelum dapat melakukan pembacaan atau penulisan, Anda harus membuat koneksi untuk berinteraksi dengan Spanner. Nama database dan properti koneksi lainnya ditentukan dalam string koneksi ADO.NET.GoogleSQL
PostgreSQL
Menulis data dengan DML
Anda dapat menyisipkan data menggunakan Bahasa Pengolahan Data (DML) dalam transaksi baca-tulis.
Anda menggunakan metode DbCommand#ExecuteNonQuery untuk mengeksekusi pernyataan DML.
GoogleSQL
PostgreSQL
Jalankan sampel dengan perintah berikut:
GoogleSQL
dotnet run dmlwrite projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run dmlwritepg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya akan menampilkan:
4 records inserted.
Menulis data dengan mutasi
Anda juga dapat menyisipkan data menggunakan mutasi.
Anda dapat menyisipkan data menggunakan metode batch.CreateInsertCommand(), yang membuat SpannerBatchCommand baru untuk menyisipkan baris ke dalam tabel.
Metode SpannerBatchCommand.ExecuteNonQueryAsync() menambahkan baris baru ke tabel.
Kode berikut menunjukkan cara menulis data menggunakan mutasi:
GoogleSQL
PostgreSQL
Jalankan contoh berikut menggunakan argumen write:
GoogleSQL
dotnet run write projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run writepg projects/PROJECT_ID/instances/test-instance/databases/example-db
Membuat kueri data menggunakan SQL
Spanner mendukung antarmuka SQL untuk membaca data, yang dapat Anda akses di command line menggunakan Google Cloud CLI atau secara terprogram menggunakan driver ADO.NET Spanner.
Di command line
Jalankan pernyataan SQL berikut untuk membaca nilai semua kolom dari tabel Albums:
GoogleSQL
gcloud spanner databases execute-sql example-db --instance=test-instance \
--sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'
PostgreSQL
gcloud spanner databases execute-sql example-db --instance=test-instance \
--sql='SELECT singer_id, album_id, album_title FROM albums'
Hasilnya menampilkan:
SingerId AlbumId AlbumTitle
1 1 Total Junk
1 2 Go, Go, Go
2 1 Green
2 2 Forever Hold Your Peace
2 3 Terrified
Menggunakan driver ADO.NET Spanner
Selain menjalankan pernyataan SQL di command line, Anda dapat mengeluarkan pernyataan SQL yang sama secara terprogram menggunakan driver ADO.NET Spanner.
Metode berikut digunakan untuk mengeksekusi kueri SQL:- Metode
ExecuteReaderdi classDbCommand: gunakan ini untuk menjalankan pernyataan SQL yang menampilkan baris, seperti kueri atau pernyataan DML dengan klausaTHEN RETURN. - Class
DbDataReader: gunakan class ini untuk mengakses data yang ditampilkan oleh pernyataan SQL.
Contoh berikut menggunakan metode ExecuteReaderAsync:
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run query projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run querypg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya akan menampilkan:
1 1 Total Junk
1 2 Go, Go, Go
2 1 Green
2 2 Forever Hold Your Peace
2 3 Terrified
Membuat kueri menggunakan parameter SQL
Jika aplikasi Anda memiliki kueri yang sering dieksekusi, Anda dapat meningkatkan performa kueri tersebut dengan memparameterisasinya. Kueri parametrik yang dihasilkan dapat di-cache dan digunakan kembali, sehingga mengurangi biaya kompilasi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan parameter kueri untuk mempercepat kueri yang sering dijalankan.
Berikut adalah contoh penggunaan parameter dalam klausa WHERE untuk membuat kueri pada rekaman yang berisi nilai tertentu untuk LastName.
Driver ADO.NET Spanner mendukung parameter kueri
posisional dan bernama. ? dalam pernyataan SQL menunjukkan parameter kueri
posisional. Tambahkan nilai parameter kueri ke Parameters dari
DbCommand. Contoh:
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run querywithparameter projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run querywithparameterpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya menampilkan:
12 Melissa Garcia
Memperbarui skema database
Anggaplah Anda perlu menambahkan kolom baru bernama MarketingBudget ke tabel Albums. Menambahkan kolom baru ke tabel yang ada memerlukan pembaruan pada
skema database Anda. Spanner mendukung pembaruan skema ke database saat
database terus melayani traffic. Pembaruan skema tidak memerlukan penghentian database dan tidak mengunci seluruh tabel atau kolom; Anda dapat terus menulis data ke database selama pembaruan skema. Baca selengkapnya tentang pembaruan skema yang didukung dan performa perubahan skema di Melakukan pembaruan skema.
Menambahkan kolom
Anda dapat menambahkan kolom di command line menggunakan Google Cloud CLI atau secara terprogram menggunakan driver Spanner ADO.NET.
Di command line
Gunakan perintah ALTER TABLE berikut untuk
menambahkan kolom baru ke tabel:
GoogleSQL
gcloud spanner databases ddl update example-db --instance=test-instance \
--ddl='ALTER TABLE Albums ADD COLUMN MarketingBudget INT64'
PostgreSQL
gcloud spanner databases ddl update example-db --instance=test-instance \
--ddl='alter table albums add column marketing_budget bigint'
Anda akan melihat:
Schema updating...done.
Menggunakan driver ADO.NET Spanner
Gunakan metodeExecuteNonQueryAsync untuk mengubah skema:
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run addcolumn projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run addcolumnpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya menampilkan:
Added MarketingBudget column.
Menjalankan batch DDL
Sebaiknya Anda menjalankan beberapa modifikasi skema dalam satu batch. Gunakan
metode ADO.NET CreateBatch untuk membuat batch. Contoh
berikut membuat dua tabel dalam satu batch:
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run ddlbatch projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run ddlbatchpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya menampilkan:
Added Venues and Concerts tables.
Menulis data ke kolom baru
Kode berikut menulis data ke kolom baru. Tindakan ini menetapkan MarketingBudget ke
100000 untuk baris yang dikunci oleh Albums(1, 1) dan ke 500000 untuk baris yang dikunci
oleh Albums(2, 2).
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run update projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run updatepg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya menampilkan:
Updated 2 albums
Anda juga dapat menjalankan kueri SQL untuk mengambil nilai yang baru saja Anda tulis.
Contoh berikut menggunakan metode ExecuteReaderAsync untuk menjalankan kueri:
GoogleSQL
PostgreSQL
Untuk menjalankan kueri ini, jalankan perintah berikut:
GoogleSQL
dotnet run querymarketingbudget projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run querymarketingbudgetpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Anda akan melihat:
1 1 100000
1 2 null
2 1 null
2 2 500000
2 3 null
Memperbarui data
Anda dapat memperbarui data menggunakan DML dalam transaksi baca-tulis.
Panggil connection.BeginTransactionAsync() untuk menjalankan transaksi baca-tulis di
ADO.NET.
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run writewithtransactionusingdml projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run writewithtransactionusingdmlpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Tag transaksi dan tag permintaan
Gunakan tag transaksi dan tag permintaan untuk memecahkan masalah transaksi dan kueri di Spanner. Anda dapat menyetel tag pada objek Transaksi untuk mengirim tag transaksi, dan objek DbCommand untuk mengirim tag permintaan ke Spanner. Contoh:
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run tags projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run tagspg projects/PROJECT_ID/instances/test-instance/databases/example-db
Mengambil data menggunakan transaksi hanya baca
Misalkan Anda ingin menjalankan lebih dari satu pembacaan pada stempel waktu yang sama. Transaksi hanya baca mengamati awalan
yang konsisten dari histori commit transaksi, sehingga aplikasi Anda selalu mendapatkan
data yang konsisten.
Panggil connection.BeginReadOnlyTransactionAsync() untuk menjalankan transaksi hanya baca.
Berikut cara menjalankan kueri dan melakukan pembacaan dalam transaksi hanya baca yang sama:
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run readonlytransaction projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run readonlytransactionpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Hasilnya menampilkan:
1 1 Total Junk
1 2 Go, Go, Go
2 1 Green
2 2 Forever Hold Your Peace
2 3 Terrified
2 2 Forever Hold Your Peace
1 2 Go, Go, Go
2 1 Green
2 3 Terrified
1 1 Total Junk
DML yang dipartisi
Bahasa Pengolahan Data (DML) Terpartisi dirancang untuk jenis update dan penghapusan massal berikut:
- Pembersihan berkala dan pembersihan sampah memori.
- Mengisi ulang kolom baru dengan nilai default.
GoogleSQL
PostgreSQL
Jalankan contoh dengan perintah berikut:
GoogleSQL
dotnet run pdml projects/PROJECT_ID/instances/test-instance/databases/example-db
PostgreSQL
dotnet run pdmlpg projects/PROJECT_ID/instances/test-instance/databases/example-db
Pembersihan
Agar tidak menimbulkan biaya tambahan pada akun Penagihan Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus database dan hapus instance yang Anda buat.
Menghapus database
Jika Anda menghapus instance, semua database di dalamnya akan otomatis dihapus. Langkah ini menunjukkan cara menghapus database tanpa menghapus instance (Anda tetap dikenai biaya untuk instance tersebut).
Di command line
gcloud spanner databases delete example-db --instance=test-instance
Menggunakan Google Cloud console
Buka halaman Spanner Instances di konsol Google Cloud .
Klik instance.
Klik database yang ingin Anda hapus.
Di halaman Database details, klik Delete.
Konfirmasi bahwa Anda ingin menghapus database, lalu klik Hapus.
Menghapus instance
Menghapus instance akan otomatis menghapus semua database yang dibuat di instance tersebut.
Di command line
gcloud spanner instances delete test-instance
Menggunakan Google Cloud console
Buka halaman Spanner Instances di konsol Google Cloud .
Klik instance Anda.
Klik Hapus.
Konfirmasi bahwa Anda ingin menghapus instance, lalu klik Hapus.
Langkah berikutnya
Pelajari cara mengakses Spanner dengan instance virtual machine.
Pelajari kredensial otorisasi dan autentikasi di Mengautentikasi ke layanan Cloud menggunakan library klien.
Pelajari lebih lanjut Praktik terbaik desain skema Spanner.