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ı Google Cloud projesi.
gcloudKSA'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. Gmail veya Google Workspace hesabınız yoksa hesap 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. Dilediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console otomatik olarak benzersiz bir dize oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle
PROJECT_IDolarak 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 temel hazırlığı ve bağlantı kurulması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarıyla birlikte gelir. 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 güçlenir. 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 ile bağlandığı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'nin 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üncelleyin
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 "analytics" 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 sanal makinenin 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 Adapter örneği 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
Projesinde Cloud Billing'i etkinleştirmiş olan ve Google Hesabı olan herkes 90 günlük ücretsiz Spanner 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
Verileri Cassandra veritabanından Spanner'a taşımanın ilk ve önemli aşaması, mevcut Cassandra şemasını Spanner'ın yapısal ve veri türü gereksinimlerine uygun şekilde dönüştürmeyi 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 clikapsamında kullanılabilir. - Spanner Cassandra Şema Aracı: Bu araç, Cassandra'dan dışa aktarılan bir DDL'yi Spanner'a dönüştürmenize yardımcı olur. Bu iki araçtan herhangi birini kod laboratuvarında kullanabilirsiniz. Bu codelab'de, şemayı taşımak için Spanner Taşıma Aracı'nı kullanacağız.
Spanner Taşıma Aracı
Spanner Taşıma Aracı, şemayı MySQL, Postgres ve Cassandra gibi çeşitli veri kaynaklarından 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ü incelemenizi ve kullanmanızı önemle tavsiye ederiz. Bu sürüm, Spanner şemanızda uygulanmadan önce değişiklik yapmanıza da yardımcı olur.
spanner-migration-tool Cloud Shell'de çalıştırılırsa Cassandra VM'nizin dahili IP adresine erişemeyebilir. 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 şekilde 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, göz önünde bulundurmanız 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 yapmak 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.
Bir GCS paketi sağlayın.
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 makaleye bakın.
# 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 çıkış 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 durum JOB_STATE_DONE olarak değişene kadar bekleyin.
gcloud dataflow jobs describe --region=us-central1 <dataflow job id> | grep "currentState:"
İş başlangıçta aşağıdaki gibi sıraya alınmış 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 yararlanabileceğini gösterir.
Spanner Cassandra arayüzü sayesinde geçiş süreci kolaylaştırılır. Bu işlem, öncelikle istemci uygulamalarınızı tüm veri etkileşimi için yerel Spanner Cassandra istemcisini 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 İstemci 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ı etkili bir şekilde 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, genellikle bağlantı kurmak için 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 görebilirsiniz:
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çeklenebilirliği ve güvenilirliğiyle 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.