1. مقدمه
Spanner یک سرویس پایگاه داده کاملاً مدیریت شده، افقی مقیاس پذیر و توزیع شده در سطح جهانی است که برای بارهای کاری رابطه ای و غیر رابطه ای عالی است.
رابط Cassandra Spanner به شما امکان می دهد از زیرساخت های کاملاً مدیریت شده، مقیاس پذیر و بسیار در دسترس Spanner با استفاده از ابزارها و نحو آشنای Cassandra استفاده کنید.
چیزی که یاد خواهید گرفت
- نحوه راه اندازی نمونه و پایگاه داده Spanner.
- چگونه طرحواره و مدل داده کاساندرا خود را تبدیل کنید.
- نحوه صادرات انبوه داده های تاریخی خود از کاساندرا به Spanner.
- چگونه درخواست خود را به جای کاساندرا به Spanner اشاره کنید.
آنچه شما نیاز دارید
- یک پروژه Google Cloud که به یک حساب صورتحساب متصل است.
- دسترسی به ماشینی که
gcloud
CLI آن نصب و پیکربندی شده است یا از Google Cloud Shell استفاده کنید. - یک مرورگر وب، مانند کروم یا فایرفاکس .
2. راه اندازی و الزامات
یک پروژه GCP ایجاد کنید
به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
تنظیم صورتحساب
در مرحله بعد، باید راهنمای کاربر مدیریت صورتحساب را دنبال کنید و صورتحساب را در Cloud Console فعال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند. برای جلوگیری از متحمل شدن صورتحساب فراتر از این آموزش، میتوانید با دنبال کردن «مرحله 9 پاکسازی»، نمونه Spanner را در انتهای کد لبه خاموش کنید.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.
بعدی
در مرحله بعد، خوشه Cassandra را مستقر خواهید کرد.
3. مستقر کردن خوشه Cassandra (Origin)
برای این کد لبه، ما یک کلاستر تک گره Cassandra را در Compute Engine راه اندازی می کنیم.
1. یک GCE VM برای Cassandra ایجاد کنید
برای ایجاد یک نمونه، از دستور 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. Cassandra را نصب کنید
با دنبال کردن دستورالعملهای زیر، از صفحه Navigation menu
به VM Instances
بروید: .
ماشین مجازی cassandra-origin
را جستجو کنید و با استفاده از SSH به VM متصل شوید، همانطور که نشان داده شده است:
.
دستورات زیر را برای نصب Cassandra بر روی ماشین مجازی که ایجاد کرده اید و در آن sshed کرده اید اجرا کنید.
جاوا را نصب کنید (وابستگی Cassandra)
sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless
مخزن Cassandra را اضافه کنید
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
Cassandra را نصب کنید
sudo apt-get update
sudo apt-get install -y cassandra
آدرس گوش دادن را برای سرویس Cassandra تنظیم کنید.
در اینجا ما از آدرس IP داخلی Cassandra VM برای امنیت بیشتر استفاده می کنیم.
به آدرس IP دستگاه میزبان خود توجه کنید
میتوانید از دستور زیر در پوسته ابری استفاده کنید یا آن را از صفحه VM Instances
کنسول ابری دریافت کنید.
gcloud compute instances describe cassandra-origin --format="get(networkInterfaces[0].networkIP)" --zone=us-central1-a
یا
.
آدرس موجود در فایل کانفیگ را به روز کنید
می توانید از ویرایشگر انتخابی خود برای به روز رسانی فایل پیکربندی Cassandra استفاده کنید
sudo vim /etc/cassandra/cassandra.yaml
rpc_address:
به آدرس IP ماشین مجازی، فایل را ذخیره کرده و ببندید.
سرویس Cassandra را در 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 را باز بگذارید یا آدرس IP این ماشین مجازی ( hostname -I
) را یادداشت کنید.
بعدی
در مرحله بعد، یک نمونه Cloud Spanner و پایگاه داده راه اندازی خواهید کرد.
4. یک نمونه آچار ایجاد کنید (هدف)
در Spanner، یک نمونه مجموعه ای از منابع محاسباتی و ذخیره سازی است که میزبان یک یا چند پایگاه داده Spanner است. برای میزبانی پایگاه داده Spanner برای این Codelab به حداقل 1 نمونه نیاز دارید.
نسخه gcloud SDK را بررسی کنید
قبل از ایجاد یک نمونه، مطمئن شوید که gcloud SDK در Google Cloud Shell به نسخه مورد نیاز به روز شده است - هر نسخه بزرگتر از gcloud SDK 531.0.0 . با دنبال کردن دستور زیر می توانید نسخه gcloud SDK خود را پیدا کنید.
$ gcloud version | grep Google
در اینجا یک نمونه خروجی آورده شده است:
Google Cloud SDK 489.0.0
اگر نسخه ای که استفاده می کنید زودتر از نسخه 531.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، مطمئن شوید که ID پروژه شما تنظیم شده است. از اولین دستور زیر برای پیدا کردن شناسه پروژه پیکربندی شده فعلی استفاده کنید. اگر نتیجه مورد انتظار نیست، دستور دوم زیر دستور درست را تنظیم می کند.
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
تنظیم شده است. به صورت اختیاری، می توانید نام ID نمونه خود را انتخاب کنید.
یک نمونه Spanner آزمایشی رایگان ایجاد کنید
یک نمونه آزمایشی رایگان 90 روزه Spanner برای هر کسی که حساب Google دارد و صورتحساب Cloud را در پروژه خود فعال کرده باشد، در دسترس است. هزینه ای از شما کسر نمی شود مگر اینکه بخواهید نمونه آزمایشی رایگان خود را به نمونه پولی ارتقا دهید. آداپتور آچار 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.
5. طرحواره کاساندرا و مدل داده را به Spanner منتقل کنید
مرحله اولیه و حیاتی انتقال داده ها از پایگاه داده Cassandra به Spanner شامل تغییر طرح واره Cassandra موجود برای همسویی با الزامات ساختاری و نوع داده Spanner است.
برای ساده کردن این فرآیند پیچیده انتقال طرحواره، از یکی از دو ابزار منبع باز ارزشمند ارائه شده توسط Spanner استفاده کنید:
- Spanner Migration Tool : این ابزار به شما کمک می کند تا طرحواره را با اتصال به پایگاه داده Cassandra موجود و انتقال طرح به Spanner انتقال دهید. این ابزار به عنوان بخشی از
gcloud cli
در دسترس است. - Spanner Cassandra Schema Tool : این ابزار به شما کمک می کند یک DDL صادر شده را از Cassandra به Spanner تبدیل کنید. می توانید از هر یک از این دو ابزار برای Codelab استفاده کنید. در این لبه کد، از ابزار Spanner Migration برای انتقال طرحواره استفاده خواهیم کرد.
ابزار مهاجرت آچار
Spanner Migration Tool به انتقال طرحواره از منابع داده های مختلف مانند MySQL، Postgres، Cassandra و غیره کمک می کند.
در حالی که برای اهداف این نرمافزار از CLI این ابزار استفاده میکنیم، به شدت توصیه میکنیم نسخه مبتنی بر رابط کاربری ابزار را کاوش کرده و از آن استفاده کنید، که همچنین به شما کمک میکند تا قبل از اعمال طرح Spanner خود تغییراتی در آن ایجاد کنید.
توجه داشته باشید که اگر spanner-migration-tool
در Cloud Shell اجرا شود، ممکن است به آدرس IP داخلی Cassandra VM شما دسترسی نداشته باشد. از این رو، توصیه می کنیم همین کار را روی ماشین مجازی که Cassandra را در آن نصب کرده اید، اجرا کنید.
موارد زیر را در ماشین مجازی که Cassandra را در آن نصب کرده اید اجرا کنید.
ابزار انتقال آچار را نصب کنید
sudo apt-get update
sudo apt-get install --upgrade google-cloud-sdk-spanner-migration-tool
اگر در نصب با مشکلی مواجه شدید، برای جزئیات مراحل به install-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}
تأیید آچار DDL
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 تبدیل شده را ببینید
می توانید DDL تبدیل شده را ببینید و دوباره آن را در Spanner اعمال کنید (اگر به تغییرات اضافی نیاز دارید)
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`
گزارش تبدیل مواردی را که باید در نظر داشته باشید برجسته می کند. به عنوان مثال، اگر در حداکثر دقت یک ستون بین منبع و Spanner عدم تطابق وجود داشته باشد، در اینجا برجسته می شود.
6. داده های تاریخی خود را به صورت انبوه صادر کنید
برای انجام مهاجرت انبوه، باید:
- ارائه یا استفاده مجدد از یک سطل GCS موجود.
- فایل پیکربندی Cassandra Driver را در سطل آپلود کنید
- مهاجرت انبوه را راه اندازی کنید.
در حالی که میتوانید انتقال انبوه را از Cloud Shell یا 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
فایل پیکربندی Driver را ایجاد و آپلود کنید
در اینجا ما یک فایل پیکربندی درایور بسیار ابتدایی 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}"
مهاجرت انبوه را اجرا کنید
این یک فرمان نمونه برای اجرای انتقال انبوه داده های شما به Spanner است. برای موارد استفاده واقعی از تولید، باید نوع دستگاه را تغییر دهید و بر اساس مقیاس و توان مورد نظر خود شمارش کنید. لطفاً برای فهرست کامل گزینهها به 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
در حالی که کار در صف قرار دارد/در حال اجرا است، به شما توصیه می کنیم برای نظارت بر کار، صفحه Dataflow/Jobs
را در رابط کاربری Cloud Console کاوش کنید.
پس از انجام، وضعیت کار به صورت زیر تغییر می کند:
currentState: JOB_STATE_DONE
7. برنامه خود را روی Spanner (Cutover) قرار دهید
پس از تأیید دقیق صحت و یکپارچگی داده های خود پس از مرحله مهاجرت، مرحله اساسی انتقال تمرکز عملیاتی برنامه شما از سیستم قدیمی Cassandra به پایگاه داده Spanner است که به تازگی پر شده است. این دوره انتقال بحرانی معمولاً به عنوان " برش " نامیده می شود.
مرحله قطع، لحظهای را مشخص میکند که ترافیک برنامههای کاربردی زنده از خوشه اصلی کاساندرا هدایت میشود و مستقیماً به زیرساخت قوی و مقیاسپذیر Spanner متصل میشود. این انتقال نشان میدهد که اپلیکیشنها میتوانند به راحتی از قدرت Spanner استفاده کنند، بهویژه زمانی که از رابط Spanner Cassandra استفاده میکنند.
با رابط Spanner Cassandra، فرآیند برش ساده می شود. این در درجه اول شامل پیکربندی برنامه های مشتری شما برای استفاده از Spanner Cassandra Client برای تمام تعاملات داده است. به جای برقراری ارتباط با پایگاه داده Cassandra (منبع)، برنامه های شما به طور یکپارچه شروع به خواندن و نوشتن داده ها به طور مستقیم در Spanner (هدف) می کنند. این تغییر اساسی در اتصال معمولاً از طریق استفاده از SpannerCqlSessionBuilder
، یک جزء کلیدی از کتابخانه Spanner Cassandra Client که برقراری اتصالات به نمونه Spanner شما را تسهیل میکند، حاصل میشود. این به طور موثر کل جریان ترافیک داده برنامه شما را به Spanner تغییر مسیر می دهد.
برای برنامههای جاوا که قبلاً از کتابخانه cassandra-java-driver
استفاده میکنند، ادغام Spanner Cassandra Java Client فقط به تغییرات جزئی در مقدار دهی اولیه CqlSession
نیاز دارد.
دریافت وابستگی به google-cloud-spanner-cassandra
برای شروع استفاده از Spanner Cassandra Client، ابتدا باید وابستگی آن را در پروژه خود بگنجانید. مصنوعات google-cloud-spanner-cassandra
در Maven Central تحت شناسه گروهی 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>
برای اتصال به Spanner پیکربندی اتصال را تغییر دهید
هنگامی که وابستگی لازم را اضافه کردید، گام بعدی این است که پیکربندی اتصال خود را برای اتصال به پایگاه داده Spanner تغییر دهید.
یک برنامه معمولی که با یک خوشه Cassandra تعامل دارد، اغلب از کدهایی شبیه به زیر برای ایجاد یک اتصال استفاده می کند:
CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("127.0.0.1", 9042))
.withLocalDatacenter("datacenter1")
.withAuthCredentials("username", "password")
.build();
برای تغییر مسیر این اتصال به Spanner، باید منطق ایجاد CqlSession
خود را تغییر دهید. به جای استفاده مستقیم از CqlSessionBuilder
استاندارد از cassandra-java-driver
، از SpannerCqlSession.builder()
ارائه شده توسط Spanner Cassandra Client استفاده خواهید کرد. در اینجا یک مثال گویا از نحوه تغییر کد اتصال خود آورده شده است:
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();
با نمونه سازی CqlSession
با استفاده از SpannerCqlSession.builder()
و ارائه databaseUri
صحیح Uri، برنامه شما اکنون از طریق Spanner Cassandra Client به پایگاه داده Spanner مورد نظر شما ارتباط برقرار می کند. این تغییر محوری تضمین میکند که تمام عملیات خواندن و نوشتن بعدی که توسط برنامه شما انجام میشوند به Spanner هدایت میشوند و توسط Spanner ارائه میشوند و عملاً برش اولیه را تکمیل میکنند. در این مرحله، برنامه شما باید همانطور که انتظار می رفت به کار خود ادامه دهد، که اکنون توسط مقیاس پذیری و قابلیت اطمینان Spanner پشتیبانی می شود.
Under the Hood: How the Spanner Cassandra Client کار می کند
کلاینت Spanner Cassandra به عنوان یک پروکسی TCP محلی عمل می کند و بایت های پروتکل کاساندرا خام ارسال شده توسط درایور یا ابزار کلاینت را رهگیری می کند. سپس این بایت ها را به همراه ابرداده های لازم در پیام های gRPC برای ارتباط با Spanner قرار می دهد. پاسخهای Spanner به قالب سیم Cassandra ترجمه میشوند و به درایور یا ابزار اصلی ارسال میشوند.
هنگامی که مطمئن شدید که Spanner تمام ترافیک را به درستی ارائه می کند، در نهایت می توانید:
- خوشه اصلی کاساندرا را از رده خارج کنید.
8. تمیز کردن (اختیاری)
برای پاکسازی، کافی است به بخش Spanner در Cloud Console بروید و نمونه cassandra-adapter-demo
را که در Codelab ایجاد کردیم حذف کنید.
پایگاه داده Cassandra را حذف کنید (در صورت نصب محلی یا ادامه دار)
اگر Cassandra را خارج از یک ماشین مجازی کامپیوتری که در اینجا ایجاد شده است نصب کرده اید، مراحل مناسب را برای حذف داده ها یا حذف نصب Cassandra دنبال کنید.
9. تبریک!
بعدش چی؟
- درباره Spanner بیشتر بیاموزید.
- درباره رابط کاساندرا بیشتر بیاموزید.