Untuk bisnis dengan banyak sumber data terisolasi, akses ke data perusahaan di seluruh organisasi, terutama secara real time, dapat menjadi sulit. Hal ini menghasilkan dunia dengan akses data yang terbatas dan lambat, sehingga mencegah kemampuan organisasi untuk melakukan introspeksi.
Datastream memberikan akses hampir real-time untuk mengubah data dari berbagai sumber data lokal dan berbasis cloud untuk membuat akses ke data organisasi. Datastream memberikan pengalaman penyiapan yang sederhana dan API penggunaan terpadu yang mendemokratisasi akses organisasi ke data perusahaan terbaru yang tersedia di seluruh organisasi, sehingga mendukung skenario terintegrasi yang hampir real-time.
Salah satu skenario tersebut adalah mentransfer data dari database sumber ke layanan penyimpanan atau antrean pesan berbasis Cloud dan mengubah data ini menjadi bentuk 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 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 berbagi dan keamanan yang canggih.
Sebagai bagian dari transfer informasi ini ke folder di bucket Cloud Storage tujuan, Datastream menerjemahkan informasi ini ke Avro. Avro ditentukan oleh skema yang ditulis dalam JavaScript Object Notation (JSON). Dengan melakukan terjemahan ini, Anda dapat membaca data di berbagai sumber data dengan cara yang seragam.
Tujuan
Dalam tutorial ini, Anda akan mempelajari cara:- Menetapkan variabel lingkungan. Anda akan menggunakan variabel ini saat membuat permintaan ke Datastream untuk membuat dan mengelola profil koneksi dan aliran data.
- Membuat dan mengelola profil koneksi untuk database sumber dan bucket tujuan di Cloud Storage. Dengan membuat profil koneksi ini, Anda membuat data 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 folder di bucket tujuan.
- Pastikan Datastream mentransfer data dan tabel yang terkait dengan skema database Oracle sumber ke folder di bucket tujuan, dan menerjemahkan data ini ke dalam format file Avro.
- Bersihkan resource yang Anda buat di Datastream sehingga resource tersebut tidak akan menghabiskan kuota dan Anda tidak akan ditagih di masa mendatang.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Aktifkan Datastream API.
- Pastikan Anda memiliki peran Datastream Admin yang ditetapkan ke akun pengguna Anda.
- 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 IP yang diizinkan dan region untuk mengakses lokasi semua region Datastream dan alamat IP publik terkait.
- Pastikan Anda telah mengonfigurasi bucket Cloud Storage tujuan yang dapat diakses Datastream menggunakan metode konektivitas jaringan daftar yang diizinkan IP, tunnel SSH maju, atau peering VPC.
- Pastikan Anda memiliki data, tabel, dan skema di database sumber yang dapat ditransfer Datastream ke 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 konfigurasi utilitas
jq
. Utilitas ini adalah pemroses JSON command line yang ringan dan fleksibel. Anda akan menggunakan pemroses 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 Google Cloud project Anda. Semua Google Cloud resource yang Anda alokasikan dan gunakan harus berkaitan dengan 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 prompt
Do you want to continue (Y/n)?
, masukkanY
.Buka browser web dan salin URL ke browser.
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 Anda, lalu tekanEnter
.Pada perintah, masukkan
PROJECT="YOUR_PROJECT_NAME"
untuk menetapkan variabel lingkungan$PROJECT
ke project Google Cloud Anda.Pada perintah, masukkan
gcloud config set project YOUR_PROJECT_NAME
untuk menetapkan project yang ingin Anda kerjakan ke project Google Cloud .Command prompt Anda diperbarui untuk mencerminkan project yang aktif dan mengikuti format ini:
USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$
Pada perintah, masukkan
TOKEN=$(gcloud auth print-access-token)
untuk mengambil token akses dan menyimpannya sebagai variabel.Pada perintah, masukkan perintah berikut untuk memastikan bahwa 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 membuat data 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
- Mengubah profil koneksi
- Melakukan panggilan API penemuan pada profil koneksi Oracle sumber. Panggilan ini memungkinkan Anda melihat ke dalam database untuk melihat objek yang terkait dengannya. Objek ini mencakup skema dan tabel yang berisi data database. Saat menggunakan Datastream untuk mengonfigurasi streaming, Anda mungkin tidak ingin menarik semua objek dari database, tetapi hanya sebagian objek (misalnya, hanya tabel dan skema database tertentu). Gunakan discover API untuk membantu Anda menemukan (atau menemukan) subset objek database yang ingin Anda ambil.
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. Pada perintah, 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 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. |
Pada perintah, 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": {} }
Kirim profil koneksi Oracle agar dapat dibuat. Pada perintah, 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 nilai parameter 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 dicadangkan 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 }Buat profil koneksi ke bucket tujuan di Cloud Storage. Pada perintah, 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). Pada perintah, 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": {} }
Kirim profil koneksi Cloud Storage agar dapat dibuat. Pada perintah, 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 telah dibuat. Pada perintah, 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
- Mengubah 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 pada profil koneksi Oracle sumber
Mengambil informasi tentang profil koneksi Cloud Storage tujuan. Pada perintah, 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, masukkan perintah berikut di perintah:
UPDATE="{\"gcsProfile\":{\"rootPath\":\"/root/tutorial\"}}"
Pada perintah, 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 diubah. Pada perintah, 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 discover API untuk menemukan skema dan tabel database Oracle sumber. Datastream menyediakan akses ke database ini melalui profil koneksi sumber.
Temukan skema database Oracle. Pada perintah, 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 skema apa pun di database.
Pada perintah, 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 (untuk tutorial ini, skema ROOT).
Setelah membuat dan mengelola profil koneksi untuk database Oracle sumber dan bucket tujuan di Cloud Storage, Anda siap membuat dan mengelola aliran data di Datastream.
Membuat dan mengelola streaming
Di bagian ini, Anda akan membuat dan mengelola streaming. Datastream menggunakan aliran ini untuk mentransfer data, skema, dan tabel dari database sumber ke folder di bucket Cloud Storage tujuan.
Membuat dan mengelola streaming mencakup:
- Memvalidasi streaming untuk memastikan streaming akan berhasil berjalan, dan 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 menyeluruh streaming.
- Membuat aliran data dengan daftar berikut:
- Daftar yang diizinkan. Daftar ini menentukan tabel dan skema dalam database sumber yang dapat ditransfer Datastream ke folder di bucket tujuan di Cloud Storage. Untuk tutorial ini, folder ini adalah folder /root/tutorial.
- Daftar penolakan. Daftar ini menentukan tabel dan skema di database sumber yang tidak diizinkan untuk ditransfer Datastream ke folder di bucket tujuan Cloud Storage.
- Mengambil informasi tentang streaming
- Mengubah aliran data
- Memulai streaming sehingga Datastream dapat mentransfer data, skema, dan tabel dari database sumber ke folder di bucket Cloud Storage tujuan.
- Menggunakan Fetch Errors API untuk mendeteksi error yang terkait dengan streaming
- Menjeda streaming. Saat streaming dijeda, Datastream tidak akan mengambil data baru dari database sumber ke bucket tujuan.
- Melanjutkan streaming yang dijeda sehingga Datastream dapat terus mentransfer data ke bucket tujuan.
Membuat stream
Dalam prosedur ini, Anda akan membuat aliran data dari database Oracle sumber ke folder di bucket Cloud Storage tujuan. Streaming yang Anda buat akan menyertakan daftar yang diizinkan dan daftar yang ditolak.
Tetapkan variabel SCHEMAS. Variabel ini menentukan skema yang berisi data dan tabel yang Anda inginkan agar diambil oleh Datastream dari database sumber dan ditransfer ke folder /root/tutorial di bucket tujuan Cloud Storage. Untuk tutorial ini, Anda akan menetapkan variabel SCHEMAS untuk dikaitkan dengan skema ROOT.
Pada perintah, masukkan perintah berikut:
SCHEMAS="{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}"
Pada perintah, masukkan perintah echo $SCHEMAS | jq untuk melihat skema ROOT yang Anda tentukan untuk variabel ini dalam teks yang mudah dibaca.
Buat aliran data. Pada perintah, 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\":{}}}" Pada perintah, masukkan perintah
echo $STREAM | jq
untuk melihat streaming 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 di bucket tujuan. rejectlist Setiap skema, yang berisi tabel dan data, yang tidak akan ditransfer ke folder bucket tujuan Cloud Storage. Untuk tutorial ini, nilai {} menunjukkan bahwa tidak ada tabel dan data dari database sumber yang akan dicegah untuk ditransfer ke bucket tujuan. file_rotation_mb Ukuran (dalam MByte) file yang berisi data yang ditransfer dari database sumber ke folder di bucket tujuan Cloud Storage. Untuk tutorial ini, saat data diambil dari database sumber, data akan ditulis ke dalam file berukuran 5 MB. Jika data melebihi ukuran ini, data akan dibagi menjadi beberapa file berukuran 5 MB. file_rotation_interval Jumlah detik yang akan berlalu sebelum Datastream menutup file yang ada di folder bucket tujuan Cloud Storage dan membuka file lain untuk menyimpan 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 file.
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 streaming akan berhasil berjalan, dan semua pemeriksaan validasi lulus. Pada perintah, 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 terkait dengan streaming.Kirim streaming agar dapat dibuat. Pada perintah, 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 streaming telah dibuat. Pada perintah, 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 folder di bucket tujuan Cloud Storage. Hal ini mencakup:
- Mengambil informasi tentang streaming
- Mengubah aliran data
- Memulai streaming
- Menggunakan Fetch Errors API untuk mendeteksi error yang terkait dengan streaming
- Menjeda dan melanjutkan streaming
Mengambil informasi tentang streaming. Pada perintah, 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 aliran data ini. Untuk melakukannya, pertama-tama, tetapkan variabel UPDATE. Variabel ini berisi nilai aliran data yang ingin Anda ubah. Untuk tutorial ini, ubah ukuran (dalam MByte) file yang berisi data yang ditransfer dari database sumber ke folder di bucket tujuan Cloud Storage (dari 5 MByte hingga 100 MByte). Saat data diambil dari database sumber, data tersebut kini ditulis ke dalam file berukuran 100 MB. Jika ada data yang melebihi ukuran ini, data tersebut akan disegmentasikan menjadi beberapa file berukuran 100 MB.
Untuk menetapkan variabel, masukkan perintah berikut di perintah:
UPDATE="{\"destination_config\":{\"gcs_destination_config\":{\"file_rotation_mb\":100}}}"
Pada perintah, 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 diubah. Pada perintah, 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 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
. Pada perintah, 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 aliran data untuk mengonfirmasi bahwa aliran data 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 streaming 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 mengambil error yang terkait dengan streaming.
Pada perintah, 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 }
Pada perintah, 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" } }
Menjeda streaming. Untuk melakukannya:
Ubah variabel
UPDATE
. Pada perintah, 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 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 streaming 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": {} }Melanjutkan streaming yang dijeda. Untuk melakukannya:
Ubah variabel
UPDATE
. Pada perintah, 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 tersebut berjalan lagi.
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 streaming telah berubah dari
PAUSED
kembali keRUNNING
.{ "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 aliran data, mengonfirmasi bahwa tidak ada error yang terkait dengan aliran data, dan status aliran data adalah RUNNING
, Anda siap memverifikasi bahwa aliran data 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 Anda ke folder/root/tutorial
di bucket tujuan Cloud Storage. - Menerjemahkan data ke dalam format file Avro.
Buka halaman Browser penyimpanan di Cloud Storage.
Klik link yang berisi bucket Anda.
Jika tab OBJECTS tidak aktif, klik tab tersebut.
Klik folder root, lalu klik folder tutorial.
Pastikan Anda melihat folder yang mewakili tabel skema
ROOT
dari database Oracle sumber Anda.Klik salah satu folder tabel dan lakukan pengelompokan hingga Anda melihat data yang terkait dengan tabel.
Klik file yang mewakili data, lalu klik DOWNLOAD.
Buka file ini di alat Avro (misalnya, Avro Viewer) untuk memastikan konten dapat dibaca. Hal ini mengonfirmasi bahwa Datastream juga menerjemahkan data ke dalam format file Avro.
Pembersihan
Setelah menyelesaikan tutorial ini, Anda dapat membersihkan resource yang dibuat di Datastream sehingga resource tersebut tidak akan menggunakan 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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus bucket tujuan Cloud Storage
Di Panel Navigasi sebelah kiri Cloud Storage, klik item Browser.
Centang kotak di sebelah kiri bucket, lalu klik HAPUS.
Di jendela Delete bucket?, masukkan nama bucket Anda di kolom teks, lalu klik CONFIRM.
Menghapus aliran data
Pastikan aplikasi Cloud Shell Anda aktif.
Pada perintah, 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 }
Konfirmasi bahwa streaming telah dihapus. Pada perintah, 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 Datastream, dan aliran data yang Anda buat akan dihapus.
Menghapus profil koneksi
Hapus profil koneksi ke database Oracle sumber. Pada perintah, 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 }
Hapus profil koneksi ke bucket tujuan di Cloud Storage. Pada perintah, 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. Pada perintah, 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.