شروع کار با آداپتور Spanner Cassandra، شروع کار با آداپتور Spanner Cassandra، شروع به کار با آداپتور Spanner Cassandra

1. مقدمه

Spanner یک سرویس پایگاه داده کاملاً مدیریت شده، افقی مقیاس پذیر و توزیع شده در سطح جهانی است که برای بارهای کاری رابطه ای و غیر رابطه ای عالی است.

رابط Cassandra Spanner به شما امکان می دهد از زیرساخت های کاملاً مدیریت شده، مقیاس پذیر و بسیار در دسترس Spanner با استفاده از ابزارها و نحو آشنای Cassandra استفاده کنید.

چیزی که یاد خواهید گرفت

  • نحوه راه اندازی نمونه و پایگاه داده Spanner.
  • چگونه طرحواره و مدل داده کاساندرا خود را تبدیل کنید.
  • نحوه صادرات انبوه داده های تاریخی خود از کاساندرا به Spanner.
  • چگونه درخواست خود را به جای کاساندرا به Spanner اشاره کنید.

آنچه شما نیاز دارید

  • یک پروژه Google Cloud که به یک حساب صورت‌حساب متصل است.
  • دسترسی به ماشینی که gcloud CLI آن نصب و پیکربندی شده است یا از Google Cloud Shell استفاده کنید.
  • یک مرورگر وب، مانند کروم یا فایرفاکس .

2. راه اندازی و الزامات

یک پروژه GCP ایجاد کنید

به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط 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 در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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 بروید: به نمونه های vm بروید .

ماشین مجازی cassandra-origin را جستجو کنید و با استفاده از SSH به VM متصل شوید، همانطور که نشان داده شده است:

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

یا

ssh به نمونه vm .

آدرس موجود در فایل کانفیگ را به روز کنید

می توانید از ویرایشگر انتخابی خود برای به روز رسانی فایل پیکربندی 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 استفاده کنید:

  1. Spanner Migration Tool : این ابزار به شما کمک می کند تا طرحواره را با اتصال به پایگاه داده Cassandra موجود و انتقال طرح به Spanner انتقال دهید. این ابزار به عنوان بخشی از gcloud cli در دسترس است.
  2. 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. داده های تاریخی خود را به صورت انبوه صادر کنید

برای انجام مهاجرت انبوه، باید:

  1. ارائه یا استفاده مجدد از یک سطل GCS موجود.
  2. فایل پیکربندی Cassandra Driver را در سطل آپلود کنید
  3. مهاجرت انبوه را راه اندازی کنید.

در حالی که می‌توانید انتقال انبوه را از 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 ترجمه می‌شوند و به درایور یا ابزار اصلی ارسال می‌شوند.

26D34akkBHcMFFe.png

هنگامی که مطمئن شدید که Spanner تمام ترافیک را به درستی ارائه می کند، در نهایت می توانید:

  • خوشه اصلی کاساندرا را از رده خارج کنید.

8. تمیز کردن (اختیاری)

برای پاکسازی، کافی است به بخش Spanner در Cloud Console بروید و نمونه cassandra-adapter-demo را که در Codelab ایجاد کردیم حذف کنید.

76D34akkJRcMFMr.png

پایگاه داده Cassandra را حذف کنید (در صورت نصب محلی یا ادامه دار)

اگر Cassandra را خارج از یک ماشین مجازی کامپیوتری که در اینجا ایجاد شده است نصب کرده اید، مراحل مناسب را برای حذف داده ها یا حذف نصب Cassandra دنبال کنید.

9. تبریک!

بعدش چی؟