Öğretici: Verilerinizi Cassandra hesabı için bir API'ye geçirme

ŞUNLAR IÇIN GEÇERLIDIR: Cassandra

Geliştirici olarak, şirket içinde veya bulutta çalışan mevcut Cassandra iş yükleriniz olabilir ve bunları Azure'a geçirmek isteyebilirsiniz. Bu tür iş yüklerini Azure Cosmos DB'de Cassandra hesabı için bir API'ye geçirebilirsiniz. Bu öğreticide, Apache Cassandra verilerini Azure Cosmos DB'de Cassandra için API hesabına geçirmek için kullanılabilecek farklı seçeneklerle ilgili yönergeler sağlanır.

Bu öğretici aşağıdaki görevleri kapsar:

  • Geçiş planı
  • Geçiş için önkoşullar
  • komutunu kullanarak cqlshCOPY verileri geçirme
  • Spark'ı kullanarak veri geçirme

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Geçiş için önkoşullar

  • Aktarım hızı gereksinimlerinizi tahmin etme: Azure Cosmos DB'de Cassandra hesabı için API'ye veri geçirmeden önce iş yükünüzün aktarım hızı gereksinimlerini tahmin etmelisiniz. Genel olarak, CRUD işlemleri için gereken ortalama aktarım hızıyla başlayın ve ardından Ayıklama Dönüştürme Yükü veya riskli işlemler için gereken ek aktarım hızını ekleyin. Geçişi planlamak için şu ayrıntılara ihtiyacınız vardır:

    • Mevcut veri boyutu veya tahmini veri boyutu: Minimum veritabanı boyutunu ve aktarım hızı gereksinimini tanımlar. Yeni bir uygulama için veri boyutunu tahmin ediyorsanız, verilerin satırlar arasında düzgün bir şekilde dağıtıldığını varsayabilir ve veri boyutuyla çarparak değeri tahmin edebilirsiniz.

    • Gerekli aktarım hızı: Okuma (sorgu/alma) ve yazma (güncelleştirme/silme/ekleme) işlemlerinin yaklaşık aktarım hızı. Bu değer, sabit durum veri boyutuyla birlikte gerekli istek birimlerini hesaplamak için gereklidir.

    • Şema: aracılığıyla cqlshmevcut Cassandra kümenize Bağlan ve şemayı Cassandra'dan dışarı aktarın:

      cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
      

      Mevcut iş yükünüzün gereksinimlerini belirledikten sonra, toplanan aktarım hızı gereksinimlerine göre bir Azure Cosmos DB hesabı, veritabanı ve kapsayıcı oluşturun.

    • Bir işlemin RU ücretini belirleme: Cassandra için API tarafından desteklenen SDK'lardan herhangi birini kullanarak RU'ları belirleyebilirsiniz. Bu örnekte .NET sürümünün RU ücretleri gösterilmektedir.

      var tableInsertStatement = table.Insert(sampleEntity);
      var insertResult = await tableInsertStatement.ExecuteAsync();
      
      foreach (string key in insertResult.Info.IncomingPayload)
        {
           byte[] valueInBytes = customPayload[key];
           double value = Encoding.UTF8.GetString(valueInBytes);
           Console.WriteLine($"CustomPayload:  {key}: {value}");
        }
      
  • Gerekli aktarım hızını ayırma Gereksinimleriniz arttıkça Azure Cosmos DB depolamayı ve aktarım hızını otomatik olarak ölçeklendirilebilir. Aktarım hızı gereksinimlerinizi tahmin etmek için Azure Cosmos DB istek birimi hesaplayıcısını kullanabilirsiniz.

  • Cassandra hesabı için API'de tablolar oluşturma: Verileri geçirmeye başlamadan önce Azure portalından veya uygulamasından cqlshtüm tablolarınızı önceden oluşturun. Veritabanı düzeyinde aktarım hızına sahip bir Azure Cosmos DB hesabına geçiş yapıyorsanız, kapsayıcıları oluştururken bölüm anahtarı sağladığından emin olun.

  • Aktarım hızını artırma: Veri geçişinizin süresi, Azure Cosmos DB'deki tablolar için sağladığınız aktarım hızı miktarına bağlıdır. Geçiş süresince aktarım hızını artırın. Daha yüksek aktarım hızı ile, hız sınırlamayı önleyebilir ve daha kısa sürede geçişi tamamlayabilirsiniz. Geçişi tamamladıktan sonra maliyet tasarrufu sağlamak için aktarım hızını azaltın. Kaynak veritabanınızla aynı bölgede Azure Cosmos DB hesabınızın olması da önerilir.

  • TLS'yi etkinleştirme: Azure Cosmos DB'nin katı güvenlik gereksinimleri ve standartları vardır. Hesabınızla etkileşim kurarken TLS'yi etkinleştirdiğinizden emin olun. CQL'yi SSH ile kullandığınızda, TLS bilgilerini sağlama seçeneğiniz vardır.

Verileri geçirme seçenekleri

Komutunu kullanarak veya Spark kullanarak mevcut Cassandra iş yüklerindeki verileri Azure Cosmos DB'ye cqlshCOPY taşıyabilirsiniz.

