1. Giriş
Spanner, hem ilişkisel hem de ilişkisel olmayan iş yükleri için ideal olan, tümüyle yönetilen, yatay olarak ölçeklenebilir ve küresel olarak dağıtılmış bir veritabanı hizmetidir.
Spanner'ın Cassandra arayüzü, tanıdık Cassandra araçlarını ve söz dizimini kullanarak Spanner'ın tümüyle yönetilen, ölçeklenebilir ve yüksek düzeyde kullanılabilir altyapısından yararlanmanıza olanak tanır.
Neler öğreneceksiniz?
- Spanner örneği ve veritabanı oluşturma
- Cassandra şemanızı ve veri modelinizi dönüştürme
- Geçmiş verilerinizi Cassandra'dan Spanner'a toplu olarak nasıl aktaracağınızı öğrenin.
- Uygulamanızı Cassandra yerine Spanner'a yönlendirme
İhtiyacınız olanlar
- Bir faturalandırma hesabına bağlı olan Google Cloud projesi.
gcloud
KSA'nın yüklü ve yapılandırılmış olduğu bir makineye erişin veya Google Cloud Shell'i kullanın.- Chrome veya Firefox gibi bir web tarayıcısı
2. Kurulum ve şartlar
GCP projesi oluşturma
Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Henüz bir Gmail veya Google Workspace hesabınız yoksa oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle
PROJECT_ID
olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
Faturalandırma kurulumu
Ardından, faturalandırmayı yönetme kullanıcı kılavuzunu uygulamanız ve Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir. Bu eğitimin ötesinde faturalandırmayla karşılaşmamak için "9. Adım: Temizleme" bölümündeki talimatları uygulayarak codelab'in sonunda Spanner örneğini kapatabilirsiniz.
Cloud Shell'i Başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir ancak bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:
Ortamın sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:
Bu sanal makineye, ihtiyaç duyacağınız tüm geliştirme araçları yüklenmiştir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde iyileştirilir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.
Sıradaki
Ardından Cassandra kümesini dağıtırsınız.
3. Cassandra kümesini dağıtma (Kaynak)
Bu codelab'de Compute Engine'de tek düğümlü bir Cassandra kümesi oluşturacağız.
1. Cassandra için GCE sanal makinesi oluşturma
Örnek oluşturmak için daha önce sağlanan Cloud Shell'deki gcloud compute instances create
komutunu kullanın.
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'yı yükleme
Aşağıdaki talimatları uygulayarak Navigation menu
sayfasından VM Instances
bölümüne gidin: .
cassandra-origin
sanal makinesini arayın ve gösterildiği gibi SSH kullanarak sanal makineye bağlanın:
.
Oluşturduğunuz ve SSH uyguladığınız sanal makineye Cassandra'yı yüklemek için aşağıdaki komutları çalıştırın.
Java'yı yükleyin (Cassandra bağımlılığı)
sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless
Cassandra deposu ekleme
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'yı yükleme
sudo apt-get update
sudo apt-get install -y cassandra
Cassandra hizmeti için dinleme adresini ayarlayın.
Burada, daha fazla güvenlik için Cassandra VM'sinin dahili IP adresini kullanıyoruz.
Ana makinenizin IP adresini not edin.
Bulut kabuğunda aşağıdaki komutu kullanabilir veya bulut konsolunun VM Instances
sayfasından alabilirsiniz.
gcloud compute instances describe cassandra-origin --format="get(networkInterfaces[0].networkIP)" --zone=us-central1-a
VEYA
.
Yapılandırma dosyasındaki adresi güncelleme
Cassandra yapılandırma dosyasını güncellemek için istediğiniz düzenleyiciyi kullanabilirsiniz.
sudo vim /etc/cassandra/cassandra.yaml
rpc_address:
değerini VM'nin IP adresiyle değiştirin, dosyayı kaydedin ve kapatın.
Sanal makinede Cassandra hizmetini etkinleştirme
sudo systemctl enable cassandra
sudo systemctl stop cassandra
sudo systemctl start cassandra
sudo systemctl status cassandra
3. Anahtar alanı ve tablo oluşturma {create-keyspace-and-table}
"Kullanıcılar" tablosu örneğini kullanıp "analiz" adlı bir anahtar alanı oluşturacağız.
export CQLSH_HOST=<IP of the VM added as rpc_address>
/usr/bin/cqlsh
cqlsh içinde:
-- 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 oturumunu açık bırakın veya bu VM'nin IP adresini (hostname -I
) not edin.
Sıradaki
Ardından bir Cloud Spanner örneği ve veritabanı oluşturacaksınız.
4. Spanner örneği oluşturma (Hedef)
Spanner'da örnek, bir veya daha fazla Spanner veritabanını barındıran bilgi işlem ve depolama kaynaklarının kümesidir. Bu codelab için bir Spanner veritabanı barındırmak üzere en az 1 örneğe ihtiyacınız olacak.
gcloud SDK sürümünü kontrol etme
Örnek oluşturmadan önce Google Cloud Shell'deki gcloud SDK'nın gerekli sürüme (gcloud SDK 531.0.0'dan daha yeni herhangi bir sürüm) güncellendiğinden emin olun. Aşağıdaki komutu uygulayarak gcloud SDK sürümünüzü bulabilirsiniz.
$ gcloud version | grep Google
Örnek çıkış:
Google Cloud SDK 489.0.0
Kullandığınız sürüm, gerekli 531.0.0 sürümünden (önceki örnekteki 489.0.0
) daha eskiyse aşağıdaki komutu çalıştırarak Google Cloud SDK'nızı yükseltmeniz gerekir:
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'yi etkinleştirme
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun. Şu anda yapılandırılmış proje kimliğini bulmak için aşağıdaki ilk komutu kullanın. Sonuç beklenmedikse aşağıdaki ikinci komut doğru olanı ayarlar.
gcloud config get-value project
gcloud config set project [YOUR-DESIRED-PROJECT-ID]
Varsayılan bölgenizi us-central1
olarak yapılandırın. Bunu, Spanner bölgesel yapılandırmaları tarafından desteklenen farklı bir bölgeyle değiştirebilirsiniz.
gcloud config set compute/region us-central1
Spanner API'yi etkinleştirin:
gcloud services enable spanner.googleapis.com
Spanner örneğini oluşturma
Bu bölümde ücretsiz deneme örneği veya sağlanmış bir örnek oluşturacaksınız. Bu codelab'de kullanılan Spanner Cassandra bağdaştırıcısı örnek kimliği cassandra-adapter-demo
olup export
komut satırı kullanılarak SPANNER_INSTANCE_ID
değişkeni olarak ayarlanmıştır. İsteğe bağlı olarak kendi örnek kimliği adınızı seçebilirsiniz.
Ücretsiz deneme Spanner örneği oluşturma
Google Hesabı olan ve projesinde Cloud Billing'i etkinleştirmiş herkes 90 günlük Spanner ücretsiz deneme örneğinden yararlanabilir. Ücretsiz deneme örneğinizi ücretli bir örneğe yükseltmeyi seçmediğiniz sürece sizden ücret alınmaz. Spanner Cassandra Adaptörü, ücretsiz deneme örneğinde desteklenir. Uygunsa Cloud Shell'i açıp şu komutu çalıştırarak ücretsiz deneme örneği oluşturun:
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"
Komut çıkışı:
gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=$SPANNER_REGION \
--instance-type=free-instance \
--description="Spanner Cassandra Adapter demo"
Creating instance...done.
5. Cassandra şemasını ve veri modelini Spanner'a taşıma
Cassandra veritabanından Spanner'a veri geçişinin ilk ve önemli aşaması, mevcut Cassandra şemasının Spanner'ın yapısal ve veri türü gereksinimlerine uygun şekilde dönüştürülmesini içerir.
Bu karmaşık şema taşıma sürecini kolaylaştırmak için Spanner'ın sağladığı iki değerli açık kaynak aracından birini kullanın:
- Spanner Taşıma Aracı: Bu araç, mevcut bir Cassandra veritabanına bağlanıp şemayı Spanner'a taşıyarak şemayı taşımanıza yardımcı olur. Bu araç,
gcloud cli
kapsamında sunulmaktadır. - Spanner Cassandra Şema Aracı: Bu araç, Cassandra'dan dışa aktarılan bir DDL'yi Spanner'a dönüştürmenize yardımcı olur. Codelab için bu iki araçtan herhangi birini kullanabilirsiniz. Bu codelab'de, şemayı taşımak için Spanner Taşıma Aracı'nı kullanacağız.
Spanner Taşıma Aracı
Spanner Taşıma Aracı, MySQL, Postgres ve Cassandra gibi çeşitli veri kaynaklarından şemaları taşımaya yardımcı olur.
Bu codelab'in amacı doğrultusunda bu aracın CLI'sını kullanacak olsak da, aracın kullanıcı arayüzü tabanlı sürümünü keşfetmenizi ve kullanmanızı önemle tavsiye ederiz. Bu sürüm, uygulanmadan önce Spanner şemanızda değişiklik yapmanıza da yardımcı olur.
spanner-migration-tool
komutunun Cloud Shell'de çalıştırılması durumunda Cassandra VM'nizin dahili IP adresine erişemeyebileceğini unutmayın. Bu nedenle, Cassandra'yı yüklediğiniz sanal makinede aynı komutu çalıştırmanızı öneririz.
Cassandra'yı yüklediğiniz sanal makinede aşağıdakileri yürütün.
Spanner Taşıma Aracı'nı yükleme
sudo apt-get update
sudo apt-get install --upgrade google-cloud-sdk-spanner-migration-tool
Yükleme sırasında herhangi bir sorunla karşılaşırsanız ayrıntılı adımlar için installing-spanner-migration-tool başlıklı makaleyi inceleyin.
Gcloud Kimlik Bilgilerini Yenileme
gcloud auth login
gcloud auth application-default login
Şemayı Taşıma
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}
Spanner DDL'yi doğrulama
gcloud spanner databases ddl describe analytics --instance=cassandra-adapter-demo
Şema taşıma işleminin sonunda bu komutun çıkışı şu şekilde olmalıdır:
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);
(İsteğe bağlı) Dönüştürülen DDL'yi görüntüleme
Dönüştürülen DDL'yi görebilir ve Spanner'da yeniden uygulayabilirsiniz (ek değişiklik yapmanız gerekirse).
cat `ls -t cassandra_*schema.ddl.txt | head -n 1`
Bu komutun çıkışı şu olur:
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`)
(İsteğe bağlı) Dönüşüm raporunu görüntüleyin.
cat `ls -t cassandra_*report.txt | head -n 1`
Dönüşüm raporunda, dikkat etmeniz gereken sorunlar vurgulanır. Örneğin, bir sütunun maksimum hassasiyeti kaynak ile Spanner arasında eşleşmiyorsa bu durum burada vurgulanır.
6. Geçmiş verilerinizi toplu olarak dışa aktarma
Toplu taşıma işlemini gerçekleştirmek için:
- Mevcut bir GCS paketini sağlayın veya yeniden kullanın.
- Cassandra sürücüsü yapılandırma dosyasını pakete yükleyin.
- Toplu taşıma işlemini başlatın.
Toplu taşımayı Cloud Shell'den veya yeni sağlanan sanal makineden başlatabilirsiniz. Ancak yapılandırma dosyası oluşturma gibi bazı adımlar dosyaları yerel depolama alanında kalıcı hale getireceğinden bu codelab için sanal makineyi kullanmanızı öneririz.
GCS paketi sağlama
Bu adımın sonunda bir GCS paketi sağlamış ve yolunu CASSANDRA_BUCKET_NAME
adlı bir değişkene aktarmış olmanız gerekir. Mevcut bir paketi yeniden kullanmak istiyorsanız yolu dışa aktararak devam edebilirsiniz.
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
Sürücü yapılandırma dosyası oluşturma ve yükleme
Burada çok temel bir Cassandra sürücüsü yapılandırma dosyası yüklüyoruz. Dosyanın tam biçimi için lütfen bu makaleyi inceleyin.
# 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}"
Toplu taşıma işlemi çalıştırma
Bu, verilerinizin Spanner'a toplu olarak taşınmasını sağlamak için çalıştırılacak örnek bir komuttur. Gerçek üretim kullanım alanlarında, makine türünü ve sayısını istediğiniz ölçeğe ve işleme hızına göre ayarlamanız gerekir. Seçeneklerin tam listesi için lütfen README_Sourcedb_to_Spanner.md#cassandra-to-spanner-bulk-migration adresini ziyaret edin.
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"
Bu işlem, aşağıdakine benzer bir çıktı oluşturur. Oluşturulan id
değerini not edin ve Dataflow işinin durumunu sorgulamak için aynı değeri kullanın.
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'
İşin durumunu kontrol etmek için aşağıdaki komutu çalıştırın ve durumun JOB_STATE_DONE
olarak değişmesini bekleyin.
gcloud dataflow jobs describe --region=us-central1 <dataflow job id> | grep "currentState:"
İş başlangıçta şu şekilde sıralanmış durumda olur:
currentState: JOB_STATE_QUEUED
İş kuyruğa alınmış veya çalışıyor durumdayken işi izlemek için Cloud Console kullanıcı arayüzündeki Dataflow/Jobs
sayfasını incelemenizi önemle tavsiye ederiz.
İşlem tamamlandığında işin durumu şu şekilde değişir:
currentState: JOB_STATE_DONE
7. Uygulamanızı Spanner'a yönlendirme (geçiş)
Taşıma aşamasından sonra verilerinizin doğruluğunu ve bütünlüğünü titizlikle doğruladıktan sonraki önemli adım, uygulamanızın operasyonel odağını eski Cassandra sisteminizden yeni doldurulmuş Spanner veritabanına geçirmektir. Bu kritik geçiş dönemine genellikle "geçiş" adı verilir.
Geçiş aşaması, canlı uygulama trafiğinin orijinal Cassandra kümesinden yönlendirildiği ve doğrudan sağlam ve ölçeklenebilir Spanner altyapısına bağlandığı anı ifade eder. Bu geçiş, uygulamaların Spanner Cassandra arayüzü kullanılırken özellikle Spanner'ın gücünden ne kadar kolay bir şekilde yararlanabileceğini gösterir.
Spanner Cassandra arayüzü sayesinde geçiş süreci kolaylaştırılır. Bu işlem, öncelikle tüm veri etkileşimi için istemci uygulamalarınızı yerel Spanner Cassandra İstemcisi'ni kullanacak şekilde yapılandırmayı içerir. Uygulamalarınız, Cassandra (kaynak) veritabanınızla iletişim kurmak yerine doğrudan Spanner'a (hedef) veri okumaya ve yazmaya sorunsuz bir şekilde başlayacak. Bağlantıdaki bu temel değişiklik genellikle SpannerCqlSessionBuilder
kullanılarak sağlanır. Bu, Spanner Cassandra istemci kitaplığının Spanner örneğinize bağlantı kurulmasını kolaylaştıran önemli bir bileşenidir. Bu işlem, uygulamanızın tüm veri trafiği akışını Spanner'a yönlendirir.
cassandra-java-driver
kitaplığını kullanan Java uygulamalarında Spanner Cassandra Java İstemcisi'nin entegrasyonu için yalnızca CqlSession
başlatma işleminde küçük değişiklikler yapılması gerekir.
google-cloud-spanner-cassandra bağımlılığını alma
Spanner Cassandra İstemcisi'ni kullanmaya başlamak için önce bağımlılığını projenize dahil etmeniz gerekir. google-cloud-spanner-cassandra
yapıları, Maven Central'da com.google.cloud
grup kimliği altında yayınlanır. Java projenizdeki mevcut <dependencies>
bölümünün altına aşağıdaki yeni bağımlılığı ekleyin. google-cloud-spanner-cassandra
bağımlılığını nasıl dahil edeceğinize dair basitleştirilmiş bir örneği aşağıda bulabilirsiniz:
<!-- 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'a bağlanmak için bağlantı yapılandırmasını değiştirme
Gerekli bağımlılığı ekledikten sonraki adım, Spanner veritabanına bağlanmak için bağlantı yapılandırmanızı değiştirmektir.
Bir Cassandra kümesiyle etkileşimde bulunan tipik bir uygulama, bağlantı kurmak için genellikle aşağıdakine benzer bir kod kullanır:
CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("127.0.0.1", 9042))
.withLocalDatacenter("datacenter1")
.withAuthCredentials("username", "password")
.build();
Bu bağlantıyı Spanner'a yönlendirmek için CqlSession
oluşturma mantığınızı değiştirmeniz gerekir. cassandra-java-driver
içindeki standart CqlSessionBuilder
işlevini doğrudan kullanmak yerine, Spanner Cassandra istemcisi tarafından sağlanan SpannerCqlSession.builder()
işlevini kullanırsınız. Bağlantı kodunuzu nasıl değiştireceğinize dair açıklayıcı bir örneği aşağıda bulabilirsiniz:
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
öğesini SpannerCqlSession.builder()
kullanarak oluşturup doğru databaseUri
değerini sağladığınızda uygulamanız artık Spanner Cassandra istemcisi aracılığıyla hedef Spanner veritabanınıza bağlantı kurar. Bu önemli değişiklik, uygulamanız tarafından gerçekleştirilen tüm sonraki okuma ve yazma işlemlerinin Spanner'a yönlendirilmesini ve Spanner tarafından sunulmasını sağlayarak ilk geçişi etkili bir şekilde tamamlar. Bu noktada, uygulamanız artık Spanner'ın ölçeklenebilirlik ve güvenilirlik özellikleriyle desteklenerek beklendiği gibi çalışmaya devam etmelidir.
Perde Arkası: Spanner Cassandra İstemcisi Nasıl Çalışır?
Spanner Cassandra istemcisi, bir sürücü veya istemci aracı tarafından gönderilen ham Cassandra protokolü baytlarını yakalayan yerel bir TCP proxy'si olarak işlev görür. Ardından, bu baytları gerekli meta verilerle birlikte Spanner ile iletişim için gRPC mesajlarına sarar. Spanner'dan gelen yanıtlar tekrar Cassandra tel biçimine çevrilir ve kaynak sürücüye veya araca geri gönderilir.
Spanner'ın tüm trafiği doğru şekilde sunduğundan emin olduğunuzda şunları yapabilirsiniz:
- Orijinal Cassandra kümesini devre dışı bırakın.
8. Temizleme (isteğe bağlı)
Temizlemek için Cloud Console'un Spanner bölümüne gidip kod laboratuvarında oluşturduğumuz cassandra-adapter-demo
örneğini silmeniz yeterlidir.
Cassandra veritabanını silme (yerel olarak yüklenmişse veya kalıcı hale getirilmişse)
Cassandra'yı burada oluşturulan bir Compute Engine VM'sinin dışında yüklediyseniz verileri kaldırmak veya Cassandra'yı kaldırmak için uygun adımları uygulayın.
9. Tebrikler!
Sırada ne var?
- Spanner hakkında daha fazla bilgi edinin.
- Cassandra arayüzü hakkında daha fazla bilgi edinin.