Bagi bisnis dengan banyak sumber data yang terisolasi, akses ke data perusahaan di seluruh organisasi, terutama secara real-time, bisa jadi sulit. Hal ini menyebabkan akses data yang terbatas dan lambat, sehingga menghambat kemampuan organisasi untuk melakukan introspeksi.
Datastream menyediakan akses hampir real-time ke data perubahan dari berbagai sumber data berbasis cloud dan lokal untuk membuat akses ke data organisasi. Datastream menyediakan API pemakaian 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 dalam bucket Cloud Storage. Cloud Storage adalah layanan web untuk menyimpan dan mengakses data di Google Cloud. Layanan ini menggabungkan performa dan skalabilitas cloud milik Google dengan kapabilitas keamanan dan berbagi tingkat lanjut.
Sebagai bagian dari mentransfer informasi ini ke dalam folder di bucket Cloud Storage tujuan, Datastream menerjemahkan informasi ini ke dalam Avro. Avro ditentukan oleh skema yang ditulis dalam JavaScript Object Notation (JSON). Dengan melakukan terjemahan ini, Anda dapat membaca data di berbagai sumber data secara 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.
- Buat dan kelola profil koneksi untuk database sumber dan bucket tujuan di Cloud Storage. Dengan membuat profil koneksi ini, Anda membuat catatan 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 dalam folder di bucket tujuan.
- Membuat dan mengelola aliran. Datastream menggunakan aliran ini untuk mentransfer data, skema, dan tabel dari database sumber ke dalam folder di bucket tujuan.
- Verifikasi bahwa 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 untuk resource tersebut pada 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.
-
Verify 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.
-
Verify that billing is enabled for your Google Cloud project.
- Aktifkan Datastream API.
- Pastikan Anda memiliki peran Admin Datastream yang ditetapkan ke akun pengguna Anda.
- Pastikan Anda memiliki database sumber yang dapat diakses Datastream. Untuk tutorial ini, database Oracle digunakan sebagai sumber.
- Konfigurasi database sumber Anda agar mengizinkan koneksi masuk dari alamat IP publik Datastream. Lihat Daftar IP yang disetujui 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 dalam folder di bucket Cloud Storage tujuan.
- Download dan instal Cloud Shell. Aplikasi klien ini menyediakan akses command line ke resource cloud Anda (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 terkait 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 melakukan autentikasi ke aplikasi Anda dengan Akun Google Anda, masukkan perintah berikut:
gcloud auth login
Pada prompt
Do you want to continue (Y/n)?
, masukkanY
.Buka browser web dan salin URL ke browser.
Lakukan autentikasi ke SDK Google Cloud dengan Akun Google Anda. Kode akan muncul di halaman Login. Kode ini adalah token akses Anda.
Salin token akses, tempel 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.Di perintah, masukkan
gcloud config set project YOUR_PROJECT_NAME
untuk menyetel project yang ingin Anda kerjakan ke project Google CloudAnda.Command prompt Anda diupdate untuk mencerminkan project aktif Anda 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 prompt, 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 membuat catatan yang berisi informasi tentang database sumber dan bucket Cloud Storage tujuan. Datastream menggunakan informasi dalam profil koneksi untuk mentransfer data dari database sumber ke dalam 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 aliran data, Anda mungkin tidak ingin menarik semua objek dari database, melainkan hanya sebagian objek (misalnya, hanya tabel dan skema tertentu dari database). Gunakan Discover API untuk membantu Anda menemukan (atau menjelajahi) 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. 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 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 adalah 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": {} }
Kirimkan 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). Verifikasi bahwa 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). Di 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": {} }
Kirimkan 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 Verifikasi bahwa 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 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 dalam folder ini.
- Melakukan panggilan API penemuan pada profil koneksi Oracle sumber
Ambil 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 Verifikasi bahwa 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, tetapkan variabel UPDATE terlebih dahulu. 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 prompt, masukkan perintah berikut:
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 Verifikasi bahwa 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. 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 bahwa folder bucket tujuan profil koneksi Cloud Storage kini /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 Verifikasi bahwa 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 Anda.
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 di Datastream.
Membuat dan mengelola stream
Di bagian ini, Anda akan membuat dan mengelola aliran. Datastream menggunakan aliran ini untuk mentransfer data, skema, dan tabel dari database sumber ke folder di bucket Cloud Storage tujuan.
Membuat dan mengelola aliran mencakup:
- Memvalidasi aliran untuk memastikan bahwa aliran akan berjalan dengan berhasil, dan semua pemeriksaan validasi berhasil. Pemeriksaan ini mencakup:
- Apakah sumber dikonfigurasi dengan benar untuk memungkinkan Datastream melakukan streaming data dari sumber tersebut.
- Apakah aliran dapat terhubung ke sumber dan tujuan.
- Konfigurasi aliran data 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 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 tidak dapat ditransfer Datastream ke dalam 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 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 apa pun dari database sumber ke bucket tujuan.
- Melanjutkan stream yang dijeda agar Datastream dapat terus mentransfer data ke bucket tujuan.
Membuat stream
Dalam prosedur ini, Anda akan membuat aliran 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 Datastream mengambilnya dari database sumber dan mentransfernya ke folder /root/tutorial di bucket tujuan Cloud Storage. Untuk tutorial ini, Anda akan menetapkan variabel SCHEMAS agar 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\":{}}}" Di prompt, masukkan perintah
echo $STREAM | jq
untuk melihat stream 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 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 dalam 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 tersebut ditulis ke dalam file 5 MB. Jika ada data yang melebihi ukuran ini, data akan disegmentasikan 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 berisi 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-nya.
backfill_all Parameter ini terkait dengan pengisian ulang historis. Dengan menyetel parameter ini ke kamus kosong ({}), Datastream akan mengisi ulang:
- Data historis, selain perubahan berkelanjutan pada data, dari database sumber ke tujuan.
- Skema dan tabel, dari sumber ke tujuan.
Validasi aliran untuk memastikan aliran akan berjalan dengan berhasil, dan semua pemeriksaan validasi berhasil. 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 aliran telah lulus semua pemeriksaan validasi dan tidak ada error yang terkait dengan aliran.Kirimkan 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 Verifikasi bahwa 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 aliran 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 aliran 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 stream 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 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 streaming ini. Untuk melakukannya, tetapkan variabel UPDATE terlebih dahulu. Variabel ini berisi nilai aliran 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 menjadi 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, pada prompt, masukkan perintah berikut:
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 Verifikasi bahwa 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 }
Konfirmasi bahwa aliran telah 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
Verifikasi bahwa 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 Verifikasi bahwa 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 Verifikasi bahwa 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
. 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
Verifikasi bahwa 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": {} }Lanjutkan 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
Verifikasi bahwa 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 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 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 aliran, mengonfirmasi bahwa tidak ada error yang terkait dengan aliran, dan status aliran adalah RUNNING
, Anda siap memverifikasi bahwa aliran 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
dari database Oracle sumber Anda ke folder/root/tutorial
di bucket tujuan Cloud Storage. - Menerjemahkan data ke dalam format file Avro.
Buka halaman Storage browser 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 merepresentasikan tabel skema
ROOT
dari database Oracle sumber Anda.Klik salah satu folder tabel dan lihat perincian hingga Anda melihat data yang terkait dengan tabel.
Klik file yang merepresentasikan 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.
Hapus bucket tujuan Cloud Storage
Di Navigation Drawer Cloud Storage sebelah kiri, klik item Browser.
Centang kotak di sebelah kiri bucket Anda, lalu klik HAPUS.
Di jendela Hapus bucket?, masukkan nama bucket Anda di kolom teks, lalu klik KONFIRMASI.
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 Verifikasi bahwa 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 Verifikasi bahwa nilai
{}
null ditampilkan. Hal ini menandakan bahwa tidak ada lagi aliran di Datastream, dan aliran yang Anda buat telah 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 Verifikasi bahwa 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 Verifikasi bahwa 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 }
Konfirmasi bahwa 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 Verifikasi bahwa nilai
{}
null ditampilkan. Hal ini menandakan bahwa tidak ada lagi profil koneksi di Datastream, dan profil yang Anda buat telah dihapus.
Langkah berikutnya
- Pelajari Datastream lebih lanjut.
- Coba sendiri fitur Google Cloud lainnya. Lihat tutorial kami.