Ringkasan
Untuk bisnis dengan banyak sumber data terpisah, akses ke data perusahaan di seluruh organisasi, terutama secara real-time, bisa menjadi sulit. Hal ini mengakibatkan dunia berupa akses data yang terbatas dan lambat, sehingga menghambat kemampuan organisasi untuk mengintrospeksi.
Datastream menyediakan akses yang mendekati real-time untuk mengubah data dari berbagai sumber data lokal dan berbasis cloud untuk membuat akses ke data organisasi. Datastream menyediakan pengalaman penyiapan yang sederhana dan API konsumsi terpadu yang mendemokrasikan akses organisasi ke data perusahaan terbaru yang tersedia di seluruh organisasi, sehingga mendukung skenario terintegrasi yang mendekati real-time.
Salah satu skenario tersebut adalah mentransfer data dari database sumber ke layanan penyimpanan berbasis Cloud atau antrean pesan dan mengubah data ini menjadi formulir yang dapat dibaca oleh aplikasi dan layanan lain yang berkomunikasi dengan layanan penyimpanan atau antrean pesan ini.
Dalam tutorial ini, Anda akan mempelajari cara menggunakan Datastream untuk mentransfer skema, tabel, dan data dari database Oracle sumber ke dalam folder di bucket Cloud Storage. Cloud Storage adalah layanan web untuk menyimpan dan mengakses data di Google Cloud. Layanan ini menggabungkan performa dan skalabilitas cloud Google dengan kemampuan keamanan dan berbagi yang canggih.
Sebagai bagian dari transfer informasi ini ke dalam folder di bucket Cloud Storage tujuan, Datastream menerjemahkan informasi ini ke Avro. Avro ditentukan oleh skema yang ditulis dalam JavaScript Object Notation (JSON). Dengan penerjemahan ini, Anda dapat membaca data dari berbagai sumber data dengan cara yang sama.
Tujuan
Dalam tutorial ini, Anda akan mempelajari cara:- Menetapkan variabel lingkungan. Anda akan menggunakan variabel ini saat membuat permintaan ke Datastream untuk membuat serta mengelola profil koneksi dan stream.
- Membuat dan mengelola profil koneksi untuk database sumber dan bucket tujuan di Cloud Storage. Dengan membuat profil koneksi ini, Anda akan membuat record yang berisi informasi tentang database sumber dan bucket Cloud Storage tujuan. Aliran data di Datastream menggunakan informasi dalam profil koneksi untuk mentransfer data dari database sumber ke folder di bucket tujuan.
- Membuat dan mengelola streaming. Datastream menggunakan aliran ini untuk mentransfer data, skema, dan tabel dari database sumber ke dalam folder di bucket tujuan.
- Pastikan Datastream mentransfer data dan tabel yang terkait dengan skema database Oracle sumber ke dalam folder di bucket tujuan, dan menerjemahkan data ini ke dalam format file Avro.
- Bersihkan resource yang Anda buat di Datastream agar tidak menghabiskan kuota dan Anda tidak akan ditagih di masa mendatang.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Storage
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
- Aktifkan Datastream API.
- Pastikan Anda memiliki peran Admin Datastream yang ditetapkan ke akun pengguna.
- Pastikan Anda memiliki database sumber yang dapat diakses Datastream. Untuk tutorial ini, database Oracle digunakan sebagai sumber.
- Konfigurasikan database sumber Anda untuk mengizinkan koneksi masuk dari alamat IP publik Datastream. Lihat daftar dan region IP yang diizinkan untuk mengakses lokasi semua region Datastream dan alamat IP publik terkaitnya.
- Pastikan Anda telah mengonfigurasi bucket Cloud Storage tujuan yang dapat diakses Datastream menggunakan daftar yang diizinkan IP, meneruskan tunnel SSH, atau metode konektivitas jaringan peering VPC.
- Pastikan Anda memiliki data, tabel, dan skema di database sumber yang dapat ditransfer Datastream ke dalam folder di bucket Cloud Storage tujuan.
- Download dan instal Cloud Shell. Aplikasi klien ini memberi Anda akses command line ke resource cloud (termasuk Datastream).
- Instal dan konfigurasikan utilitas
jq
. Utilitas ini merupakan pemroses JSON command line yang ringan dan fleksibel. Anda akan menggunakan prosesor ini untuk menampilkan perintahcURL
yang kompleks dalam teks yang mudah dibaca.
Menyetel variabel lingkungan
Dalam prosedur ini, Anda akan menetapkan variabel berikut:
$PROJECT
: Variabel ini dikaitkan dengan project Google Cloud Anda. Setiap resource Google Cloud yang Anda alokasikan dan gunakan harus menjadi milik project.$TOKEN
: Variabel ini dikaitkan dengan token akses. Token akses menyediakan sesi yang digunakan Cloud Shell untuk melakukan tugas di Datastream menggunakan REST API.
Luncurkan aplikasi Cloud Shell Anda.
Setelah mengautentikasi ke aplikasi dengan Akun Google Anda, masukkan
gcloud auth login
.Pada perintah
Do you want to continue (Y/n)?
, masukkanY
.Buka browser web dan salin URL ke browser tersebut.
Lakukan autentikasi ke Google Cloud SDK dengan Akun Google Anda. Kode akan muncul di halaman Login. Kode ini adalah token akses Anda.
Salin token akses, tempelkan ke parameter
Enter verification code:
di aplikasi Cloud Shell, dan tekanEnter
.Saat diminta, masukkan
PROJECT="YOUR_PROJECT_NAME"
untuk menetapkan variabel lingkungan$PROJECT
ke project Google Cloud Anda.Ketika diminta, masukkan
gcloud config set project YOUR_PROJECT_NAME
untuk menetapkan project yang ingin Anda kerjakan ke project Google Cloud Anda.Command prompt Anda akan diperbarui untuk mencerminkan project yang aktif dan mengikuti format berikut:
USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$
Saat diminta, masukkan
TOKEN=$(gcloud auth print-access-token)
untuk mengambil token akses dan menyimpannya sebagai variabel.Saat diminta, masukkan perintah berikut untuk memastikan variabel
$PROJECT
dan$TOKEN
Anda ditetapkan dengan benar:echo $PROJECT
echo $TOKEN
Setelah menetapkan variabel, Anda dapat membuat permintaan ke Datastream untuk membuat dan mengelola profil koneksi dan aliran data.
Membuat dan mengelola profil koneksi
Di bagian ini, Anda akan membuat dan mengelola profil koneksi untuk database Oracle sumber dan bucket tujuan di Cloud Storage.
Saat membuat profil koneksi ini, Anda akan membuat record yang berisi informasi tentang database sumber dan bucket Cloud Storage tujuan. Datastream menggunakan informasi dalam profil koneksi untuk mentransfer data dari database sumber ke folder di bucket tujuan.
Membuat dan mengelola profil koneksi mencakup:
- Membuat profil koneksi untuk database Oracle sumber dan bucket tujuan di Cloud Storage
- Mengambil informasi tentang profil koneksi
- Memodifikasi profil koneksi
- Melakukan panggilan API penemuan di profil koneksi Oracle sumber. Panggilan ini memungkinkan Anda melihat ke dalam database untuk mengetahui objek yang terkait dengannya. Objek ini mencakup skema dan tabel yang berisi data {i>database<i}. Saat menggunakan Datastream untuk mengonfigurasi aliran data, Anda mungkin tidak ingin menarik semua objek dari database, melainkan subset objek (misalnya, hanya tabel dan skema tertentu dari database). Gunakan find API untuk membantu Anda menemukan (atau menemukan) subset objek database yang ingin Anda tarik.
Membuat profil koneksi
Dalam prosedur ini, Anda akan membuat dua profil koneksi: satu ke database Oracle sumber dan satu lagi ke bucket tujuan di Cloud Storage.
- Buat profil koneksi ke database Oracle sumber. Saat diminta, masukkan perintah berikut:
ORACLE="{\"displayName\":\"DISPLAY_NAME\",\"oracle_profile\":{\"hostname\":\"HOSTNAME\",\"username\":\"USERNAME\",\"password\":\"PASSWORD\",\"database_service\":\"DATABASE_SERVICE\", \"port\":"PORT_NUMBER\"},\"no_connectivity\":{}}"
Gunakan tabel berikut untuk membantu Anda memahami nilai parameter untuk database Oracle sumber:
Nilai parameter | Ganti dengan |
---|---|
DISPLAY_NAME | Nama tampilan profil koneksi ke database sumber. |
HOSTNAME | Nama host server database sumber. |
USERNAME | Nama pengguna akun untuk database sumber (misalnya, ROOT). |
PASSWORD | Sandi akun untuk database sumber. |
DATABASE_SERVICE | Layanan yang memastikan bahwa database sumber dilindungi dan dipantau. Untuk database Oracle, layanan database biasanya adalah ORCL. |
PORT_NUMBER | Nomor port yang dicadangkan untuk database sumber. Untuk database Oracle, nomor port biasanya 1521. |
Saat diminta, masukkan perintah
echo $ORACLE | jq
untuk melihat profil koneksi sumber yang Anda buat dalam teks yang mudah dibaca.{ "displayName": "DISPLAY_NAME", "oracle_profile": { "hostname": "HOSTNAME", "username": "USERNAME", "password": "PASSWORD", "database_service": "DATABASE_SERVICE", "port": PORT_NUMBER }, "no_connectivity": {} }
Kirimkan profil koneksi Oracle agar dapat dibuat. Saat diminta, masukkan perintah berikut:
curl -X POST -d $ORACLE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles? connection_profile_id=SOURCE_CONNECTION_PROFILE_ID Gunakan tabel berikut untuk membantu Anda memahami parameter value untuk perintah ini:
Nilai parameter Ganti dengan DATASTREAM_API_VERSION Versi Datastream API saat ini (misalnya, v1
).PROJECT_PATH Jalur lengkap project Google Cloud Anda (misalnya, projects/$PROJECT/locations/YOUR_PROJECT_LOCATION
).SOURCE_CONNECTION_PROFILE_ID ID unik yang disediakan untuk profil koneksi ini (misalnya, cp-1). Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "datastream.googleapis.com/DATASREAM_VERSION/PROJECT_PATH/connectionProfiles/
SOURCE_CONNECTION_PROFILE_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false } Membuat profil koneksi ke bucket tujuan di Cloud Storage. Saat diminta, masukkan perintah berikut:
GOOGLECLOUDSTORAGE="{\"displayName\":\"DISPLAY_NAME\",\"gcs_profile\":{\"bucket_name\":\"BUCKET_NAME\",
\"root_path\":\"/FOLDER_PATH\"},\"no_connectivity\":{}}" Gunakan tabel berikut untuk membantu Anda memahami nilai parameter untuk bucket tujuan:
Nilai parameter Ganti dengan DISPLAY_NAME Nama tampilan profil koneksi ke bucket tujuan. BUCKET_NAME Nama bucket tujuan. FOLDER_PATH Folder di bucket tujuan tempat Datastream akan mentransfer data dari database sumber (misalnya, /root/path). Saat diminta, masukkan perintah
echo $GOOGLECLOUDSTORAGE | jq
untuk melihat profil koneksi tujuan yang Anda buat dalam teks yang mudah dibaca.{ "displayName": "DISPLAY_NAME", "gcs_profile": { "bucket_name": "BUCKET_NAME", "root_path": "/FOLDER_PATH" }, "no_connectivity": {} }
Kirimkan profil koneksi Cloud Storage agar dapat dibuat. Saat diminta, masukkan perintah berikut:
curl -X POST -d $GOOGLECLOUDSTORAGE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles? connection_profile_id=DESTINATION_CONNECTION_PROFILE_ID Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.
OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "datastream.googleapis.com/DATASTREAM_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false } Pastikan kedua profil koneksi sudah dibuat. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles Pastikan Anda menerima dua hasil yang ditampilkan untuk profil koneksi sumber dan tujuan.
{ "connectionProfiles": [ { "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "FOLDER_PATH" }, "noConnectivity": {} }, { "name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "oracleProfile": { "hostname": "HOSTNAME", "port": PORT_NUMBER, "username": "USERNAME", "databaseService": "DATABASE_SERVICE" }, "noConnectivity": {} } ] }
Mengelola profil koneksi
Dalam prosedur ini, Anda akan mengelola profil koneksi yang dibuat untuk database Oracle sumber dan bucket tujuan di Cloud Storage. Hal ini mencakup:
- Mengambil informasi tentang profil koneksi Cloud Storage tujuan
- Memodifikasi profil koneksi ini. Untuk tutorial ini, Anda akan mengubah folder bucket Cloud Storage tujuan menjadi /root/tutorial. Datastream mentransfer data dari database sumber ke folder ini.
- Melakukan panggilan API penemuan di profil koneksi Oracle sumber
Mengambil informasi tentang profil koneksi Cloud Storage tujuan. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Pastikan Anda melihat informasi tentang profil koneksi ini.
{ "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "FOLDER_PATH" }, "noConnectivity": {} }
Ubah profil koneksi ini. Untuk melakukannya, pertama-tama, tetapkan variabel UPDATE. Variabel ini berisi nilai profil koneksi yang ingin Anda ubah. Untuk tutorial ini, Anda akan mengubah folder bucket tujuan menjadi /root/tutorial.
Untuk menetapkan variabel, pada dialog, masukkan perintah berikut:
UPDATE="{\"gcsProfile\":{\"rootPath\":\"/root/tutorial\"}}"
Saat diminta, masukkan perintah berikut:
curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID?update_mask=gcsProfile.rootPath Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Pastikan profil koneksi telah diubah. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Pastikan folder bucket tujuan profil koneksi Cloud Storage sekarang adalah /root/tutorial.
{ "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "/root/tutorial" }, "noConnectivity": {} }
Gunakan Datastream discovery API untuk menemukan skema dan tabel database Oracle sumber. Datastream menyediakan akses ke database ini melalui profil koneksi sumber.
Temukan skema database Oracle. Saat diminta, masukkan perintah berikut:
curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/
YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover Pastikan Datastream mengambil semua skema database Anda.
Ambil tabel skema di database Anda. Untuk tutorial ini, Anda akan menggunakan Discover API untuk mengambil tabel skema ROOT. Namun, Anda dapat menemukan tabel dari berbagai skema dalam database Anda.
Saat diminta, masukkan perintah berikut:
curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/
YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover - Pastikan Datastream mengambil semua tabel skema yang Anda tentukan (skema ROOT untuk tutorial ini).
Setelah membuat dan mengelola profil koneksi untuk database Oracle sumber dan bucket tujuan di Cloud Storage, Anda siap untuk membuat dan mengelola streaming di Datastream.
Membuat dan mengelola streaming
Di bagian ini, Anda akan membuat dan mengelola streaming. Datastream menggunakan aliran data ini untuk mentransfer data, skema, dan tabel dari database sumber ke dalam folder di bucket Cloud Storage tujuan.
Membuat dan mengelola streaming meliputi:
- Memvalidasi streaming untuk memastikan bahwa streaming akan berhasil berjalan, dan bahwa semua pemeriksaan validasi lulus. Pemeriksaan ini mencakup:
- Apakah sumber dikonfigurasi dengan benar untuk memungkinkan Datastream melakukan streaming data darinya.
- Apakah streaming dapat terhubung ke sumber dan tujuan.
- Konfigurasi streaming secara menyeluruh.
- Membuat aliran data dengan daftar berikut:
- Daftar yang diizinkan. Daftar ini menentukan tabel dan skema dalam database sumber yang dapat ditransfer Datastream ke dalam folder di bucket tujuan di Cloud Storage. Untuk tutorial ini, ini adalah folder /root/tutorial.
- Daftar penolakan. Daftar ini menentukan tabel dan skema dalam database sumber yang dibatasi Datastream agar tidak ditransfer ke folder di bucket tujuan Cloud Storage.
- Mengambil informasi tentang feed
- Mengubah aliran data
- Memulai aliran data agar Datastream dapat mentransfer data, skema, dan tabel dari database sumber ke dalam folder di bucket Cloud Storage tujuan.
- Menggunakan Fetch Errors API untuk mendeteksi error yang terkait dengan streaming
- Menjeda streaming. Saat aliran data dijeda, Datastream tidak akan menarik data baru dari database sumber ke dalam bucket tujuan.
- Melanjutkan streaming yang dijeda agar Datastream dapat terus mentransfer data ke bucket tujuan.
Membuat stream
Dalam prosedur ini, Anda akan membuat streaming dari database Oracle sumber ke dalam folder di bucket Cloud Storage tujuan. Streaming yang Anda buat akan menyertakan daftar yang diizinkan dan daftar penolakan.
Tetapkan variabel SCHEMAS. Variabel ini menentukan skema yang berisi data dan tabel yang Anda inginkan untuk diambil Datastream dari database sumber, lalu ditransfer ke folder /root/tutorial bucket tujuan Cloud Storage. Untuk tutorial ini, Anda akan menetapkan variabel SCHEMAS untuk dikaitkan dengan skema ROOT.
Saat diminta, masukkan perintah berikut:
SCHEMAS="{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}"
Pada dialog, masukkan perintah echo $SCHEMAS | jq untuk melihat skema ROOT yang Anda tentukan untuk variabel ini dalam teks yang mudah dibaca.
Buat streaming. Saat diminta, masukkan perintah berikut:
STREAM="{\"display_name\":\"DISPLAY_NAME\",\"source_config\":{\"source_connection_profile_name\":\"
PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",\"oracle_source_config\": {\"allowlist\":$SCHEMAS,\"rejectlist\":{}}},\"destination_config\":{\"destination_connection_profile_name\" :\"PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID\",\"gcs_destination_config\": {\"file_rotation_mb\":5,\"file_rotation_interval\":{\"seconds\":15},\"avro_file_format\":{}}, \"backfill_all\":{}}}" Saat diminta, masukkan perintah
echo $STREAM | jq
untuk melihat aliran data yang Anda buat dalam teks yang mudah dibaca.{ "display_name": "DISPLAY_NAME", "source_config": { "source_connection_profile_name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracle_source_config": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destination_config": { "destination_connection_profile_name": "PROJECT_PATH/connectionProfiles/
DESTINATION_CONNECTION_PROFILE_ID", "gcs_destination_config": { "file_rotation_mb": 5, "file_rotation_interval": { "seconds": 15 }, "avro_file_format": {} } }, "backfill_all": {} } Gunakan tabel ini untuk membantu Anda memahami parameter streaming berikut:
Parameter Deskripsi allowlist Skema, yang berisi tabel dan data, yang akan ditransfer dari database sumber ke folder bucket tujuan Cloud Storage. Untuk tutorial ini, semua tabel dan data dari skema ROOT (dan hanya skema ini) akan ditransfer ke folder /root/tutorial bucket tujuan. rejectlist Skema apa pun, yang berisi tabel dan data, yang tidak akan ditransfer ke folder bucket tujuan Cloud Storage. Untuk tutorial ini, nilai {} menandakan bahwa tidak ada tabel dan data dari database sumber yang akan dicegah agar tidak ditransfer ke bucket tujuan. file_rotation_mb Ukuran (dalam MBytes) file yang berisi data yang ditransfer dari database sumber ke folder di bucket tujuan Cloud Storage. Untuk tutorial ini, karena data diambil dari database sumber, data ditulis ke dalam file berukuran 5 MB. Jika ada data yang melebihi ukuran ini, data tersebut akan disegmentasikan menjadi beberapa file berukuran 5 MB. file_rotation_interval Jumlah detik yang akan berlalu sebelum Datastream menutup file yang ada dalam folder bucket tujuan Cloud Storage dan membuka file lain untuk memuat data yang ditransfer dari database sumber. Untuk tutorial ini, interval rotasi file disetel ke 15 detik. avro_file_format Format file yang akan ditransfer Datastream dari database sumber ke folder bucket tujuan Cloud Storage. Untuk tutorial ini, Avro adalah format filenya.
backfill_all Parameter ini dikaitkan dengan pengisian ulang historis. Dengan menetapkan parameter ini ke kamus kosong ({}), Datastream akan mengisi ulang:
- Data historis, selain perubahan yang sedang berlangsung pada data, dari database sumber ke tujuan.
- Skema dan tabel, dari sumber ke tujuan.
Validasi streaming untuk memastikan bahwa streaming akan berhasil berjalan dan semua pemeriksaan validasi lulus. Saat diminta, masukkan perintah berikut:
curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
"https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id= STREAM_ID&validate_only=true" Pastikan Anda melihat baris kode
{}
. Hal ini menunjukkan bahwa streaming telah lulus semua pemeriksaan validasi dan tidak ada error yang dikaitkan dengan streaming tersebut.Kirim aliran data agar dapat dibuat. Saat diminta, masukkan perintah berikut:
curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id=STREAM_ID Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Pastikan bahwa streaming telah dibuat. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams Pastikan Anda menerima hasil yang ditampilkan untuk streaming yang Anda buat.
{ "streams": [ { "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 5, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } ] }
Mengelola streaming
Dalam prosedur ini, Anda akan menggunakan aliran data yang dibuat untuk mentransfer data dari database Oracle sumber ke dalam folder di bucket tujuan Cloud Storage. Hal ini mencakup:
- Mengambil informasi tentang feed
- Mengubah aliran data
- Memulai streaming
- Menggunakan Fetch Errors API untuk mendeteksi error yang terkait dengan streaming
- Menjeda dan melanjutkan streaming
Mengambil informasi tentang aliran data. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Pastikan Anda melihat informasi tentang aliran data ini.
{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 5, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } Ubah feed ini. Untuk melakukannya, pertama-tama, tetapkan variabel UPDATE. Variabel ini berisi nilai aliran data yang ingin Anda ubah. Untuk tutorial ini, ubah ukuran (dalam MBytes) file yang berisi data yang ditransfer dari database sumber ke dalam folder dalam bucket tujuan Cloud Storage (dari 5 MBytes menjadi 100 MBytes). Saat diambil dari database sumber, data ditulis menjadi file berukuran 100 MB. Jika ada data yang melebihi ukuran ini, data tersebut akan disegmentasikan menjadi beberapa file berukuran 100 MB.
Untuk menetapkan variabel, pada dialog, masukkan perintah berikut:
UPDATE="{\"destination_config\":{\"gcs_destination_config\":{\"file_rotation_mb\":100}}}"
Saat diminta, masukkan perintah berikut:
curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID/ ?update_mask=destination_config.gcs_destination_config.file_rotation_mb Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Pastikan streaming telah diubah. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifikasi bahwa nilai parameter fileRotationMb untuk profil koneksi Cloud Storage sekarang adalah
100
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } Mulai streaming. Untuk melakukannya:
Ubah variabel
UPDATE
. Saat diminta, masukkan perintah berikut:UPDATE="{\"state\":\"RUNNING\"}"
Kemudian, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Pastikan Anda melihat baris kode berikut.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Setelah beberapa menit, ambil informasi tentang streaming untuk mengonfirmasi bahwa streaming telah dimulai:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifikasi bahwa status aliran data telah berubah dari
CREATED
menjadiRUNNING
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "RUNNING", "backfillAll": {} } Menggunakan Fetch Errors API untuk mendapatkan kembali error yang terkait dengan streaming.
Saat diminta, masukkan perintah berikut:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/ STREAM_ID:fetchErrors Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "fetchErrors", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/operations/ operation-FETCH_ERRORS_OPERATION_ID Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION
.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "endTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "fetchErrors", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION .FetchErrorsResponse" } }
Jeda streaming. Untuk melakukannya:
Ubah variabel
UPDATE
. Saat diminta, masukkan perintah berikut:UPDATE="{\"state\":\"PAUSED\"}"
Kemudian, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Pastikan Anda melihat baris kode berikut.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Ambil informasi tentang streaming untuk mengonfirmasi bahwa streaming tersebut dijeda.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifikasi bahwa status aliran data telah berubah dari
RUNNING
menjadiPAUSED
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "PAUSED", "backfillAll": {} } Lanjutkan streaming yang dijeda. Untuk melakukannya:
Ubah variabel
UPDATE
. Saat diminta, masukkan perintah berikut:UPDATE="{\"state\":\"RUNNING\"}"
Kemudian, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Pastikan Anda melihat baris kode berikut.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Setelah beberapa detik, ambil informasi tentang streaming untuk mengonfirmasi bahwa streaming berjalan kembali.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifikasi bahwa status aliran data telah berubah dari
PAUSED
kembali menjadiRUNNING
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "RUNNING", "backfillAll": {} }
Setelah membuat dan mengelola streaming, mengonfirmasi bahwa tidak ada error yang terkait dengan streaming, dan bahwa status streaming adalah RUNNING
, Anda siap memverifikasi bahwa streaming dapat mentransfer data dari database sumber ke folder di bucket tujuan Cloud Storage.
Memverifikasi streaming
Dalam prosedur ini, Anda mengonfirmasi bahwa Datastream:
- Mentransfer data dari semua tabel yang terkait dengan skema
ROOT
database Oracle sumber ke folder/root/tutorial
di bucket tujuan Cloud Storage. - Menerjemahkan data ke dalam format file Avro.
Buka halaman Browser Storage di Cloud Storage.
Klik link yang berisi bucket Anda.
Jika tab PENOLAKAN tidak aktif, klik tab tersebut.
Klik folder root, lalu klik folder tutorial.
Pastikan Anda melihat folder yang mewakili tabel skema
ROOT
database Oracle sumber.Klik salah satu folder tabel dan lihat perincian hingga Anda melihat data yang terkait dengan tabel tersebut.
Klik file yang mewakili data, lalu klik DOWNLOAD.
Buka file ini di alat Avro (misalnya, Avro Viewer) untuk memastikan bahwa konten dapat dibaca. Hal ini menegaskan bahwa Datastream juga menerjemahkan data ke dalam format file Avro.
Pembersihan
Setelah menyelesaikan tutorial ini, Anda dapat membersihkan resource yang dibuat di Datastream agar tidak menghabiskan kuota dan Anda tidak akan ditagih di masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus bucket tujuan Cloud Storage
Di Panel Samping Navigasi Cloud Storage di sebelah kiri, klik item Browser.
Centang kotak di sebelah kiri bucket, lalu klik HAPUS.
Di jendela Delete bucket?, masukkan nama bucket di kolom teks, lalu klik KONFIRMASI.
Menghapus feed
Pastikan aplikasi Cloud Shell Anda aktif.
Saat diminta, masukkan perintah berikut:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Pastikan streaming tersebut telah dihapus. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams Pastikan nilai
{}
null ditampilkan. Hal ini menandakan bahwa tidak ada lagi aliran data di Aliran Data, dan aliran data yang Anda buat akan dihapus.
Menghapus profil koneksi
Hapus profil koneksi ke database Oracle sumber. Saat diminta, masukkan perintah berikut:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ SOURCE_CONNECTION_PROFILE_ID Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Menghapus profil koneksi ke bucket tujuan di Cloud Storage. Saat diminta, masukkan perintah berikut:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Pastikan Anda melihat baris kode berikut:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Pastikan kedua profil koneksi telah dihapus. Saat diminta, masukkan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles Pastikan nilai
{}
null ditampilkan. Hal ini menandakan bahwa tidak ada lagi profil koneksi di Datastream, dan profil yang Anda buat akan dihapus.
Langkah selanjutnya
- Pelajari Datastream lebih lanjut.
- Coba sendiri fitur Google Cloud lainnya. Lihat tutorial kami.