अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ ADP परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप साधारण टेराफॉर्म के साथ, सबसे छोटा यथार्थवादी ADP डेटा सबस्ट्रेट प्रोविजन कर चुके होंगे — एक क्लाउड स्टोरेज लैंडिंग बकेट, इनगेशन तिथि द्वारा विभाजित एक तालिका के साथ एक बिगक्वेरी डेटासेट, और एक बिगक्वेरी शेड्यूल्ड क्वेरी जो हर घंटे चलती है, एक सार्वजनिक डेटासेट से पढ़ती है और तालिका में लिखती है। चार ब्लॉक; GCP एनालिटिक्स ऑन-रैंप।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply को चरण-दर-चरण चलाएँ।
>= 1.5 या ओपनटोफू >= 1.6।your-project-id को बदलें।लैब के दायरे में सब कुछ मुफ़्त है:
लैब वॉल्यूम पर ~$0/माह। वास्तविक बिगक्वेरी वर्कलोड स्कैन किए गए बाइट्स पर बिल करते हैं — आक्रामक रूप से विभाजन + क्लस्टर करें और केवल वही SELECT करें जिसकी आपको आवश्यकता है।
क्लाउड स्टोरेज, बिगक्वेरी और बिगक्वेरी डेटा ट्रांसफर सर्विस (जो शेड्यूल्ड क्वेरीज़ को शक्ति प्रदान करती है) को सक्षम करें।
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-adp"
managed_by = "terraform"
}
}
resource "google_project_service" "storage" {
service = "storage.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "bigquery" {
service = "bigquery.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "bqdts" {
service = "bigquerydatatransfer.googleapis.com"
disable_on_destroy = false
}हर ADP-पैटर्न डेटा पाइपलाइन एक लैंडिंग बकेट से शुरू होती है — कच्ची फ़ाइलें (CSV / JSON / Parquet / Avro) यहाँ गिरती हैं, डाउनस्ट्रीम जॉब्स इससे पढ़ते हैं। बकेट झील के बाहर और झील के अंदर के बीच की सीमा है। ADP परीक्षा यहाँ फिर से स्टोरेज क्लास के चुनाव का परीक्षण करती है — लैंडिंग टियर के लिए स्टैंडर्ड (पहले 30 दिनों में बार-बार पढ़ना), जिसमें 90 दिनों के बाद कोल्डलाइन में संक्रमण का एक लाइफसाइकिल नियम होता है।
यूनिफ़ॉर्म बकेट-लेवल एक्सेस चालू है (ADP-अनुशंसित सुरक्षा डिफ़ॉल्ट)।
resource "random_id" "suffix" {
byte_length = 4
}
resource "google_storage_bucket" "landing" {
name = "certlabpro-adp-landing-${random_id.suffix.hex}"
location = "US"
uniform_bucket_level_access = true
force_destroy = true # lab-only
lifecycle_rule {
condition {
age = 90
}
action {
type = "SetStorageClass"
storage_class = "COLDLINE"
}
}
labels = local.labels
depends_on = [google_project_service.storage]
}बिगक्वेरी GCP का सर्वरलेस डेटा वेयरहाउस है — क्वेरी पर स्कैन किए गए प्रति-बाइट भुगतान करें, डेटा पर संग्रहीत प्रति-बाइट भुगतान करें। ADP परीक्षा विभाजन + क्लस्टरिंग को लागत-नियंत्रण लीवर्स के रूप में परीक्षण करती है: विभाजित तालिकाएँ क्वेरीज़ को अप्रासंगिक डेटा को छोड़ने देती हैं; क्लस्टर्ड तालिकाएँ संबंधित पंक्तियों को स्टोरेज पर एक साथ रखती हैं।
हम बनाते हैं:
analytics — बिगक्वेरी कंटेनर (एक स्कीमा / डेटाबेस का GCP समतुल्य)। लैब सफाई की सुविधा के लिए delete_contents_on_destroy = true सेट करें।events जिसमें इनगेशन-टाइम विभाजन (_PARTITIONTIME छद्म-स्तंभ) और 30-दिन का विभाजन समाप्ति है। उत्पादन तालिकाएँ आमतौर पर क्वेरी चयनात्मकता के लिए एक स्तंभ (time_partitioning.field) द्वारा विभाजित होती हैं।resource "google_bigquery_dataset" "analytics" {
dataset_id = "analytics"
location = "US"
delete_contents_on_destroy = true # lab-only
labels = local.labels
depends_on = [google_project_service.bigquery]
}
resource "google_bigquery_table" "events" {
dataset_id = google_bigquery_dataset.analytics.dataset_id
table_id = "events"
deletion_protection = false # lab-only
time_partitioning {
type = "DAY"
expiration_ms = 30 * 24 * 60 * 60 * 1000 # 30 days
require_partition_filter = true
}
schema = jsonencode([
{ name = "event_id", type = "STRING", mode = "REQUIRED" },
{ name = "event_type", type = "STRING", mode = "REQUIRED" },
{ name = "event_time", type = "TIMESTAMP", mode = "REQUIRED" },
{ name = "user_id", type = "STRING", mode = "NULLABLE" },
{ name = "payload", type = "JSON", mode = "NULLABLE" },
])
labels = local.labels
}शेड्यूल्ड क्वेरीज़ एक निश्चित ताल पर एक बिगक्वेरी डेटासेट से दूसरे में डेटा लेने के लिए ADP-पैटर्न आदिम हैं। वे बिगक्वेरी डेटा ट्रांसफर सर्विस इंफ्रास्ट्रक्चर पर चलती हैं (bq एड-हॉक क्वेरीज़ से अलग) और उसी प्रति-बाइट-स्कैन दर पर बिल करती हैं।
हम एक क्वेरी शेड्यूल करते हैं जो हर घंटे चलती है, सार्वजनिक bigquery-public-data.samples.shakespeare डेटासेट से पढ़ती है, और चरण 3 से events तालिका में लिखती है। MERGE आकार (अप्सर्ट) निष्क्रिय इनगेशन के लिए ADP-कैनोनिकल उत्तर है — उसी घंटे को फिर से चलाने से दोगुना प्रविष्टि नहीं होती है।
शेड्यूल्ड क्वेरी प्रोजेक्ट डिफ़ॉल्ट सेवा खाते के रूप में चलती है; उत्पादन डिप्लॉयमेंट गंतव्य पर roles/bigquery.dataEditor के साथ एक समर्पित ट्रांसफर सेवा खाता का उपयोग करते हैं।
resource "google_bigquery_data_transfer_config" "hourly_load" {
display_name = "certlabpro-adp-hourly-load"
data_source_id = "scheduled_query"
location = "US"
schedule = "every 1 hours"
destination_dataset_id = google_bigquery_dataset.analytics.dataset_id
params = {
query = "INSERT INTO `${google_bigquery_dataset.analytics.dataset_id}.${google_bigquery_table.events.table_id}` (event_id, event_type, event_time, user_id, payload) SELECT GENERATE_UUID() AS event_id, \"shakespeare-line\" AS event_type, CURRENT_TIMESTAMP() AS event_time, NULL AS user_id, TO_JSON(STRUCT(word, word_count, corpus)) AS payload FROM `bigquery-public-data.samples.shakespeare` WHERE word_count > 100 LIMIT 100"
}
depends_on = [
google_project_service.bqdts,
google_bigquery_table.events,
]
}terraform destroy सब कुछ हटा देता है। बकेट नष्ट हो जाता है (केवल लैब के लिए force_destroy)। डेटासेट नष्ट हो जाता है (केवल लैब के लिए delete_contents_on_destroy) — इसकी तालिकाएँ भी इसके साथ चली जाती हैं। शेड्यूल्ड क्वेरी तुरंत अलग हो जाती है और चलना बंद कर देती है। प्रोजेक्ट सेवाएँ सक्षम रहती हैं (मुफ़्त)।
ADP कई GCP डेटा सतहों को कवर करता है जिन्हें यह लैब फिट नहीं कर सकती है — डेटाफ्लो (प्रो टियर पर [[gcp-pde]] में कवर किया गया), डेटाप्रॉक, पब/सब, क्लाउड कंपोजर (प्रबंधित एयरफ़्लो), डेटाफ़ॉर्म (बिगक्वेरी पर निर्मित SQL-ट्रांसफॉर्म IDE), लुक़र स्टूडियो, वर्टेक्स AI, क्लाउड डेटा फ्यूजन, डेटाबेस माइग्रेशन सर्विस, डेटास्ट्रीम, संपूर्ण बिगलेक / बिगक्वेरी ओमनी मल्टी-क्लाउड सतह, और बिगक्वेरी एमएल (इन-डेटाबेस एमएल प्रशिक्षण)।
हम GCS + बिगक्वेरी + शेड्यूल्ड क्वेरी आदिमों पर टिके रहते हैं क्योंकि वे हर ADP-पैटर्न पाइपलाइन की नींव हैं जहाँ से वह शुरू होती है। डेटाफ्लो / डेटाप्रॉक GCS या बिगक्वेरी में स्ट्रीम या बैच करता है। कंपोजर / वर्कफ़्लो उपरोक्त शेड्यूल्ड क्वेरीज़ को ऑर्केस्ट्रेट करता है। लुक़र बिगक्वेरी से पढ़ता है। आधार को सही करें; उस पर विशेषज्ञ इंजनों को परत करें।
सेवा-दर-सेवा वैचारिक कवरेज के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।