Datastream REST API memungkinkan Anda mereplikasi data perubahan secara terprogram dari sumber lokal dan cloud ke tujuan Google Cloud untuk analisis hampir real-time. Dalam tutorial ini, Anda akan membuat profil koneksi dan aliran data untuk mereplikasi skema, tabel, dan data Oracle ke dalam bucket Cloud Storage. Selama replikasi, Datastream mengonversi data sumber menjadi file Avro dengan skema JSON sehingga aplikasi downstream dapat membaca data secara seragam di seluruh sumber.
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 di profil koneksi untuk mentransfer data dari database sumber ke folder di bucket tujuan.
- Membuat dan mengelola aliran data. Datastream menggunakan aliran data 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 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
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Mengaktifkan Datastream API.
- Pastikan Anda memiliki peran Datastream Admin yang ditetapkan ke akun pengguna Anda.
- Pastikan Anda memiliki database sumber yang dapat diakses oleh 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 daftar IP yang diizinkan, tunnel SSH penerusan, atau metode konektivitas jaringan 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 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 perintahcURLyang 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. Resource Google Cloud apa pun yang Anda alokasikan dan gunakan harus berkaitan dengan project.$TOKEN: Variabel ini terkait 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 dengan Akun Google Anda, masukkan perintah berikut:
gcloud auth loginPada 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, tempel ke parameter
Enter verification code:di aplikasi Cloud Shell Anda, lalu tekanEnter.Pada prompt, masukkan
PROJECT=\"YOUR_PROJECT_NAME\"untuk menetapkan variabel lingkungan$PROJECTke project Google Cloud Anda.Pada prompt, masukkan
gcloud config set project YOUR_PROJECT_NAMEuntuk menetapkan project yang ingin Anda kerjakan ke project Google Cloud Anda.Command prompt Anda akan diupdate untuk mencerminkan project aktif dan mengikuti format ini:
USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$Pada prompt, masukkan
TOKEN=$(gcloud auth print-access-token)untuk mengambil token akses dan menyimpannya sebagai variabel.Pada prompt, masukkan perintah berikut untuk memastikan bahwa variabel
$PROJECTdan$TOKENAnda ditetapkan dengan benar:echo $PROJECTecho $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 aliran data, Anda mungkin tidak ingin menarik semua objek dari database, melainkan subset objek (misalnya, hanya tabel dan skema tertentu dari database). Gunakan API penemuan 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.
- Membuat profil koneksi ke database Oracle sumber. Pada prompt, 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:
| Parameter value | 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. |
Saat diminta, masukkan perintah
echo $ORACLE | jquntuk 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 prompt, 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:
Parameter value 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 }Membuat profil koneksi ke bucket tujuan di Cloud Storage. Pada prompt, masukkan perintah berikut:
GOOGLECLOUDSTORAGE="{\"displayName\":\"DISPLAY_NAME\",\"gcs_profile\":{\"bucket\":\"BUCKET_NAME\",
\"root_path\":\"/FOLDER_PATH\"},\"no_connectivity\":{}}" Gunakan tabel berikut untuk membantu Anda memahami nilai parameter untuk bucket tujuan:
Parameter value 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 prompt, masukkan perintah
echo $GOOGLECLOUDSTORAGE | jquntuk melihat profil koneksi tujuan yang Anda buat dalam teks yang mudah dibaca.{ "displayName": "DISPLAY_NAME", "gcs_profile": { "bucket": "BUCKET_NAME", "root_path": "/FOLDER_PATH" }, "no_connectivity": {} }
Kirim profil koneksi Cloud Storage agar dapat dibuat. Pada prompt, 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 prompt, 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": { "bucket": "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 Anda buat 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 di profil koneksi Oracle sumber
Mengambil informasi tentang profil koneksi Cloud Storage tujuan. Pada prompt, 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": { "bucket": "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 prompt, masukkan perintah berikut:
UPDATE="{\"gcsProfile\":{\"rootPath\":\"/root/tutorial\"}}"
Pada prompt, 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. Pada prompt, 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": { "bucket": "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.
Menemukan skema database Oracle. Pada prompt, 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.
Mengambil tabel skema di database Anda. Untuk tutorial ini, Anda akan menggunakan API discover untuk mengambil tabel skema ROOT. Namun, Anda dapat menemukan tabel skema apa pun di database Anda.
Pada prompt, 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 aliran data
Di bagian ini, Anda akan membuat dan mengelola aliran data. Datastream menggunakan aliran data ini untuk mentransfer data, skema, dan tabel dari database sumber ke folder di bucket Cloud Storage tujuan.
Pembuatan dan pengelolaan aliran data mencakup:
- Memvalidasi aliran data untuk memastikan bahwa aliran data akan berjalan dengan baik, dan semua pemeriksaan validasi lulus. Pemeriksaan ini mencakup:
- Apakah sumber dikonfigurasi dengan benar untuk memungkinkan Datastream melakukan streaming data darinya.
- Apakah aliran data dapat terhubung ke sumber dan tujuan.
- Konfigurasi end-to-end streaming.
- Membuat streaming 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 tersebut adalah folder /root/tutorial.
- Daftar penolakan. Daftar ini menentukan tabel dan skema dalam database sumber yang tidak boleh ditransfer oleh Datastream ke folder di bucket tujuan Cloud Storage.
- Mengambil informasi tentang streaming
- Mengubah aliran data
- Memulai aliran data 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 aliran data dijeda, Datastream tidak akan menarik data baru dari database sumber ke bucket tujuan.
- Melanjutkan aliran data yang dijeda agar 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. Aliran data 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 untuk 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 agar dikaitkan dengan skema ROOT.
Pada prompt, masukkan perintah berikut:
SCHEMAS="{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}"
Pada prompt, masukkan perintah echo $SCHEMAS | jq untuk melihat skema ROOT yang Anda tentukan untuk variabel ini dalam teks yang mudah dibaca.
Membuat aliran data. Pada prompt, 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 prompt, masukkan perintah
echo $STREAM | jquntuk 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 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 untuk ditransfer ke bucket tujuan. file_rotation_mb Ukuran (dalam MB) file yang berisi data yang sedang 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 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 di folder bucket tujuan Cloud Storage dan membuka file lain untuk memuat data yang ditransfer dari database sumber. Untuk tutorial ini, interval rotasi file ditetapkan 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 terkait dengan pengisian ulang historis. Dengan menetapkan 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 data untuk memastikan bahwa aliran data akan berjalan dengan baik, dan semua pemeriksaan validasi lulus. Pada prompt, 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 tersebut.Kirimkan streaming agar dapat dibuat. Pada prompt, 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 aliran data telah dibuat. Pada prompt, 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 data 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 telah 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 prompt, 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": {} }Mengubah 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 MB) file yang berisi data yang sedang ditransfer dari database sumber ke folder di bucket tujuan Cloud Storage (dari 5 MB menjadi 100 MB). 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 prompt, 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 aliran data telah diubah. Pada prompt, 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 prompt, 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 Pastikan status aliran data telah berubah dari
CREATEDmenjadiRUNNING.{ "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 prompt, 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 prompt, 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. Pada prompt, 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 Pastikan status aliran data telah berubah dari
RUNNINGmenjadiPAUSED.{ "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 prompt, 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 lagi.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Pastikan status aliran telah berubah dari
PAUSEDkembali 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 bahwa status aliran data adalah RUNNING, Anda siap untuk memverifikasi bahwa aliran data tersebut dapat mentransfer data dari database sumber ke folder di bucket tujuan Cloud Storage.
Memverifikasi aliran data
Dalam prosedur ini, Anda akan mengonfirmasi bahwa Datastream:
- Mentransfer data dari semua tabel yang terkait dengan skema
ROOTdatabase Oracle sumber Anda ke folder/root/tutorialdi 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 mewakili tabel skema
ROOTdari database Oracle sumber Anda.Klik salah satu folder tabel dan lihat perinciannya 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 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 telah Anda buat di Datastream agar tidak menggunakan kuota dan Anda tidak akan ditagih untuk resource tersebut 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 resources.
- 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 navigasi Cloud Storage sebelah kiri, klik item Browser.
Centang kotak di sebelah kiri bucket Anda, lalu klik DELETE.
Di jendela Delete bucket?, masukkan nama bucket Anda di kolom teks, lalu klik CONFIRM.
Menghapus aliran data
Pastikan aplikasi Cloud Shell Anda aktif.
Pada prompt, 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 aliran data telah dihapus. Pada prompt, 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 telah dihapus.
Menghapus profil koneksi
Hapus profil koneksi ke database Oracle sumber. Pada prompt, 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 prompt, 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 prompt, 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 telah dihapus.
Langkah berikutnya
- Pelajari Datastream lebih lanjut.
- Coba sendiri fitur Google Cloud lainnya. Pelajari tutorial kami.