इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. परिचय
Spanner, पूरी तरह से मैनेज की जाने वाली, हॉरिज़ॉन्टल तौर पर स्केल की जा सकने वाली, और दुनिया भर में उपलब्ध डेटाबेस सेवा है. यह रिलेशनल और नॉन-रिलेशनल, दोनों तरह के वर्कलोड के लिए बेहतरीन है.
Spanner के Cassandra इंटरफ़ेस की मदद से, Cassandra के जाने-पहचाने टूल और सिंटैक्स का इस्तेमाल करके, Spanner के पूरी तरह से मैनेज किए जा सकने वाले, स्केले किए जा सकने वाले, और ज़्यादातर समय उपलब्ध रहने वाले बुनियादी ढांचे का फ़ायदा लिया जा सकता है.
आपको क्या सीखने को मिलेगा
- Spanner इंस्टेंस और डेटाबेस को सेटअप करने का तरीका.
- अपने Cassandra स्कीमा और डेटा मॉडल को बदलने का तरीका.
- आने वाले डेटा के लिए, डुप्लीकेट कॉपी को डिप्लॉय और कॉन्फ़िगर करने का तरीका.
- Cassandra से Spanner में अपना पुराना डेटा एक साथ एक्सपोर्ट करने का तरीका.
- माइग्रेशन की पूरी प्रोसेस के दौरान डेटा की अखंडता को पक्का करने के लिए, डेटा की पुष्टि करने का तरीका.
- अपने ऐप्लिकेशन को Cassandra के बजाय Spanner पर कैसे भेजें.
आपको किन चीज़ों की ज़रूरत होगी
- Google Cloud का ऐसा प्रोजेक्ट जो किसी बिलिंग खाते से जुड़ा हो.
- ऐसी मशीन का ऐक्सेस होना चाहिए जिस पर
gcloud
सीएलआई इंस्टॉल और कॉन्फ़िगर किया गया हो या Google Cloud Shell का इस्तेमाल किया जा सकता हो. - Chrome या Firefox जैसा कोई वेब ब्राउज़र.
2. सेटअप और ज़रूरी शर्तें
GCP प्रोजेक्ट बनाना
Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, अपने-आप एक यूनीक स्ट्रिंग जनरेट करता है. आम तौर पर, आपको यह जानने की ज़रूरत नहीं होती कि यह स्ट्रिंग क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_ID
के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं आता है, तो कोई दूसरा आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास खुद का कोई दूसरा नाम चुनने का विकल्प भी है. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट के दौरान बना रहता है. - आपकी जानकारी के लिए बता दें कि तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
बिलिंग सेट अप
इसके बाद, आपको बिलिंग मैनेज करने के लिए उपयोगकर्ता गाइड का पालन करना होगा और Cloud Console में बिलिंग चालू करनी होगी. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, कोडलैब के आखिर में Spanner इंस्टेंस को बंद किया जा सकता है. इसके लिए, "नौवां चरण: क्लीन अप करना" लेख पढ़ें.
Cloud Shell शुरू करना
Google Cloud को आपके लैपटॉप से रिमोट तौर पर इस्तेमाल किया जा सकता है. हालांकि, इस कोडलैब में आपको Google Cloud Shell का इस्तेमाल करना होगा. यह Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.
Google Cloud Console में, सबसे ऊपर दाएं टूलबार में मौजूद Cloud Shell आइकॉन पर क्लिक करें:
एनवायरमेंट से कनेक्ट होने और उसे प्रोवाइड करने में सिर्फ़ कुछ मिनट लगेंगे. प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल लोड होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. यह Google Cloud पर चलता है, जिससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की सुविधा बेहतर होती है. इस कोडलैब में, सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
अगला लेख
इसके बाद, आपको Cassandra क्लस्टर को डिप्लॉय करना होगा.
3. Cassandra क्लस्टर (ऑरिजिन) डिप्लॉय करना
इस कोडलैब के लिए, हम Compute Engine पर एक-नोड वाला Cassandra क्लस्टर सेट अप करेंगे.
1. Cassandra के लिए GCE (जीसीई) वीएम बनाना
इंस्टेंस बनाने के लिए, gcloud compute instances create
कमांड का इस्तेमाल करें.
gcloud compute instances create cassandra-origin \ --machine-type=e2-medium \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud \ --tags=cassandra-migration \ --boot-disk-size=20GB
2. Cassandra इंस्टॉल करना
# Install Java (Cassandra dependency) sudo apt-get update sudo apt-get install -y openjdk-11-jre-headless # Add Cassandra repository echo "deb [https://debian.cassandra.apache.org](https://debian.cassandra.apache.org) 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list curl [https://downloads.apache.org/cassandra/KEYS](https://downloads.apache.org/cassandra/KEYS) | sudo apt-key add - # Install Cassandra sudo apt-get update sudo apt-get install -y cassandra
3. कीस्पेस और टेबल बनाना
हम उपयोगकर्ताओं की टेबल के उदाहरण का इस्तेमाल करेंगे और "Analytics" नाम का कीस्पेस बनाएंगे.
cd ~/apache-cassandra bin/cqlsh <your-localhost-ip? 9042 #starts the cql shell
cqlsh में:
-- Create keyspace (adjust replication for production) CREATE KEYSPACE analytics WITH replication = {'class':'SimpleStrategy', 'replication_factor':1}; -- Use the keyspace USE analytics; -- Create the users table CREATE TABLE users ( id int PRIMARY KEY, active boolean, username text, ); -- Exit cqlsh EXIT;
एसएसएच सेशन को खुला रखें या इस वीएम का आईपी पता (होस्टनेम -I) नोट करें.
अगला लेख
इसके बाद, आपको Cloud Spanner इंस्टेंस और डेटाबेस सेट अप करना होगा.
4. Spanner इंस्टेंस और डेटाबेस (टारगेट) बनाना
Spanner में, इंस्टेंस, कंप्यूटिंग और स्टोरेज संसाधनों का क्लस्टर होता है. यह एक या उससे ज़्यादा Spanner डेटाबेस को होस्ट करता है. इस कोडलैब के लिए, Spanner डेटाबेस को होस्ट करने के लिए आपके पास कम से कम एक इंस्टेंस होना चाहिए.
gcloud SDK टूल का वर्शन देखना
इंस्टेंस बनाने से पहले, पक्का करें कि Google Cloud Shell में gcloud SDK टूल को ज़रूरी वर्शन पर अपडेट किया गया हो - gcloud SDK 493.0.0. gcloud SDK का वर्शन देखने के लिए, नीचे दिया गया निर्देश अपनाएं.
$ gcloud version | grep Google
आउटपुट का उदाहरण यहां दिया गया है:
Google Cloud SDK 489.0.0
अगर इस्तेमाल किया जा रहा वर्शन, ज़रूरी 493.0.0 वर्शन (पिछले उदाहरण में 489.0.0
) से पहले का है, तो आपको यह कमांड चलाकर Google Cloud SDK टूल को अपग्रेड करना होगा:
sudo apt-get update \
&& sudo apt-get --only-upgrade install google-cloud-cli-anthoscli google-cloud-cli-cloud-run-proxy kubectl google-cloud-cli-skaffold google-cloud-cli-cbt google-cloud-cli-docker-credential-gcr google-cloud-cli-spanner-migration-tool google-cloud-cli-cloud-build-local google-cloud-cli-pubsub-emulator google-cloud-cli-app-engine-python google-cloud-cli-kpt google-cloud-cli-bigtable-emulator google-cloud-cli-datastore-emulator google-cloud-cli-spanner-emulator google-cloud-cli-app-engine-go google-cloud-cli-app-engine-python-extras google-cloud-cli-config-connector google-cloud-cli-package-go-module google-cloud-cli-istioctl google-cloud-cli-anthos-auth google-cloud-cli-gke-gcloud-auth-plugin google-cloud-cli-app-engine-grpc google-cloud-cli-kubectl-oidc google-cloud-cli-terraform-tools google-cloud-cli-nomos google-cloud-cli-local-extract google-cloud-cli-firestore-emulator google-cloud-cli-harbourbridge google-cloud-cli-log-streaming google-cloud-cli-minikube google-cloud-cli-app-engine-java google-cloud-cli-enterprise-certificate-proxy google-cloud-cli
Spanner API को चालू करना
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो. फ़िलहाल कॉन्फ़िगर किया गया प्रोजेक्ट आईडी ढूंढने के लिए, नीचे दिए गए पहले निर्देश का इस्तेमाल करें. अगर नतीजा उम्मीद के मुताबिक नहीं है, तो नीचे दिया गया दूसरा निर्देश सही नतीजा सेट करता है.
gcloud config get-value project
gcloud config set project [YOUR-DESIRED-PROJECT-ID]
अपने डिफ़ॉल्ट क्षेत्र को us-central1
पर कॉन्फ़िगर करें. इसे किसी ऐसे दूसरे इलाके में बदला जा सकता है जहां Spanner के रीजनल कॉन्फ़िगरेशन काम करते हैं.
gcloud config set compute/region us-central1
Spanner API को चालू करने के लिए:
gcloud services enable spanner.googleapis.com
Spanner इंस्टेंस बनाना
इस सेक्शन में, आपको मुफ़्त में आज़माने के लिए इंस्टेंस या प्रोवाइड किया गया इंस्टेंस बनाना होगा. इस कोडलैब में, Spanner Cassandra अडैप्टर इंस्टेंस आईडी के तौर पर cassandra-adapter-demo
का इस्तेमाल किया गया है. इसे export
कमांड लाइन का इस्तेमाल करके, SPANNER_INSTANCE_ID
वैरिएबल के तौर पर सेट किया गया है. इसके अलावा, आपके पास अपने इंस्टेंस आईडी का नाम चुनने का विकल्प भी होता है.
मुफ़्त में आज़माने के लिए Spanner इंस्टेंस बनाना
Spanner को 90 दिनों के लिए मुफ़्त में आज़माने की सुविधा उन सभी लोगों के लिए उपलब्ध है जिनके पास Google खाता है और जिनके प्रोजेक्ट में Cloud Billing की सुविधा चालू है. मुफ़्त में आज़माने की सुविधा वाले इंस्टेंस को पैसे चुकाकर इस्तेमाल किए जाने वाले इंस्टेंस पर अपग्रेड करने पर ही आपसे शुल्क लिया जाता है. मुफ़्त में आज़माने की सुविधा वाले इंस्टेंस में, Spanner Cassandra अडैप्टर काम करता है. ज़रूरी शर्तें पूरी करने पर, Cloud Shell खोलकर और यह कमांड चलाकर, मुफ़्त में आज़माने की सुविधा वाला इंस्टेंस बनाएं:
export SPANNER_INSTANCE_ID=cassandra-adapter-demo
export SPANNER_REGION=regional-us-central1
gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=$SPANNER_REGION \
--instance-type=free-instance \
--description="Spanner Cassandra Adapter demo"
कमांड का आउटपुट:
$ gcloud spanner instances create $SPANNER_INSTANCE_ID \ --config=$SPANNER_REGION \ --instance-type=free-instance \ --description="Spanner Cassandra Adapter demo" Creating instance...done.
डेटाबेस बनाना
इंस्टेंस के चालू होने के बाद, डेटाबेस बनाया जा सकता है. डेटाबेस में स्कीमा तय किया जाता है. आपके पास यह कंट्रोल करने का विकल्प भी होता है कि डेटाबेस का ऐक्सेस किसके पास है. साथ ही, कस्टम एन्क्रिप्शन सेट अप किया जा सकता है, ऑप्टिमाइज़र को कॉन्फ़िगर किया जा सकता है, और डेटा को सेव रखने की अवधि सेट की जा सकती है.
डेटाबेस, आईडी SPANNER_INSTANCE_ID
वाले इंस्टेंस में बनाया जाएगा.
डेटाबेस बनाने के लिए, gcloud कमांड-लाइन टूल का इस्तेमाल करें:
export SPANNER_DATABASE=analytics
gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
कमांड का आउटपुट:
$ gcloud spanner databases create $SPANNER_DATABASE \ --instance=$SPANNER_INSTANCE_ID Creating database...done.
5. Cassandra स्कीमा और डेटा मॉडल को Spanner पर माइग्रेट करना
Cassandra डेटाबेस से Spanner में डेटा ट्रांसफ़र करने के शुरुआती और अहम चरण में, मौजूदा Cassandra स्कीमा को बदलना शामिल है. ऐसा, Spanner के स्ट्रक्चर और डेटा टाइप की ज़रूरतों के हिसाब से करने के लिए किया जाता है.
स्कीमा माइग्रेशन की इस जटिल प्रोसेस को आसान बनाने के लिए, Spanner एक अहम ओपन-सोर्स टूल उपलब्ध कराता है. इसे Spanner Cassandra स्कीमा टूल कहा जाता है.
Spanner Cassandra स्कीमा टूल
Spanner Cassandra स्कीमा टूल, Spanner के आकलन और स्कीमा माइग्रेशन के लिए एक स्टैंडअलोन ओपन सोर्स टूल है. इसका मुख्य फ़ंक्शन, किसी मौजूदा Cassandra स्कीमा में मिली परिभाषाओं के आधार पर, Spanner स्कीमा को अपने-आप बनाना है. Cassandra टेबल के स्ट्रक्चर, डेटा टाइप, और प्राइमरी की कॉन्फ़िगरेशन का विश्लेषण करके, यह टूल Spanner टेबल की मिलती-जुलती परिभाषाएं जनरेट करता है. इससे स्कीमा ट्रांसलेशन में आम तौर पर होने वाली मैन्युअल मेहनत काफ़ी कम हो जाती है.
Cassandra स्कीमा एक्सपोर्ट करना
Spanner Cassandra स्कीमा टूल का इस्तेमाल करने से पहले, अपने मौजूदा Cassandra क्लस्टर से स्कीमा निकालना सबसे अहम कदम है. इसके लिए, cqlsh
की मदद से अपने मौजूदा Cassandra क्लस्टर से कनेक्ट करें और Cassandra से स्कीमा एक्सपोर्ट करें:
cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
इस कमांड में, [IP]
को अपने Cassandra क्लस्टर के किसी नोड के आईपी पते या होस्टनेम से बदला जाना चाहिए. निर्देश के -e DESC SCHEMA
हिस्से में, cqlsh को Cassandra क्लस्टर के पूरे स्कीमा के बारे में बताने का निर्देश दिया जाता है. इस कमांड का आउटपुट, orig_schema.cql
नाम की फ़ाइल में रीडायरेक्ट किया जाता है. इसमें CREATE KEYSPACE और CREATE TABLE स्टेटमेंट शामिल होते हैं.
इस orig_schema.cql
फ़ाइल का कॉन्टेंट, आपके Cassandra स्कीमा का टेक्स्ट ब्लूप्रिंट दिखाएगा. orig_schema.cql
फ़ाइल का कॉन्टेंट कुछ ऐसा दिखना चाहिए:
CREATE KEYSPACE analytics WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
CREATE TABLE analytics.users (
id int PRIMARY KEY,
active boolean,
username text
) WITH additional_write_policy = '99p'
AND allow_auto_snapshot = true
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND cdc = false
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '16', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND memtable = 'default'
AND crc_check_chance = 1.0
AND default_time_to_live = 0
AND extensions = {}
AND gc_grace_seconds = 864000
AND incremental_backups = true
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair = 'BLOCKING'
AND speculative_retry = '99p';
डेटा स्टोर करने की जगह को क्लोन करना
Spanner Cassandra स्कीमा टूल का इस्तेमाल करने के लिए, अगले चरण में टूल का सोर्स कोड पाना होगा. ऐसा करने के लिए, GitHub पर होस्ट किए गए डेटा स्टोर करने की जगह को क्लोन किया जाता है. Cloud Shell में यह कमांड टाइप करके, GitHub से Spanner Cassandra स्कीमा टूल को क्लोन करें:
git clone https://github.com/cloudspannerecosystem/spanner-cassandra-schema-tool.git
इसके बाद, डायरेक्ट्री को "spanner-cassandra-schema-tool" डायरेक्ट्री में बदलें, जहां आपको कमांड चलाना है.
cd spanner-cassandra-schema-tool
डिपेंडेंसी इंस्टॉल करना
Spanner Cassandra स्कीमा टूल, Go प्रोग्रामिंग भाषा में लिखा गया है. यह पक्का करने के लिए कि टूल सही तरीके से काम करे, यह कुछ बाहरी Go मॉड्यूल (लाइब्रेरी) पर निर्भर करता है. टूल को चलाने से पहले, इन डिपेंडेंसी को डाउनलोड और मैनेज करना होगा. spanner-cassandra-schema-tool
डायरेक्ट्री में, यह कमांड चलाएं:
go mod download
Google Cloud क्रेडेंशियल सेट अप करना
यह टूल, Spanner डेटाबेस से कनेक्ट करने के लिए, क्रेडेंशियल के सोर्स के तौर पर ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करता है. GOOGLE_APPLICATION_CREDENTIALS
एनवायरमेंट वैरिएबल को अपने सेवा खाते की कुंजी फ़ाइल के पाथ पर सेट करें.
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
/path/to/your/service-account-file.json
को, डाउनलोड की गई सेवा खाते की कुंजी फ़ाइल के असल पाथ से बदलें. इस एनवायरमेंट वैरिएबल को सेट करने से यह पक्का होता है कि Spanner Cassandra स्कीमा टूल, आपके Google Cloud प्रोजेक्ट और Spanner इंस्टेंस की पुष्टि सुरक्षित तरीके से कर सकता है.
इस्तेमाल
डिपेंडेंसी इंस्टॉल होने और Google Cloud क्रेडेंशियल कॉन्फ़िगर होने के बाद, एक्सपोर्ट की गई Cassandra स्कीमा फ़ाइल से Spanner स्कीमा जनरेट करने के लिए, Spanner Cassandra स्कीमा टूल चलाया जा सकता है. अपने टर्मिनल या Cloud Shell में spanner-cassandra-schema-tool
डायरेक्ट्री पर जाएं और यह go run
कमांड चलाएं:
go run schema_converter.go \
--project $PROJECT_ID \
--instance $SPANNER_INSTANCE_ID \
--database $SPANNER_DATABASE \
--cql orig_schema.cql \
--dry-run
--dry-run
विकल्प का इस्तेमाल करने पर, सिर्फ़ स्कीमा जनरेट होता है. टूल से जनरेट किए गए डेटा टाइप की मैपिंग और प्राइमरी की कॉलम की समीक्षा करें और उन्हें बेहतर बनाएं. पक्का करें कि Spanner डेटा टाइप, Cassandra डेटाबेस टाइप की रेंज, सटीक जानकारी, और सेमेंटेक्स को सटीक तरीके से दिखाते हों.
यह टूल, Cassandra टाइप को Spanner टाइप पर मैप करता है. इस बारे में Cassandra के साथ काम करने वाले डेटा टाइप में बताया गया है.
कमांड का आउटपुट कुछ ऐसा दिखेगा:
.....
[Converted Spanner statement]
CREATE TABLE users (
id INT64 NOT NULL OPTIONS (cassandra_type = 'int'),
active BOOL OPTIONS (cassandra_type = 'boolean'),
username STRING(MAX) OPTIONS (cassandra_type = 'text'),
) PRIMARY KEY (id)
----------------------------------------------
Writing converted Spanner schema to: schema.txt
Dry run enabled. Skipping schema execution.
Schema conversion completed!
अगर आपको स्कीमा को Spanner पर अपने-आप लागू होने की सुविधा भी चाहिए, तो आपको --dry-run
विकल्प के बिना क्लाइंट-साइड इंटरफ़ेस (सीएलआई) चलाना चाहिए.
Google Cloud Console में पुष्टि करें कि टेबल और मेटाडेटा टेबल, Cloud Spanner डेटाबेस में मौजूद हैं.
8. अपने डेटा की पुष्टि करना
[TODO]
9. अपने ऐप्लिकेशन को Spanner पर स्विच करना (कटओवर)
माइग्रेशन के बाद, अपने डेटा के सटीक और सही होने की पुष्टि करने के बाद, अपने ऐप्लिकेशन के ऑपरेशनल फ़ोकस को अपने लेगसी Cassandra सिस्टम से, नए Google Cloud Spanner डेटाबेस पर ट्रांज़िशन करना अहम कदम है. ट्रांज़िशन की इस अहम अवधि को आम तौर पर "कटओवर" कहा जाता है.
कटओवर फ़ेज़ उस समय शुरू होता है, जब लाइव ऐप्लिकेशन ट्रैफ़िक को ओरिजनल Cassandra क्लस्टर से रीडायरेक्ट करके, सीधे Spanner के मज़बूत और स्केलेबल इन्फ़्रास्ट्रक्चर से कनेक्ट किया जाता है. इस ट्रांज़िशन से पता चलता है कि ऐप्लिकेशन, Spanner की सुविधाओं का आसानी से कैसे फ़ायदा ले सकते हैं. खास तौर पर, Spanner Cassandra इंटरफ़ेस का इस्तेमाल करते समय.
Spanner Cassandra इंटरफ़ेस की मदद से, कटओवर की प्रोसेस को आसान बनाया गया है. इसमें मुख्य रूप से, अपने क्लाइंट ऐप्लिकेशन को कॉन्फ़िगर करना शामिल है, ताकि सभी डेटा इंटरैक्शन के लिए, नेटिव Spanner Cassandra क्लाइंट का इस्तेमाल किया जा सके. आपके ऐप्लिकेशन, Cassandra (ऑरिजिन) डेटाबेस के साथ कम्यूनिकेट करने के बजाय, सीधे Spanner (टारगेट) में डेटा को आसानी से पढ़ और लिख पाएंगे. कनेक्टिविटी में यह बुनियादी बदलाव, आम तौर पर SpannerCqlSessionBuilder
का इस्तेमाल करके किया जाता है. यह Spanner Cassandra क्लाइंट लाइब्रेरी का एक मुख्य कॉम्पोनेंट है, जो आपके Spanner इंस्टेंस से कनेक्शन बनाने में मदद करता है. इससे आपके ऐप्लिकेशन के पूरे डेटा ट्रैफ़िक को Spanner पर असरदार तरीके से रीराउंड किया जाता है.
cassandra-java-driver
लाइब्रेरी का इस्तेमाल कर रहे Java ऐप्लिकेशन के लिए, Spanner Cassandra Java क्लाइंट को इंटिग्रेट करने के लिए, CqlSession
को शुरू करने के तरीके में सिर्फ़ छोटे बदलाव करने होंगे.
google-cloud-spanner-cassandra डिपेंडेंसी पाना
Spanner Cassandra क्लाइंट का इस्तेमाल शुरू करने के लिए, आपको सबसे पहले अपने प्रोजेक्ट में इसकी डिपेंडेंसी शामिल करनी होगी. google-cloud-spanner-cassandra
आर्टफ़ैक्ट, ग्रुप आईडी com.google.cloud
के तहत Maven Central में पब्लिश किए जाते हैं. अपने Java प्रोजेक्ट में मौजूदा <dependencies>
सेक्शन में, यह नई डिपेंडेंसी जोड़ें. google-cloud-spanner-cassandra
डिपेंडेंसी को शामिल करने का आसान तरीका यहां बताया गया है:
<!-- native Spanner Cassandra Client -->
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-cassandra</artifactId>
<version>0.2.0</version>
</dependency>
</dependencies>
Spanner से कनेक्ट करने के लिए, कनेक्शन कॉन्फ़िगरेशन बदलना
ज़रूरी डिपेंडेंसी जोड़ने के बाद, Spanner डेटाबेस से कनेक्ट करने के लिए, अपने कनेक्शन कॉन्फ़िगरेशन को बदलना होगा.
Cassandra क्लस्टर के साथ इंटरैक्ट करने वाला कोई सामान्य ऐप्लिकेशन, कनेक्शन बनाने के लिए अक्सर इस तरह के कोड का इस्तेमाल करता है:
CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("127.0.0.1", 9042))
.withLocalDatacenter("datacenter1")
.withAuthCredentials("username", "password")
.build();
इस कनेक्शन को Spanner पर रीडायरेक्ट करने के लिए, आपको CqlSession
बनाने के लॉजिक में बदलाव करना होगा. cassandra-java-driver
से सीधे स्टैंडर्ड CqlSessionBuilder
का इस्तेमाल करने के बजाय, Spanner Cassandra क्लाइंट से मिले SpannerCqlSession.builder()
का इस्तेमाल किया जाएगा. अपने कनेक्शन कोड में बदलाव करने का तरीका बताने वाला उदाहरण यहां दिया गया है:
String databaseUri = "projects/<your-gcp-project>/instances/<your-spanner-instance>/databases/<your-spanner-database>";
CqlSession session = SpannerCqlSession.builder()
.setDatabaseUri(databaseUri)
.addContactPoint(new InetSocketAddress("localhost", 9042))
.withLocalDatacenter("datacenter1")
.build();
SpannerCqlSession.builder()
का इस्तेमाल करके CqlSession
को इंस्टैंशिएट करके और सही databaseUri
उपलब्ध कराकर, आपका ऐप्लिकेशन अब Spanner Cassandra क्लाइंट के ज़रिए, आपके टारगेट किए गए Spanner डेटाबेस से कनेक्शन बना लेगा. इस अहम बदलाव से यह पक्का होता है कि आपके ऐप्लिकेशन के बाद के सभी रीड और राइट ऑपरेशन, Spanner को भेजे जाएंगे और उससे दिखाए जाएंगे. इससे शुरुआती कटओवर को असरदार तरीके से पूरा किया जा सकेगा. इस समय, आपका ऐप्लिकेशन उम्मीद के मुताबिक काम करना जारी रखेगा. अब यह Spanner के स्केलेबल और भरोसेमंद प्लैटफ़ॉर्म पर काम करेगा.
बारीकियां: Spanner Cassandra क्लाइंट कैसे काम करता है
Spanner Cassandra क्लाइंट, लोकल टीसीपी प्रॉक्सी के तौर पर काम करता है. यह ड्राइवर या क्लाइंट टूल से भेजे गए रॉ Cassandra प्रोटोकॉल बाइट को इंटरसेप्ट करता है. इसके बाद, यह Spanner के साथ कम्यूनिकेट करने के लिए, इन बाइट को ज़रूरी मेटाडेटा के साथ gRPC मैसेज में रैप कर देता है. Spanner से मिले जवाबों को फिर से Cassandra वायर फ़ॉर्मैट में बदला जाता है और उन्हें ओरिजनल ड्राइवर या टूल पर भेजा जाता है.
जब आपको यह भरोसा हो जाए कि Spanner सभी ट्रैफ़िक को सही तरीके से दिखा रहा है, तो ये काम किए जा सकते हैं:
- डेटा को दो जगहों पर एक्सपोर्ट होने से रोकें.
- ओरिजनल Cassandra क्लस्टर को बंद कर दें.
10. डेटा मिटाना (ज़रूरी नहीं)
साफ़ करने के लिए, Cloud Console के Spanner सेक्शन में जाएं और कोडलैब में बनाया गया cassandra-adapter-demo
इंस्टेंस मिटाएं.
Cassandra डेटाबेस मिटाएं (अगर इसे स्थानीय तौर पर इंस्टॉल किया गया है या सेव किया गया है)
अगर आपने यहां बनाए गए Compute Engine VM के बाहर Cassandra इंस्टॉल किया है, तो डेटा हटाने या Cassandra को अनइंस्टॉल करने के लिए, सही तरीके अपनाएं.
11. बधाई हो!
आगे क्या करना है?
- Cloud Spanner के बारे में ज़्यादा जानें.
- Cassandra इंटरफ़ेस के बारे में ज़्यादा जानें.