cqlsh COPY komutunu kullanarak verileri geçirme

Yerel verileri Azure Cosmos DB'deki Cassandra hesabı api'sine kopyalamak için CQL COPY komutunu kullanın.

Uyarı

Küçük veri kümelerini geçirmek için yalnızca CQL COPY kullanın. Büyük veri kümelerini taşımak için Spark kullanarak verileri geçirin.

  1. Csv dosyanızın doğru dosya yapısını içerdiğinden emin olmak için komutunu kullanarak COPY TO verileri doğrudan kaynak Cassandra tablonuzdan bir csv dosyasına aktarın (cqlsh'nin uygun kimlik bilgilerini kullanarak kaynak tabloya bağlı olduğundan emin olun):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Şimdi Cassandra hesabının bağlantı dizesi bilgileri için API'nizi alın:

    • Azure portalında oturum açın ve Azure Cosmos DB hesabınıza gidin.

    • Bağlan Ion Dizesi bölmesini açın. Burada, 'den cqlshCassandra için API hesabınıza bağlanmak için ihtiyacınız olan tüm bilgileri görürsünüz.

  3. Portaldaki cqlsh bağlantı bilgilerini kullanarak oturum açın.

  4. CQLCOPY FROM Kopyalamak data.csv için komutunu kullanın (hala yüklü olan cqlsh kullanıcı kök dizininde bulunur):

    COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
    

Not

Cassandra için API, Cassandra 3.11 ile birlikte gelen protokol 4 sürümünü destekler. API'mizle daha sonraki protokol sürümlerini kullanmayla ilgili sorunlar olabilir. COPY FROM sonraki protokol sürümüyle bir döngüye girip yinelenen satırlar döndürebilir. cqlsh komutuna protokol sürümünü ekleyin.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
CQL Kopyalama komutuna aktarım hızı sınırlama seçenekleri ekleme

cqlsh'deki COPY komutu, belgelerin Azure Cosmos DB'ye alım hızını denetlemek için çeşitli parametreleri destekler.

COPY komutu için varsayılan yapılandırma verileri çok hızlı bir şekilde almaya çalışır ve CosmosDB'nin hız sınırlama davranışını hesaba eklemez. Koleksiyonda yapılandırılan aktarım hızına bağlı olarak CHUNKSIZE veya INGESTRATE'yi azaltmanız gerekir.

Belge veya kayıt boyutu 1 KB ise 20.000 RU'daki bir koleksiyon için aşağıdaki yapılandırmayı (en azından) öneririz.

  • CHUNKSIZE = 100
  • ALMA HıZı = 500
  • MAXATTEMPTS = 10
Örnek komutlar
  • Cassandra için API'den yerel csv dosyasına veri kopyalama
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Cassandra için yerel csv dosyasından API'ye veri kopyalama
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

Önemli

CQLSH COPY'nin yalnızca açık kaynak Apache Cassandra sürümü desteklenir. CQLSH'nin Datastax Enterprise (DSE) sürümleri hatalarla karşılaşabilir.

Spark'ı kullanarak veri geçirme

Spark ile Cassandra hesabı için API'ye veri geçirmek için aşağıdaki adımları kullanın:

  1. Azure Databricks kümesi veya Azure HDInsight kümesi sağlama.

  2. Cassandra uç noktası için hedef API'ye veri taşıma. Azure Databricks ile geçiş için bu nasıl yapılır kılavuzuna bakın.

Azure sanal makinelerinde veya başka bir bulutta mevcut bir kümede bulunan verileriniz varsa Spark işlerini kullanarak verileri geçirmeniz önerilir. Bunu yapmak için Spark'ı bir kerelik veya düzenli alım için aracı olarak ayarlamanız gerekir. Şirket içi ortamınızla Azure arasında Azure ExpressRoute bağlantısını kullanarak bu geçişi hızlandırabilirsiniz.

Dinamik geçiş

Yerel bir Apache Cassandra kümesinden sıfır kapalı kalma süresi geçişi gerektiğinde, geçmiş verileri geçirmek için çift yazma ve ayrı bir toplu veri yükü yapılandırmanızı öneririz. En az uygulama kodu değişikliğine izin vermek için açık kaynak çift yazma ara sunucusu sağlayarak bu düzeni uygulamayı daha kolay hale getirdik. Bu düzeni uygulama hakkında daha fazla ayrıntı için çift yazma ara sunucusu ve Apache Spark kullanarak dinamik geçişle ilgili nasıl yapılır makalemize göz atın.

Kaynakları temizleme

Artık gerekli olmadığında kaynak grubunu, Azure Cosmos DB hesabını ve tüm ilgili kaynakları silebilirsiniz. Bunu yapmak için sanal makinenin kaynak grubunu seçin, Sil'i seçin ve silinecek kaynak grubunun adını onaylayın.

Sonraki adımlar

Bu öğreticide verilerinizi Azure Cosmos DB'de Cassandra hesabı için bir API'ye geçirmeyi öğrendiniz. Artık Azure Cosmos DB'deki diğer kavramlar hakkında bilgi edinebilirsiniz: