Spanner और BigQuery: धोखाधड़ी से बचाने के लिए रीयल-टाइम शील्ड

1. परिचय

Petverse के बैकएंड में आपका स्वागत है. यह एक मल्टीप्लेयर ऑनलाइन गेम है. इसमें खिलाड़ी, जानवरों के अवतार बनाते हैं, दुनिया को एक्सप्लोर करते हैं, और वीडियो गेम में इस्तेमाल की जाने वाली वर्चुअल मुद्रा में कारोबार करते हैं.

हाल ही में, गेम की अर्थव्यवस्था खतरे में है. कुत्ते के अवतार वाले अमीर खिलाड़ियों के खातों से, बड़ी रकम निकाली जा रही है. इस रकम को पूरी तरह से, प्रीमियम टूना स्टॉक में बदल दिया गया है. हमें "रॉबिन हुड कैट्स" नाम के एक ग्रुप पर शक है. यह ग्रुप, बिल्लियों को खाना खिलाने के लिए, अमीर कुत्तों से चोरी करता है.

इस कोडलैब में, रीयल-टाइम में धोखाधड़ी से बचाने वाली शील्ड बनाई जाएगी. इससे, मुख्य चोर और उसके ऑटोमेटेड बॉट रिंग को पकड़ा जा सकेगा. आपको पता चलेगा कि Spanner में मौजूद ऑपरेशनल डेटा, BigQuery में मौजूद आंकड़ों के साथ मिलकर, ग्राफ़ (जीक्यूएल) और रिलेशनल क्वेरी की मदद से, धोखाधड़ी के जटिल पैटर्न का पता कैसे लगाता है और उनकी जांच कैसे करता है.

आप क्या करेंगे

  • BigQuery की लगातार चलने वाली क्वेरी का इस्तेमाल करके, रीयल-टाइम स्ट्रीम में गड़बड़ी का पता लगाएं और उसे Spanner में पुश करें.
  • वित्तीय संबंधों का पता लगाने के लिए, Spanner Graph का इस्तेमाल करके, धोखाधड़ी करने वाले ग्रुप की जांच करें.
  • Spanner Vector Search का इस्तेमाल करके, बॉट खातों की पहचान करें. इसके लिए, मिलती-जुलती प्रोफ़ाइल की जानकारी ढूंढें.
  • साज़िश का पता लगाएं. इसके लिए, BigQuery Graph का इस्तेमाल करके, बातचीत के बड़े लॉग का विश्लेषण करें.

आपको किन चीज़ों की ज़रूरत होगी

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.
  • एसक्यूएल, टर्मिनल कमांड, और Python की बुनियादी जानकारी.
  • आपको GitHub खाते की ज़रूरत पड़ सकती है. कोड, GitHub पर होस्ट किया जाता है.

दर्शक: इंटरमीडिएट डेवलपर, डेटा इंजीनियर, और आर्किटेक्ट.

कुल अनुमानित समय: 45 से 60 मिनट.

लागत का अनुमान: इस कोडलैब में बनाए गए संसाधनों की लागत, पांच डॉलर से कम होनी चाहिए.

2. शुरू करने से पहले / सेटअप

Google Cloud प्रोजेक्ट बनाना या चुनना

इस लैब के लिए ज़रूरी सेवाओं का इस्तेमाल करने के लिए, आपके पास बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट होना चाहिए.

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके क्लाउड प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. यह पुष्टि करने का तरीका जानें कि बिलिंग की सुविधा चालू है या नहीं.
  3. Cloud Console के होम पेज पर जाकर, अपना प्रोजेक्ट आईडी ढूंढें

Cloud Console का होम पेज

Cloud Shell शुरू करना

Google Cloud Shell को, एक्ज़ीक्यूशन एनवायरमेंट के तौर पर इस्तेमाल किया जाएगा. Cloud Shell में, gcloud, git, और अन्य टूल पहले से इंस्टॉल होते हैं. आपको इनकी ज़रूरत पड़ेगी.

  1. Google Cloud Shell पर जाएं.
  2. अगर आपसे अनुमति मांगी जाती है, तो अनुमति दें पर क्लिक करें.
  3. पक्का करें कि आप अपने प्रोजेक्ट में काम कर रहे हों. इसके लिए, Cloud Shell टर्मिनल में एनवायरमेंट वैरिएबल सेट करें:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

Cloud Shell: प्रोजेक्ट सेट करने के लिए, gcloud config का इस्तेमाल करें

ज़रूरी एपीआई चालू करना

Spanner, BigQuery, और Vertex AI के लिए एपीआई चालू करने के लिए, यह कमांड चलाएं:

gcloud services enable spanner.googleapis.com \
    bigquery.googleapis.com \
    aiplatform.googleapis.com \
    run.googleapis.com \
    bigqueryreservation.googleapis.com

BigQuery के लिए आरक्षण और असाइनमेंट बनाना

जीक्यूएल क्वेरी चलाने के लिए, आपके पास ऐसा रिज़र्वेशन होना चाहिए जो Enterprise या Enterprise Plus एडिशन का इस्तेमाल करता हो. Cloud Shell में, Enterprise Edition के लिए ऐसा रिज़र्वेशन बनाएं जिसमें ऑटो स्केलिंग की सुविधा हो:

# 1. Create a BigQuery Enterprise reservation with 0 baseline slots and 100 max autoscaling slots
bq mk --reservation \
  --project_id=${GCP_PROJECT} \
  --location=US \
  --edition=ENTERPRISE \
  --slots=0 \
  --autoscale_max_slots=100 \
  --ignore_idle_slots=true \
  spanner-bigquery-reservation

