1. ভূমিকা
স্প্যানার হল একটি সম্পূর্ণরূপে পরিচালিত, অনুভূমিকভাবে স্কেলযোগ্য, বিশ্বব্যাপী বিতরণ করা ডাটাবেস পরিষেবা যা রিলেশনাল এবং অ-রিলেশনাল ওয়ার্কলোডের জন্য দুর্দান্ত।
স্প্যানারের ক্যাসান্ড্রা ইন্টারফেস আপনাকে পরিচিত ক্যাসান্ড্রা টুল এবং সিনট্যাক্স ব্যবহার করে স্প্যানারের সম্পূর্ণরূপে পরিচালিত, মাপযোগ্য, এবং অত্যন্ত উপলব্ধ পরিকাঠামোর সুবিধা নিতে দেয়।
আপনি কি শিখবেন
- কিভাবে একটি স্প্যানার ইনস্ট্যান্স এবং ডাটাবেস সেট আপ করবেন।
- আপনার ক্যাসান্দ্রা স্কিমা এবং ডেটা মডেল কীভাবে রূপান্তর করবেন।
- ক্যাসান্দ্রা থেকে স্প্যানারে কীভাবে আপনার ঐতিহাসিক ডেটা বাল্ক এক্সপোর্ট করবেন।
- ক্যাসান্দ্রার পরিবর্তে কীভাবে আপনার আবেদনটি স্প্যানারে নির্দেশ করবেন।
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্রকল্প যা একটি বিলিং অ্যাকাউন্টের সাথে সংযুক্ত৷
-
gcloud
সিএলআই ইনস্টল এবং কনফিগার করা মেশিনে অ্যাক্সেস করুন বা Google ক্লাউড শেল ব্যবহার করুন। - একটি ওয়েব ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স ।
2. সেটআপ এবং প্রয়োজনীয়তা
একটি GCP প্রকল্প তৈরি করুন
Google ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
বিলিং সেটআপ
এর পরে, আপনাকে বিলিং পরিচালনার ব্যবহারকারী নির্দেশিকা অনুসরণ করতে হবে এবং ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷ এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে, আপনি "ধাপ 9 পরিষ্কার করা" অনুসরণ করে কোডল্যাবের শেষে স্প্যানার ইনস্ট্যান্স বন্ধ করতে পারেন।
ক্লাউড শেল শুরু করুন
যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।
Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:
পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারে করা যেতে পারে। আপনার কিছু ইন্সটল করার দরকার নেই।
পরবর্তী আপ
এর পরে, আপনি ক্যাসান্দ্রা ক্লাস্টার স্থাপন করবেন।
3. ক্যাসান্দ্রা ক্লাস্টার স্থাপন করুন (উৎপত্তি)
এই কোডল্যাবের জন্য, আমরা কম্পিউট ইঞ্জিনে একটি একক-নোড ক্যাসান্দ্রা ক্লাস্টার সেট আপ করব।
1. ক্যাসান্দ্রার জন্য একটি GCE VM তৈরি করুন৷
একটি উদাহরণ তৈরি করতে, আগে প্রবিধান করা ক্লাউড শেল থেকে gcloud compute instances create
কমান্ড ব্যবহার করুন।
gcloud compute instances create cassandra-origin \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--zone=us-central1-a
2. ক্যাসান্ড্রা ইনস্টল করুন
নীচের নির্দেশাবলী অনুসরণ করে Navigation menu
পৃষ্ঠা থেকে VM Instances
নেভিগেট করুন: .
cassandra-origin
ভিএম অনুসন্ধান করুন এবং দেখানো হিসাবে SSH ব্যবহার করে VM এর সাথে সংযোগ করুন:
.
আপনি যে VM তৈরি করেছেন এবং sshed করেছেন তাতে Cassandra ইনস্টল করতে নিম্নলিখিত কমান্ডগুলি চালান।
জাভা ইনস্টল করুন (ক্যাসান্ড্রা নির্ভরতা)
sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless
ক্যাসান্দ্রা সংগ্রহস্থল যোগ করুন
echo "deb [signed-by=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
sudo curl -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS
ক্যাসান্দ্রা ইনস্টল করুন
sudo apt-get update
sudo apt-get install -y cassandra
Cassandra পরিষেবার জন্য শোনার ঠিকানা সেট করুন।
এখানে আমরা অতিরিক্ত নিরাপত্তার জন্য Cassandra VM-এর অভ্যন্তরীণ IP ঠিকানা ব্যবহার করি।
আপনার হোস্ট মেশিনের আইপি ঠিকানা নোট করুন
আপনি হয় ক্লাউড শেলে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন বা ক্লাউড কনসোলের VM Instances
পৃষ্ঠা থেকে এটি পেতে পারেন।
gcloud compute instances describe cassandra-origin --format="get(networkInterfaces[0].networkIP)" --zone=us-central1-a
বা
.
কনফিগার ফাইলে ঠিকানা আপডেট করুন
আপনি ক্যাসান্ড্রা কনফিগার ফাইল আপডেট করতে আপনার পছন্দের সম্পাদক ব্যবহার করতে পারেন
sudo vim /etc/cassandra/cassandra.yaml
rpc_address:
VM এর IP ঠিকানায়, ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন।
VM-এ ক্যাসান্দ্রা পরিষেবা সক্ষম করুন
sudo systemctl enable cassandra
sudo systemctl stop cassandra
sudo systemctl start cassandra
sudo systemctl status cassandra
3. একটি কীস্পেস এবং টেবিল তৈরি করুন {create-keyspace-and-table}
আমরা একটি "ব্যবহারকারী" টেবিল উদাহরণ ব্যবহার করব এবং "বিশ্লেষণ" নামে একটি কীস্পেস তৈরি করব।
export CQLSH_HOST=<IP of the VM added as rpc_address>
/usr/bin/cqlsh
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,
);
-- Insert 5 rows
INSERT INTO users (id, active, username) VALUES (1, true, 'd_knuth');
INSERT INTO users (id, active, username) VALUES (2, true, 'sanjay_ghemawat');
INSERT INTO users (id, active, username) VALUES (3, false, 'gracehopper');
INSERT INTO users (id, active, username) VALUES (4, true, 'brian_kernighan');
INSERT INTO users (id, active, username) VALUES (5, true, 'jeff_dean');
INSERT INTO users (id, active, username) VALUES (6, true, 'jaime_levy');
-- Select all users to verify the inserts.
SELECT * from users;
-- Exit cqlsh
EXIT;
SSH সেশনটি খোলা রাখুন বা এই VM এর IP ঠিকানাটি নোট করুন ( hostname -I
)।
পরবর্তী আপ
এরপরে, আপনি একটি ক্লাউড স্প্যানার ইনস্ট্যান্স এবং ডেটাবেস সেট আপ করবেন।
4. একটি স্প্যানার উদাহরণ তৈরি করুন (লক্ষ্য)
স্প্যানারে, একটি উদাহরণ হল কম্পিউটিং এবং স্টোরেজ সংস্থানগুলির একটি ক্লাস্টার যা এক বা একাধিক স্প্যানার ডাটাবেস হোস্ট করে। এই কোডল্যাবের জন্য একটি স্প্যানার ডাটাবেস হোস্ট করতে আপনার কমপক্ষে 1টি উদাহরণের প্রয়োজন হবে৷
জিক্লাউড এসডিকে সংস্করণ পরীক্ষা করুন
একটি দৃষ্টান্ত তৈরি করার আগে, নিশ্চিত করুন যে Google ক্লাউড শেলের gcloud SDK প্রয়োজনীয় সংস্করণে আপডেট করা হয়েছে - gcloud SDK 531.0.0 এর চেয়ে বড় যেকোনো সংস্করণ। আপনি নীচের কমান্ড অনুসরণ করে আপনার gcloud SDK সংস্করণ খুঁজে পেতে পারেন।
$ gcloud version | grep Google
এখানে একটি উদাহরণ আউটপুট:
Google Cloud SDK 489.0.0
আপনি যে সংস্করণটি ব্যবহার করছেন সেটি যদি প্রয়োজনীয় 531.0.0 সংস্করণের (পূর্ববর্তী উদাহরণে 489.0.0
) এর চেয়ে আগের হয়, তাহলে আপনাকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার Google ক্লাউড 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
স্প্যানার API সক্ষম করুন
ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্প আইডি সেট আপ করা আছে। বর্তমানে কনফিগার করা প্রকল্প আইডি খুঁজে পেতে নীচের প্রথম কমান্ডটি ব্যবহার করুন। ফলাফল প্রত্যাশিত না হলে, নীচের দ্বিতীয় কমান্ডটি সঠিকটি সেট করে।
gcloud config get-value project
gcloud config set project [YOUR-DESIRED-PROJECT-ID]
us-central1
এ আপনার ডিফল্ট অঞ্চল কনফিগার করুন। স্প্যানার আঞ্চলিক কনফিগারেশন দ্বারা সমর্থিত একটি ভিন্ন অঞ্চলে এটিকে নির্দ্বিধায় পরিবর্তন করুন৷
gcloud config set compute/region us-central1
স্প্যানার API সক্ষম করুন:
gcloud services enable spanner.googleapis.com
স্প্যানার উদাহরণ তৈরি করুন
এই বিভাগে, আপনি একটি ফ্রি ট্রায়াল ইনস্ট্যান্স বা একটি প্রভিশনড ইনস্ট্যান্স তৈরি করবেন। এই কোডল্যাব জুড়ে, স্প্যানার ক্যাসান্দ্রা অ্যাডাপ্টার ইনস্ট্যান্স আইডিটি হল cassandra-adapter-demo
, export
কমান্ড লাইন ব্যবহার করে SPANNER_INSTANCE_ID
ভেরিয়েবল হিসাবে সেট করা হয়েছে। ঐচ্ছিকভাবে, আপনি আপনার নিজের ইনস্ট্যান্স আইডি নাম বাছাই করতে পারেন।
একটি ফ্রি-ট্রায়াল স্প্যানার ইনস্ট্যান্স তৈরি করুন
একটি স্প্যানার 90-দিনের বিনামূল্যের ট্রায়াল ইনস্ট্যান্স একটি Google অ্যাকাউন্ট সহ যে কেউ তাদের প্রকল্পে ক্লাউড বিলিং সক্ষম করা আছে তাদের জন্য উপলব্ধ৷ আপনি চার্জ করা হবে না যদি না আপনি আপনার বিনামূল্যের ট্রায়াল ইনস্ট্যান্সকে একটি প্রদত্ত দৃষ্টান্তে আপগ্রেড করতে চান৷ স্প্যানার ক্যাসান্দ্রা অ্যাডাপ্টার বিনামূল্যে ট্রায়াল উদাহরণে সমর্থিত। যোগ্য হলে, ক্লাউড শেল খুলে এই কমান্ডটি চালিয়ে একটি বিনামূল্যের ট্রায়ালের উদাহরণ তৈরি করুন:
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.
5. ক্যাসান্দ্রা স্কিমা এবং ডেটা মডেল স্প্যানারে স্থানান্তর করুন
ক্যাসান্ড্রা ডাটাবেস থেকে স্প্যানারে ডেটা স্থানান্তরের প্রাথমিক এবং গুরুত্বপূর্ণ ধাপে স্প্যানারের কাঠামোগত এবং ডেটা টাইপ প্রয়োজনীয়তার সাথে সারিবদ্ধ করার জন্য বিদ্যমান ক্যাসান্দ্রা স্কিমাকে রূপান্তর করা জড়িত।
এই জটিল স্কিমা মাইগ্রেশন প্রক্রিয়াটিকে স্ট্রীমলাইন করতে, স্প্যানার দ্বারা প্রদত্ত দুটি মূল্যবান ওপেন সোর্স টুলের যেকোনো একটি ব্যবহার করুন:
- স্প্যানার মাইগ্রেশন টুল : এই টুলটি আপনাকে একটি বিদ্যমান ক্যাসান্দ্রা ডাটাবেসের সাথে সংযোগ করে স্কিমাকে স্প্যানারে স্থানান্তরিত করে স্কিমা স্থানান্তর করতে সহায়তা করে। এই টুলটি
gcloud cli
এর অংশ হিসাবে উপলব্ধ। - স্প্যানার ক্যাসান্দ্রা স্কিমা টুল : এই টুলটি আপনাকে ক্যাসান্দ্রা থেকে স্প্যানারে রপ্তানি করা DDL রূপান্তর করতে সাহায্য করে। আপনি কোডল্যাবের জন্য এই দুটি টুলের যেকোনো একটি ব্যবহার করতে পারেন। এই কোডল্যাবে, আমরা স্কিমা স্থানান্তর করতে স্প্যানার মাইগ্রেশন টুল ব্যবহার করব।
স্প্যানার মাইগ্রেশন টুল
স্প্যানার মাইগ্রেশন টুল মাইএসকিউএল, পোস্টগ্রেস, ক্যাসান্ড্রা ইত্যাদির মতো বিভিন্ন ডেটা উত্স থেকে স্কিমা স্থানান্তর করতে সহায়তা করে।
যদিও এই কোডল্যাবের উদ্দেশ্যে আমরা এই টুলের CLI ব্যবহার করব, আমরা এই টুলের UI-ভিত্তিক সংস্করণটি অন্বেষণ এবং ব্যবহার করার পরামর্শ দিই, যা প্রয়োগ করার আগে আপনার স্প্যানার স্কিমাতে পরিবর্তন করতেও সাহায্য করে।
মনে রাখবেন যে যদি spanner-migration-tool
ক্লাউড শেলে চালানো হয়, তবে এটি আপনার ক্যাসান্দ্রা ভিএম-এর অভ্যন্তরীণ আইপি ঠিকানায় অ্যাক্সেস নাও পেতে পারে। তাই, আমরা VM-এ একই কাজ করার পরামর্শ দিচ্ছি যেখানে আপনি Cassandra ইনস্টল করেছেন।
আপনি যেখানে ক্যাসান্দ্রা ইনস্টল করেছেন সেখানে VM-এ নিম্নলিখিতটি চালান।
স্প্যানার মাইগ্রেশন টুল ইনস্টল করুন
sudo apt-get update
sudo apt-get install --upgrade google-cloud-sdk-spanner-migration-tool
যদি আপনি ইনস্টলেশনের সাথে কোন সমস্যার সম্মুখীন হন, বিস্তারিত পদক্ষেপের জন্য installing-spanner-migration-tool পড়ুন।
GCloud শংসাপত্র রিফ্রেশ করুন
gcloud auth login
gcloud auth application-default login
মাইগ্রেট স্কিমা
export CASSANDRA_HOST=`<ip address of the VM used as rpc_address above>`
export PROJECT=`<PROJECT_ID>`
gcloud alpha spanner migrate schema \
--source=cassandra \
--source-profile="host=${CASSANDRA_HOST},user=cassandra,password=cassandra,port=9042,keyspace=analytics,datacenter=datacenter1" \
--target-profile="project=${PROJECT},instance=cassandra-adapter-demo,dbName=analytics" \
--project=${PROJECT}
স্প্যানার ডিডিএল যাচাই করুন
gcloud spanner databases ddl describe analytics --instance=cassandra-adapter-demo
স্কিমা মাইগ্রেশনের শেষে, এই কমান্ডের আউটপুট হওয়া উচিত:
CREATE TABLE users ( active BOOL OPTIONS ( cassandra_type = 'boolean' ), id INT64 NOT NULL OPTIONS ( cassandra_type = 'int' ), username STRING(MAX) OPTIONS ( cassandra_type = 'text' ), ) PRIMARY KEY(id);
(ঐচ্ছিক) রূপান্তরিত DDL দেখুন
আপনি রূপান্তরিত ডিডিএল দেখতে পারেন এবং এটি স্প্যানারে পুনরায় প্রয়োগ করতে পারেন (যদি আপনার অতিরিক্ত পরিবর্তনের প্রয়োজন হয়)
cat `ls -t cassandra_*schema.ddl.txt | head -n 1`
এই কমান্ডের আউটপুট হবে
CREATE TABLE `users` ( `active` BOOL OPTIONS (cassandra_type = 'boolean'), `id` INT64 NOT NULL OPTIONS (cassandra_type = 'int'), `username` STRING(MAX) OPTIONS (cassandra_type = 'text'), ) PRIMARY KEY (`id`)
(ঐচ্ছিক) রূপান্তর প্রতিবেদন দেখুন
cat `ls -t cassandra_*report.txt | head -n 1`
রূপান্তর রিপোর্ট আপনার মনে রাখা উচিত সমস্যা হাইলাইট. উদাহরণস্বরূপ, যদি উৎস এবং স্প্যানারের মধ্যে একটি কলামের সর্বোচ্চ নির্ভুলতার মধ্যে একটি অমিল থাকে, তাহলে এটি এখানে হাইলাইট করা হবে।
6. আপনার ঐতিহাসিক ডেটা বাল্ক এক্সপোর্ট করুন
বাল্ক মাইগ্রেশন করতে, আপনাকে করতে হবে:
- একটি বিদ্যমান GCS বালতি বিধান বা পুনরায় ব্যবহার করুন।
- বালতিতে ক্যাসান্দ্রা ড্রাইভার কনফিগারেশন ফাইল আপলোড করুন
- বাল্ক মাইগ্রেশন চালু করুন।
যদিও আপনি ক্লাউড শেল বা নতুন প্রভিশন করা VM থেকে বাল্ক মাইগ্রেশন চালু করতে পারেন, আমরা এই কোডল্যাবের জন্য VM ব্যবহার করার পরামর্শ দিই কারণ একটি কনফিগার ফাইল তৈরি করার মতো কিছু ধাপ স্থানীয় স্টোরেজে ফাইলগুলিকে বজায় রাখবে।
একটি GCS বালতি বিধান.
এই ধাপের শেষে, আপনার একটি GCS বালতি প্রবিধান করা উচিত ছিল এবং CASSANDRA_BUCKET_NAME
নামের একটি ভেরিয়েবলে এর পাথ এক্সপোর্ট করা উচিত ছিল। আপনি যদি একটি বিদ্যমান বালতি পুনঃব্যবহার করতে চান তবে আপনি কেবল পাথ রপ্তানি করে এগিয়ে যেতে পারেন।
if [ -z ${CASSANDRA_BUCKET_NAME} ]; then
export CASSANDRA_BUCKET_NAME="gs://cassandra-demo-$(date +%Y-%m-%d-%H-%M-%S)-$(head /dev/urandom | tr -dc a-z | head -c 20)"
gcloud storage buckets create "${CASSANDRA_BUCKET_NAME}"
else
echo "using existing bucket ${CASSANDRA_BUCKET_NAME}"
fi
ড্রাইভার কনফিগারেশন ফাইল তৈরি করুন এবং আপলোড করুন
এখানে আমরা একটি খুব মৌলিক Cassandra ড্রাইভার কনফিগারেশন ফাইল আপলোড করি। ফাইলটির সম্পূর্ণ বিন্যাসের জন্য অনুগ্রহ করে এটি পড়ুন।
# Configuration for the Cassandra instance and GCS bucket
INSTANCE_NAME="cassandra-origin"
ZONE="us-central1-a"
CASSANDRA_PORT="9042"
# Retrieve the internal IP address of the Cassandra instance
CASSANDRA_IP=$(gcloud compute instances describe "${INSTANCE_NAME}" \
--format="get(networkInterfaces[0].networkIP)" \
--zone="${ZONE}")
# Check if the IP was successfully retrieved
if [[ -z "${CASSANDRA_IP}" ]]; then
echo "Error: Could not retrieve Cassandra instance IP."
exit 1
fi
# Define the full contact point
CONTACT_POINT="${CASSANDRA_IP}:${CASSANDRA_PORT}"
# Create a temporary file with the specified content
TMP_FILE=$(mktemp)
cat <<EOF > "${TMP_FILE}"
# Reference configuration for the DataStax Java driver for Apache Cassandra®.
# This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md.
datastax-java-driver {
basic.contact-points = ["${CONTACT_POINT}"]
basic.session-keyspace = analytics
basic.load-balancing-policy.local-datacenter = datacenter1
advanced.auth-provider {
class = PlainTextAuthProvider
username = cassandra
password = cassandra
}
}
EOF
# Upload the temporary file to the specified GCS bucket
if gsutil cp "${TMP_FILE}" "${CASSANDRA_BUCKET_NAME}/cassandra.conf"; then
echo "Successfully uploaded ${TMP_FILE} to ${CASSANDRA_BUCKET_NAME}/cassandra.conf"
# Concatenate (cat) the uploaded file from GCS
echo "Displaying the content of the uploaded file:"
gsutil cat "${CASSANDRA_BUCKET_NAME}/cassandra.conf"
else
echo "Error: Failed to upload file to GCS."
fi
# Clean up the temporary file
rm "${TMP_FILE}"
বাল্ক মাইগ্রেশন চালান
স্প্যানারে আপনার ডেটার বাল্ক মাইগ্রেশন চালানোর জন্য এটি একটি নমুনা কমান্ড। প্রকৃত উৎপাদন ব্যবহারের ক্ষেত্রে, আপনাকে মেশিনের ধরন পরিবর্তন করতে হবে এবং আপনার পছন্দসই স্কেল এবং থ্রুপুট অনুযায়ী গণনা করতে হবে। বিকল্পগুলির সম্পূর্ণ তালিকার জন্য অনুগ্রহ করে README_Sourcedb_to_Spanner.md#cassandra-to-spanner-bulk-migration দেখুন।
gcloud dataflow flex-template run "sourcedb-to-spanner-flex-job" \
--project "`gcloud config get-value project`" \
--region "us-central1" \
--max-workers "2" \
--num-workers "1" \
--worker-machine-type "e2-standard-8" \
--template-file-gcs-location "gs://dataflow-templates-us-central1/latest/flex/Sourcedb_to_Spanner_Flex" \
--additional-experiments="[\"disable_runner_v2\"]" \
--parameters "sourceDbDialect=CASSANDRA" \
--parameters "insertOnlyModeForSpannerMutations=true" \
--parameters "sourceConfigURL=$CASSANDRA_BUCKET_NAME/cassandra.conf" \
--parameters "instanceId=cassandra-adapter-demo" \
--parameters "databaseId=analytics" \
--parameters "projectId=`gcloud config get-value project`" \
--parameters "outputDirectory=$CASSANDRA_BUCKET_NAME/output" \
--parameters "batchSizeForSpannerMutations=1"
এটি নিচের মত আউটপুট তৈরি করবে। তৈরি করা id
নোট করুন এবং ডেটাফ্লো কাজের স্থিতি জিজ্ঞাসা করতে একই ব্যবহার করুন।
job: createTime: '2025-08-08T09:41:09.820267Z' currentStateTime: '1970-01-01T00:00:00Z' id: 2025-08-08_02_41_09-17637291823018196600 location: us-central1 name: sourcedb-to-spanner-flex-job projectId: span-cloud-ck-testing-external startTime: '2025-08-08T09:41:09.820267Z'
কাজের স্থিতি পরীক্ষা করতে নীচের কমান্ডটি চালান এবং স্থিতি JOB_STATE_DONE
এ পরিবর্তিত হওয়া পর্যন্ত অপেক্ষা করুন।
gcloud dataflow jobs describe --region=us-central1 <dataflow job id> | grep "currentState:"
প্রাথমিকভাবে, কাজটি একটি সারিবদ্ধ অবস্থায় থাকবে
currentState: JOB_STATE_QUEUED
যখন কাজটি সারিবদ্ধ/চলছে, আমরা আপনাকে কাজটি নিরীক্ষণের জন্য ক্লাউড কনসোল UI-তে Dataflow/Jobs
পৃষ্ঠাটি অন্বেষণ করার পরামর্শ দিই।
একবার হয়ে গেলে, কাজের অবস্থা এতে পরিবর্তিত হবে:
currentState: JOB_STATE_DONE
7. আপনার আবেদনটি স্প্যানারে নির্দেশ করুন (কাটওভার)
মাইগ্রেশন পর্বের পরে আপনার ডেটার নির্ভুলতা এবং অখণ্ডতা সাবধানতার সাথে যাচাই করার পরে, মূল পদক্ষেপটি হল আপনার উত্তরাধিকার ক্যাসান্ড্রা সিস্টেম থেকে নতুন জনবহুল স্প্যানার ডাটাবেসে আপনার অ্যাপ্লিকেশনটির অপারেশনাল ফোকাস স্থানান্তর করা। এই জটিল রূপান্তর সময়টিকে সাধারণত " কাটওভার " বলা হয়।
কাটওভার ফেজ সেই মুহূর্তটিকে চিহ্নিত করে যখন লাইভ অ্যাপ্লিকেশন ট্র্যাফিক মূল ক্যাসান্ড্রা ক্লাস্টার থেকে দূরে পুনঃনির্দেশিত হয় এবং সরাসরি শক্তিশালী এবং মাপযোগ্য স্প্যানার পরিকাঠামোর সাথে সংযুক্ত হয়। এই রূপান্তরটি প্রদর্শন করে যে সহজে অ্যাপ্লিকেশনগুলি স্প্যানারের শক্তিকে কাজে লাগাতে পারে, বিশেষ করে যখন স্প্যানার ক্যাসান্ড্রা ইন্টারফেস ব্যবহার করা হয়।
স্প্যানার ক্যাসান্ড্রা ইন্টারফেসের সাথে, কাটওভার প্রক্রিয়াটি সুগম করা হয়েছে। এটি প্রাথমিকভাবে সমস্ত ডেটা ইন্টারঅ্যাকশনের জন্য নেটিভ স্প্যানার ক্যাসান্ড্রা ক্লায়েন্ট ব্যবহার করার জন্য আপনার ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে কনফিগার করা জড়িত। আপনার ক্যাসান্ড্রা (অরিজিন) ডাটাবেসের সাথে যোগাযোগ করার পরিবর্তে, আপনার অ্যাপ্লিকেশনগুলি নির্বিঘ্নে স্প্যানার (লক্ষ্য) এ সরাসরি ডেটা পড়া এবং লেখা শুরু করবে। সংযোগের এই মৌলিক পরিবর্তনটি সাধারণত SpannerCqlSessionBuilder
ব্যবহারের মাধ্যমে অর্জন করা হয়, স্প্যানার ক্যাসান্ড্রা ক্লায়েন্ট লাইব্রেরির একটি মূল উপাদান যা আপনার স্প্যানার উদাহরণের সাথে সংযোগ স্থাপনের সুবিধা দেয়। এটি কার্যকরভাবে আপনার অ্যাপ্লিকেশানের সমগ্র ডেটা ট্রাফিক প্রবাহকে স্প্যানারে পুনরায় রুট করে।
জাভা অ্যাপ্লিকেশনগুলির জন্য ইতিমধ্যেই cassandra-java-driver
লাইব্রেরি ব্যবহার করছে, স্প্যানার ক্যাসান্দ্রা জাভা ক্লায়েন্টকে একীভূত করার জন্য CqlSession
প্রারম্ভিকতায় শুধুমাত্র ছোটখাটো পরিবর্তন প্রয়োজন।
গুগল-ক্লাউড-স্প্যানার-ক্যাসান্ড্রা নির্ভরতা পাওয়া
স্প্যানার ক্যাসান্দ্রা ক্লায়েন্ট ব্যবহার শুরু করতে, আপনাকে প্রথমে আপনার প্রকল্পে এর নির্ভরতা অন্তর্ভুক্ত করতে হবে। google-cloud-spanner-cassandra
artifacts com.google.cloud
গ্রুপ আইডির অধীনে মাভেন সেন্ট্রালে প্রকাশিত হয়েছে। আপনার জাভা প্রকল্পে বিদ্যমান <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>
স্প্যানারে সংযোগ করতে সংযোগ কনফিগারেশন পরিবর্তন করুন
একবার আপনি প্রয়োজনীয় নির্ভরতা যোগ করলে, পরবর্তী ধাপ হল স্প্যানার ডাটাবেসের সাথে সংযোগ করতে আপনার সংযোগ কনফিগারেশন পরিবর্তন করা।
ক্যাসান্ড্রা ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করা একটি সাধারণ অ্যাপ্লিকেশন প্রায়শই একটি সংযোগ স্থাপন করতে নিম্নলিখিতগুলির মতো কোড ব্যবহার করে:
CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("127.0.0.1", 9042))
.withLocalDatacenter("datacenter1")
.withAuthCredentials("username", "password")
.build();
এই সংযোগটি স্প্যানারে পুনঃনির্দেশিত করতে, আপনাকে আপনার 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
প্রদান করে, আপনার অ্যাপ্লিকেশনটি এখন আপনার লক্ষ্য স্প্যানার ডাটাবেসের সাথে স্প্যানার ক্যাসান্দ্রা ক্লায়েন্টের মাধ্যমে একটি সংযোগ স্থাপন করবে। এই গুরুত্বপূর্ণ পরিবর্তনটি নিশ্চিত করে যে আপনার অ্যাপ্লিকেশন দ্বারা সম্পাদিত পরবর্তী সমস্ত পঠন এবং লেখার ক্রিয়াকলাপগুলি স্প্যানার দ্বারা পরিচালিত হবে এবং পরিবেশন করা হবে, কার্যকরভাবে প্রাথমিক কাটওভারটি সম্পূর্ণ করবে। এই মুহুর্তে, আপনার অ্যাপ্লিকেশনটি প্রত্যাশিত হিসাবে কাজ করা চালিয়ে যাওয়া উচিত, এখন স্প্যানারের মাপযোগ্যতা এবং নির্ভরযোগ্যতা দ্বারা চালিত।
আন্ডার দ্য হুড: কিভাবে স্প্যানার ক্যাসান্দ্রা ক্লায়েন্ট কাজ করে
স্প্যানার ক্যাসান্ড্রা ক্লায়েন্ট একটি স্থানীয় TCP প্রক্সি হিসাবে কাজ করে, ড্রাইভার বা ক্লায়েন্ট টুল দ্বারা প্রেরিত কাঁচা ক্যাসান্ড্রা প্রোটোকল বাইটগুলিকে বাধা দেয়। তারপরে এটি স্প্যানারের সাথে যোগাযোগের জন্য প্রয়োজনীয় মেটাডেটা সহ এই বাইটগুলিকে জিআরপিসি বার্তাগুলিতে মোড়ানো হয়। স্প্যানার থেকে প্রতিক্রিয়াগুলি ক্যাসান্দ্রা তারের ফর্ম্যাটে আবার অনুবাদ করা হয় এবং মূল ড্রাইভার বা টুলে ফেরত পাঠানো হয়।
একবার আপনি নিশ্চিত হন যে স্প্যানার সমস্ত ট্রাফিক সঠিকভাবে পরিবেশন করছে, আপনি শেষ পর্যন্ত:
- মূল ক্যাসান্দ্রা ক্লাস্টার বাতিল করুন।
8. পরিষ্কার করা (ঐচ্ছিক)
পরিষ্কার করতে, কেবল ক্লাউড কনসোলের স্প্যানার বিভাগে যান এবং কোডল্যাবে আমরা তৈরি করা cassandra-adapter-demo
উদাহরণটি মুছুন।
ক্যাসান্ড্রা ডাটাবেস মুছুন (যদি স্থানীয়ভাবে ইনস্টল করা থাকে বা অব্যাহত থাকে)
আপনি যদি এখানে তৈরি করা কম্পিউট ইঞ্জিন VM-এর বাইরে Cassandra ইনস্টল করেন, তাহলে ডেটা সরাতে বা Cassandra আনইনস্টল করার জন্য উপযুক্ত পদক্ষেপগুলি অনুসরণ করুন।
9. অভিনন্দন!
এরপর কি?
- স্প্যানার সম্পর্কে আরও জানুন।
- ক্যাসান্দ্রা ইন্টারফেস সম্পর্কে আরও জানুন।