# 2. Assign your Cloud project to the newly created reservation for query execution
bq mk --reservation_assignment \
  --project_id=${GCP_PROJECT} \
  --location=US \
  --reservation_id=spanner-bigquery-reservation \
  --job_type=QUERY \
  --assignee_type=PROJECT \
  --assignee_id=${GCP_PROJECT}

रिपॉज़िटरी क्लोन करना

ऐप्लिकेशन कोड और सैंपल स्कीमा वाली रिपॉज़िटरी क्लोन करें:

git clone https://github.com/GoogleCloudPlatform/cloud-spanner-samples.git
cd cloud-spanner-samples/spanner-bq-fraud-defense

3. इंफ़्रास्ट्रक्चर की सुविधा उपलब्ध कराना

अब BigQuery में डेटा वेयरहाउस और Spanner में ऑपरेशनल डेटाबेस सेट अप करें.

BigQuery डेटासेट और कनेक्शन सेट अप करना

BigQuery, गेम से मिलने वाली टेलीमेट्री स्ट्रीम का विश्लेषण करेगा.

Google Cloud Shell में कंसोल में रहते हुए, यह पक्का करने के लिए कि आपका प्रोजेक्ट आईडी अब भी सेट है, यह कमांड चलाएं:

export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
  1. game_analytics नाम का BigQuery डेटासेट बनाएं:
bq mk -d --location=US game_analytics
  1. स्टोरेज बकेट से कनेक्ट करने और (ज़रूरी नहीं) Spanner से कनेक्ट करने के लिए, एक कनेक्शन बनाएं:
bq mk --connection --location=US --project_id=$PROJECT_ID \
    --connection_type=CLOUD_RESOURCE unicorn-connection
  1. स्कीमा फ़ाइल का इस्तेमाल करके, GameplayTelemetry, AccountSignals, Players, और ChatLogs टेबल के लिए स्कीमा बनाएं:
bq query --use_legacy_sql=false < bq_schema.sql

Spanner सेट अप करना

Google Cloud Spanner, रीयल-टाइम में होने वाले ऑपरेशनल ट्रांज़ैक्शन को मैनेज करेगा. इस लैब के लिए, हम 100 प्रोसेसिंग यूनिट (पीयू) वाला ऐसा इंस्टेंस इस्तेमाल करेंगे जो लागत के हिसाब से सही हो.

  1. Spanner इंस्टेंस बनाएं:
gcloud spanner instances create game-instance \
    --config=regional-us-central1 \
    --description="Game Instance" \
    --processing-units=100 \
    --edition=ENTERPRISE
  1. game-db नाम का Spanner डेटाबेस बनाएं:
gcloud spanner databases create game-db --instance=game-instance
  1. ऐप्लिकेशन टेबल (Players, Transactions, AccountSignals) और प्रॉपर्टी ग्राफ़ (PlayerNetwork) के साथ, Spanner स्कीमा को अपडेट करें:
gcloud spanner databases ddl update game-db --instance=game-instance --ddl-file=spanner_schema.sql
  1. मल्टीमोडल वेक्टर सर्च के लिए, AvatarSearchIndex बनाएं:
gcloud spanner databases ddl update game-db --instance=game-instance \
    --ddl="CREATE SEARCH INDEX AvatarSearchIndex ON Players(AvatarDescriptionTokens)"

डेटा को BigQuery में इंपोर्ट करना

  1. डेमो डेटा को BigQuery में इंपोर्ट करें:
bq load --source_format=AVRO game_analytics.GameplayTelemetry gs://sample-data-and-media/spanner-bq-fraud-heist/GameplayTelemetry
bq load --source_format=AVRO game_analytics.AccountSignals gs://sample-data-and-media/spanner-bq-fraud-heist/AccountSignals
bq load --source_format=AVRO game_analytics.Players gs://sample-data-and-media/spanner-bq-fraud-heist/Players
bq load --source_format=AVRO game_analytics.ChatLogs gs://sample-data-and-media/spanner-bq-fraud-heist/ChatLogs
  1. BigQuery Console पर जाएं और game_analytics डेटासेट में मौजूद डेटा को एक्सप्लोर करें.

BigQuery कंसोल

डेटा को Spanner में इंपोर्ट करना

Spanner Console पर जाएं और game-db डेटाबेस में मौजूद डेटा को एक्सप्लोर करें.

Spanner Studio पर क्लिक करें और नई क्वेरी (+) खोलें.

Spanner कंसोल

क्वेरी एडिटर में, ये INSERT स्टेटमेंट चिपकाएं और Run पर क्लिक करें:

-- Table: Players
INSERT INTO Players (
  PlayerId,
  Name,
  Species,
  Clan,
  AvatarDescription,
  ProfilePictureUrl,
  CreatedAt
) VALUES
  ('dc8cf07a-ac0f-48da-9f64-4f379492b1e7', 'Pixel', 'Cat', 'CatClan', 'A heroic cat wearing a green tunic and a feathered cap', 'gs://sample-data-and-media/pixel_profile_booth.png', '2026-03-02T05:11:28.077335+00:00'),
  ('e82df4fb-0b6d-44dc-8609-70b41430af38', 'Rocky_1', 'Dog', 'DogClan', 'A robot dog with metal plating', 'gs://sample-data-and-media/wheaten_terrier_102.jpg', '2026-03-02T05:11:28.077374+00:00'),
  ('ea3afac7-54f0-4f68-8ed5-a5b6bd386c59', 'Whiskers_2',